標籤:

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數據互通了


最近在做一個項目用到了Esp8266模塊,這是一個輕量級的wifi晶元,能夠實現wifi收發數據。

大部分Arduino板本身是沒有wifi功能的,如果要實現wifi通信,就要通過和8266進行串口通信,然後轉發數據。最常見的用法是通過AT命令控制8266的數據收發。

令人興奮的是,Esp8266本身也能夠用Arduino ide來進行開發了。

不管是哪種控制方式,Arduino和電腦通過wifi數據互通一共有三種方式,直連,區域網,網際網路。

第一種 直連

這種方式需要電腦配有wifi模塊,跟Arduino端的wifi模塊直接進行數據通訓。這種方式類似於兩台手機之間藍牙通訊。把Arduino端的wifi作為AP來使用。

第二種 區域網

這種方式要把電腦和Arduino連入同一個網段,常見的方式是接入同一個路由器,然後通過http協議交換數據。還有一種做法就是在區域網建立一個伺服器,電腦和Arduino都作為客戶端,通過這個伺服器進行數據交換。

第三種 網際網路

通過網際網路,就可以實現電腦和Arduino的遠程交換數據。沒有了地域的限制,只要有wifi路由器即可聯網工作。這種情況需要搭建一個連入網際網路的伺服器,數據都要通過這個伺服器,實現遠程控制。很多智能家居就是這樣工作的。

希望我的回答對大家有幫助,用Arduino開發wifi模塊我會寫幾篇教程專門介紹,有興趣的朋友請關注蟻哥愛科技,多交流,多指正!


推薦閱讀:

Arduino+兩塊74HC595 驅動四位數碼管顯示模塊
基礎教程10 Arduino 超聲波測距
樹莓派Zero電腦 30元就可以買到一台電腦了!
BPI-BIT,搭積木一樣做編程的開發板(限時免費領取)
手動搭建你的高擴展C++神經網路框架

TAG:Arduino | WiFi |