1. 程式人生 > >【Android開發—智慧家居系列】(二):用手機對WIFI模組進行配置

【Android開發—智慧家居系列】(二):用手機對WIFI模組進行配置

【Android開發—智慧家居系列】(二):用手機對WIFI模組進行配置

 

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u010924834/article/details/49496729

  在實際開發中,我開發的這款APP是用來連線溫控器,並對溫控器進行控制的。有圖為證,哈哈。 
  這裡寫圖片描述

  上一篇文章【Android開發—智慧家居系列】(一):智慧家居原理 的文末總結中寫到: 
  手機APP控制智慧溫控器就兩步:一是通過手機,讓WIFI模組接入網路,而是通過網路,使用手機對模組傳送指令。在這篇文章中,我們來介紹第一個步驟。

【時序圖】

  這裡寫圖片描述

【概念】

【兩種模式】:

AP:即無線接入點,是一個無線網路的中心節點。通常使用的無線路由器就是一個AP,其它無線終端可以通過AP相互連線。

這裡寫圖片描述

STA:即無線站點,是一個無線網路的終端。如膝上型電腦、PDA等。

這裡寫圖片描述

【兩個埠】

48899埠:我所用的WIFI模組(USR-WIFI232-S)的埠 
49000埠:除去我用的WIFI(USR-WIFI232-S)模組,其他WIFI模組的埠

【IP地址】

廣播地址:X.X.X.255(如:255.255.255.255) 
WIFI模組預設IP:10.10.100.254 
接入路由器之後,由路由器動態分配的IP。

【實現過程描述】

使用UDP廣播方式搜尋wifi模組

  • 第一階段是在WIFI模組處於AP模式下,對其進行搜尋。
  • 第二階段是在WIFI模組處於STA模式下,對其進行搜尋。

第一階段: 
  模組工作在AP模式下時,會開啟一個用於接收“快速聯網協議命令”的UDP埠,埠號為48999(出廠設定預設IP為10.10.100.254)

  1. 通過UDP廣播(廣播地址:x.x.x.255,埠48899),傳送HF-A11ASSISTHREAD(該口令可用AT+ASWD命令設定) 
    (這裡也可以用單播的形式搜尋,目的地址:10.10.10.254,埠48899,命令不變)
  2. 模組收到指令後,如果口令正確,向源地址(單播:埠48899)傳送IP地址、Mac地址和模組名稱。
  3. 收到模組返回的IP地址及MAC地址後,立即回送一個“+ok”,模組收到後進入連線狀態。
  4. 進入連線狀態後,模組可以正常接收網路AT指令。 如:設定網路協議引數:AT+NETP=TCP,CLIENT,30000,X.X.X.X 設定STA的網路引數:AT+WANN=DHCP

過渡階段:

  1. UDP廣播(埠:49000)傳送指令ff 00 01 01 02(十六進位制)
  2. 模組收到指令後返回路由列表
  3. 將使用者選擇的SSID(路由名稱)和金鑰傳送給模組(埠:49000),模組連入此路由,轉化成STA模式,並回送一個指令ff 00 03 82 01 01 87

第二階段: 
   
  在STA模式下,我們要找到此WIFI模組,並對其傳送開、關等操作指令。步驟同第一階段,但是返回的IP地址會不一樣。模組作為STA連結到路由中,以為此時模組的IP地址是由路由器分配的,不是確定IP地址,所以手機無法與模組建立連線,故需要採用廣播搜尋,獲取到模組在STA模式下的地址。

【總結】

  有了基本的思路,瞭解並熟悉整個連線和通訊過程,接下來就是比較簡單的和基礎的部分了,包括UDP通訊以及字元和十六進位制之間的轉換等基本功了。整個開發過程中,對以上內容的理解是一點一點來的,剛開始組長給我講一遍什麼都不明白,給了我一堆資料和工具也不知道怎麼用,但是開發著開發著就搞清楚了。開發過程中還請教了WIFI模組生產公司的工程師,解決了我的問題。遇到問題時,還是要多想辦法,總會有解決的辦法,看你有沒有決心和信心要把它解決出來。