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

来源:http://www.cnblogs.com/ninghechuan/archive/2017/10/29/7751382.html
-Advertisement-
Play Games

本篇實現Arduino與FPGA交互,當然也沒有什麼新的協議,還是基於串口通訊,現在學一個串口通信基本上可以驅動大多數模塊了,而且和各種單片機無縫數據交互,Arduino由於其強大的庫函數支持,在實現很多事情上會方便很多,比如串口通訊,Arduino就兩行的代碼,Verilog至少也得上百行,但是從 ...


         本篇實現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(寧河川)

個人微信訂閱號:開源FPGANingHeChuan

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

知乎ID:NingHeChuan

微博ID:NingHeChuan

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Social Net ZOJ - 3649 題意: 反正原題題意我是看不懂... 參考:http://www.cnblogs.com/names-yc/p/4922867.html 給出一幅圖,求最大生成樹,輸出邊權之和,併在這棵樹上進行查詢操作:給出兩個結點編號x和y,求從x到y的路徑上,由每個結 ...
  • 1. 對於泛型類而言,你若沒有指明其類型,預設為Object; 2. 在繼承泛型類以及介面的時候可以指明泛型的類型,也可以不指明; 3. 泛型也資料庫中的應用: 寫一個 DAO 類對資料庫中的數據進行增刪改查其類型聲明為 <T> 。每張表對應一個類,對應每一張表實現一個類繼承該 DAO 類並指明 D ...
  • 1.Java有三種訪問許可權修飾符,分別為public、protected、private,還有一種為預設許可權修飾符的情況,記為default。其中,可以由public和default來修飾類;這四種修飾符都可以修飾成員變數和成員方法。每一種修飾符對應不同的訪問範圍,下麵以下圖為例詳細說明。 圖1 p ...
  • 爬取整個頁面的數據,併進行有效的提取信息,註釋都有就不廢話了: 上一張自己爬取的圖片,並用fusioncharts生成報表(一般抓取的是int類型的數據的話,生成報表可以很直觀) ...
  • 二叉樹的層次遍歷 描述 筆記 數據 評測 給出一棵二叉樹,返回其節點值的層次遍歷(逐層從左往右訪問) 您在真實的面試中是否遇到過這個題? Yes 哪家公司問你的這個題? LinkedIn Airbnb Amazon Cryptic Studios Dropbox Epic Systems TinyC ...
  • 包(Package) 這個其實前面也說過的,不過同模塊一樣,沒有具體的解析 1.什麼是包 在創建許許多多模塊後,我們可能希望將某些功能相近的文件組織在同一文件夾下,那麼此文件夾(目錄)即為包,文件夾(目錄)名即為包名,但包有一個特征與其他普通文件夾區分,包目錄下必須有一個名為__init__.py的 ...
  • 1、抽象類中包含一個內部介面如何實現與調用 2、介面中包含一個內部抽象類如何調用 ...
  • 十分鐘學會Pandas 這是關於Pandas的簡短介紹主要面向新用戶。你可以參考Cookbook瞭解更複雜的使用方法 習慣上,我們這樣導入: 創建對象 請參閱數據結構簡介部分 通過傳遞一個列表的值創建一個Series,讓Pandas創建一個預設的整數索引: 通過傳遞的numpy數組創建一個DataF ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...