ESP8266-Arduino杀手?

Arduino之所以流行可能是因为它的学习曲线比较平缓,另外是支持它的第三方程序库非常多,无论在什么平台上都比较容易入门。多年前我曾和一些搞嵌入开发多年的朋友请教,他们更建议我多点尝试STM的开发,Arduino只能在实验室中玩玩很难产品化的,主要原因是由于芯片生产授权和Arduino嵌入到产品时很多时候都需要添加外围电路而导致生产成本很高。而对于我这种一直从事高级语言开发的人确在很难回退到STM那种让人难受的面向过程式编程方式,而鱼与熊掌是否真能兼得?

后来玩了IoT好几年了大多数时间都耗在搞4轴上,通信方式一直也就用着2.4G (nrf2401),以前一直认为这是一种最廉价的组合,用Arduino 做一个应用也是手到拈来。然,当我无意地发现被我扔到角落上的ESP8266时,我在IoT中形成的世界观彻底地改变了,因为终于找到了比Arduino 和STM更好的板子和开发方法。鱼与熊掌真能兼得!

以下是ESP8266的开发板,是用ESP12E的 NodeMCU

ESP8266的特点:

  • 用于快速原型的开发板,售价也就在10人民币左右 (Arudino + WIFI 可不止这个数)
  • ESP8266系列是中国公司生产的,在芯片授权上要比Arduino容易多了
  • 完全兼容Arduino上的库(绝大多数都兼容),这样可以将Arduino上的很多开发经验平滑过渡其上
  • 提供硬件的高级接口,如果采用NodeMCU的固件还可以使用micropython或者lua进行高级语言编程

ESP产品家族

ESP8266家族有很多个系列的产品,比较常见的是 ESP01, ESP12E, ESP07等。这些系列我们都可以在淘宝上轻松买到,价格都很低。做为开发人员的话可能开发板会更适合我们多一些,例如 NodeMCU, WeMos , ESP01。他们的芯片都是一样的,只是引脚和外围的配置有些差异。

近年ESP系列也在不断的改进,可能是销量推动了他们的进步吧。乐鑫相继推出了ESP32和ESP8285等的系列,有兴趣了解更多关于芯片的信息可以访问他们的官网:https://www.espressif.com/zh-hans。 至于ESP32系列貌似已经失去了他们的原有的价格优势虽然说是32位然后加上蓝牙但实际运用起来对于下位机而言意义并不是很大吧(这仅是我个人想法)

ESP8266开发环境准备

接下来会以ESP01为例,并且使用NodeMCU对ESP8266进行初探。下图为ESP01的实物产品图:

[ESP8266 针位]](https://img2018.cnblogs.com/blog/645016/201810/645016-20181014163643238-1540080383.png)

解决无法在Mac连接ESP8266的问题

CP210x USB to UART Bridge VCP Driver 安装后当接上ESP8266的测试板后死活无法找到该USB转串口的驱动,经过一番折腾终于在 https://blog.sengotta.net/signed-mac-os-driver-for-winchiphead-ch340-serial-bridge/ 上找到答案,这是由于CP210X驱动在Serial上没有合法的签名而导致加载失败( Sierra - macOS 10.12 的安全性被提高了),所以只能下载安装另一个驱动加以取代:CH304 就是一取代方案。

安装后连以前一直无法连接上的Arduino Nano 也被成功驱动了,确实是功夫不负有心人!

如何在macOS上刷NodeMCU的固件

首先按照下图所示的跳线方式将FTDI转串口的板子与ESP8266连接:

下表为跳线的具体对应

ESP8266 (esp-01) FTDI Basic interface
RX TX
TX RX
VCC VCC 3.3V
GND GND
RESET 悬空
CH_PD VCC 3.3v
GPIO-0 GND
GPIO-2 悬空

刷固件时GPIO必须接地

接着按node-emcu-devkit"Geting Started on OSX"一文的推荐,在Mac下可以用Python的esptool工具来刷ESP8266的固件,在终端用pip来安装esptool:

$ pip install esptool

以下是esptool的具体用法帮助:

安装成功esptool.py后接上ESP8266并在终端里读取一下串行端口的信息

$ esptool.py --port /dev/tty.wchusbserial1430 --baud 115200 read_mac

以上的指令是从串行口的驱动中读取物理的MAC地址(/dev/tty.wchusbserialXXX就是ESP8266的挂载点) 它将会返回这样的结果:

esptool.py v1.3
Connecting....
MAC: a0:20:a6:14:37:e2

接下来就需要将固件包刷到ESP8266上了,先从node-flasher 下载固件包:

本来有两个的,我只将常用的这个放上来,其它的你可以到GitHub上下载

最后,在终端输入以下指令进行固件更新:

$ esptool.py --port /dev/tty.wchusbserial1430 --baud 115200 write_flash 0x0 ./nodemcu-master-10-modules-2015-08-29-11-33-14-float.bin

使用Arduino IDE编程

刷完固件之后就可以开始着手编程了,由于这么多年一直在玩Arduino和树莓,一切硬件开发最终都是采用纯C,所以说开发环境一定是可以通用的,带着这种想法一入手NodeMCU立马想到的就是用Arduino IDE。在下一篇文字中我将会介绍如何用Arduino IDE进行ESP8266的编程。

相关资源

原文地址:https://www.cnblogs.com/Ray-liang/p/9786827.html

时间: 2024-10-20 18:42:51

ESP8266-Arduino杀手?的相关文章

esp8266+arduino(1) 查看网页

淘宝:https://detail.tmall.com/item.htm?id=536504922008&spm=a1z09.2.0.0.5e160c66c76b3g&_u=e1qf7bf52e27 产品资料:http://www.kbgogo.com/forum.php?mod=viewthread&tid=64&extra= 烧录时版型和参数选择 测试样例1 说明: 程序输入 你要连接的路由器 名+密码. 烧录进入wemos d1 mini 板,程序自动连接路由器,并返

Ariduino for esp8266随笔

Ariduino for esp8266 by HYH | 2017 年 10 月 17 日 下午 9:28 一.下载 Ariuino主程序下载:https://www.arduino.cc/en/Main/Software esp8266库:https://github.com/esp8266/Arduino 二.安装esp8266库 这个在esp8266库的github有详细说明. 1.打开首选项 2.添加开发板管理器网址 http://arduino.esp8266.com/stable/

ESP8266开发之旅 网络篇? SPIFFS——ESP8266 SPIFFS文件系统

1. 前言 ????在前面博文关于ESP8266WiFiWebServer的例程中,大家可以发现,博主基本上都是手动拼装html内容返回,html的内容被固定写在我们的Arduino ESP代码中. ????那么这样就有两点弊端: ESP8266代码相当臃肿 为了开发方便,web server网页除了自身的html内容之外,还包括一些css文件,甚至引入了JQuery库以及一些图片相关资源.如果把这些内容也直接写入到ESP8266代码中,会导致8266整体代码变大,甚至可能超过flash规定的大

如何用arduino来测试ESP8266 WIFI模块(wifi普及预热中)

ESP8266是一款非常廉价的WIFI串口解决方案模块,以目前的超低价格受到各方关注,本强最近也在给它开发arduino库,来方便大家使用,不过捏,我们也需要了解下他的AT指令的操作方法.  首先,ocrobot的ESP8266使用的指令集手册在这里:http://www.ocrobot.com/doku.php?id=zh:ocrobot:modules:seed:at大家可以参考,打印或者怎么地.反正到时候经常会用到 AT指令是串口通讯中常用的一种操作指令.大家应该都很熟悉,GPS.短信猫等

arduino 配置 esp8266

在连接之前,先把程序下载到arduino中,很简单,就是定义了软口.如果中间要改动程序,要把rx和tx的连线去掉,不然下载程序可能失败. const int tx = 1; const int rx = 0; void setup() { pinMode(rx,INPUT_PULLUP); pinMode(tx,INPUT_PULLUP); } void loop() { } 下图就是ESP8266了,很小还没有一元硬币大 (0,0)和(0,3)是方形的焊点,对应左图看每个脚针,连接arduin

Arduino + esp8266 (2)

ARDUINO -----> ESP8266 ESP-01 GND --------> GND TX --------> TX RX --------> RX EN---- > RST /DTRGND----> GPIO0 原文地址:https://www.cnblogs.com/kekeoutlook/p/8217251.html

ESP8266开发之旅 进阶篇② 闲聊Arduino IDE For ESP8266烧录配置

1.前言 ????在学习ESP8266开发的过程中,很多初学开发者很容易出现以下几种问题: 编译代码提示缺少ESP8266WiFi库(原因之一就是选择了非ESP8266板子编译,比如Arduino UNO): ESP8266烧录失败(原因之一就是配置了错误的烧录选项,比如目标板是NodeMcu但是选择了其他板子): ESP8266烧录成功,但是显示串口乱码(原因之一也是配置了错误的烧录选项,配置错误的FlashMode): ????归根到底,就是初学者不理解各个编译选项的含义,很容易选择错误的配

Arduino IDE for ESP8266教程(二) 创建WIFI AP模式

创建WIFI热点 #include <ESP8266WiFi.h> void setup() { Serial.begin ( 115200 ); Serial.println(""); // 设置内网 IPAddress softLocal(192,168,128,1); // 1 设置内网WIFI IP地址 IPAddress softGateway(192,168,128,1); IPAddress softSubnet(255,255,255,0); WiFi.so

Arduino IDE for ESP8266 项目云盒子 (1)AP直接模式

手机直接连接esp8266辐射的WIFI,通信. #include <ESP8266WiFi.h>   const char *ssid = "Charlie Testing AP"; const char *password = "12345678"; WiFiServer server(80); void setup() {   Serial.begin(115200);   Serial.println();     Serial.print(&q

Arduino IDE for ESP8266教程(四)网页控制灯 简单页面

修改ssid和passwd,将程序烧写到8266上,等待串口返回连接成功的消息,连接成功之后可以看到返回有一个ip地址,使用浏览器方位这个ip地址就可以看到这个消息: 连接路由器后,返回IP地址 192.168.1.104 手机连上同个路由器,输入192.168.1.104,得到(下图为示意图,IP地址更换即可) 这就是handleMain中返回给浏览器的String了. 然后可以访问控制引脚的地址: 分别访问这两个地址可以看到板载的led点亮和熄灭.这个就是绑定了/pin的功能起的作用了.注意