查看:
2524
|
回复:
0
|
基于单片机的WiFi透传设计
|
|
发表于2018-12-05 13:52:49
|
只看该作者
1#
电梯直达
简述
本文主要描述产品中使用单片机控制器设备完成IoT Wi-Fi网络通讯的一些通讯设计要求,包含硬件连接,软件架构搭建,天线设计以及无线信号的测试方法。以便达到产品更好的软件架构以及射频性能。 本文应用于单片机控制器通过Uart串口或者SPI接口连接,通过AT+指令集驱动Wi-Fi芯片或者模组,并通过控制指令来连接网络,App以及云端服务器。 部分技术内容适用于RTL8710BX芯片,并以九九物联AFW121、AFW125系列模组适配用于举例。 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 功耗参数功能功耗时间参数 配网功耗≥320mA2-3s Socket建立连接70mA2-3s 通讯功耗80-120mA—— 长连接Tickliss睡眠模式5mA唤醒时间1 ms 深度休眠功耗10uA唤醒时间2s 1.7 固件升级 模块提供两种升级:A、有线高速串口升级 B、无线OTA升级 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”; 以下主要介绍一些指令的执行时间: 指令类别AT指令执行时间特殊说明 基础指令——10—50ms Wi-Fi控制指令AT+WLAPPARAM=《SSID》,《SEC》,[PSW]2—4s AT+WLSTAPARAM=《SSID》,《PSW》2—15s AT+WLCLOSE1—2s AT+WLSIMPLECONFIG——超时1分钟 AT+AIRKISS——超时1分钟 AT+WLAPCONFIG——1分钟退出 TCP/IP指令AT+NWKCTCP3—18s AT+NWKCUDP 网络查询指令———— 提示指令———— 3.4 关于低功耗Tickless Tickless mode—模块上电后即可操作指令进入,可在连接Wi-Fi和不连接Wi-Fi的情况下工作,进入该模式,模块会在每10s唤醒,在无任何操作响应情况下瞬间睡眠。 表3为Tickless模式唤醒说明 4 Wi-Fi性能压力测试4.1 关于Wi-Fi与云端通信协议 Wi-Fi模块目前对接的云端可分两类: A、 公用云:亚马逊、阿里云、京东等等;对接该云端,模块端做好与该云的标准协议接口;如果存在数据协议对接,仅仅是MCU对云端的数据协议封包和解析;MCU端只需正常的操作AT指令集,封装好的数据帧通过Socket收发,最后各自解析。 B、 私有云:机智云、深智云、或者用户自己搭建云平台等等;对接该云端,实现原理同上。 4.2 AP连接压力测试 说明:1、以上面的三个步骤为一个循环周期,进行至少200次周期以上的压力测试; 2、由于连接AP的过程模块跟路由器的交互过程比较复杂,数据包接收和发送的次数比较多,依赖于路由器的配置及稳定性,网络状况是否良好,路由器负载和编码格式等因素,所以无法做到所有路由器的连接成功率都在百分之百。模块出厂前都会做路由器的兼容性测试,测试次数在1000次以上,在网络状况良好,连接路由器的设备在路由器的负载之内的情况下,能达到95%以上的成功率。如果测试出现连接AP成功率低90%的情况下,可以更换路由器或在网络状况良好的环境(信道不拥堵)下测试。 4.3 Socket建链压力测试(TCP) 说明:1、以上面的七个步骤为一个循环周期,进行至少200次周期以上的压力测试;每一条指令出现失败,都可以统计为一次 2、在连上AP后并成功分配IP,服务器和网络状况畅通的情况下,建立TCP的成功率在99%以上。 能否增加一个通讯速率,包含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信息,并保存下来提供给我们分析。 |
|