打印

基于单片机的WiFi透传设计

[复制链接]
2257|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 sz99iotA 于 2018-8-3 14:44 编辑

IoT WiFi透传设计

简述
本文主要描述产品中使用单片机控制器设备完成IoT Wi-Fi网络通讯的一些通讯设计要求,包含硬件连接,软件架构搭建,天线设计以及无线信号的测试方法。以便达到产品更好的软件架构以及射频性能。
本文应用于单片机控制器通过Uart串口或者SPI接口连接,通过AT+指令集驱动Wi-Fi芯片或者模组,并通过控制指令来连接网络,App以及云端服务器。
部分技术内容适用于RTL8710BX芯片,并以九九物联AFW121AFW125系列模组适配用于举例。


1 硬件资源规划1.1 串口透传I/O资源:
名称
功能
Pin脚(适用于AFW121)
透传串口TXD、RXD
指令控制、数据通讯
Pin18、Pin15(内部各上拉10K电阻)
硬件流控CTS、RTS(选用)
控制数据传输
Pin16、Pin17(CTS模块输入端,RTS模块输出端)
低功耗唤醒I/O
浅睡眠、深度睡眠、待机
Pin14(必须这个管脚)
模块控制管脚(选用)
Power ON\OFF
Pin5  CHIP_EN(不需要控制可以悬空,内部上拉10K电阻)
电源、GND
VCC供电电流需满足≥500mA,  GND需要连接一起
Pin11=VDD33,
Pin1、Pin3、Pin10、Pin12、Pin21=GND
LOG_UART
下载固件接口,可另外预留测试点
Pin19、Pin20(内部各上拉10K电阻)
注意:Pin8不能做上拉,它会使模块进入Debug模式,模块无法正常运行;
1.2 SPI透传模式需要I/O资源
名称
功能
Pin脚(适用于AFW121)
透传SPI接口:
CLKCSMISOMOSI
指令控制、数据通讯
Pin15Pin18
REQRST辅助管脚
指令交互的状态控制
Pin9Pin8
低功耗唤醒I/O
浅睡眠、深度睡眠、待机
Pin14(必须这个管脚)
模块控制管脚(选用)
Power ON\OFF
Pin5  CHIP_EN(不需要控制可以悬空,内部上拉10K电阻)
电源、GND
VCC供电电流需满足>=500mA,  GND需要连接一起
Pin11=VDD33,
Pin1Pin3Pin10Pin12Pin21=GND
LOG_UART
下载固件接口,可另外预留测试点
Pin19Pin20(内部各上拉10K电阻)
注意:Pin8不能做上拉,它会使模块进入Debug模式,模块无法正常运行;



1.3 I/O端口状态
正常通讯,为初始化的I/O处于不确定状态,如果MCU有与模块的I/O连接实现控制,需要对模块的该I/O有上/下拉,模块在系统关闭的时候,I/O为高阻态。
1.4 Wi-Fi模块CHIP_EN引脚管理
A、 悬空——无法硬件控制系统的启动或者关闭,模块可正常使用;  
B、 设备控制——输出低电平可控制模块电源系统关闭,正常工作时,必须保持输出给该引脚的电平为高;对此引脚的电平跳变时间≥100ms;

1.5 天线匹配
用户在前期设置PCB阶段,必须考虑到模块整体布局:
模块板载天线(受设备环境影响大)
模块天线部分露出板边,天线上端、左右两边必须做到5mm以上的净空区域,确保模块天线底部不能有金属物质
外接底板天线(受设备空间限制)
模块Pin2可衔接底板天线,底板天线与模块Pin2管脚的连接线尽量短,只要天线在底板上做好匹配,模块不需要考虑天线匹配
IPEX外扣天线(天线增益和效率高)
可选FPC软质天线,符合2.4G频段要求即可,

1.6 功耗参数
功能
功耗
时间参数
配网功耗
≥320mA
2-3s
Socket建立连接
70mA
2-3s
通讯功耗
80-120mA
——
长连接Tickliss睡眠模式
5mA
唤醒时间1 ms
深度休眠功耗
10uA
唤醒时间2s

1.7 固件升级
  模块提供两种升级:A、有线高速串口升级  B、无线OTA升级

升级方式
升级说明
硬件或者软件设计
有线高速串口升级
LOG_UART串口
连接模块Pin19、Pin20,使用Image Tool加载固件烧录(PC端)
用户底板可以预留连接该Pin脚的测试点或者过孔
Xmodem传输
MCU通过指令串口给模块传输升级文件,升级速度高达20KB/s,MCU需要做Xmodem协议
使用指令通信接口,升级过程波特率需要是460800
无线OTA升级
局域网升级
模块和PC端需要连接同一个AP热点,使用PC端的IP地址和端口;具体参考OTA升级文档
主控给模块发起指令:
AT+WLOTA=<服务器地址>,<端口>
广域网
用户可把固件放到服务器上,模块通过连接上外网AP热点,下载固件,此方式可应用在app上
主控给模块发起指令:


1.8 RSSI漫游处理
模块具有AP漫游的功能,在存在多个同名和同密码的AP环境中,设备如果移动工作的话,模块会每几秒钟自动查询当前连接的热点的RSSI值。当RSSI低于指定的最低界限值时,模块会扫描当前环境下的同名AP信号,并选取信号值最高的进行重新连接,可以实现在保持当前socket连接不断开的情况下,无缝切换同名AP。因开启此功能之后模块在功耗上会有所增加,默认是关闭的,可以根据客户的需求进行开启,一般适用于大型商场移动式手持设备。


2 工具软件2.1 配网兼容性
模块配网分别受AP热点编码格式、网络环境、手机系统兼容性三个因素影响;
Ø AP(路由)编码格式影响(中文SSID):
Ø 网络环境:


