本帖最后由 sz99iotA 于 2018-8-3 14:44 编辑
IoT WiFi透传设计
简述本文主要描述产品中使用单片机控制器设备完成IoT Wi-Fi网络通讯的一些通讯设计要求,包含硬件连接,软件架构搭建,天线设计以及无线信号的测试方法。以便达到产品更好的软件架构以及射频性能。 本文应用于单片机控制器通过Uart串口或者SPI接口连接,通过AT+指令集驱动Wi-Fi芯片或者模组,并通过控制指令来连接网络,App以及云端服务器。 部分技术内容适用于RTL8710BX芯片,并以九九物联AFW121、AFW125系列模组适配用于举例。
1 硬件资源规划1.1 串口透传I/O资源: | | | | | | | | Pin16、Pin17(CTS模块输入端,RTS模块输出端) | | | | | | Pin5 CHIP_EN(不需要控制可以悬空,内部上拉10K电阻) | | VCC供电电流需满足≥500mA, GND需要连接一起 | Pin11=VDD33, Pin1、Pin3、Pin10、Pin12、Pin21=GND | | | |
注意:Pin8不能做上拉,它会使模块进入Debug模式,模块无法正常运行; 1.2 SPI透传模式需要I/O资源 | | | | | | | | | | | | | | Pin5 CHIP_EN(不需要控制可以悬空,内部上拉10K电阻) | | VCC供电电流需满足>=500mA, GND需要连接一起 | Pin11=VDD33, Pin1、Pin3、Pin10、Pin12、Pin21=GND | | | |
注意: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管脚的连接线尽量短,只要天线在底板上做好匹配,模块不需要考虑天线匹配 | | |
1.6 功耗参数
1.7 固件升级 模块提供两种升级:A、有线高速串口升级 B、无线OTA升级
| | | | | 连接模块Pin19、Pin20,使用Image Tool加载固件烧录(PC端) | | | MCU通过指令串口给模块传输升级文件,升级速度高达20KB/s,MCU需要做Xmodem协议 | 使用指令通信接口,升级过程波特率需要是460800 | | | 模块和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端建立服务器 Ø 使用工具:
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模式唤醒说明 | | | Pin14做为默认的唤醒管脚,设备主动唤醒模块,可触发拉低Pin14;
有指令操作:5ms后,模块能立即相应设备指令,执行完相关指令8-10s后进入自主进入睡眠。
无指令操作:模块会在2s后自主进入睡眠模式。 | | 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,STA,BLE+WIFI配网差别,资源需求。 Ø AP模式配网需要配合九九物联的配网APP,配网成功率相对比较高,能达到98%以上。 Ø airkiss配网需要配合微信的airkiss功能,配网成功率在90%以上,部分手机可能存在兼容性问题。 Ø BLE+WIFI配网成功率跟AP配网一样,成功率比较高,但是需要有蓝牙模块的支持,设备如果同时有蓝牙模块可以选此方案。 Ø simpleconfig配网,配网成功率和原理跟arikiss一样,使用九九物联的配网app可以实现。 2. 路由器兼容性同信道设置关系,隐藏ID以及不同国家设置 路由器兼容性主要是路由器的编码格式和一些路由器的配置问题,MCU在给模块发送连接AP指令时,SSID和PASSWORD编码方式需要跟路由器一致。 3. 出口国家信道设置关系 信道的设置根据不同国家和地区的法制法规,开放的信道不一样,模块默认是国内的规格,如果需要出口到国外,需要告知我们,我们会 根据不同的地区设置不同的信道参数。 6 掉线分析如果是长连接的TCP连接,连上服务器之后如果出现异常断开,MCU端可以重新发送指令建立连接。长连接的TCP连接由于网络堵塞和服务器等原因,有时候长时间不进行数据交流,会出现断开的情况,此时只需要重新连接即可,若一直连接不上,需要排查网络原因,可以将模块的log串口接到PC端,用串口软件记录模块输出的log信息,并保存下来提供给我们分析。
|