ESA2GJK1DH1K升级篇: 升级STM32 预热: 单片机每隔一定时间 使用 http 获取天气

 

前言:

 

实现功能概要:

  STM32使用AT指令控制Wi-Fi以TCP方式连接服务器(YY天气Web服务器),然后使用http的get协议获取今天的天气数据

  单片机提取今天的温度和湿度数据,把温湿度数据显示在OLED液晶屏.

                                  效果图

                    

 

访问天气服务器:

   http://api.yytianqi.com/observe?city=CH010100&key=1qwt0q9jj4felio2   获取北京天气

 

  http://api.yytianqi.com/observe?city=城市代码&key=自己注册获取的key值

 

  详细请参考: https://www.cnblogs.com/yangfengwu/p/11681116.html

 

  浏览器访问IP地址以后获取的数据

  

 

单片机如何实现: 

 

网页上是直接输入 http://api.yytianqi.com/observe?city=CH010100&key=1qwt0q9jj4felio2

那样输入以后端口号默认是 80,所以不需要写端口号  

http://api.yytianqi.com:80/observe?city=CH010100&key=1qwt0q9jj4felio2  和上面的等价

 

实际上是先用TCP连接了域名:api.yytianqi.com  端口号:80

然后发送:"GET /observe?city=CH010100&key=1qwt0q9jj4felio2 HTTP/1.1\r\nHost: api.yytianqi.com\r\n\r\n"       HTTP的get协议

下图是测试截图

 

 

 所以单片机只需要控制网络模块以TCP方式连接域名为:api.yytianqi.com  端口号:80的服务器

然后发送 "GET /observe?city=CH010100&key=1qwt0q9jj4felio2 HTTP/1.1\r\nHost: api.yytianqi.com\r\n\r\n"  即可

有可能会问为什么这样就可以获取呢!如果想知道实质,就需要看数据篇PHP部分.不要心急哈,慢慢来. 

 

程序下载测试: 

 

1,硬件设置: 短接STM32   PB2 和 WIFI  RST   (以后均采用硬件复位)

 

 

 

 

2,下载单片机程序

 

 

 

 

 

 

 

 

3,如果想让WIFI连接路由器,可直接 去掉屏蔽

 

 

 

如果采用以上步骤,可略过  " WIFI配网,让WIFI连接路由器 "  部分,编译下载程序后,即可实现功能!

 

 

WIFI配网,让WIFI连接路由器:

 

 

  打开可以配网的APP,给Wi-Fi配网

 

  请参考基础篇: https://www.cnblogs.com/yangfengwu/p/11760590.html

 

  

 

 

最终效果

 

等待大约5S  如果一直不显示!,应该不可能不显示.除非国家气象那个域名有问题了!!!!

 

 

 

 

程序说明(不走配网步骤)

1,连接的服务器信息,和获取的文件路径

 

 

 

2,去掉屏蔽,省去配网步骤

 

 

3,单片机通过AT指令配置8266以TCP透传模式方式连接Web服务器

 

 

 

 

4,单片机发送http协议给Web服务器

 

 

 

 5,解析返回的数据,然后显示在液晶上

 

 

 

 

 

 

 

 

程序说明(走配网步骤)

 

1,按钮按下3S执行配网

 

 

 

2,配网程序

 

 

 

 

 3,配网成功,执行连接TCP服务器程序

    注:此时主循环一直运行,使用的非阻塞框架!

 

 

 

 

 

 

posted on 2019-10-13 21:32  广源时代  阅读(1711)  评论(0编辑  收藏  举报

导航

支付宝 QQ群