玩转RT-Thread系列教程(12)--WIFI模组的使用
Posted Rb菌
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了玩转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已经成功联网了
三、可能出现的错误汇总
3.1、超时问题
\\ | /
- RT - Thread Operating System
/ | \\ 4.0.2 build Aug 16 2019
2006 - 2019 Copyright by rt-thread team
[32m[I/sal.skt] Socket Abstraction Layer initialize success.[0m
[32m[I/at.clnt] AT client(V1.3.0) on device uart3 initialize success.[0m
[0m[D/at.dev] the network interface device(esp0) set up status[0m
[0m[D/at.dev] esp8266 device(esp0) initialize start.[0m
[31m[E/at.clnt] Read response buffer failed. The Response buffer size is out of buffer size(256)![0m
[0m[D/at.clnt] execute command (ATE0) timeout (5000 ticks)![0m
[32m[I/at.dev] esp8266 device(esp0) initialize retry...[0m
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");
3.2、不支持AT+CIPDNS_CUR?指令—8266的固件版本太低
解决`AT+CIPDNS_CUR?指令问题
访问乐鑫的官网去下载更新版本的AT固件,https://www.espressif.com/zh-hans/support/download/at,并烧录固件即可
以上是关于玩转RT-Thread系列教程(12)--WIFI模组的使用的主要内容,如果未能解决你的问题,请参考以下文章