潘多拉 RT-Thread ESP8266 模块
实验概述
本实验将使用 ESP8266 模块连接到潘多拉 IoT 开发板上,并通过 RT-Thread 的 AT 组件完成对 ESP8266 AT 命令和数据的收发的,实现 WiFi 连接互联网的功能。
ESP8266 是一款集成 32 位 MCU 的 WiFi 芯片,内置 AT 指令。通过 AT 指令,用户能快速的开发网络应用,而无需关心具体的网络协议栈的内容。
硬件连接
这里以正点原子的 ATK-ESP8266 模块为例进行说明,将 ESP8266 模块连接到开发板左侧的 ATK MODULE 接口,实际通讯接口是 UART 串口,对应单片机的 UART2。原理图和实物图如下所示。
示例代码
参考《潘多拉 IoT Board 开发环境》创建工程,在 applications/main.c 中输入如下代码。
在 RT-Thread 上进行网络编程推荐使用 BSD Socket API,RT-Thread 提供了数量众多的网络软件包,都是用 BSD Socket API 编写的,用户可以利用这些软件包可以快速的完成自己的网络应用开发。RT-Thread 提供的 SAL 组件和 AT 组件可以帮助开发者非常方便的将带有 AT 命令的网络模块对接到 RT-Thread 上来,所以可以看到 main 函数的应用程序非常简单。
applications/main.c
#include <rtthread.h>
int main(void)
{
extern int netdev_ping(int argc, char **argv);
char *cmd[] = {"esp8266_ping", "www.rt-thread.org"};
while (1) {
if (netdev_ping(2, cmd) == RT_EOK) {
break;
}
else {
rt_thread_mdelay(5000);
}
}
return 0;
}
完整代码:17_iot_at_wifi_8266
编译运行
添加 ESP8266 AT 设备,具体路径如下:
RT-Thread online packages --->
IoT - internet of things --->
[*] AT DEVICE: RT-Thread AT component porting or samples for different device
[*] Espressif ESP8266 --->
修改 WiFi 网络名称和密码
下载软件包
pkgs --update
编译工程
$ scons
...
LINK rtthread-stm32l4xx.elf
arm-none-eabi-objcopy -O binary rtthread-stm32l4xx.elf rt-thread.bin
arm-none-eabi-size rtthread-stm32l4xx.elf
text data bss dec hex filename
132488 2476 2928 137892 21aa4 rtthread-stm32l4xx.elf
scons: done building targets.
将 bin 文件上传到 STM32
st-flash write rt-thread.bin 0x8000000
打开串口终端,输出如下内容
\ | /
- RT - Thread Operating System
/ | \ 4.0.1 build Jan 4 2022
2006 - 2019 Copyright by rt-thread team
[I/SAL_SKT] Socket Abstraction Layer initialize success.
[I/at.clnt] AT client(V1.2.0) on device uart2 initialize success.
[I/at.esp8266] ESP8266 WIFI is connected.
[I/at.esp8266] AT network initialize success!
msh >32 bytes from www.rt-thread.org icmp_seq=1 time=10 ms
32 bytes from www.rt-thread.org icmp_seq=2 time=10 ms
32 bytes from www.rt-thread.org icmp_seq=3 time=9 ms
32 bytes from www.rt-thread.org icmp_seq=4 time=10 ms
可以看到,ESP8266 模块已经自动注册好了,并且可以连接互联网!