当下可以用手机产生热点,确认模块是否有故障
Ø 手机系统兼容:
IOS可能由于版本升级,app软件需要同步升级。Android版本升级差异不大。
2.2 AP热点加密方式
通用的加密类型分别有:WEP、WPA、WPA2、WPA-PSK、WPA2-PSK
WPA2-PSK的加密安全更加高,设置简单,对AP的兼容最普遍。

2.3 网络信号强度以及分析工具
用户在开发测试时,可能会出现一些不稳定情况,可以结合一些第三方工具,借助PC端无线网卡或者手机Wi-Fi;例如:inSSIDer、360概观;
下面图片为inSSIDer.exe通过电脑网卡扫描周围环境的AP信息:

2.4 软件功能逻辑测试
Ø 局域网环境下:
A、 在与AP距离足够近情况下,测试整个软件工作流程;例如从上电到正常运行的逻辑场景
B、 测试Socket连接后,大数据传输的压力测试
C、 Socket连接压力测试,是否存在连续的建立失败

Ø 连接外网服务器:
A、 服务器的稳定性
B、 连接外网的AP稳定

2.5 性能稳定测试事项
Ø 局域网环境下测试,PC端建立服务器
Ø 使用工具:
软件
NetAssist
网络调试助手,PC端建立服务器
串口助手软件
可双向监控主设备和模块直接的通信流程
Wireshark
捉包软件,利用电脑无线网卡监控数据
硬件
串口工具USB转TTL




3 MCU软件逻辑规划3.1 上电启动流程

3.2 关于建立Socket连接问题 3.3 关于指令的执行时间
指令可分为:基础指令,Wi-Fi控制指令,网络查询指令,网络数据传输指令(TCP/UDP指令)、提示指令;
每条指令都需要在最后带上“\r\n”,用户输入的指令结尾没有“\r\n”,模块会回显“ERROR\r\n”;详细指令的格式参数,请参考“AT+Command”;
以下主要介绍一些指令的执行时间:
3.4 关于低功耗Tickless
  Tickless mode—模块上电后即可操作指令进入,可在连接Wi-Fi和不连接Wi-Fi的情况下工作,进入该模式,模块会在每10s唤醒,在无任何操作响应情况下瞬间睡眠。
3为Tickless模式唤醒说明
内容
说明
不连接Wi-Fi
Pin14做为默认的唤醒管脚,设备主动唤醒模块,可触发拉低Pin14;

有指令操作:5ms后,模块能立即相应设备指令,执行完相关指令8-10s后进入自主进入睡眠。

无指令操作:模块会在2s后自主进入睡眠模式。
连接Wi-Fi,建立socket连接
Pin14做为默认的唤醒管脚,同时网络下行数据也是唤醒源;

主动唤醒:设备主动唤醒模块,可触发拉低GPIOA_5,有指令操作,5ms后,模块能立即相应设备指令,执行完相关指令8-10s后进入自主进入睡眠。无指令操作,模块会在2s后自主进入睡眠模式。

被动唤醒:下行网络数据可直接唤醒模块,模块处理完数据后,8-10s进入睡眠模式。(实测)

4 Wi-Fi性能压力测试4.1 关于Wi-Fi与云端通信协议
  Wi-Fi模块目前对接的云端可分两类:
A、 公用云:亚马逊、阿里云、京东等等;对接该云端,模块端做好与该云的标准协议接口;如果存在数据协议对接,仅仅是MCU对云端的数据协议封包和解析;MCU端只需正常的操作AT指令集,封装好的数据帧通过Socket收发,最后各自解析。
B、 私有云:机智云、深智云、或者用户自己搭建云平台等等;对接该云端,实现原理同上。

4.2 AP连接压力测试
4.3 Socket建链压力测试(TCP)
能否增加一个通讯速率,包含SPI最高通讯速率,完全透传设置,UART最高通讯速率,完全透传设计


4.4 路由器兼容性以及测试方法
  路由兼容性测试方法是以不同品牌不同型号和不同配置的路由器为AP热点,进行网络性能压力测试。
以下为部分路由测试分析报告,测试项目都是基于4.2、4.3的流程


5 关于配网,成功率参数
1. AP模式,airkiss,STABLE+WIFI配网差别,资源需求。
Ø AP模式配网需要配合九九物联的配网APP,配网成功率相对比较高,能达到98%以上。
Ø airkiss配网需要配合微信的airkiss功能,配网成功率在90%以上,部分手机可能存在兼容性问题。
Ø BLE+WIFI配网成功率跟AP配网一样,成功率比较高,但是需要有蓝牙模块的支持,设备如果同时有蓝牙模块可以选此方案。
Ø simpleconfig配网,配网成功率和原理跟arikiss一样,使用九九物联的配网app可以实现。
2. 路由器兼容性同信道设置关系,隐藏ID以及不同国家设置
路由器兼容性主要是路由器的编码格式和一些路由器的配置问题,MCU在给模块发送连接AP指令时,SSIDPASSWORD编码方式需要跟路由器一致。
3. 出口国家信道设置关系
信道的设置根据不同国家和地区的法制法规,开放的信道不一样,模块默认是国内的规格,如果需要出口到国外,需要告知我们,我们会        根据不同的地区设置不同的信道参数。
6 掉线分析
如果是长连接的TCP连接,连上服务器之后如果出现异常断开,MCU端可以重新发送指令建立连接。长连接的TCP连接由于网络堵塞和服务器等原因,有时候长时间不进行数据交流,会出现断开的情况,此时只需要重新连接即可,若一直连接不上,需要排查网络原因,可以将模块的log串口接到PC端,用串口软件记录模块输出的log信息,并保存下来提供给我们分析。


相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

5

帖子

0

粉丝