RT-Thread记录(十七、AT组件 — ESP8266使用 at_device 软件包联网)

news/2025/4/22 2:19:24
AT 组件:RT-Thread 一个比较典型的组件,
解决了不同网络模块AT命令之间的差异导致的重复开发的问题,大幅度简化了MCU+无线模块方案开发。

目录

  • 前言
  • 一、AT 组件简介
  • 二、at_device 软件包使用步骤
    • 2.1 at_device 软件包
    • 2.2 使用步骤
  • 三、 测试问题
    • 3.1 问题的出现(未解决)
    • 3.2 需要DMA问题?(测试不是)
    • 3.3 ESP8266固件问题?(应该也不是)
    • 3.4 正常情况(以前的程序)
  • 结语

前言

上文我们开始接触 RT-Thread 的组件与软件包,在专栏的这部分,我并不计划深入分析这些组件与软件包的理论基础。即便如此,在介绍 SFUD组件的时候,我还是做了简单介绍。

正好手头有一个 ESP8266 的模块,就想着测试记录一下 AT 组件的使用。

今天我们要介绍的 AT 组件相对来说,比 SFUD 组件复杂一些,这次真的不介绍理论了,因为我能看到的理论资料,大家都能看到,我会把自己的参考的一些文档放出链接,供大家参考。

本文用到的不仅仅是 AT 组件,还用到了基于 AT 组件的软件包,理论性的东西不是 RT-Thread 专栏组件与软件包部分的重点,我的目的在于记录使用我们的开发环境如何快速的使用这些组件与软件包进行我们产品的实际应用。

❤️
本 RT-Thread 专栏记录的开发环境:
RT-Thread记录(一、RT-Thread 版本、RT-Thread Studio开发环境 及 配合CubeMX开发快速上手)
RT-Thread记录(二、RT-Thread内核启动流程 — 启动文件和源码分析)
❤️
RT-Thread 内核篇系列博文链接:
RT-Thread记录(三、RT-Thread 线程操作函数及线程管理与FreeRTOS的比较)
RT-Thread记录(四、RT-Thread 时钟节拍和软件定时器)
RT-Thread记录(五、RT-Thread 临界区保护)
RT-Thread记录(六、IPC机制之信号量、互斥量和事件集)
RT-Thread记录(七、IPC机制之邮箱、消息队列)
RT-Thread记录(八、理解 RT-Thread 内存管理)
RT-Thread记录(九、RT-Thread 中断处理与阶段小结)
❤️
在STM32L051C8 上使用 RT-Thread 应用篇系列博文连接:
RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (一、无线温湿度传感器 之 新建项目)
RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (二、无线温湿度传感器 之 CubeMX配置)
RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (三、无线温湿度传感器 之 I2C通讯)
RT-Thread 应用篇 — 在STM32L051上使用 RT-Thread (四、无线温湿度传感器 之 串口通讯)
❤️
RT-Thread 设备篇系列博文链接:
RT-Thread记录(十、全面认识 RT-Thread I/O 设备模型)
RT-Thread记录(十一、I/O 设备模型之UART设备 — 源码解析)
RT-Thread记录(十二、I/O 设备模型之UART设备 — 使用测试)
RT-Thread记录(十三、I/O 设备模型之PIN设备)
RT-Thread记录(十四、I/O 设备模型之ADC设备)
RT-Thread记录(十五、I/O 设备模型之SPI设备)
❤️
RT-Thread 组件与软件包系列博文链接:
RT-Thread记录(十六、SFUD组件 — SPI Flash的读写)

一、AT 组件简介

为了方便用户使用 AT 命令,并且适配不同厂家的不同设备, RT-Thread 提供了 AT 组件用于 AT 设备的连接和数据通讯。

AT 组件理论知识参考文章连接:

RT-Thread 官方 AT 组件说明

RT-Thread 官方文档:应用 AT 组件连接 ESP8266 模块

