基于STM32F103的网络天气时钟---------通过串口获取天气
Posted 绵绵呀。
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于STM32F103的网络天气时钟---------通过串口获取天气相关的知识,希望对你有一定的参考价值。
前言:
很久以前就想着能够做一个可以显示天气还有时间的小东西,刚好最近有空,研究了一下,发现并没有之前想象的那么难,网上也有很多资料,不过大部分并没有一步一步详细介绍,故把自己的学习过程分享出来,算是自己的输出,也给需要学习的小伙伴提供一下思路。
如果有错误或者是大伙儿有更好的代码写法,欢迎沟通交流!!!
文章目录
1、摘要
本章节使用ESP8266连接USB转TTL串口调试器,通过AT指令获取天气数据
天气数据来源与“心知天气”
2、硬件准备
2.1 、WIFI模块
我使用的是正点原子的ESP8266模块,市面上的ESP8266都大同小异,大家可以自由选择
2.2、USB转TTL模块
商品链接:
https://detail.tmall.com/item.htm?spm=a230r.1.14.11.91f544aesVaE9M&id=609757779633&ns=1&abbucket=16&skuId=4447338308661
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摄氏度。
实验成功!
以上是关于基于STM32F103的网络天气时钟---------通过串口获取天气的主要内容,如果未能解决你的问题,请参考以下文章
基于STM32F103的网络天气时钟--------单片机获取天气后OLED显示
基于STM32的ESP8266天气时钟--------MCU获取天气数据
基于STM32的ESP8266天气时钟--------MCU获取天气数据
STM32F103VET6基于STM32CubeMX RTC时钟报警中断使用示例