Arduino上傳數據至貝殼物聯並與FPGA進行交互


         本篇實現Arduino與FPGA交互,當然也沒有什么新的協議,還是基於串口通訊,現在學一個串口通信基本上可以驅動大多數模塊了,而且和各種單片機無縫數據交互,Arduino由於其強大的庫函數支持,在實現很多事情上會方便很多,比如串口通訊,Arduino就兩行的代碼,Verilog至少也得上百行,但是從學習知識的角度上來說,學Arduino也只不過是學了一門軟件操控硬件的方法罷了,而且很多東西都簡化了,跟在電腦上編程沒什么兩樣,還不如學學單片機。最起碼還能了解其內部各種寄存器的使用。我用Arduino也就是玩玩,當然還是有了很多不一樣的體驗,都知道Arduino是開源項目,我們可以免費使用別人的代碼,當然也要分享出來自己的代碼,將開源進行到底。

         Arduino的編程語言沒啥說的,使用一種簡易版的C語言編程,一般有C語言基礎的朋友應該兩天就上手了,然后就是利用各種函數了,我在做實驗的時候,學到了一個函數,map函數。現在來說說吧!下面張圖其實是很形象的。

         再看一下官方給的解釋,即把一個數從一個范圍變換到另一個范圍。

map(value, fromLow, fromHigh, toLow, toHigh)
Description

Re-maps a number from one range to another. That is, a value of fromLow would get mapped to toLow, a value of fromHigh to toHigh, values in-between to values in-between, etc.
         我使用Arduino采集到土壤濕度模塊的數據,200-100不等,Arduino讀取模擬量的最大數值為1023,而這么大的數據,也並不是我們需要的,我們需要的是一個百分數,所以使用map函數,把0-1023這個區間投影到0-100這個區間,那么得出來的數據就可以近似的認為是土壤濕度百分比了。

Arduino原本的串口只有一個,那么如果必須要用兩個或以上串口來收發數據怎么辦,這個時候使用軟件模擬串口就可以了。官方給的配置歷程,調用SoftwareSerial庫函數,

初始化配置波特率

輸出的時候使用Serial.write()函數,這里要注意的是Serial.print輸給串口的是ASCII碼值,Serial.write輸入給串口的是真實數值,我這里需要的是arduino采集到的土壤濕度,當然希望直接是十六進制的代碼了。

         實現數據上傳至貝殼物聯,最終要的是需要ESP8266 WIFI模塊了,模塊配置如下。

ESP8266模塊支持STA/AP/STA+AP 三種工作模式。
*STA 模式:ESP8266模塊通過路由器連接互聯網,手機或電腦通過互聯網實現對設備的遠程控制。
*AP 模式:ESP8266模塊作為熱點,實現手機或電腦直接與模塊通信,實現局域網無線控制。
*STA+AP 模式:兩種模式的共存模式,即可以通過互聯網控制可實現無縫切換,方便操作。

我們這里為了方便直接設置成兩種模式共存的狀態。

ESP8266的接口如下圖所示:

其中需要用的端口是TX,RX,CH_PD,VCC,GND

TX,RX分別接USB轉TTL接口的RX,TX,

CH_PD,VCC接3.3v(切記必須為3.3v)

GND接地

聯接物聯網

打開串口調試助手,搜索串口,將波特率設置為115200,然后將ESP8266的VCC引腳拔下在插上,會返回一串亂碼和ready,表示連接正常,如果沒有返回值,檢查引腳是否連接正確。

 

發送AT命令:+++,返回CLOSED,表示關閉之前設定的模式。

 

發送AT+CWMODE=3+回車,設置WiFi模塊為AT/AP模式,(WiFi模塊的知識需要看手冊),返回OK,表示設置成功

 

發送AT+CWJAP=”WIFI name”,”WIFI 密碼”+回車,連接WiFi。返回OK表示連接正確。

 

然后發送AT+CIPSTART="TCP","www.bigiot.net",8181+回車,返回如圖所示,表示連接到貝殼網。

 

這樣WiFi模塊就配置好了,然后將WiFi模塊連接到開發板上,通電后,就會自動連接到貝殼網上了。

WiFi模塊配置好了之后。我們這里用第一個WiFi模塊配置連接到貝殼網,貝殼網是一個物聯網,可以實現與硬件進行遠程交互。

注冊一個貝殼網賬號www.bigiot.net

點擊添加一個設備

添加一個數據接口,這里可以修改借口類型

添加完成后,每一個設備都有自己專屬的ID,APIKEY,

每個設備有對應的數據接口,也有對應的ID

需要幾個數據接口你就添加幾個,我這里添加了四個。然后根據代碼將所有模塊連接,連接設備,上傳程序,注意,上傳Arduino程序的時候一定要將0、1引腳拔下,否則肯定上傳失敗。上傳成功后,打開數據接口,可以看到數據實時上傳了,貝殼物聯還有相關的APP和微信公眾號,只要設備能連上網絡,便可以對設備進行操控,所以遠程操控也毫無壓力。

通過軟串口發送數據給FPGA,FPGA通過處理后,發送數據到上位機,這樣便實現了FPGA和Arduino的數據交互,這樣便實現了物聯網。

         當然Arduino還有很多方便又好玩的玩法,有興趣的朋友也可以繼續玩下去。如果你想要我這個實驗的源代碼,請在微信訂閱號后台回復“Arduino”即可獲的源代碼和庫文件哦!需要本設計FPGA部分代碼后台發消息,聯系訂閱號主,即可獲得!

 

轉載請注明出處:NingHeChuan(寧河川)

個人微信訂閱號:開源FPGA

如果你想及時收到個人撰寫的博文推送,可以掃描左邊二維碼(或者長按識別二維碼)關注個人微信訂閱號

知乎ID:NingHeChuan

微博ID:NingHeChuan

原文地址:http://www.cnblogs.com/ninghechuan/p/7751382.html 


免責聲明!

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



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