rt-thread AT组件学习梳理

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

AT 组件的使用包括客户端的和服务器,对于嵌入式设备而言,更多的情况下设备使用 AT 组件作为客户端连接服务器设备,如下图:

在这里插入图片描述

如果有些 AT 模块可以跑 RT-Thread,那么他们可以使用 AT 组件作为服务器端的设备,如图:

在这里插入图片描述

.

如果想深入了解理论基础,大家可以自己参考上面推荐的链接文章。

.

二、at_device 软件包使用步骤

乐鑫 ESP8266 大家应该很熟悉,一款性价比极高的 WIFI 模块,正因为他的性价比高,所以很收欢迎,所以很通用,这也是为什么官方以及很多文章都是使用 ESP8266 作为测试。

以前我们在裸机使用 ESP8266,需要根据文档根据自己的需求自己一点一点实现模块的驱动程序,现在使用了 RT-Thread 系统,我们可以基于 RT-Thread 提供的 AT 组件进行 ESP8266 的操作。

2.1 at_device 软件包

在使用 RT-Thread 系统的时候,我们有 AT 组件可以进行 ESP8266 的操作,因为 AT 组件是通用的驱动,它并不区分不同芯片,即便我们有 AT 组件可以使用,但是按理来说还是得自己根据 ESP8266 本身的资料基于 AT 组件实现操作 ESP8266 的驱动程序。

但是,我们说过 RT-Thread 相对于其他的 RTOS 来说,他的生态做得很好,开发者可以根据 RT-Thread 标准的框架,写好各种各样的开源软件包,提供给大家使用。

正式因为 ESP8266 通用,所以已经有开发者基于 RT-Thread 的AT组件,写好了支持 ESP8266 的软件包 at_device。我们可以直接使用:

在这里插入图片描述

2.2 使用步骤

基本的介绍完毕,我们直接来说明一下如何使用 RT-Thread 的组件与软件包,简单的使用我们的 ESP8266 WIFI 模块。

☆ 先说明一个依赖关系, AT 组件需要使用 libc ,at_device 软件包又是基于 AT 组件设计,所以我们在 RT-Thread 配置中,需要使能 AT组件,libc,添加 at_device 软件包 3 个大步骤 。☆

当然,因为 ESP8266 是使用串口和 MCU相连,不要忘记定义好 WIFI 模块使用的 UART 设备。因为我们前面文章的时候已经使能了 ESP8266 使用的 uart3 设备,所以这里无需额外操作。

我们按照顺序,使用图文说明:
.
1、使能 WIFi 模块串口:
.
根据我们以前博文 RT-Thread记录(十二、I/O 设备模型之UART设备 — 使用测试) 操作即可。

对于在 RT-Thread Settings 中设置的这些步骤,可以一次性完成,我这里使用的是分开说明,但是实际上使能组件与软件包这些操作可以同时进行,不冲突。
.

2、打开 RT-Thread Settings,使能 AT 组件和 libc组件,如下图所示:
.
在这里插入图片描述

其中可以查看一下 AT 的配置项,在基础知识中应该了解到, 下图中的 CLI 命令行接口,就是可以通过 shell 命令行直接向 WIFI 模块发送指令做测试:

在这里插入图片描述

勾选了这两个组件可以直接进行下面的步骤,作为测试,也可以先看看什么效果,在命令行中多了 at 的操作命令:

在这里插入图片描述

.

3、 还是在 RT-Thread Settings 中,点击添加软件包,通过搜索找到 at_device 软件包添加 :
.

在这里插入图片描述

.

4、 配置 at_device 软件包 :
.

可以看到现在 at_device 软件包已经支持很多常用的模块,使用起来非常方便:

在这里插入图片描述

我们本次测试使用的是 ESP8266,所以在 ESP8266中进行配置:

在这里插入图片描述
.

设置完毕可通过工程查看,软件包的位置都在 packages 文件夹下面:

