本篇實現Arduino與FPGA交互,固然也沒有什麼新的協議,仍是基於串口通信,如今學一個串口通訊基本上能夠驅動大多數模塊了,並且和各類單片機無縫數據交互,Arduino因爲其強大的庫函數支持,在實現不少事情上會方便不少,好比串口通信,Arduino就兩行的代碼,Verilog至少也得上百行,可是從學習知識的角度上來講,學Arduino也只不過是學了一門軟件操控硬件的方法罷了,並且不少東西都簡化了,跟在電腦上編程沒什麼兩樣,還不如學學單片機。最起碼還能瞭解其內部各類寄存器的使用。我用Arduino也就是玩玩,固然仍是有了不少不同的體驗,都知道Arduino是開源項目,咱們能夠無償使用別人的代碼,固然也要分享出來本身的代碼,將開源進行到底。html
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這個區間,那麼得出來的數據就能夠近似的認爲是土壤溼度百分比了。app
Arduino本來的串口只有一個,那麼若是必需要用兩個或以上串口來收發數據怎麼辦,這個時候使用軟件模擬串口就能夠了。官方給的配置歷程,調用SoftwareSerial庫函數,編程語言
初始化配置波特率函數
輸出的時候使用Serial.write()函數,這裏要注意的是Serial.print輸給串口的是ASCII碼值,Serial.write輸入給串口的是真實數值,我這裏須要的是arduino採集到的土壤溼度,固然但願直接是十六進制的代碼了。學習
實現數據上傳至貝殼物聯,最終要的是須要ESP8266 WIFI模塊了,模塊配置以下。ui
ESP8266模塊支持STA/AP/STA+AP 三種工做模式。
*STA 模式:ESP8266模塊經過路由器鏈接互聯網,手機或電腦經過互聯網實現對設備的遠程控制。
*AP 模式:ESP8266模塊做爲熱點,實現手機或電腦直接與模塊通訊,實現局域網無線控制。
*STA+AP 模式:兩種模式的共存模式,便可以經過互聯網控制可實現無縫切換,方便操做。.net
咱們這裏爲了方便直接設置成兩種模式共存的狀態。
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