WiFi模块(ESP8266)获取时间、天气API AT指令串口调试

一直想做一个能够通过WiFi模块来获取 互联网获取 时间 和 天气 的时钟,网上大部分是获取时间的教程,对于获取天气的教程都是我看不懂的神奇语言,对于我这种不会java、html或者JSON什么乱七八糟的菜鸡来说就是天书,因此我只做出来能够获取网络时间的时钟,获取天气的没有实现。
最近由于某些设计需要又重新研究了下,终于弄清楚获取天气信息的方法了,今天我这个菜鸡就来给大家分享下通过AT指令获取网络天气和时间过程。

1. 接线

ESP8266的接线我就不再说明了,如果对接线不清楚,可以进入 >>>> ESP8266接线接线说明 <<<<这道传送门来搞清楚接线方式。

2. 调试环境

波特率啥的初始化设置我就不提了,AT手册或者例程都有,结尾有指令传送门。我这里将波特率设置成了9600。
依旧使用SSCOM串口助手,因为它可以存指令集,如图:
在这里插入图片描述

3. 获取时间和天气

首先发送个AT+RST将模块软件复位:

AT+RST

OK
"蕛M儬;赝覩?塕熳Q?
[Vendor:www.ai-thinker.com Version:0.9.2.4]

ready
//这是我的模块返回的字符,管他啥版本呢,返回OK或者ready就行了

3.1 获取时间

获取网络时间,顾名思义,因此需要连接网络,首先将模块配置为输入模式也就是STA模式:(不知道输入+输出模式可不可以,没试过,也懒得试,如果有兴趣具体模式的说明与设置请参考>>>>ESP8266-3种模式用法<<<<这位大佬的文章,很详细!)

AT+CWMODE=1	//1 STA		2 AP	3 STA+AP

OK			//设置完模式之后一定要软重启才可以
AT+RST

OK
"蕛M儬;赝覩?塕熳Q?
[Vendor:www.ai-thinker.com Version:0.9.2.4]

ready		//复位之后 模式切换就成功了

切换完STA模式之后就可以连接WiFi了,首先对附近的WiFi列表,或者你确定你开了WiFi就直接连接就行了,演示如下:

AT+CWLAP										//列表指令
+CWLAP:(4,"SU-27",-66,"88:25:93:17:80:06",1)
+CWLAP:(3,"SU-47",-25,"94:87:e0:4c:bd:d8",6)

OK
AT+CWJAP="SU-47","qweqwe.3"						//输入正确的WIFi名称和密码进行连接

OK												//连接成功

WiFi连接成功过后就可以连接API了,Baidu搜索天气API会有很多API接口,我仅仅以其中一个做演示,其他的感觉应该大同小异吧!

AT+CIPSTART="TCP","tianqiapi.com",80		//Baidu搜索来的API地址,我仅此演示,至于为啥后面是80,我也不知道...
											//评论区有大佬告诉我80对应TCP协议,谢谢大佬!
											//看他们都写80,我也写80,能连接成功就行!
OK
Linked 										//收到OK和Linked后,就说明连接成功

到了这一步就说明成功一大步了,接下来就看你是想单纯的获取时间还是想获取其他信息了。

单纯获取时间
单纯的获取时间就很方便,但也不怎么方便。。。因为获取的时间是GMT时间,与北京时间有8小时的时差,因此你不知道第二天是几号或者星期几啥的,所以这个方法对不需要显示日历的时钟很友好,对于需要显示日历的设计就需要有日历库或者计算函数啥的了,多费劲儿啊,不值个,因此有日历的还是建议不用这个方式获取时间。下面是演示只获取时间的方法(继续上面连接的API):

AT+CIPSEND=5									//需要发送的字符个数
> GET											//把0x0D和0x0A算上一共是5个字符
SEND OK

+IPD,295:HTTP/1.1 400 Bad Request
Server: nginx
Date: Thu, 30 Apr 2020 05:53:35 GMT				//当前是13点53  与北京时间相差8小时
Content-Type: text/html
Content-Length: 150
Connection: close

<html>
<head><title>400 Bad Request</title></head>
<body>
<center><h1>400 Bad Request</h1></center>
<hr><center>nginx</center>
</body>
</html>

OK

ERROR
Unlink											//获取结束后自动断开连接

亲测,不一定必须发送"GET",随便发送,只要有0x0D和0x0A就行,如图:在这里插入图片描述
到此,单纯的获取时间就结束了,时间信息需要自行写函数提取,我就不介绍了,本文仅介绍AT指令串口调试过程。

3.2 获取天气

接下来就介绍获取天气的方法了。

注意:下面的时间信息是气象台更新天气的时间,并不是实时时间,感谢评论区的大佬指正!

获取时间的报文,及接收到的信息,如下图所示:在这里插入图片描述
下面我对上图的发送和返回的参数解释一下

AT+CIPSEND=77	//发送77个字符

> GET https://tianqiapi.com/api?version=v61&appid=********&appsecret=********

