玩转RT-Thread系列教程(12)--Wifi模组的使用


玩转RT-Thread系列教程(12)–Wifi模组的使用

本章节也是最有意思的章节,我将带你手把手物联网,让你直观的感受RTT软件包的便捷以及强大之处!

一、添加at_device软件包

1.1、配置Cubemx

根据正点原子开发板原理图,我们可以看出wifi使用到了串口3,记得用跳线帽将串口3与GBC接口连接。

使能串口3

1.2、打开env配置

使能串口3

1.3、使能at_device

配置用户信息,输入您的wifi和密码

1.4、更新软件包

1.5、生成mdk工程

二、启动测试AT组件

打开已经生成好的mdk工程,我们发现自动添加了两个文件,分别为AT、at_device

2.1、测试前的准备工作

2.1.1、首先让我们先来了解一下AT指令吧

AT 命令集是一种应用于 AT 服务器(AT Server)与 AT 客户端(AT Client)间的设备连接与数据通信的方式

  • AT 功能的实现需要 AT Server 和 AT Client 两个部分共同完成。
  • 前缀由字符 AT 构成,主体由命令、参数和可能用到的数据组成;结束符一般为 <CR><LF> ("\r\n")。
  • AT Server 和 AT Client 之间支持多种数据通讯的方式(UART、SPI 等),最常用的是串口 UART 通讯方式。

本次我们使用的通信模组为安信可公司出版的ESP8266,以下是改通讯模组常用AT指令:

  • AT+RST 复位模组
  • AT+GMR 查询版本信息
  • AT+CWMODE=1 开启模组透传
  • AT+CWJAP=”wifi名称”,”wifi密码” 模组作为STA模式连接wifi
  • AT+CIFSR 查看分配的IP地址
  • AT+CIPSTART=”TCP”,”xxxxx”,1883 使用TCP方式连接服务器
  • AT+CIPMODE=1 开启透传
  • AT+CIPSEND 发送数据

2.2、修改at_client+at_device_esp8266文件

修改响应最大支持的接收数据的长度为128,防止缓冲区内存过小

将rt_thread_mdelay函数的延迟时间修改成1000ms,让AT+RST有足够时间来运行

2.3、编译、下载、验证

可以看到,AT_Client已经成功初始化,并且模组已经成功的连接到wifi。

测试联网

可以看到输入ifconfig已经成功的获取到了ip地址

Ping下百度,可以收到数据包,证明我们的wifi已经成功联网了

三、

四、可能出现的错误汇总

1.超时问题

 \ | /
- RT -     Thread Operating System
 / | \     4.0.2 build Aug 16 2019
 2006 - 2019 Copyright by rt-thread team
[I/sal.skt] Socket Abstraction Layer initialize success.
[I/at.clnt] AT client(V1.3.0) on device uart3 initialize success.
[D/at.dev] the network interface device(esp0) set up status
[D/at.dev] esp8266 device(esp0) initialize start.
[E/at.clnt] Read response buffer failed. The Response buffer size is out of buffer size(256)!
[D/at.clnt] execute command (ATE0) timeout (5000 ticks)!
[I/at.dev] esp8266 device(esp0) initialize retry...

1.Read response buffer failed. 缓冲区内存过小,那我们就直接增大就好了

2.command (ATE0)运行超时,ATE0是AT指令中的关闭回显,出现这个问题的原因可能是AT组件初始化时间过短

解决缓冲区内存过小问题

修改响应最大支持的接收数据的长度为128,防止缓冲区内存过小

解决ATE0运行超时问题

AT_SEND_CMD(client, resp, "AT+RST");
/* reset waiting delay */
rt_thread_mdelay(2000);//增加延时
/* disable echo */
AT_SEND_CMD(client, resp, "ATE0");

2.不支持AT+CIPDNS_CUR?指令,ESP8266的固件版本太低

解决`AT+CIPDNS_CUR?指令问题

访问乐鑫的官网去下载更新版本的AT固件,https://www.espressif.com/zh-hans/support/download/at,并烧录固件即可


文章作者: Rb菌
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Rb菌 !
  目录