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

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

接线

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

调试助手

波特率啥的初始化设置我就不提了,AT手册或者例程都有,我这波特率设置成了9600。
依旧建议使用SSCOM串口助手,因为它可以存指令集,如图:
WiFi模块(ESP8266-01)获取时间、天气API AT指令串口调试_第1张图片

获取时间和天气

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

AT+RST

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

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

获取网络时间,顾名思义,因此需要连接网络,首先将模块配置为输入模式也就是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,我也写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


400 Bad Request

400 Bad Request


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

亲测,不一定必须发送"GET",随便发送,只要有0x0D和0x0A就行,如图:WiFi模块(ESP8266-01)获取时间、天气API AT指令串口调试_第2张图片
到此,单纯的获取时间就结束了,时间信息需要自行写函数提取,我就不介绍了,本文仅介绍AT指令串口调试过程。

单纯时间?我全都要!
接下来就介绍获取天气和时间的方法了,这里获取的时间是北京时间,不需要换算,得到几点就是几点。
如图:WiFi模块(ESP8266-01)获取时间、天气API AT指令串口调试_第3张图片
下面我对上图的发送和返回的参数解释一下。

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!接收到了这么多信息,接下来的任务就是提取有用的信息了,这就交给在座的大佬们了!
我这个获取API的网址只是演示,网址不止它一家,大家可以自己找啥的,听说还能设置城市啥的,我还没研究,先就这样吧!
参考传送门:
ESP8266 WiFi模块AT指令_学习笔记

你可能感兴趣的:(笔记,ESP8266,WiFi模块)