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