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

  在實際開發中,我開發的這款APP是用來鏈接溫控器,並對溫控器進行控制的。有圖爲證,哈哈。
  這裏寫圖片描述markdown

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

【時序圖】

  這裏寫圖片描述

【概念】

【兩種模式】:

AP:即無線接入點,是一個無線網絡的中心節點。一般使用的無線路由器就是一個AP,其它無線終端能夠經過AP相互鏈接。工具

這裏寫圖片描述

STA:即無線站點,是一個無線網絡的終端。如筆記本電腦、PDA等。.net

這裏寫圖片描述

【兩個端口】

48899端口:我所用的WIFI模塊(USR-WIFI232-S)的端口
49000端口:除去我用的WIFI(USR-WIFI232-S)模塊,其餘WIFI模塊的端口blog

【IP地址】

廣播地址:X.X.X.255(如:255.255.255.255)
WIFI模塊默認IP:10.10.100.254
接入路由器以後,由路由器動態分配的IP。圖片

【實現過程描述】

使用UDP廣播方式搜索wifi模塊ip

  • 第一階段是在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模式下的地址。get

【總結】

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

相關文章
相關標籤/搜索