RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之RT-Thread AT组件(3/4)

Posted 挨踢民工biubiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之RT-Thread AT组件(3/4)相关的知识,希望对你有一定的参考价值。

文章列表

前言

本系列文章介绍 RT-Thread AT 组件的基本知识和使用方法,帮助大家更好地使用 RT-Thread AT 组件

本文和大家一起探讨如何使用 RT-Thread 的 AT 组件,包括 AT Client 和 AT Socket。

AT组件简介

为了方便用户使用 AT 命令,简单的适配不同的 AT 模块, RT-Thread 提供了 AT 组件用于 AT 设备的连接和数据通讯。AT 组件的实现包括客户端的和服务器两部分。对于嵌入式设备而言,更多的情况下设备使用 AT 组件作为客户端连接服务器设备。

下面的内容基于韦东山百问网的 STM32F103ZET 开发板乐鑫的ESP8266 01S WiFi 模块,说明 RT-Thread AT 组件中的 AT Client 功能的配置、移植和使用方式。

购买地址:

硬件接线

下图为本文使用的开发板和wifi模块的接线图,对应接线为:

3V3   <-->   3V3
RX    <-->   PB10
TX    <-->   PB11
GND   <-->   GND

100ASKSTM32F103和ESP8266 01S 的接线图
AT 组件中 AT Client 主要完成 AT 命令的发送和响应数据的接收与解析。这里我们使用 韦东山百问网的 STM32F103ZET 开发板 的串口 3 作为 AT Client 连接 ESP8266 01S WiFi模块ESP8266 01S WiFi模块 作为 AT Server,完成 AT Client 数据收发和解析的功能,下面就具体给出配置和使用方式的介绍。

RT-Thread源码和Env工具

RT-Thread源码和Env工具的获取教程看这里: RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之环境搭建(1/3)

RT-Thread源码

后续的内容使用这个仓库的代码进行讲解 https://gitee.com/weidongshan/rt-thread-100ask

Env工具

进入env目录,点击 env.batenv.exe都能打开 RT-Thread env:
在这里插入图片描述

AT Client 配置

开启 Env 工具,进入 rt-thread-100ask\\bsp\\stm32\\stm32f103-100ask 目录,在 Env 命令行输入 menuconfig 进入配置界面配置工程。

  • 配置串口支持:配置开启 UART3 选项;在这里插入图片描述

  • 开启 AT Client 功能:RT-Thread Components —> Network —> AT commands --> 开启 AT DEBUG,开启 AT Client 支持,目前 AT Client 支持多连接功能,后面需要手动初始化 AT Client。

  • 在这里插入图片描述
    AT Client 配置选项介绍如下:

  • Enable debug log output:配置开启调试日志;

  • Enable AT commands client:配置开启 AT 客户端;

  • The muxinum number of supported clients: 配置最大同时支持的客户端数量,该例程使用单客户端连接,配置为 1 即可。

  • Enable BSD Socket API support by AT commands: 配置开启 BSD - Socket API 支持,下面 AT Client 例程没有使用可暂时不开启。

  • Enable CLI(Command-Line Interface) for AT commands: 配置开启 AT 命令行交互模式。

  • Enable print RAW format AT command communication data: 配置开启收发数据实时打印功能。

  • The maxinum length of AT Commonds:配置发送 AT 命令的最大数据长度

若RT-Thread版本小于等于4.0.3,并且使用 RT-Studio IDE 或者 GCC 工具链编译时,需要开启 libc 。

配置完成,保存并退出配置选项,然后按顺序执行下面的命令:

  • pkgs --update 从服务器下载所选软件包,更新到本地目录
  • scons --target=mdk5 生成 MDK工程

之后打开 MDK 工程,我们会发现已经自动帮我们配置好工程了:
在这里插入图片描述

就可以编译、下载程序到开发板,之后打开 PC 上串口工具,这里使用 MobaXterm 工具,选择正确的串口( 配置串口参数为 115200-8-1-N、无流控 ),然后按下复位后就可以在开发板的 串口 1 上看到 RT-Thread 系统启动日志。
在这里插入图片描述

系统初始化成功之后,在控制台中执行 at_client_init uart3 命令,这里的 uart3 为开发板中作为 AT client 的设备名。然后可以看到 AT Client 的初始化日志,说明 AT Client 功能配置启动成功,如下所示:

 \\ | /