在这里插入图片描述

到此,我们的设置就完成了,可以直接编译进行烧录测试。

三、 测试问题

最后测试结果,一言难尽啊…… ,尝试了好几个小时,最终在这个上面居然失败了……

好难过,因为我同样的硬件,用以前的版本程序,也是用 at_device 软件包一切正常 (灬ꈍ ꈍ灬)

我一点一点记录一下:

3.1 问题的出现(未解决)

最开始按照上面的设置,第一现象是:

在这里插入图片描述

上面提示没有足够的缓存接收数据,这里指的是串口接收缓存,以前我们测试时候一直是使用的是 64大小,需要改大一点,改大一点比如 512 如图:

在这里插入图片描述

改了以后不会有警告了,但是还是会联网失败,有时候是这样:

在这里插入图片描述
有时候是这样:

在这里插入图片描述

有时候又是这样:

在这里插入图片描述

期间也网上找了一些说法,也参考了一些文章,反正就是各种尝试,各种都不成功 = =!

在这里插入图片描述
.

3.2 需要DMA问题?(测试不是)

有的说得用DMA ,下面是使用了 DMA 的结果(缓存512 和1024 都一样):

在这里插入图片描述

.

3.3 ESP8266固件问题?(应该也不是)

网上也有文章说 ESP8266 的固件版本会影响测试结果,我手头并没有可以烧录 ESP8266 的设备。

我是根据什么来判断固件没问题的呢,在以前没有 RT-Thread Studio 的时候,我也使用过 RT-Thread ,同样的硬件吗,也是使用了 at_device 软件包,其 ENV 配置如下:

在这里插入图片描述

同样的硬件同样的 WIFI 环境,使用上面配置是能够正常驱动 ESP8266的,如下图所示:

在这里插入图片描述

对应的,我们现在的 RT-Thread Studio 环境,我设置成一样的就会出错:

在这里插入图片描述

同样的硬件同样的 WIFI 环境,就会出问题,情况如下:

在这里插入图片描述

.
反正我是感觉今天是解决不了了… …
.

3.4 正常情况(以前的程序)

反正也是使用的 AT 组件,只不过版本(V1.3.0)与现在的版本(V1.3.1)不同,使用了at_device 软件包默认的 ESP8266 示例,测试可以正常的连上WIFi,而且可以正常 ping 通网络:

在这里插入图片描述

结语

本文虽然只是测试一下基于RT-Thread AT组件的 at_device 软件包,但是在测试过程中遇到了问题,因为手头的 ESP8266 是好些年前的模块找出来的,对于他的一些开发工具,都已经没有了,所以没有对模块进行版本更换。

不过话说回来,同样的系统,同样的组件和软件包,基本上就是版本有点区别,结果却不一样,这个问题,我最终还是没能解决 = =! 我猜想是自己哪里设置有点问题? 还是哪里出了问题?

最近都不会使用 ESP8266 WIFI 模块,找出来本来也只是为了说明一下 RT-Thread AT组件与软件包的使用,本来以为简简单单,没想到翻车了……

这次文章的结尾轻松不起来了,遇到个没解决的问题,但是我希望说明是到位了,还有如果有知道问题的朋友还望告知 。

我们接下来还要测试几个简单的软件包,我们在设备模型中没有讲过 I2C 设备模型,因为我们可以直接使用现成的I2C设备软件包。


https://dhexx.cn/news/show-3784648.html

相关文章

(五)Java EE 5实现Web服务(Web Services)及多种客户端实例-移动客户端