//上面一条,算上0x0D0x0A一共77个字符,其中的星号*代表账户和密码,这需要在网站里注册获得,
//由于我是个人用户并且一天请求量也不高,因此我选择了白嫖。。。大家按需分配,具体信息请到官网
//查看[天气API](https://www.tianqiapi.com/)


SEND OK		//发送成功

+IPD,1416:{
	"cityid":"101071301",		//城市代号:101071301,盘锦,盘锦,辽宁
	"date":"2020-04-30",		//日期:2020-04-30
	"week":"\u661f\u671f\u56db",//星期:星期四(Unicode编码,Baidu或者其他手段转换下即可得到中文)
	"update_time":"14:06",		//天气更新时间:14:06
	"city":"\u76d8\u9526",		//城市:盘锦
	"cityEn":"panjin",			//城市英文:panjin
	"country":"\u4e2d\u56fd",	//国家:中国
	"countryEn":"China",		//国家英文:China
	"wea":"\u6674",				//天气:晴
	"wea_img":"qing",			//天气图标:qing
	"tem":"21",					//实时温度:21
	"tem1":"22",				//白天温度(高温)22
	"tem2":"14",				//白天温度(低温)14
	"win":"\u5357\u98ce",		//风向:南风
	"win_speed":"5\u7ea7",		//风力:5
	"win_meter":"24-34km\/h",	//风速:24-34km/h
	"humidity":"50%",			//湿度:50%
	"visibility":"30km",		//能见度:30km
	"pressure":"1007",			//气压:1007hpa
	"air":"54",					//空气:54	(这啥啊...54...
	"air_pm25":"38",			//PM2.5含量:38μg/ 
	"air_level":"\u826f",		//空气质量:良
	
	"air_tips":"\u7a7a\u6c14\u597d\uff0c\u53ef\u4ee5\u5916\u51fa\u6d3b\u52a8\uff0c\u9664\u6781
	\u5c11\u6570\u5bf9\u6c61\u67d3\u7269\u7279\u522b\u654f\u611f\u7684\u4eba\u7fa4\u4ee5\u5916
	\uff0c\u5bf9\u516c\u4f17\u6ca1\u6709\u5371\u5bb3\uff01",
	//空气小建议:空气好,可以外出活动,除极少数对污染物特别敏感的人群以外,对公众没有危害!
	
	"alarm":{					//警报
		"alarm_type":"",
		"alarm_level":"",
		"alarm_content":""
	},//啥都警报没说
	"aqi":{
		"air":"54",				//...又来了 空气:54
		"air_level":"\u826f",	//空气质量:良
		"air_tips":"\u7a7a\u6c14\u597d\uff0c\u53ef\u4ee5\u5916\u51fa\u6d3b\u52a8\uff0c\u9664
		\u6781\u5c11\u6570\u5bf9\u6c61\u67d3\u7269\u7279\u522b\u654f\u611f\u7684\u4eba\u7fa4
		\u4ee5\u5916\uff0c\u5bf9\u516c\u4f17\u6ca1\u6709\u5371\u5bb3\uff01",
		//空气小建议:空气好,可以外出活动,除极少数对污染物特别敏感的人群以外,对公众没有危害!
		"pm25":"38",			//PM2.5含量:38μg/
		"pm25_desc":"\u826f",	//PM2.5质量:良
		"pm10":"48",			//PM1.0含量:48μg/
		"pm10_desc":"\u4f18",	//PM1.0质量:优
		"o3":"133",				//O³含量:133μg/
		"o3_desc":"\u826f",		//O³质量:良
		"no2":"20",				//NO²含量:20μg/
		"no2_desc":"\u4f18",	//NO²质量:优
		"so2":"14",				//SO²含量:14μg/
		"so2_desc":"\u4f18",	//SO²质量:优
		"kouzhao":"\u65e0\u9700\u6234\u53e3\u7f69",	 //口罩:无需戴口罩
		"waichu":"\u9002\u5b9c\u5916\u51fa",		 //外出:适宜外出
		"kaichuang":"\u9002\u5b9c\u5f00\u7a97",		 //开窗:适宜开窗
		"jinghuaqi":"\u5173\u95ed\u51c0\u5316\u5668",//净化器:关闭净化器
		"cityid":"101071301",	//城市代号:101071301,盘锦,盘锦,辽宁
		"city":"\u76d8\u9526",	//城市:盘锦
		"cityEn":"panjin",		//城市英文:panjin
		"country":"\u4e2d\u56fd",//国家:中国
		"countryEn":"China"		//国家英文:China
	}
}
OK

OK!接收到了这么多信息,接下来的任务就是提取有用的信息了,这就交给在座的大佬们了!


其他

其实上述获取北京时间的方法也可以通过类似获取天气的方法进行获取,Baidu搜索北京时间API就会有结果!那种时间不需要换算,更加适合使用。
我这个获取API的网址只是演示,网址不止它一家,大家可以自己找啥的,听说还能设置城市啥的,我还没研究,先就这样吧!
参考传送门:
ESP8266 WiFi模块AT指令_学习笔记

  • 20
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值