回覆列表
-
1 # 物聯創客
-
2 # 蟻哥愛科技
最近在做一個專案用到了Esp8266模組,這是一個輕量級的wifi晶片,能夠實現wifi收發資料。
令人興奮的是,Esp8266本身也能夠用Arduino ide來進行開發了。
不管是哪種控制方式,Arduino和電腦透過wifi資料互通一共有三種方式,直連,區域網,因特網。
第一種 直連這種方式需要電腦配有wifi模組,跟Arduino端的wifi模組直接進行資料通訓。這種方式類似於兩臺手機之間藍芽通訊。把Arduino端的wifi作為AP來使用。
第二種 區域網這種方式要把電腦和Arduino連入同一個網段,常見的方式是接入同一個路由器,然後透過http協議交換資料。還有一種做法就是在區域網建立一個伺服器,電腦和Arduino都作為客戶端,透過這個伺服器進行資料交換。
第三種 因特網透過因特網,就可以實現電腦和Arduino的遠端交換資料。沒有了地域的限制,只要有wifi路由器即可聯網工作。這種情況需要搭建一個連入因特網的伺服器,資料都要透過這個伺服器,實現遠端控制。很多智慧家居就是這樣工作的。
一句話答案: 利用Socket協議來實現資料互通!
這個問題想要講解清楚比較複雜, 我們來嘗試用盡量簡單的方式來闡述
要弄懂這個問題, 我們需要具備一些基本知識:
- Socket協議
- 網路通訊知識
- Arduino相關知識
- Wifi工作原理
先上一個原理圖
準備材料:
- 無線路由AP, 負責提供網路和Wifi訊號
- 電腦一臺, 負責充當Socket服務
- Arduino+Wifi模組
第一步: 在電腦上建立Socket服務
在電腦上建立Socket的方式有很多: 用程式自己寫一個 / 用現成的軟體模擬一個
可以同時開2個軟體來測試, 一個建立Socket服務, 另一個建議Socket Client
就可以相互通訊了, 確認Socket服務可用後, 可以關掉一個, 只留下負責Socket服務的那個, 等待Arduino的Wifi來連線
第二步: 準備Arduino+Wifi模組硬體電路
電路大概是這個樣子的
一塊標準的Arduino板子, 透過數字口(模擬串列埠)與Wifi模組的串列埠連線
電路就大搭建完成了
第三步: Arduino程式設計實現
- 流程實現
初始化軟串列埠 > 根據Wifi的SSID和密碼連線上無線路由 > 透過Socket方式連線電腦(所在IP)的Socket服務 > 傳送資料 > 接收資料 > 完成
- 程式碼參考
小結: - 需要電腦提供Socket服務 - Arduino驅動Wifi模組 - 利用Socket協議建議Arduino與電腦的連線 - 電腦和Arduino要在同一個網路內(或可互相訪問的IP段內)達成以上條件, Arduino和電腦就可以利用Wifi資料互通了