- RT -     Thread Operating System
 / | \\     4.0.3 build Jun  2 2021
 2006 - 2020 Copyright by rt-thread team
[I/sal.skt] Socket Abstraction Layer initialize success.
msh />at_client_init uart3
[I/at.clnt] AT client(V1.3.1) on device uart3 initialize success.
msh />

出现 [I/at.clnt] AT client(V1.3.1) on device uart3 initialize success. 说明 AT Client 初始化完成。

AT Client 运行示例

AT Client 模式

上面我们配置过了,使用韦东山百问网的 STM32F103ZET 开发板乐鑫的ESP8266 01S WiFi 模块串口3 作为 AT Client, ESP8266 01S 作为 AT Server,进行数据交互模式,在串口终端输入 at_client_test 命令,该 shell 命令用于发送 AT 命令到服务器,并且接收和解析服务器响应数据,如下图所示过程:
在这里插入图片描述

AT Client CLI 模式

AT Client CLI 功能可以转发本地 shell 输入的数据到设备连接的 AT Server 串口设备上,并在本地 shell 上实时显示 AT Client 串口接收到的数据。在本地 shell 中执行 at client 命令进入 AT Client CLI 模式即可进行数据的收发。通过 AT Client CLI 模式,用户可以很方便的完成与 AT Server 的连接与调试,极大的提高开发效率。

下图演示了 AT Client CLI 功能的使用和退出:
在这里插入图片描述

AT Socket 功能

为了方便开发者使用 AT 组件进行网络相关操作,降低 RT-Thread 系统对单独协议栈网络连接的依赖,RT-Thread 系统在 AT 组件和 SAL 组件的基础上推出了 AT Socket 功能。

AT Socket 功能是建立在 AT Client 功能基础上,主要作用是完成 AT 设备连接网络并进行数据通讯,对应用层提供标准 BSD Socket API 接口,方便应用层代码移植和使用。

AT Socket 功能使设备无需实现其他网络连接方式,直接使用串口完成设备联网功能,简化了设备开发的软硬件设计,方便开发者开发。此外,不同于传统的软件网络协议栈,AT Socket 网络功能的运行主要是在串口连接的 AT Server 设备上完成,根据不同的 AT Server 设备,可同时支持 5-6 个 socket,这样极大了降低了 AT Client 设备上 MCU 资源占用,提高 MCU 工作效率,确保数据通讯的质量和硬件的资源的合理分配。

AT Socket 功能目前占用最少资源体积约为 20K ROM 、 3K RAM(支持 5 个 Socket)。

AT Socket 功能对于不同的 AT 设备需要完成移植适配过程,目前已经完成多种设备的适配,包括:ESP8266、 M26 、MC20、EC20、SIM800、SIM76XX、RW007、MW31 等,各种适配的方式通过 AT Device 软件包 给出,所以 AT Socket 功能的实现基于 AT Device 软件包。下面主要通过 ESP8266 设备,AT Socket 功能使用和 AT Device 软件包配置进行介绍。

AT Socket 配置

AT Socket 功能的使用依赖于如下几个组件:

  • AT 组件:AT Socket 功能基于 AT Client 功能的实现;
  • SAL 组件:SAL 组件主要是 AT Socket 接口的抽象,实现标准 BSD Socket API;
  • netdev 组件:用于抽象和管理 AT 设备生成的网卡设备相关信息,提供 ping、ifconfig、netstat 等网络命令;
  • AT Device 软件包:针对不同设备的 AT Socket 移植和示例文件,以软件包的形式给出;

下面主要介绍 Env 中配置 AT Socket 功能的整个流程:

  1. 开启 Env 工具,进入 rt-thread-100ask\\bsp\\stm32\\stm32f103-100ask 目录,在 Env 命令行输入 menuconfig 进入配置界面配置工程。
  2. 开启 AT Device 软件包,示例中使用 laster 最新版本,需要配置使用的 AT 模块型号(ESP8266)和 AT Client 设备名称(UART3):
  • RT-Thread online packages —> IoT - internet of things —> AT Device- - 配置开启 AT DEVICE 软件包支持;
  • 配置使用的设备为 ESP8266 设备;
  • 配置 AT Client 设备名称和最大支持的接收数据长度;
  • 配置 wifi ssid 和 wifi password 用于设备联网;
  • 配置使用 laster 版本软件包;
    在这里插入图片描述
  1. AT Device 软件包开启,并且选择指定 AT 设备之后,会默认选上 AT 组件中 AT Client 功能已经 AT Socket 功能支持,如下图所示:
    在这里插入图片描述

