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服務器程序

    注:此時主循環一直運行,使用的非阻塞框架!

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM