今天有一位客戶請教我做一個程序,實現(xiàn)LabVIEW與Arduino硬件的通訊,具體需求為:
1、Arduino硬件(其開發(fā)板單片機型號為AT89C52)采集傳感器數(shù)據(jù),并通過串口將數(shù)據(jù)傳遞出來;
2、通過LabVIEW制作上位機軟件,實現(xiàn)對Arduino硬件傳遞過來的傳感器數(shù)據(jù)的可視化顯示(以曲線圖的形式顯示歷史數(shù)據(jù)),以及將所有數(shù)據(jù)存儲下來。
需求還是比較簡單而且明確的,具體實施也比較簡單,以下詳細介紹下實現(xiàn)過程。
一、Arduino硬件端的程序開發(fā)
我這邊采用Arduino UNO R3硬件采集一個傳感器數(shù)據(jù),并每隔0.5s通過串口傳遞1個數(shù)據(jù)出來,具體實現(xiàn)代碼如下圖所示。
Arduino 代碼實現(xiàn)
二、LabVIEW端上位機的程序開發(fā)
LabVIEW端直接采用NI-VISA函數(shù)即可實現(xiàn)串口數(shù)據(jù)的讀取,再通過“寫入電子表格文件”子函數(shù)將數(shù)據(jù)存儲到一個.csv格式的電子表格文件中,具體實現(xiàn)代碼如下圖所示。
LabVIEW 程序框圖
具體實現(xiàn)流程為:打開串口(波特率需要設(shè)置正確)→清空串口緩沖區(qū)數(shù)據(jù)→While循環(huán)(檢查串口緩沖區(qū)是否有有數(shù)據(jù)可讀取,若有則將數(shù)據(jù)讀取出來,并將數(shù)據(jù)還原為浮點型數(shù)值型數(shù)據(jù),并傳遞給波形圖表,同時還設(shè)置了若采集數(shù)據(jù)超過設(shè)定的限值時亮報警指示燈的功能),當用戶點擊了停止采集的按鈕時,會將所有采集到的數(shù)據(jù)一次性保存到指定路徑下的電子表格中。
三、效果展示
效果如下圖所示。
Arduino IDE 端監(jiān)視數(shù)據(jù)
LabVIEW上位機軟件采集到的數(shù)據(jù)
存儲的電子表格數(shù)據(jù)
四、延伸
我們的物聯(lián)網(wǎng)模塊或一般的單片機模塊可以用于采集一些傳感器數(shù)據(jù),但最終做上位機軟件還是得依靠一些比較強大且方便開發(fā)和展示的編程語言,如本文中提到的LabVIEW軟件,用LabVIEW軟件做上位機軟件還是比較合適的,一來這個軟件的編制是圖形化編制的,比較容易上手,二來該軟件很方便做一些可視化的展示。
-
傳感器
+關(guān)注
關(guān)注
2550文章
51039瀏覽量
753095 -
LabVIEW
+關(guān)注
關(guān)注
1970文章
3654瀏覽量
323346 -
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44567瀏覽量
372828 -
通訊
+關(guān)注
關(guān)注
9文章
902瀏覽量
34890 -
Arduino
+關(guān)注
關(guān)注
188文章
6469瀏覽量
186958
發(fā)布評論請先 登錄
相關(guān)推薦
評論