前言:
實現功能概要:
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服務器程序
注:此時主循環一直運行,使用的非阻塞框架!


