Ubuntu 开发ESP8266 详细过程

1、流程基本介绍

一句话总结:通过下载NodeMCU固件到ESP8266,基于固件库可以有很多强大的功能解决具体的问题。

实际上不止这一种方式可以实现,但个人认为上述方式具有较强的灵活性,同时也比较简单方便。

这里面需要注意的是,ESP8266需要通过USB模拟串口实现程序下载和通信功能,因此针对特定的下载器电脑上需要安装专门的linux驱动。

ESP8266的工作模式主要包括:

AP模式:ESP8266 模块作为热点,手机或电脑直接与模块连接,实现局域网无线控制。

![1833170-20191031221714722-1064865844.png][1]

Station模式:ESP8266 模块通过路由器连接互联网,手机或电脑通过互联网实现对设备的远程控制。
Station+AP模式:上述两种模式并存。

![1833170-20191031221728823-1538677652.png][2]

2、硬件需求

主要是USB适配器和ESP8266模块,在网上买现成的即可,下面是可以直接链接的模块。

CH340 USB适配器

![1833170-20191211213734693-1676877633.png][3]

ESP8266 模块(ESP01)

![1833170-20191211213551271-403084958.png][4]

下面是ESP8266模块的电路图,目前采用的这种小模块只引出了部分针脚,还有一种是所有都引出来了的。

![1833170-20191211211822924-94440310.png][5]

![1833170-20191212220915784-553498370.png][6]

3、开发工具

1.linux下USB下载器的的驱动,CH341SER_LINUX
驱动下载地址 http://www.wch.cn/downloads/CH341SER_LINUX_ZIP.html

2.ESP8266固件下载工具, esptool
下载地址 https://github.com/espressif/esptool

3.ESP8266固件库调试工具,ESPlorer,大部分开发工作将在这个工具下开展,采用的开发语言是LUA
开发ESP8266过程中所需要用到的LUA编程比较简单,稍微熟悉一下即可应用
下载地址 https://github.com/4refr0nt/ESPlorer
这个工具基于java开发,所以需要安装linux下的java模拟器

  1. ESP8266固件库,NodeMCU,这个固件库提供了很多基础模块,可以使得开发过程更为简单便捷
    下载地址 https://nodemcu-build.com/

下面是目前模块的截图

![1833170-20191211215653933-1911567999.png][7]

4、主要流程

完成上述准备工作后,即可利用ESP8266模块进行调试

实际上上述开发工具安装过程中可能会出现一些问题,需要针对具体的问题进行仔细分析,然后找出解决方法

我当时在安装USB下载器驱动过程中就遇到了一些问题,来回折腾了好久才调试好,可能是我的那个下载器本身有些问题,有时候就连接不上了,需要拔下来重新上电才能正常工作

- 第一步,生成并下载NodeMCU固件库

NodeMCU是一个面向ESP8266开发的开源固件库,其中包含了很多可选择的组件,可以实现一些网络功能和传感器接口

其中ADC模块用于操作ESP8266内置的ADC,GPIO模块用于IO借口操作,WIFI模块是这里面的核心功能,还有其他的一些模块在这里就不一一介绍了,可以查阅NodeMCU的文档,里面都有详细的介绍

需要注意的是,选的模块功能越多则需要的存储空间越大,因此应尽量只选择与后续需求相对应的模块,上面那个图是我所选择的一些基本模块

填入自己的邮箱并选择好之后就可以点击最下面的生成按钮,这样选择好的固件库就会发送到相应的邮箱中,稍等片刻就可以在邮箱中下载生成的固件库

![1833170-20191211221307219-1446760557.png][8]

选择是否启用LSF,可以使lua程序存储在flash中,从而能够释放更多的RAM,此外还有一些其他的选项,用于调节固件库的特性,具体可以参考相关的说明

邮箱中将会收到两个版本的固件,分别是浮点型和整型,尽管整型占据的RAM更少,但一般为了使用方便推荐使用浮点型

- 第二步,将固件库下载到ESP8266中

连接好下载器和ESP8266模块后,即可使用下面的命令下载固件

esptool.py --port <serial-port-of-ESP8266> --baud <baud-rate> write_flash -fm <flash-mode> 0x00000 <nodemcu-firmware>.bin

是虚拟串口的名称,可以采用下面的命令查询,我的是/dev/ttyUSB0

ls -l /dev/ttyUSB*

是波特率,默认值是115200,也可以不填
.bin 是固件文件的名称
因此,具体的命令如下

esptool.py --port /dev/ttyUSB0 write_flash 0x0000 桌面/nodemcu_integer.bin

下载过程中需要使得GPIO0为低电平,一直保持即可(与RST无关),若一直显示连接也可以硬重启一次(拉低RST,GPIO对面那个针脚)

![1833170-20191212212434008-306009131.jpg][9]

如果没有拉低GPIO0,则会出现如下一直链接的状态

![1833170-20191212220725167-341634218.png][10]

如果下载成功的状态如下

![1833170-20191212220641245-458613800.png][11]

- 第三步,使用ESPlorer调试ESP8266

通过下面的命令打开ESPlorer ,后面的路径是我下载后保存ESPlorer的路径

sudo java -jar 下载/ESPlorer/ESPlorer.jar

打开后的界面如下

![1833170-20191212221129547-1231733048.png][12]

点击Open即可完成连接,选择波特率为115200(这里波特率选择可能需要和此前固件下载时的波特率保持一致,这样才能正常通信)

然后,可以点击右下的Chip info 或Chip ID 查看芯片的信息,连接成功后的界面如下,相关信息可以正常显示

![1833170-20191212221455879-1293397406.png][13]

在上述工具中,不同按钮中的save有所不同,上面的save是指文件的保存,下面的save是指ESP程序的保存

send只是执行代码,断电或硬重启后代码就会失效,save则可以将代码保存在ESP中

可以通过右侧的Format按钮清除ESP中的代码,FS info 查看ESP存储空间的使用情况

Reload 则可以查看已经保存在ESP中的代码情况

- 第四步,下载程序到ESP8266中

通过上面的准备工作,就可以将写好的代码下载到ESP8266中

wifi.setmode(wifi.STATIONAP)
cfg={}
cfg.ssid="TEST"
cfg.pwd="12345678"
wifi.ap.config(cfg)  

运行后可以发现名称为TEST的WIFI热点

总结

esptool.py --port --baud write_flash -fm 0x00000 .bin

上一篇:【S操作】轻松优雅库移植解决方案,arduino库移植应对方案


下一篇:ESP8266+AP模式简单使用