今天的实验,主要是基于STM32开发一个可以实时获取天气和时间的小功能,这个功能可以套用在需要显示天气和时钟的设备上,而且硬件成本很低,大家有兴趣可以瞅瞅看!
本实验一共有四个实验;
实验1-通过AT指令获取天气数据;
实验2-MCU获取天气数据;
实验3-MCU获取天气数据和显示;
实验4-MCU获取时间数据和显示;
天气数据来源与“心知天气”
我使用的是正点原子的ESP8266模块,市面上的ESP8266都大同小异,大家可以自由选择。


最小系统板:
USB转TTL(种类有点多,随便选一个就行,我用的是CH340这个芯片的)
ESP8266 OLED(我用的是0.96寸4针,I2C接口)
ST-Link V2下载线
本章节软件部分仅需要串口调试助手,我使用的是”QCOM”,因为他有一个可以保存指令的功能;
百度搜索一下就可以下载了;

登陆心知天气官网,注册
https://www.seniverse.com/
注册完成后点击“产品”,进入“天气数据”

点击“立即免费试用”。

点击免费版的“免费申请”。


申请后可查看到自己的私钥(自行保存后面需要用到)。

重新点击“产品”—>“天气数据”,点击“查看API文档”。



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

ESP8266还有两个接口“IO_O”和“RST”,这里直接接3.3V。我是接到MCU的3.3V
IO:低电平时烧录,高电平是使用
RST:低电平复位,高电平正常工作
本章节使用AT指令获取到天气情况,这里列出对应的AT指令,串口助手波特率设置位,其他设置默认即可。
发送 “AT” :正常启动就会响应“OK”。

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


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


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


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

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

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

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

发送“GET https://api.seniverse.com/v3/weather/now.json?key=私钥&location=城市拼音&language=zh-Hans&unit=c”向网址提出请求,这里的location可以改为自己的城市,我的是深圳(shenzhen),私钥为心知天气中获取到的私钥,语言language用的是中文(zh-Hans),这部分可以自行到心知天气官网的文档查看。

接收成功,因为编码方式不同所以会有乱码,不过不影响,后面我们写代码会处理这些数据。
通过接收到的数据,我们可以查看到我当前的天气为26摄氏度。
关于这篇文章你有何疑问
可以扫描下方二维码进行咨询

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/177825.html