文章目录
1. 基础知识
-
ATK-ESP-01
ATK-ESP-01模块支持标准的IEEE802.11b/g/n协议,完整的TCP/IP协议栈。我们可以使用该模块为现有的设备添加联网功能,也可以构建独立的网络控制器。
-
引脚定义
ATK-ESP-01模组共接出16个接口:
-
工作模式:
-
ATK-MW8266d模块
ATK-MW8266D模块是正点原子推出的一款高性能UART-WIFI(串口-无线)模块, ATK-MW8266D模块板载了正点原子公司自主研发的ATK-ESP-01模块,该模块通过FCC、 CE认证,可直接用于出口欧美地区的产品。
ATK-MW8266D模块采用串口(LVTTL)与MCU(或其他串口设备)通讯,且内置TCPP协议栈,能够实验串口与WFI之间的转换。通过ATK-MW8266D模块,传统的串口设备只需要简单的串口配置,即可通过网络(WFI)传输自己的数据。
ATK-MW8266D模块的各个引脚的详细描述:
2. 工作模式
ATK-MW8266D模块支持三种工作模式,分别为:STA、AP、STA+AP。
-
STA模式
在此模式下,ATK-MW8266D模块可连接其他设备提供的无线网络,例如通过WIFI连接至路由器,从而可以访问互联网,进而实现手机或电脑通过互联网实现对设备的远程控制。
-
AP模式
AP模式为默认的模式,在此模式下,ATK-MW8266D模块将作为热点供其他设备连接,从而让手机或电脑直接与模块进行通讯,实现局域网的无线控制。
-
STA+AP模式
该模式为STA模式与AP模式共存的一种模式,ATK-MW8266D模块既能连接至其他设备提供的无线网络,又能作为热点,供其他设备连接,以实现广域网与局域网的无缝切换,方便操作使用。
除了上述的三种工作模式外,ATK-MW8266D模块在进行UDP连接或作为TCP客户端连接时,能够进入透传模式,进入透传模式后,ATK-MW8266D将会原封不动地把从TCP服务器或其他UDP终端接收到的消息,通过UART发送至与之连接的设备。
3. AT指令
-
AT指令说明
类型 指令格式 描述 测试指令 AT+<CMD>=?
该命令用于查询设置指令的参数以及取值范围 查询指令 AT+<CMD>?
该命令用于返回参数的当前值 设置指令 AT+<CMD>=<...>
该命令用于设置用户自定义的参数值 执行指令 AT+<CMD>
该命令用于执行受模块内部程序控制,且参数不可变的的功能 -
基础AT指令
指令 描述 AT 测试 AT启动 AT+RST 重启模块 AT+GMR 查看版本信息 ATE 开关回显功能 AT+RESTORE 恢复出厂设置 AT+UART UART配置 -
WIFI功能AT指令
指令 描述 AT+CWMODE 设置WIFI模式(STA、AP、STA+AP) AT+CWJAP 连接 AP AT+CWLAP 扫描附近的 AP 信息 AT+CWQAP 与 AP 断开连接 AT+CWSAP 设置 AP模式的配置 AT+CWLIF 获取已接入设备的信息 AT+CWDHCP 设置 DHCP AT+CWAUTOCONN 设置上电时是否自动连接 AP AT+CIPSTAMAC 设置 STA模式下的 MAC 地址 AT+CIPAPMAC 设置 AP 模式下的 MAC地址 AT+CIPSTA 设置 STA 模式下的 IP 地址 AT+CIPAP 设置 AP模式下的IP地址 AT+CWSTARTSMART 开始 SmartConfig AT+CWSTOPSMART 停止 SmartConfig AT+WPS 设置 WPS 功能 AT+MDNS 设置 MDNS 功能 AT+CWHOSTNAME 设置主机名 -
TCP/IP相关AT指令
指令 描述 AT+CIPSTATUS 查询网络连接信息 AT+CIPDOMAIN 域名解析功能 AT+CIPSTART 建立 TCP 连接、UDP 传输或 SSL 连接 AT+CIPSSLSIZE 设置 SSL 缓冲大小 AT+CIPSEND 发送数据 AT+CIPCLOSE 关闭 TCP 连接、UDP 传输或 SSL 连接 AT+CIFSR 查询本地 IP 地址 AT+CIPMUX 设置多连接模式 AT+CIPSERVER 设置TCP服务器 AT+CIPMODE 设置透传模式 AT+SAVETRANSLINK 保存透传连接到 Flash AT+CIPSTO 设置 TCP 服务器的超时时间 AT+PING Ping 功能 AT+ATKCLDSTA 连接到原子云服务器 AT+ATKCLDCLS 关闭原子云服务器连接
4. 常用AT指令实例
-
AP模式下作TCP服务器
发送指令 作用 AT+CWMODE=2 设置为 AP 模式 AT+RST 重启生效 AT+CWSAP=“ATK-MW8266D”, “12345678”,1,4 设置AP参数。SSID 为 ATK-MW8266D、密码为12345678、 通道为1、加密方式为WPA_WPA2_PSK AT+CIPMUX=1 开启多连接 AT+CIPSERVER=1,8086 开启 SERVER 模式,端口号为8086 AT+CIPSEND=0,25 向 ID0 发送25字节数据包 -
AP模式下作TCP客户端
发送指令 作用 AT+CWMODE=2 设置为 AP 模式 AT+RST 重启生效 AT+CWSAP=“ATK-MW8266D”, “12345678”,1,4 设置AP参数。SSID 为ATK-MW8266D、密码为12345678、 通道为1、加密方式为 WPA_WPA2_PSK AT+CIPMUX=0 开启单连接 AT+CIPSTART=“TCP”, “192.168.4.XXX”,8086 建立 TCP 连接到192.168.4.XXX:8086 AT+CIPMODE=1 开启透传模式(仅单连接Client时支持) AT+CIPSEND 开始发送数据 -
AP模式下作UDP连接
发送指令 作用 AT+CWMODE=2 设置为 AP 模式 AT+RST 重启生效 AT+CWSAP=“ATK-MW8266D”, “12345678”,1,4 设置 AP参数。SSID 为ATK-MW8266D、密码为12345678、 通道为1、加密方式为WPAWPA2PSK AT+CIPMUX=0 开启单连接 AT+CIPSTART=“UDP”, ““192.168.4.XXX”,8086 建立 UDP 连接到192.168.4.XXX:8086 AT+CIPSEND=25 向目标 UDP发送25字节数据 -
STA模式下作TCP服务器
发送指令 作用 AT+CWMODE=1 设置为STA 模式 AT+RST 重启生效 AT+CWJAP=“ATK-MW8266D” “12345678” 加入WiFi热点。SSID:ATK-MW8266D、密码:12345678 AT+CIPMUX=1 开启多连接 AT+CIPSERVER=1,8086 开启 SERVER 模式,端口号为8086 AT+CIPSEND=0,25 向 ID0发送25字节数据包 -
STA模式下作TCP客户器
发送指令 作用 AT+CWMODE=1 设置为 STA 模式 AT+RST 重启生效 AT+CWJAP=“ATK-MW8266D”, “12345678"” 加入WiFi热点。SSID:ATK-MW8266D、密码:12345678 AT+CIPMUX=0 开启单连接 AT+CIPSTART="TCP’, “192.168.4.XXX”,8086 建立 TCP 连接到192.168.4.XXX:8086 AT+CIPMODE=1 开启透传模式(仅单连接Client 时支持) AT+CIPSEND 开始发送数据 -
STA模式下作UDP连接
作用 AT+CWMODE=1 设置为 STA 模式 AT+RST 重启生效 AT+CWJAP=“ATK-MW8266D”, “12345678"” 加入WiFi热点。SSID:ATK-MW8266D、密码:12345678 AT+CIPMUX=0 开启单连接 AT+CIPSTART=“UDP”, “192.168.4.XXX",8086 建立 UDP 连接到192.168.4.XXX:8086 AT+CIPSEND=25 向目标 UDP 发送 25 字节数据 -
AP+STA模式下作TCP服务器
发送指令 作用 AT+CWMODE=3 设置为AP+STA 模式 AT+RST 重启生效 AT+CWSAP=“ATK-MW8266D”,“12345678”,1,4 设置 AP参数。SSID 为ATK-MW8266D、密码为12345678、 AT+CWJAP=“ALIENTEK”,“12345678” 通道为1、加密方式为WPA_WPA2_PSK 加入WiFi热点。SSID:ALIENTEK、密码:12345678 AT+CIPMUX=1 开启多连接 AT+CIPSERVER=1,8086 开启SERVER 模式,端口号为8086 AT+CIPSTO=1200 设置服务器超时时间1200s AT+CIPSEND=0,25 向 IDO 发送数据 AT+CIPSEND=1,25 向 ID1 发送数据 -
AP+STA模式下作TCP客户器
发送指令 作用 AT+CWMODE=3 设置为AP+STA 模式 AT+RST 重启生效 AT+CWSAP=“ATK-MW8266D”, “12345678”,1,4 设置 AP参数。SSID 为 ATK-MW8266D、密码为12345678、 通道为1、加密方式为 WPA_WPA2_PSK AT+CWJAP=“ALIENTEK”, “12345678” 加入WiFi热点。SSID:ALIENTEK、密码:12345678 AT+CIPMUX=1 开启多连接 AT+CIPSTART=O,“TCP”, “192.168.4.XXX”,8086 建立 TCP 连接到 192.168.4.XXX:8086 AT+CIPSEND=0,25 向 IDO 发送数据 AT+CIPSEND=1,25 向 ID1 发送数据 -
AP+STA模式下作UDP连接
发送指令 作用 AT+CWMODE=3 设置为 AP+STA 模式 AT+RST 重启生效 AT+CWSAP=“ATK-MW8266D”, “12345678”,1,4 设置 AP 参数。SSID 为 ATK-MW8266D、密码为 12345678、 通道为1、加密方式为WPA_WPA2_PSK AT+CWJAP=“ALIENTEK”, “12345678"” 加入WiFi热点。SSID:ALIENTEK、密码:12345678 AT+CIPMUX=1 开启多连接 AT+CIPSERVER=1,8086 开启服务器,端口号8086 AT+CIPSTO=1200 设置服务器超时时间1200s AT+CIPSTART=O,“UDP”, ““192.168.1.XXX”,8086 STA 作为 ID0 连接到192.168.1.XXX:8086 AT+CIPSEND=0,25 向 IDO 发送数据 AT+CIPSEND=1,25 向 ID1 发送数据
5. 连接原子云
原子云即原子云服务器,是正点原子推出的互联网云服务平台,它可以实现数据的远程监控、转发和管理等功能,在未来也会持续更新更多的功能以满足用户的需求。原子云域名为:cloud.alientek.com,端口号为:59666。
使用步骤:
-
登录"https://cloud.alientek.com/"创建并登录账号
-
点击设备管理->新增设备->ESP8266
-
设置新增设备名称和密码
-
点击新增,创建完成
-
点击分组管理->新增分组
-
选中序号->移入->保存
6. 使用usb转ttl模块测试ATK-MW8266D
-
硬件连接:
-
打开串口调试助手,发送AT指令进行测试
7. 使用STM32F103ZET6战舰开发板透传模式
-
硬件连接:
过程中发现很多问题,然后一直无法完成硬件初始化,是因为线路连接问题,这里USART3的跳线帽要连接到 GBC;USART1要把PA9、PA10连接到RXD和TXD,使用USB数据线连接USB_UART,wifi模块插入方式如上 图所示。 -
软件设置:
//1.恢复出厂设置 atk_mw8266d_send_at_cmd("AT+RESTORE", "ready", 3000); //2.AT测试 atk_mw8266d_send_at_cmd("AT", "OK", 500); //3.STA模式 atk_mw8266d_send_at_cmd("AT+CWMODE=1", "OK", 500); //4.软件复位 atk_mw8266d_send_at_cmd("AT+RST", "OK", 500); //5.关闭回显 atk_mw8266d_send_at_cmd("ATE0", "OK", 500); //6.连接EIFI sprintf(cmd, "AT+CWJAP=\"%s\",\"%s\"", ssid, pwd); atk_mw8266d_send_at_cmd(cmd, "WIFI GOT IP", 10000); //7.获取IP地址 atk_mw8266d_send_at_cmd("AT+CIFSR", "OK", 500); //8.连接TCP服务器 sprintf(cmd, "AT+CIPSTART=\"TCP\",\"%s\",%s", server_ip, server_port); atk_mw8266d_send_at_cmd(cmd, "CONNECT", 5000); //9.开启透传模式 atk_mw8266d_send_at_cmd("AT+CIPMODE=1", "OK", 500); //10.开始发送数据 atk_mw8266d_send_at_cmd("AT+CIPSEND", ">", 500);
从上述软件配置过程可以看出,基本与我们使用usb转ttl相同。
-
注意事项:
-
模块的wifi要与电脑的wifi连接到同一个AP上面
-
修改代码:
-
-
实验结果:
从实验结果分析,已经建立连接,并开启透传模式,成功发送数据。
8. 使用STM32F103ZET6战舰板连接原子云
-
硬件连接:
与透传模式硬件连接图相同。
-
软件设置:
//1.恢复出厂设置 atk_mw8266d_send_at_cmd("AT+RESTORE", "ready", 3000); //2.AT测试 atk_mw8266d_send_at_cmd("AT", "OK", 500); //3.STA模式 atk_mw8266d_send_at_cmd("AT+CWMODE=1", "OK", 500); //4.软件复位 atk_mw8266d_send_at_cmd("AT+RST", "OK", 500); //5.关闭回显 atk_mw8266d_send_at_cmd("ATE0", "OK", 500); //6.连接EIFI sprintf(cmd, "AT+CWJAP=\"%s\",\"%s\"", ssid, pwd); atk_mw8266d_send_at_cmd(cmd, "WIFI GOT IP", 10000); //7.获取IP地址 atk_mw8266d_send_at_cmd("AT+CIFSR", "OK", 500); //8.连接原子云 sprintf(cmd, "AT+ATKCLDSTA=\"%s\",\"%s\"", id, pwd); ret = atk_mw8266d_send_at_cmd(cmd, "CLOUD CONNECTED", 10000); //9.接收原子云发送的数据 atk_mw8266d_uart_rx_restart();
-
注意事项:
-
实验结果:
原子云向单片机发送的信息,我们代码中设置了发送数据控制LED0的亮灭,发送1控制LED0点亮,然后回传灯亮。