2022年暑假在家一起练 rp2040气象站
1.简介
RP2040 Game Kit是基于树莓派RP2040的嵌入式系统学习平台,通过USB Type-C连接器供电,采用RP2040作为主控,具有双核Arm Cortex M0+内核和264KB内存,可通过MicroPython或C/C++编程,性能强大。板上四向摇杆 + 2个轻触按键 + 一个三轴姿态传感器MMA7660用做输入控制,并有240*240分辨率的彩色LCD屏显示,片内温度传感器、并支持外部4路模拟信号输入,内部ADC采样率高达500Ksps。可玩性极高,可移植多款复古游戏,还可作为电赛的控制、显示接口平台,搭配传感器、模拟电路外还可以完成更多创意项目。
2.环境搭建
参考了树莓派pico的配置过程,毕竟使用了相同的双核m0主控芯片。pico网站
3 简易气象站
目标: 制作一个简单的气象台,能够实时播放5个城市的气象信息
esp32s2配置AT命令
什么是espAT?
ESP-AT 是基于 ESP-IDF 或 ESP8266_RTOS_SDK 实现的软件工程。它使 ESP 模组作为从机,MCU 作为主机。MCU 发送 AT 命令给 ESP 模组,控制 ESP 模组执行不同的操作,并接收 ESP 模组返回的 AT 响应。ESP-AT 提供了大量功能不同的 AT 命令,如 Wi-Fi 命令、TCP/IP 命令、Bluetooth LE 命令、Bluetooth 命令、MQTT 命令、HTTP 命令、Ethernet 命令等。
AT命令
AT 命令以 “AT” 开始,代表 Attention,以新的一行 (CR LF) 为结尾。输入的每条命令都会返回 OK 或 ERROR 的响应,表示当前命令的最终执行结果。注意,所有 AT 命令均为串行执行,每次只能执行一条命令。因此,在使用 AT 命令时,应等待上一条命令执行完毕后,再发送下一条命令。如果上一条命令未执行完毕,又发送了新的命令,则会返回 busy p... 提示。更多有关 AT 命令的信息可参见 AT 命令集。
刷入at固件
在flashdownloadtool选择esp32s2,usb模式打开
按住boot按键,进入boot模式,启动。此时在计算机端口可见一个其他设备。烧录开始地址0x0,烧录固件。烧录完成后rst按键重启,固件开始工作
连接
对于esp32s2,其对应管脚为
参考乐鑫官方的链接,进行连线
烧录 按住boot按键上电进入bootloader模式
使用烧写工具在对应串口写入at固件,此处使用安信可提供的固件
地址为0x0,固件本身已经拼接好
rst后开始运行固件
验证固件
在esp32的uart1打开串口,发送AT+GMR,得到了如下相应。
对应到esp32s2的管脚,使用了u0tx和u0rx两个引脚,分别与rp2040的uart0的两个引脚相连接
esp32s2管脚
rp2040使用GPIO12 13,对应板插头SPI1_Rx和Cs
GPIO12(Uart0Tx)J3 Pin16---Rx
GPIO13(Uart0Rx)J3 Pin14---Tx
最终完成接线
编程
乐鑫官方文档给出了AT命令的使用方法
对于天气信息的获取主要用到了其中的TCP/IP命令 心知天气API请求方法
查看乐鑫官方的AT命令示例
拿到心知api后,对api进行一下测试,发现可用
{"results":[{"location":{"id":"WX4FBXXFKE4F","name":"北京","country":"CN","path":"北京,北京,中国","timezone":"Asia/Shanghai","timezone_offset":"+08:00"},"now":{"text":"晴","code":"0","temperature":"25"},"last_update":"2022-08-27T10:30:00+08:00"}]}
经过拆分后可以拿到now
标签的信息{'text': '晴', 'code': '0', 'temperature': '25'}
其中天气代码信息为
屏幕显示rgb565 单个像素 5+5+6 两个字节 转换的时候要为16bit深度,这里需要注意
4. 代码说明
netmain.py通过network.py,借助AT命令,将esp32对心知天气api进行请求,每次得到返回的字符串,通过解析json格式得到最终的天气列表。通过控制天气数组的长度进行循环,经过多次请求后得到所有查询的城市天气信息,返回天气列表
主函数通过一个按键循环,将按键的状态对应到天气列表的城市,通过显示刷新函数对lcd屏幕进行绘制。
项目收获
通过这个实验,不仅学习了micro python的编程,和一些简单的网络编程,字符串解析,同时也对esp32的使用有了一定的了解,对一个简单的项目开发有了一定了解