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

Posted 绵绵呀。

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于STM32的ESP8266天气时钟---------AT指令获取天气数据相关的知识,希望对你有一定的参考价值。

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

文章目录

1、摘要

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

2、硬件准备

2.1 、WIFI模块

我使用的是正点原子的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模块连接起来,开始实验
接线说明:

ESP8266USB转TTL
VCC3.3V
GNDGND
RXDTXD
TXDRXD

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获取时间及显示(完结)

以上是关于基于STM32的ESP8266天气时钟---------AT指令获取天气数据的主要内容,如果未能解决你的问题,请参考以下文章

基于STM32与ESP8266的太空人WiFi天气时钟(代码开源)

基于STM32的ESP8266天气时钟--------MCU数据处理及显示

基于STM32的ESP8266天气时钟--------MCU数据处理及显示

基于STM32的ESP8266天气时钟--------MCU数据处理及显示

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

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