让WIFI开发变得更简单—Adafruit ESP8266开发板上手
扫描二维码
随时随地手机看文章
大佬们又开始在乌镇吃饭了,物(互)联网又要热闹了!
万能的粗粮也推出了ESP32模块,只要15元RMB一块,物联网估计又要火一波!
联网的需求越来越大,以太网和WIFI都可以满足联网的需要,不过对于物联网设备来说,WIFI连接似乎更方便一点,便携是一个必然要考虑的因素。
Adafruit Feather HUZZAH ESP8266开发板隶属Feather系列中的一员,除了轻便、小巧之外,开发板本身就是一个“一揽子”解决方案:提供WIFI连接功能、USB连接及锂电池供电、充电功能,可以直接集成到已有的产品中,为开发节省不少时间我开销。
看上去很美,按Adafruit自己的说法,让我们一起来嗨!
先认识下Adafruit ESP8266长啥样。
买来的就是个散包,没有包装盒。厂商有点抠,这下装13的话,效果估计要打个八折。图上的东西,一个ESP8266模块,俩排针,就用一个防静电袋装着,逼格稍嫌不够!
开发板正面图,主要的器件都能看得很清楚。一个安信可的ESP8266模块,这是整个开发板的核心,提供WIFI连接功能。上下两排GPIO接口,提供了基本的GPIO功能,这些接口可以复用作SPI/I2C/UART接口,与外部传感器等进行交互。上图中最右边是USB接口,可以兼做电源及UART接口。与接口紧邻的靠下的就是锂电池接口,用来连接3.7V规格的锂电池。锂电池接口上面是CP2104串口芯片及复位按钮。
开发板背面,看到Feather标志了,该开发板是Feather系列的一员,意味着轻巧、便携,能带你飞!
来个特写,近距离欣赏ESP8266模块和锂电池接口。
为了增强开发板的可便携性,开发板除了提供USB口供电之外,还提供了一个3.7V的锂电池接口,内置充电功能。当同时连接了锂电池和USB接口的话,开发板会自动切换到USB口取电。
开发板的主要特性如下
小巧,三围大小仅为51mmX23mmX8mm,重量仅6g
板载ESP8266模块,最高工作频率@80MHz,3.3V供电
4MB FLASH存储
3.3V电压调节器,最高支持峰值500mA电流输出
板载CP2104串口转换器,最高支持921600波特率
固件下载后支持自动复位
9个GPIO口,可复用作I2C、SPI等接口
1个模拟输入,最高支持1.0V
内置锂电池充电接口,提供约100mA充电电流
3个LED指示灯,可用作一般演示用,也可以用来指示特定的操作模式,如bootloader模式
4个安装孔
复位按键
市面上基于ESP8266模块的开发板甚多,不过提供了锂电池接口的倒不多见。Adafruit的这一款ESP8266开发板虽然只添加了一个小小的接口,但是该开发板的用途却是极大得到了扩展,不必再担心到哪里去找USB接口来给开发板供电了。
接下来准备上电。不过有一点要提醒大家,开发板上的GPIO口默认只引出了焊盘,如果要测试GPIO口功能的话,先得将随开发板一起提供的排针焊接好,这应该难不倒我们电子工程师,如果纯软件类的工程师估计要小小头疼一下,不过应该也不是什么大问题。
准备一根USB A转USB micro的数据线,一端与PC连接,另一端与开发板的USB口连接,可以看到开发板有灯闪烁,然后就没有反应了。
不用担心板子有问题,默认的出厂固件提供的是WIFI访问功能,没有对LED进行配置,打开手机的WIFI配置项,会看到里面多出一个WIFI热点,如下
ESP_XXXXXX设备即咱们的开发板提供的SSID名称,连接到该设备后如下
可以看到手机已连接上开发板,获取到的IP地址为192.168.4.2。嗯,WIFI工作正常,接下来,就是作为开发工程师的你大显身手的时候了。
ESP8266包含丰富的开发环境支持,乐鑫官方的ESP-IDF可以用来对开发板进行软件开发;这种方式比较底层,开发环境的配置及使用相对来说复杂一点。也可以使用ARDUINO来进行软件开发,这种方式相对来说要简单一点。另外一些脚本语言如Python、Lua等也可以用来进行软件开发。
咱们从Arduino开始。
Arduino原生并不支持ESP8266,因此,需要安装三方的支持包,主要包括xtensa专用的编译器及相关的库文件。
在Arduino的Preferences对话框中添加附加的URLS,如下
添加的URL如下:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
然后打开Arduino的Boards Manager对话框,
在对话框里选择安装ESP8266社区版,需要注意的是这个安装过程比较耗时,因为其中一个软件包大约有146MB,在Arduino下安装可能需要好几个小时。最佳的办法是直接打开上面提到的JSON文件,从里面抠出那个146MB的软件包,使用专用的下载软件下载然后放到用户目录的staging目录下,Arduino会自动发现该软件包,从而跳过下载过程,节省安装时间。[!--empirenews.page--]
不过说实话,Arduino这个IDE用着实在蛋疼!所以还是使用更好用的VSCODE来进行吧,使用VSCODE来开发ARDUINO程序的话,先要安装VSCODE-ARDUINO这个扩展(插件),安装过程就不详述了,参考官方说明即可。
不过VSCODE也蛋疼,新版的VSCODE默认对C/CPP的头文件处理模式使用的不再是Tag Parser,而是所谓的Default模式。这样智能感知及头文件搜寻就有点小问题,所以在VSCODE中还要对USER SETTINGS文件作如下修改
即将默认的模式改为Tag Parser模式。
万事俱备,只差一段代码了。
这段代码就是点个灯,有点简单,不过作为测试VSCODE配置是否正确而言足够了。
按组合键CTRL+ALT+U,将编译并上传代码到开发板,然后看到开发板上的红色LED开始闪烁。
补充一点,在VSCODE中选择开发板类型及串口参数,参考下图
接下来再写一段简单的代码测试WIFI功能,将开发板设置成STATION模式,从上级路由中获取IP地址,通过串口显示
使用WIFI对象来配置开发板,只需要两个参数,一个是SSID,另一个是WPA密码,修改这两个值,与实际的路由器匹配即可。
注意下面的输出窗口,这是使用ESPTOOL上传代码到开发板的过程。
接下打开串口输出窗口,可以看到输出的信息如下
看到开发板已获取到了实际的IP地址。
注意前面的乱码,ESP8266默认上电后的串口波特率为921600,实际配置的工作参数为115200,所以就乱了。
光链接WIFI也没啥,总得用来干点实事!继续来点灯,这次的版本是网络版的点灯,附带介绍下aREST库,这个库结合WIFI功能,可以实现通过网络来控制或读取开发板上的信息。
需要包含如下头文件
UI部分的代码如下
这里设置了UI的标题,控制LED灯的按钮及两个显示文本的组件,并不复杂。
代码运行效果如下
界面虽称不上美观,但也够用了。
不过在ESP8266上用的话,注意这个ON/OFF的值是反的,即写入1是来灯,写入0则是亮灯。D3(RED)的原理图参考如下
这是本地网络的通信,如果要连接上Internet,在任何地点实现远程访问及控制,可以使用另外一个称为PubSubClient的库来实现,有兴趣的童鞋可以去看看这个库的特性。
前面介绍过,ESP8266还可以支持Python及Lua,接下来看看如何使用这些流行的脚本语言来控制ESP8266。
从附录给出的链接下载python固件,使用ESPTOOL烧录到开发板,如下
使用串口通信软件如putty连接到开发板,就可以与开发板实现交互了,如下图
要获取简单的用法,可以在命令提示符下输入help()获取得联机帮助,下面的代码演示了简单的WIFI热点扫描操作及结果
可以看到扫描出了附近可用的WIFI热点,接下来可以使用连接命令来连接,进而实现其它网络操作。
上图中还测试了交互式计算功能,计算2的1024次方的结果,运算速度还不错。
LUA操作与PYTHON操作基本类似,不过需要使用LUA固件,然后通过串口与开发板实现交互,这里就不赘述了。
总体来说,ESP8266还是很有吸引力的。一是开发板体积小巧,尤其适用在现有的创意中添加网络支持功能;基于ARDUINO的开发,也降低了准入门槛,菜鸟只需要花费很少的时间熟悉一下相关的API,就可以很快集成网络通信功能;PYTHON及LUA语言的支持,进一步拓宽了使用面,特别是对于那些不熟悉C语言的用户来说,真是一大福音!
参考资源:
ESP8266: https://www.adafruit.com/product/2821
LUA ESP8266: http://nodemcu.com/index_en.html
PYTHON ESP8266: https://micropython.org/download#esp8266