基于STM32的ESP8266天气时钟(1)---------AT指令获取天气数据

前言:
很久以前就想着能够做一个可以显示天气还有时间的小东西,刚好最近有空,研究了一下,发现并没有之前想象的那么难,网上也有很多资料,不过大部分并没有一步一步详细介绍,故把自己的学习过程分享出来,算是自己的输出,也给需要学习的小伙伴提供一下思路。
如果有错误或者是大伙儿有更好的代码写法,欢迎沟通交流!!!

1、摘要

本章节使用ESP8266连接USB转TTL串口调试器,通过AT指令获取天气数据
天气数据来源与“心知天气”

2、硬件准备

2.1 、WIFI模块

我使用的是正点原子的ESP8266模块,市面上的ESP8266都大同小异,大家可以自由选择
正点原子ESP8266

2.2、USB转TTL模块

在这里插入图片描述

2.3、商品链接

最小系统板:购买链接
USB转TTL(种类有点多,随便选一个就行,我用的是CH340这个芯片的):购买链接
ESP8266:购买链接
OLED(我用的是0.96寸4针,I2C接口):购买链接
ST-Link V2下载线:购买链接

3、软件准备

本章节软件部分仅需要串口调试助手,我使用的是"QCOM",因为他有一个可以保存指令的功能,很方便。这边给大家附上下载链接
下载链接:

https://item.taobao.com/item.htm?id=524138722961&ali_refid=a3_420434_1006:1103191143:N:qwnbk4ga1jWzvtXuIEnkGA%3D%3D:77c2643298acc9aa9dcbe2a294cc97b6&ali_trackid=1_77c2643298acc9aa9dcbe2a294cc97b6&spm=a230r.1.1957635.7

提取码:

pkjh

在这里插入图片描述

4、心知天气注册

登陆心知天气官网,注册

https://www.seniverse.com/

注册完成后点击“产品”,进入“天气数据”
在这里插入图片描述
点击“立即免费试用”
在这里插入图片描述
点击免费版的“免费申请”
在这里插入图片描述
申请后可查看到自己的私钥(自行保存后面需要用到)
在这里插入图片描述
重新点击“产品”—>“天气数据”,点击“查看API文档”
在这里插入图片描述
点击"天气实况",打开对应的API接口文档
在这里插入图片描述
查看天气实况的接口地址,以及返回的数据结果示例(自行保存后面需要用到)
在这里插入图片描述

5、硬件接线

将ESP8266同USB转TTL模块连接起来,开始实验
接线说明:

ESP8266 USB转TTL
VCC 3.3V
GND GND
RXD TXD
TXD RXD

ESP8266还有两个接口“IO_O”和“RST”,这里直接接3.3V。我是接到MCU的3.3V
IO:低电平时烧录,高电平是使用
RST:低电平复位,高电平正常工作

6、串口AT调试

本章节使用AT指令获取到天气情况,这里列出对应的AT指令
串口助手波特率设置位115200,其他设置默认即可

6.1、AT测试

发送 “AT” :正常启动就会响应“OK”

AT

在这里插入图片描述

6.2、 设置wifi模式

使用串口发送指令AT+CWMODE=1设置模块Wi_Fi应用模式为Station模式

AT+CWMODE=1

在这里插入图片描述
在这里插入图片描述

6.3 、重启模块

发送指令AT+RST使模块重启,重启后等待一段时间

AT+RST

在这里插入图片描述

6.4 、设置连接模式

发送指令AT+CIPMUX=0 设置模块为单路连接模式

AT+CIPMUX=0

在这里插入图片描述
在这里插入图片描述

6.5 、连接WIFI

发送指令AT+CWJAP=“ssid”,“pwd”,ssid就是你要连接WiFi的名字,pwd就是密码

AT+CWJAP="ssid","pwd"

在这里插入图片描述

6.6 、建立TCP连接

发送指令AT+CIPSTART=“TCP”,“api.seniverse.com”,80,和心知天气建立TCP连接

AT+CIPSTART="TCP","api.seniverse.com",80

在这里插入图片描述

6.7 、开启透传模式

发送指令“AT+CIPMODE=1”设置成功则返回OK

AT+CIPMODE=1

在这里插入图片描述
在这里插入图片描述

6.8 、开始透传

发送指令“AT+CIPSEND” 开始透传

AT+CIPSEND

在这里插入图片描述

6.9 、提出请求

发送“GET https://api.seniverse.com/v3/weather/now.json?key=私钥&location=城市拼音&language=zh-Hans&unit=c”向网址提出请求

GET https://api.seniverse.com/v3/weather/now.json?key=私钥&location=城市&language=zh-Hans&unit=c

这里的location可以改为自己的城市,我的是深圳(shenzhen)
私钥为心知天气中获取到的私钥
语言language用的是中文(zh-Hans),这部分可以自行到心知天气官网的文档查看
在这里插入图片描述
接收成功,因为编码方式不同所以会有乱码,不过不影响,后面我们写代码会处理这些数据。
通过接收到的数据,我们可以查看到我当前的天气为26摄氏度。
实验成功!

传送门:

基于STM32的ESP8266天气时钟(1)---------AT指令获取天气数据
基于STM32的ESP8266天气时钟(2)--------MCU获取天气数据
基于STM32的ESP8266天气时钟(3)--------MCU数据处理及显示
基于STM32F的ESP8266天气时钟(4)--------MCU获取时间及显示(完结)

版权声明:本文为CSDN博主「绵绵呀。」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ethan_33/article/details/117330349

生成海报
点赞 0

绵绵呀。

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

RT-Thread Studio移植LAN8720A驱动

RTT网络协议栈驱动移植(霸天虎) 1、新建工程 ​ 工程路径不含中文路径名,工程名用纯英文不含任何符号。 2、用CubeMx配置板子外设 2.1、配置时钟 ​ 按照自己板子配置相应时钟。

Lin总线通信在STM32作为主机代码以及从机程序

距离上次做资料准备已经过去六天了。最近在学车,上周末就没有开电脑。这周开始进行了Lin通信的代码整理,目前是可以正常通信的了,采用的是增强型校验方式。后期再进一步跟进研究。。。更新一博,留

4路红外循迹模块使用教程

4路红外循迹模块使用教程 个人原创博客:点击浏览模块详细信息: 工作电压:DC 3.3V~5V 工作电流:尽量选择1A以上电源供电 工作温度:-10℃~50℃ 安装孔

HAL库串口中断

一,配置串口初始化 void MX_USART1_UART_Init(void) {huart1.Instance USART1;huart1.Init.BaudRate 115200;huart1.Init.WordLen