AT Device 软件包中每种 AT 设备配置选项,都是 AT Socket 功能针对该设备的实现方式。

  1. 之后需要开启 SAL 组件支持,用于抽象统一标准网络接口,RT-Thread Components —> Network —> Socket abstraction laye —> Support AT Commands stack,开启 SAL 组件功能支持,然后开启 SAL_USING_POSIX 支持,支持使用 read/write、poll/select 等文件系统接口函数。
    在这里插入图片描述

  2. 配置完成,保存并退出配置选项,输入命令:pkgs --update 从服务器下载所选软件包,更新到本地目录;输入命令 scons --target=mdk5 生成 keil 工程

  3. 打开 MDK 工程,编译、下载代码到开发板中

  4. 打开 MobaXterm,配置打开串口(配置串口参数为 115200-8-1-N、无流控 ),然后按下复位后就可以在开发板的 串口 1 连接的终端上看到 RT-Thread 系统启动日志,并可以看到 AT Client 的启动日志、SAL 的启动日志且设备自动连接网络成功,说明 AT Socket 功能初始化成功,如下图所示:

在这里插入图片描述

AT Socket 的使用

网络连接测试

AT Socket 功能提供 ping 或者 ifconfig 命令用于测试设备网络连接环境,ping 命令原理是通过 AT 命令发送请求到服务器,服务器响应数据,客户端解析 ping 数据并显示。ifocnfig 命令可以查看当前设备网络状态和 AT 设备生成的网卡基本信息。如下图所示,设备网络连接成功之后,执行网络测试命令:

在这里插入图片描述

MQTT 组件示例测试

AT Socket 功能完成设备通过串口 AT 命令进行网络数据通讯,设备可以通过 AT Socket 功能启动 MQTT 协议并运行 MQTT 示例代码,具体配置步骤和示例使用方式如下:

  • AT Device 软件包开启的基础上,配置下载 MQTT 组件包及示例代码,具体配置方式:RT-Thread online packages ---> IOT - internet of things --->Enable paho MQTT 组件包,配置开启 MQTT 示例代码。

在这里插入图片描述

  • 配置完成,保存并退出配置选项,输入命令:pkgs --update 从服务器下载所选软件包,更新到本地目录;输入命令 scons --target=mdk5 生成 keil 工程。编译下载代码到开发板中。

  • 打开串口工具,系统启动成功,输入 mqtt_start 命令启动 MQTT 协议,启动完成之后输入 mqtt_publish mqtt_test_data 命令,用于向固定的 MQTT Topic 发送数据,同时 MQTT 服务器会立刻向该 Topic 发送同样数据,MQTT 示例测试完成,如下图所示:
    在这里插入图片描述
    上述展示了 韦东山百问网的 STM32F103ZET 开发板 在未连接网络的情况下使用 AT Socket 功能运行 MQTT 网络示例,实现了 AT Socket 网络数据收发的功能,目前 AT Socket 功能只支持设备作为网络客户端连接服务器 ,这也符合嵌入式设备多用于客户端设备的特性。AT Socket 目前已经支持多种网络相关组软件包和功能,如下所示:

  • tcpclient/udpclient 功能

  • MQTT 软件包

  • webclient 软件包

  • mbedtls 软件包

  • onenet 软件包

  • ali-linkkit 软件包

  • NTP 时间查询功能

  • iperf 网络测试功能

  • ping/ifconfig/netstat 网络测试功能

以上是关于RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之RT-Thread AT组件(3/4)的主要内容,如果未能解决你的问题,请参考以下文章

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之环境搭建(1/3)

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之环境搭建(1/4)

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之RT-Thread AT组件(3/4)

RT-Thrad|STM32F103+ESP8266 S01+RT-Thread联网之RT-Thread AT组件(3/4)

STM32F103C8T6+ESP-01S+MQTT服务器实现数据上传和接收

智慧农业: STM32F103ZE+ESP8266+腾讯云物联网平台+微信小程序设计