Bootstrap

ESP8266知识汇总

一.引言

  1. 编写目的

     Wifi知识点多且比较琐碎,通过查看此文档能够快速的理解wifi的各个组成部分和关键点,缩短wifi方案开发周期。

二.Wifi方案调研

2.1俗话说的好没有哪款比哪款更好,只有是不是更适合,在方案的设计之前,需要充分的分析需求,根据需求选择性价比最高的方案。

2.2当前要求设计的wifi方案需求,要求低功耗,低成本,可复用高,主要与单片机进行对接,实现较小数据量的传输,且供货充足。故大体方向选择串口转wifi方案,且选择市面上较低端的热门芯片。

2.3知道了自己需求,接下来需要调研通过数据来支撑你的方案是最适合的。以下为相关的调研报告。(具体内容查看wifi方案调研报告》

2.4通过wifi方案调研报告的查看,乐鑫的ESP8266,瑞昱的RTL8711AF,联发科的MT7681进入了我们的选择范围,各有利弊,经过考虑最终方案最终敲定了国产芯片乐鑫ESP8266

 

三.ESP8266评估过程

3.1模组测试

3.1.1模组选择

(1)ESP8266芯片选定了,但是该方案的模组厂商比较多,通过筛选,乐鑫官方的模组方案(考虑硬件会更稳定,软件支持会更好)和安信可科技的模组方案(资料多,技术支持比较好)在选择的范围内。最终选择了乐鑫官网的模组方案ESP-WROOM-02和测试底板ESP8266-DevKitC-02D来进行评测。(测试过程中发现官网的资料全但是技术支持真的垃圾,还好市面的模组方案都是基于官方的做的,所有资料都共用)

3.1.2 环境搭建

工具

版本

说明

AiThinker Serial Tool

V1.2.3

串口工具,负责AT指令的下发

com.aithinker.networkassistant_1.3_5

V_1.3_5

一款通用的手机TCP/UDP调试工具

安卓手机

 

用于测试,也可以用笔记本

ESP8266-DevKitC-02D

V1

评估板,已经包括模组

Usb线

 

用于通讯和供电(开发板竟然没带)

 

安信可资料获取:https://wiki.ai-thinker.com/esp8266

乐鑫资料获取:https://www.espressif.com/zh-hans/support/download/other-tools

3.1.3 测试

(1)当我们拿到开发板的时候,发现芯片并不是很多,但是同样还是不知道如何入手,首先我们需要查看一下ESP8266-DevKitC入门手册》这里面介绍了开发板按键,拨码开关等的简单介绍,然后看一下开发板原理图ESP8266-DevKitC-V1.0_reference_design,对开发板就有了充分了解,然后再看一下模组的介绍esp-wroom-02技术规格书》,想在详细了解芯片信息可以查看ESP8266EX技术规格书》这样硬件资源都没问题了,接下来就是模组的内部程序默认是哪个,怎么测试了,模组默认为AT指令固件1.5.1,参考ESP8266 AT 指令开发实例》TCP_and_UDP_UART透传测试》进行测试,这是比较常用的实例,当然程序里面实现了很多的指令集,可以根据需求,进行相应的AT指令操作,达到项目需求。esp8266_AT指令集》

可供参考:https://wiki.ai-thinker.com/esp8266/examples/at_demo

(2)根据现有应用,举例一种应用场景,并实现该功能(方法较多,需评估)

举例:检测设备出厂,维护人员通过APP连入设备wifi信号,进行客户路由器用户名和密码的设置,配置成功后,检测设备可通过网络向指定设备上传数据,方法详细查看esp8266_AT对接》,《AiCloud 2.0 AT测试过程》。

可参考文档:《安信可ESP8266用户手册》,《安信可ESP8266入门教程》(使用的应用场景说明比较全面)

 

3.2软件开发

开发板的评测已经完成,接下来需要将模组应用到我们自己的板卡中。

3.2.1模块级对接

使用别人的模块的好处就是不用考虑模块自身的稳定性,不用开发协议栈,通过串口发送指定的协议,完成对接工作。目前考虑使用AT指令,详细的查看esp8266_AT指令集》esp8266_AT对接》

3.2.2芯片级对接

如果计划自己做模组方案,除了硬件需要根据文档进行绘制之外,软件上也需要涉及到协议栈的开发,还好官网和一些厂商都开发了许多源码,可以直接将AT版本的源码下载进去,也可以根据需求根据官网开放的SDK进行修改。

(1)开发环境的搭建

Linux环境:详细的环境搭建,软件编译和下载,详细查看《ESP8266 SDK入门手册》

集成开发环境:https://wiki.ai-thinker.com/esp8266 ,详细查看《如何安装一体化开发环境》,  《如何使用一体化开发环境》,实际上和linux环境是一样的都是使用gcc工具链,一体化环境   查看代码编译上可能方便点,但是编译速度会比较慢。

(2)SDK的开发详细查看《ESP8266 SDK入门手册》,详细的API含义可参考        《2cesp8266_non_os_sdk_api_reference_cn》

3.2.3 程序的下载,及Flash分布情况

这里不写如何下载,详细的下载步骤可以查看《esp8266快速入门手册》文档的相关章节。《程  序下载》,《安信可入门手册》这两个文档更为详细,可参考。

下载的下载协议可以查看《esp8266-固件下载协议》。

(1)NON-FOTA(不支持云端升级)

 

 

FOTA(支持云端升级)

以烧录NONOS_SDK AT指令版本程序为例(ESP8266_NONOS_SDK-3.0):

准备固件:

 

注:只有user1.bin和user2.bin是程序生成的,相同版本程序更新只需要再烧user.bin用户程序      即可。

3.2.4 程序配置合并

为了减少烧录方式在大批生产中的不安全,可以将固件打包合并成一个完整的固件。

 

3.3硬件开发

3.3.1模块级对接

(1)模组级别的对接,硬件上主要需要注意模组预留出的接口,无需所有都预留,必须的留下    即可。

首先可以先参考下开发板的原理图ESP8266-DevKitC-V1.0.pdf,iot_black_board_t5_sch.pdf。

主要为以下几个管脚:

 

为了防止串口丢包,RTS,CTS流控引脚预留,IO16用于低功耗配置,预留。

 

参考外围设计:

为了防止串口丢包,RTS,CTS流控引脚预留,IO16用于低功耗配置,预留。

模块尺寸图:

详细可查看《ESP-WROOM-02DC_ESP-WROOM-02UC_Datasheet__CN.pdf》文档

 

(2)除了管脚要预留清楚之外 ,PCB的设计和模组摆放也有一定的要求,需要注意。

主要涉及到,天线摆放位置,PCB的设计采用滤波和降噪工艺(滤波电容,旁路电容,关键走        线,走线线宽),关键信号走线,地层的处理。具体参考《esp-wroom-02_模组设计和摆放指南》

《天线设计》。

3.3.2芯片级对接

如果只用ESP8266芯片想自己设计模组的话,模块的原理图都有,主要难度主要在硬件布局上需要注意,下面简单罗列一下。

想在设计之前了解ESP8266的相关参数可以查看《0a-esp8266ex_datasheet_cn》文档,可以获取到芯片的功能,外设接口,电气参数等相关信息,如果做单芯片开发可以详细查看一下。

对于原理图的设计,模组PCB的设计,以下两个文档中有详细说明《0b-esp8266_system_description_cn_v1.4》《esp8266_hardware_design_guidelines_cn》,通过以上两个文档,硬件基本就可以设计完成,但是还需要进行频偏和天线阻抗匹配的调试。

注:如果不做频偏和天线的阻抗匹配的调试,会引起射频性能不好,主要表现为扫到的AP较少,连接容易掉线,接收发射数据不稳定等等。详细查看《esp8266-硬件匹配指南》

      

四.常见问题

在开发过程中,仔细阅读上面所有的文档,大多数的问题都能在文档中找到答案,以下是

我在测试过程中遇到的问题。

4.1模块测试过程中,发送AT 指令不管用,模块不响应?

如果使用AT指令,则串口波特率设置为115200,并且要求设置“新行模式”,因为AT指令以换行符结尾。

4.2当AT指令设置为透传模式后,使用+++无法退出透传模式?

用串口工具一次性发送+++,并且注意不要携带空格或者换行符等不可见字符,之后,至少间隔1s,再下发下一条AT指令。

(所有AT指令后面都要添加指令结束标志“\r\n”,或者在串口调试工具中勾选发送新行选项,透传退出时发送“+++”除外)

 

4.3 按照说明,下载了相关NONOS_SDK却编译不通过?

(1)查看是否修改了文件,设置了路径变量,指向了SDK和BIN文件。

(2)需要将examples文件夹下的LOT_Demo文件夹复制到ESP8266_NONOS_SDK路径下(原因是执行指令没找到相关文件)。

4.4AT+SAVETRANSLINK 保存透传配置到Flash,下次开机时会自动进入透传模式,若取消上面        配置需先发送 +++ 退出透传模式,然后发送AT+RESTORE 恢复出厂设置。

官方提供的常见问题及解决办法:《Espressif_FAQ_CN》

五.总结

1.市面上的ESP8266模组方案较多,该方案较成熟,相关资料比较齐全,无论是在模组的对接还是模组的软硬件开发,只要遵循文档中的内容,出现问题的风险较小。如果小批量使用,建议直接使用模组,后期如果用量比较大,建议自己开发模块。

附件:

 

 

 

;