(五)移动客户端(mobile client)调用Web服务准备及安装软件1。JAVA SE 5 (JDK 1.5)及以上版本(http://java.sun.com/javase/downloads/index.jsp )2。NetBeans 5.5.1 (http://zh-cn.netbeans.org/index_zh_CN.html )3。NetBeans Mobility Pack for CLDC(http://zh-cn.netbeans.o…

RT-Thread记录(十八、I2C软件包 — 温湿度传感器 SHT21与EEPROM 24C02)

本文学习测试一下几款典型设备的 RT-Thread I2C软件包目录前言一、RT-Thread I2C 总线注册1.1 I2C 设备使用步骤1.2 检查问题二、温湿度传感器软件包2.1 添加及基本测试2.2 程序中使用三、EEPROM 软件包3.1 添加及基本测试3.2 程序中使用结语前言 组件与软件包部分之前文章我…

(四)Java EE 5实现Web服务(Web Services)及多种客户端实例-胖客户端

(四)胖客户端(rich client)调用Web服务胖客户端,相对于瘦客户端来说,有着界面丰富,操作速度快,功能强大等优点. 目前国内比较流行的炒股软件,比如钱龙,大智慧, 同花顺,都属于胖客户端类. 而胖客户端的缺点在于升级成本高等.准备及…

音频功率放大电路(使用过的语音方案电路记录)

电路小课堂,记录一下自己用过的几款语音方案电路目录前言一、语音模块1.1 YX6300-24SS1.2 WT588D二、耳机接口三、音频功率放大器3.1 SC80023.2 TPA3110结语前言 电路小课堂时间,以前已经把基本的、常用的一些电路设计给总结完了,曾经想过是…

(三)Java EE 5实现Web服务(Web Services)及多种客户端实例-瘦客户端

(三)瘦客户端(thin client)调用Web服务瘦客户端指采用浏览器作客户端, 而代码实现通常采用Web应用程序. 准备及安装软件1。JAVA SE 5 (JDK 1.5)及以上版本(http://java.sun.com/javase/downloads/index.jsp )2。NetBeans 5.5.1 (http://zh-cn.netbeans.org/index_zh_CN.html )3…

ESP32-C3 学习测试 蓝牙 篇(五、添加 characteristic)

前面的蓝牙部分都是基础说明,示例分析,本文就来改他一改目录前言一、示例更换说明gatt_server_service_table二、示例测试2.1 广播包2.1.1 设备名称2.2 服务与特征值2.3 读写操作2.3.1 通知 notify2.3.2 值 value三、示例修改(添加一个charac…

(二)Java EE 5实现Web服务(Web Services)及多种客户端实例-实现Web服务

(二)JAVA EE 5平台上实现Web服务实例(模拟股票行情机)JAVA EE 5平台上的JAX-WS J2EE 1.4平台上实现Web Services的是JAX-RPC, 而到了JAVA EE 5上, 重新命名为JAX-WS. JAX-RPC与JAX-WS最大的不同是编程模式的差别。 JAVA EE 5采用了JAVA SE 5 的Java语言新…

ESP32-C3 学习测试 蓝牙 篇(六、添加 Service)

学会了添加 characteristic ,还得学会添加 service,本文来学习新增蓝牙服务。目录前言一、添加一个 Service1.1 新 service 头文件枚举定义1.2 新 service 的一些定义1.3 新 service 的属性表1.4 新 service 的通知1.5 ☆新 service 的创建☆二、测试结语…

(五)Java游戏部署在Windows Mobile平台仿真器(Microsoft)

前面几种平台,都可以集成到NetBeans IDE开发环境中. 很遗憾的是, 目前NetBeans还没办法集成Windows Mobile平台的仿真器. 可以采用不同于前面平台的方式,把Java程序部署在Windows Mobile平台的仿真器上.准备软件:1。下载&#xff…

ESP32-C3 学习测试 蓝牙 篇(七、GATT 数据通信 — 发送自定义数据)

前面我们已经入门了 GATT 的开发,更进一步,进行想要的数据通信 。目录前言1、通信问题思考2、 如何才能每次传输不同的数据3、 对 handle 的认识4、继续尝试5、测试成功结语前言 本来计划直接做一个蓝牙的小应用,首先得实现一下自己想要数据…