嵌入式上位机开发入门(七):W800 模块 AT 命令
目录一、前言二、W800 模块简介三、常用 AT 指令四、连接 AP 步骤五、用作 TCP Client六、用作 TCP Server七、用作 UDP八、注意事项九、总结十、结尾一、前言大家好这里是Hello_Embed。在工业控制系统中可能会使用到 W800 模块此模块通过串口与其他设备通信。在设备互联系统项目中是通过 STM32H5 作为中控转发 PC 与各个传感器的数据同样的道理如果增加一个串口通道就可以实现一样的功能。准备好已经板载 W800 的 STM32H5 开发板PC 通过 USB 串口与 STM32H5 收发数据STM32H5 转发数据到 W800 的串口最后 PC 也能接收来自 W800 的数据。STM32H5 的程序有如下功能① 模拟出一个 USB 串口② 把 PC 发来的数据直接通过 UART1 发给 W800③ 把 W800 发来的数据直接通过 USB 串口发给 PC程序实现可以参考设备互联系列笔记增加一个串口实现转发。二、W800 模块简介W800 是安信可科技推出的一款 Wi-Fi 模块支持 AT 命令控制。通过串口与模块通信可以实现 Wi-Fi 连接、TCP/UDP .socket 通信等功能。打开安信可串口调试助手即可对 W800 模块进行调试。三、常用 AT 指令W800 支持的 AT 指令非常多本篇仅展现几个常用的指令指令指令格式响应说明ATAT\r\nOK\r\n\r\n测试指令响应 OK 表示测试成功ATZATZ\r\nOK\r\n\r\n软件复位响应 OK 表示复位指令发送成功复位后会响应user taskATEATE\r\nOK\r\n\r\n回显切换指令输入一次切换一次状态在回显状态下 W800 会连带指令和结果一起响应ATRSTFATRSTF\r\nOK\r\n\r\n恢复 FLASH 中的出厂设置恢复后的设置需系统重启后才能生效ATWPRTATWPRT[!?][type]\r\nOK[type]\r\n\r\n设置/查询无线网络类型0-STA; 2-SoftAP; 3-APSTAATWSCANATWSCAN\r\nOK……该指令仅在无线网络类型为 STA 时有效用于扫描无线网络完成后返回ATSSIDATSSID[!?][SSID]OK[ssid]\r\n设置/查询无线网络名称即 SSIDATKEYATKEY[!?][format],[index],[key]\r\nOK[format,index,key]\r\n设置/查询网络密钥ATWJOINATWJOIN\r\nOK…\r\n如果当前网络类型为 STA 时本指令功能为连接 AP如果当前为 SoftAP 或 APSTA 时本指令功能为创建网络ATWLEAVATWLEAV\r\nOK\r\n\r\n无线网络类型为 STA 时用于断开当前无线网络ATNIPATNIP[!?][type]…\r\nOK[type…\r\n当无线网卡作为 STA 时该指令用于设置/查询本端 IP 地址ATLKSTTATLKSTT\r\nOK[status,ip,netmask,gateway,dns1,dns2]\r\n\r\n查询本端网络连接状态ATSKCTATSKCT[protocol]…\r\nOK\r\n建立 socket。在 client 模式等待连接完成成功或失败后返回在 server 模式下创建完成后直接返回ATSKCLSATSKCLS\r\nOK\r\n\r\n关闭指定的 socketATSKSNDATSKSND[socket],[size]\r\nOK\r\n\r\n响应 OK 后发送数据流ATSKRCVATSKRCV[socket],[size]\r\nOK\r\n\r\n响应 OK 后会将 rxdata 中的数据发送到串口四、连接 AP 步骤// 设置工作模式为 STAATWPRT0// 列出 AP 名ATWSCAN// 设置需要加入的 AP 名称如 ProgrammersATSSIDProgrammers// 设置需要加入的 AP 的无线密钥 100asktech// 参数 1密钥格式0 表示 HEX1 表示 ASCII// 参数 2index: 密钥索引号14 用于 WEP 加密密钥其它加密方式固定为 0// 参数 3无线密钥。例如12345678ATKEY1,0,// 启用 DHCPATNIP0// 保存参数到 spi flashATPMTF// 加入无线网络 WinnerMicroATWJOIN// 查询本端网络连接状态ATLKSTT// pingATPINGdomain// 域名解析ATSKGHBNdomain// 断开无线网络AT_WLEAV五、用作 TCP Client步骤一在 SSCOM 里启动 Server步骤二在 W800 建立 socket 连接ATSKCT[protocol],[cs],[host_timeout],,protocol: 0-TCP, 1-UDPcs: 0-Client, 1-Serverhost_timeout: 作为 client 时写入目的服务器名称或 IP作为 TCP Server 时写入超时时间单位秒0 表示永不超时remote_port: 远程端口号local_port: 本地端口号返回OK示例ATSKCT0,0,192.168.1.29,777,888OK1// socket 为 1步骤三发送数据ATSKSNDsocket,sizeATSKSND1,10步骤四接收数据ATSKRCVsocket,size// 返回: 没有收到数据也会马上返回size 为 0// OK// [data stream]ATSKRCV1,1000步骤五关闭 socketATSKCLSsocketATSKCLS1六、用作 TCP Server步骤一建立 socketATSKCT0,1,0,0,555OK1// socket 为 1步骤二列出 W800 的 IPATLKSTTOK1,1,192.168.1.74,0,555,02,2,192.168.1.29,63131,555,0步骤三在 SSCOM 里连接 W800步骤四列出连接的 socketATSKSTT1OK1,1,192.168.1.74,0,555,02,2,192.168.1.29,63131,555,0步骤五发送数据// 5.1 先发命令ATSKSND2,10// 5.2 再发数据1234567890步骤六接收数据ATSKRCV2,1000步骤七关闭 socketATSKCLS1七、用作 UDP步骤一在 SSCOM 里启动 UDP步骤二在 W800 建立 socket 连接ATSKCT1,0,192.168.1.29,777,888OK1// socket 为 1步骤三发送数据ATSKSND1,10步骤四接收数据ATSKRCV1,1000步骤五关闭 socketATSKCLS1八、注意事项重要发送 W800 的 AT 命令时只需要在末尾发送回车字符不需要换行字符。但是安信可串口调试助手会发送回车、换行 2 个字符。这导致在使用AT_SKSND命令发送数据时换行符ASCII 值为 0x0a被当做第 1 个数据。例如上图里发送了1234567890十个字符但是只显示九个字符。实际上 SSCOM 已经接收到了十个字符先接收到换行符再接收到123456789九个字符。安信可串口调试助手可以记录历史命令比较好用所以本课程使用它。缺点就是勾选发送新行时发送的是 2 个字符回车、换行无法只发送回车符。九、总结W800 模块通过 AT 命令控制支持 Wi-Fi 连接、TCP/UDP 通信连接流程设置工作模式 → 配置 SSID 和密钥 → 加入网络 → 建立 socketTCP Client主动连接服务器使用ATSKCT、ATSKSND、ATSKRCVTCP Server创建监听 socket等待客户端连接UDP无连接通信使用相同的 AT 指令十、结尾本篇学习了 W800 模块的 AT 命令使用方法下一篇将学习体验 AT 命令主动上报功能。Hello_Embed继续带你从原理到实践掌握嵌入式上位机开发的核心技能敬请关注