esp8266获取天气教程(arduino esp8266天气)

esp8266获取天气教程(arduino esp8266天气)使用 ESP8266 模块来获取网络数据 天气 时间等 还是挺简单的 一步一步来 1 初始化串口与相关 IO 使得 MCU 可正常使用串口的发送与接收 以及一些 IO 控制 ESP8266 的使能端与电源 2 检测模块 通电后等待几秒钟 串口发送 AT 检测有回应 OK 则代表模块在线使用 3 连接路由热点 发送 AT CWJAP

大家好,我是讯享网,很高兴认识大家。



使用ESP8266模块来获取网络数据(天气,时间等),还是挺简单的。

一步一步来。

1.初始化串口与相关IO

使得MCU可正常使用串口的发送与接收,以及一些IO控制ESP8266的使能端与电源。

2检测模块

通电后等待几秒钟,串口发送”AT “,检测有回应”OK”则代表模块在线使用。

3.连接路由热点

发送”AT+CWJAP? “可以获取当前连接的路由,如果没有连接正确的路由,则使用”AT+CWLAP “命令获取当前路由列表。


讯享网

使用”AT+CWJAP=“ssid_str”,“password_str” “连接相关路由热点,ssid_str为热点名,password_str为密码。注意其中的转义符号。

4.连接网络天气服务器

这个可以自己百度搜索,我使用的api.yytianqi.com:80,还有api.k780.com:88。冒号前是服务器,冒号后是端口。

以yytianqi举例,可以上他们的网站查看API说明。使用前需要注册一个账号。(k780有公共测试的秘钥不需要注册也能使用)

网站:http://www.yytianqi.com/api.html

发送”AT+CIPSTART=“TCP”,“api.yytianqi.com”,80 “使用TCP方式连接服务器,然后就可以与之通信。这时可以使用AT命令进入透传模式,不过我不建议这样,因为推出透传模式有点坑。所以推荐直接使用发送命令:”AT+CIPSEND=num “,num是实际需要发送字符串的字节数。继续,使用GET命令请求数据”GET http://api.yytianqi.com/observe?city=CH&key=xxxx “,xxxx是自己的秘钥,注册后网站提供,”city=“后面是城市编号。

这时服务器会返回相关的数据,数据是JSON格式。前面我写过冠以JSON在KEIL上的移植使用。这里正好用上了。通常服务器返回数据后会自动关闭TCP连接。不过为了保险最好发送”AT+CIPCLOSE “关闭与服务器的连接。

5.数据解析

理论上,JSON数据也就是特定格式的字符串,可以自己对字符串进行解析而不需要移植JSON。开始我也试过,比如使用strstr()函数寻找特定字符串,但最终发现不稳健而且麻烦。原因是服务器返回的数据模式不是每次都固定不变,比如某个内容,有时使用字符型,有时直接数字,打个比方也即是12和”12”的区别,甚至有时是浮点型有时又会变成整型数据。而且各个内容顺序不保证一样。所以还是建议移植JSON。

数据内容会有些UTF格式汉字,我使用的串口屏只支持GBK汉字,只是测试所以没有做UTF到GBK的转换,直接使用函数映射相关中文内容。如下:

6.实际效果

esp8266获取心知天气数据并解析 esp8266 天气_字符串

esp8266获取心知天气数据并解析 esp8266 天气_数据_02

esp8266获取心知天气数据并解析 esp8266 天气_json_03

esp8266获取心知天气数据并解析 esp8266 天气_字符串_04

小讯
上一篇 2025-06-02 14:05
下一篇 2025-05-12 15:43

相关推荐

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