无线通信-WIFI通信

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。
在这里插入图片描述

  1. STA模式

    在此模式下,ATK-MW8266D模块可连接其他设备提供的无线网络,例如通过WIFI连接至路由器,从而可以访问互联网,进而实现手机或电脑通过互联网实现对设备的远程控制。

  2. AP模式

    AP模式为默认的模式,在此模式下,ATK-MW8266D模块将作为热点供其他设备连接,从而让手机或电脑直接与模块进行通讯,实现局域网的无线控制。

  3. 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+UARTUART配置

    在这里插入图片描述

    在这里插入图片描述

  • 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+PINGPing 功能
    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”,8086STA 作为 ID0 连接到192.168.1.XXX:8086
    AT+CIPSEND=0,25向 IDO 发送数据
    AT+CIPSEND=1,25向 ID1 发送数据

5. 连接原子云

原子云即原子云服务器,是正点原子推出的互联网云服务平台,它可以实现数据的远程监控、转发和管理等功能,在未来也会持续更新更多的功能以满足用户的需求。原子云域名为:cloud.alientek.com,端口号为:59666。

使用步骤:

  1. 登录"https://cloud.alientek.com/"创建并登录账号

    在这里插入图片描述

  2. 点击设备管理->新增设备->ESP8266

    在这里插入图片描述

  3. 设置新增设备名称和密码

    在这里插入图片描述

  4. 点击新增,创建完成

    在这里插入图片描述

  5. 点击分组管理->新增分组

    在这里插入图片描述

  6. 选中序号->移入->保存

    在这里插入图片描述

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相同。

  • 注意事项:

    1. 模块的wifi要与电脑的wifi连接到同一个AP上面

    2. 修改代码:

      在这里插入图片描述

  • 实验结果:
    在这里插入图片描述

    从实验结果分析,已经建立连接,并开启透传模式,成功发送数据。

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点亮,然后回传灯亮。

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值