一.引言
- 编写目的
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模组方案较多,该方案较成熟,相关资料比较齐全,无论是在模组的对接还是模组的软硬件开发,只要遵循文档中的内容,出现问题的风险较小。如果小批量使用,建议直接使用模组,后期如果用量比较大,建议自己开发模块。
附件: