吳越 孫海春
摘? 要:基于Arduino和LabVIEW的家居環(huán)境測量報警系統(tǒng)旨在實現(xiàn)室內(nèi)溫濕度和二氧化碳濃度的實時采集、監(jiān)測與報警,以保證家居環(huán)境維持在一個安全、舒適的狀態(tài)。以Arduino為下位機測量采集實時數(shù)據(jù);通過上位機LabVIEW軟件設(shè)計出測量報警系統(tǒng)的人機交互界面。所設(shè)計的家居環(huán)境測量報警系統(tǒng)經(jīng)過現(xiàn)場測試,能夠穩(wěn)定運行,具有響應(yīng)迅速、數(shù)據(jù)準確和可擴展性好等特點,具有一定的實際應(yīng)用價值。
關(guān)鍵詞:Arduino;LabVIEW;智能家居;溫濕度;二氧化碳濃度
中圖分類號:TP274 文獻標識碼:A? 文章編號:2096-4706(2023)10-0150-05
Abstract: The home environment measurement and alarm system based on Arduino and LabVIEW aims to achieve real-time collection, monitoring and alarming of indoor temperature, humidity and carbon dioxide concentration to ensure that the home environment is maintained in a safe and comfortable state. The Arduino is used as the lower computer to measure and collect real-time data, and the man-machine interaction interface of the measurement and alarm system is designed by LabVIEW software of the upper computer. The designed home environment measurement and alarm system can run stably after field test. It has the characteristics of rapid response, accurate data and good scalability, and has certain practical application value.
Keywords: Arduino; LabVIEW; smart home; temperature and humidity; carbon dioxide concentration
0? 引? 言
隨著經(jīng)濟社會不斷發(fā)展,人們的生活質(zhì)量顯著提高,對生活環(huán)境提出了更高要求,“舒適”與“健康”的理念逐漸深入人心??萍歼M步為健康的家居環(huán)境提供了必要保障,將智能家居融入了人們的生活。
室內(nèi)環(huán)境參數(shù)測量報警系統(tǒng)正成為智能家居系統(tǒng)中重要組成部分,實現(xiàn)室內(nèi)環(huán)境參數(shù)測量,可以滿足人們對健康生活環(huán)境追求。對此,本文將利用開放源碼開發(fā)平臺Arduino作為下位機,以虛擬儀器程序開放軟件LabVIEW作為上位機進行智能家居產(chǎn)品設(shè)計。上下位機通過串口通信,以及VISA 配置相關(guān)參數(shù),將下位機采集到環(huán)境數(shù)據(jù)以圖形化分析方法直觀地顯示在上位機界面,家庭用戶登錄系統(tǒng)后可以查看。同時利用Access數(shù)據(jù)庫保存數(shù)據(jù),用戶可以隨時回訪歷史數(shù)據(jù)。
1? 系統(tǒng)總體設(shè)計方案
1.1? 系統(tǒng)主要組成
本設(shè)計由下位機和上位機組成家居環(huán)境參數(shù)測量報警系統(tǒng)及用戶登錄系統(tǒng),其中測量報警系統(tǒng)為主要系統(tǒng),用戶登錄系統(tǒng)為輔助系統(tǒng),系統(tǒng)功能通過相應(yīng)模塊來實現(xiàn),如圖1所示。
Arduino Uno作為下位機,代替NI公司官方的數(shù)據(jù)采集卡,負責對傳感器信息進行讀寫和數(shù)據(jù)傳輸,主要包括溫度傳感器、濕度傳感器和二氧化碳濃度傳感器及LCD12864顯示屏。LabVIEW作為上位機,通過人機交互界面實現(xiàn)數(shù)據(jù)顯示、聲光報警以及數(shù)據(jù)回放等功能。上位機和下位機之間利用串口實現(xiàn)通信,滿足設(shè)計需求,實現(xiàn)設(shè)計目的。
1.2? 系統(tǒng)模塊規(guī)劃
整個系統(tǒng)有上下位機兩大主線,系統(tǒng)的模塊圖如圖2所示。下位機Arduino Uno對應(yīng)數(shù)據(jù)測量模塊,數(shù)據(jù)測量模塊又分為溫濕度傳感器模塊和二氧化碳濃度傳感器模塊,它們的功能是準確檢測出家庭室內(nèi)溫濕度和二氧化碳濃度,通過串口將數(shù)據(jù)傳給電腦,然后利用電腦的LabVIEW軟件編寫在人機交互界面上進行數(shù)據(jù)的實時顯示和記錄。
上位機包括兩大功能模塊,用戶登錄系統(tǒng)和數(shù)據(jù)測量報警系統(tǒng)。用戶登錄系統(tǒng)分為用戶注冊、用戶登錄、修改密碼、用戶管理四大模塊。通過用戶登錄系統(tǒng)進入測量報警系統(tǒng)后,即能顯示出數(shù)據(jù)顯示模塊、聲光報警模塊和顯示歷史數(shù)據(jù)模塊。
登錄界面可進行用戶的注冊、登錄和登錄數(shù)據(jù)顯示,登錄用戶分為管理員與測試員(一般用戶)兩類。管理員與測試員均為家庭成員,名稱不同只是為了區(qū)分權(quán)限。為了確保使用者的個人隱私和家庭環(huán)境測量系統(tǒng)的安全,測試員只能更改此使用者的用戶密碼;管理員具有管理用戶的權(quán)限,包括添加、刪除、更改用戶信息。
上位機LabVIEW系統(tǒng)以數(shù)值和波形圖表的形式,顯示出測量采集到的數(shù)據(jù)。聲光報警模塊功能是在測量采集到的數(shù)據(jù)超出設(shè)定值時,立即發(fā)出聲音和燈光警告以實現(xiàn)報警功能。用戶可以通過顯示歷史數(shù)據(jù)模塊回訪指定時間段內(nèi)的數(shù)據(jù),以達到進一步整合并有效利用歷史數(shù)據(jù)的目的。
2? 硬件設(shè)計
2.1? DHT11傳感器
DHT11是一款數(shù)字信號輸出傳感器,集濕度、溫度測量為一體,濕度精度為±5 %RH,濕度量程為20 %RH~
90 %RH;溫度精度為±2 ℃,溫度量程為0~+50 ℃。傳感器包含電阻式濕度傳感器和NTC溫度傳感器,具有相對濕度和相對溫度可測量、抗干擾能力強、輸出精準和功耗低等優(yōu)點,因此廣泛應(yīng)用于智能家庭系統(tǒng)。
DTH11采取了一種被動的工作模式,等待處理器發(fā)送命令。在接收到命令后,傳感器就會從睡眠模式轉(zhuǎn)換為工作模式,發(fā)出響應(yīng)信號,并進行一次信號采集,將數(shù)據(jù)傳輸出去。一次采集結(jié)束后,回到睡眠狀態(tài),等待下一次指令。DHT11接線方式如表1所示。
2.2? CCS811傳感器
CCS811空氣質(zhì)量傳感器為一款低功耗數(shù)字氣體傳感器,與傳統(tǒng)氣體傳感器相比,CCS811傳感器從啟動到正常運行所需時間非常短,可以快速進入運行狀態(tài),具有響應(yīng)靈敏、功耗低、閾值中斷報警等優(yōu)點。
2.3? LCD12864顯示屏
點數(shù)為128×64點的位圖圖形液晶模塊簡稱LCD12864,共有20個引腳。該顯示屏的顯示成本相對較低,能夠顯示多種圖形類型,包括數(shù)字、字母和漢字等。顯示屏圖形顯示時,通過寫入垂直地址和水平地址來進行圖形顯示的設(shè)定。LCD12864接線方式如表2所示。
在搭建完基本模塊電路后,對各模塊進行測試分析,確定系統(tǒng)能正常運行后,將各部分組合,整體電路圖如圖3所示。
3? 軟件設(shè)計
軟件設(shè)計分為兩大部分,即下位機程序設(shè)計和上位機程序設(shè)計。
3.1? 下位機Arduino軟件設(shè)計
Arduino是一個在世界范圍內(nèi)非常受歡迎的開放源碼開發(fā)平臺。下位機使用微控制器 Arduino UNO,該型號單片機擁有豐富的硬件資源,同時Arduino將不利于理解的單片機底層邏輯代碼封裝起來,提供簡單實用、易于理解的接口。Arduino可以使用自帶的IDE環(huán)境進行編程,風格簡潔,使用方便,本設(shè)計即采用Arduino IDE環(huán)境編程。
Arduino是一個開源平臺,為開發(fā)人員提供了一個討論社區(qū),大多數(shù)開發(fā)人員樂意將其 Arduino庫共享到開源社區(qū)。正是由于大量的 Arduino開放源碼庫,使得開發(fā)人員不需要花費大量的時間來理解學習處理器的底層邏輯,可以快速實現(xiàn)產(chǎn)品原型。如果在Arduino庫中沒有所需傳感器的庫資源,就需要開發(fā)者添加或者自定義的庫文件。本設(shè)計中,需要添加溫濕度、二氧化碳濃度傳感器和顯示屏相對應(yīng)的庫文件。
定義傳感器以及顯示屏的引腳,初始化與上位機一致的串口波特率。為使CCS811傳感器預(yù)熱后快速且正確顯示二氧化碳濃度,減少等待時間,需要編寫sensor.writeBaseLine()函數(shù)寫入基線值。初始化與傳感器設(shè)置完成后,編寫LCD12864顯示函數(shù),在恰當?shù)奈恢梅秩酗@示溫濕度、二氧化碳濃度數(shù)據(jù)。
3.2? 上位機LabVIEW軟件設(shè)計
3.2.1? 用戶登錄系統(tǒng)
本設(shè)計是將使用者數(shù)據(jù)存入Access數(shù)據(jù)庫,通過LabVIEW調(diào)用實現(xiàn)的。
傳統(tǒng)測試中使用的儀器性能及功能在出廠時已被定義,用戶多變的要求和使用需求受到較大限制。虛擬儀器的出現(xiàn)改變了儀器功能定義的方式,變?yōu)閺膬x器制造商到用戶,虛擬儀器逐漸成為當前測試領(lǐng)域的熱點技術(shù)。LabVIEW就是一款優(yōu)秀的虛擬儀器程序開放軟件,目前在我國已經(jīng)得到了廣泛應(yīng)用。
LabVIEW是美國國家儀器(NI)公司研制的程序開發(fā)系統(tǒng),不同于傳統(tǒng)使用編程語言的軟件,LabVIEW的編程環(huán)境更加直觀、生動,使用圖形化編輯語言進行程序編寫,具有函數(shù)庫和開發(fā)工具,滿足系統(tǒng)開發(fā)和維護。由于虛擬儀器的外形、運行方式與真實的物理設(shè)備非常接近,滿足了實際情況和開發(fā)人員的操作習慣。LabVIEW提供了兩個部分:前面板和程序框圖。前面板是VI的用戶交互界面,模擬實際物理儀器的操作按鈕;程序框圖是VI的源代碼,工具有函數(shù)和連線等多種選擇,可以添加前面板沒有的控件。
數(shù)據(jù)庫的建立是功能模塊構(gòu)建的基礎(chǔ),是人機信息交流的場所。由于LabVIEW本身不能直接訪問數(shù)據(jù)庫,所以使用LabSQL數(shù)據(jù)庫訪問工具套件將LabVIEW連接到數(shù)據(jù)庫,執(zhí)行訪問、數(shù)據(jù)查詢、日志操作、數(shù)據(jù)修改、日志刪除等功能。LabSQL VIs劃分成四類,第一類是Command Vis,實現(xiàn)一些基本操作,例如構(gòu)建、消除數(shù)據(jù)或是讀寫數(shù)據(jù)庫中某段數(shù)據(jù);第二類是Connection VIs,管理LabVIEW和數(shù)據(jù)庫之間的銜接關(guān)系;第三類是Recordset VIs,記錄數(shù)據(jù)庫中各種數(shù)據(jù)的操作;第四類是Top Level Vis,對某些性能進行封裝。
LabSQL通過ODBC與數(shù)據(jù)庫連接,ODBC是微軟定義的一種數(shù)據(jù)訪問標準,只有在ODBC中指定數(shù)據(jù)源名稱和驅(qū)動程序,才可實現(xiàn)連接訪問。LabVIEW與數(shù)據(jù)庫建立連接后,便可對數(shù)據(jù)庫中的用戶數(shù)據(jù)進行操作。本系統(tǒng)所創(chuàng)建的Access 數(shù)據(jù)庫包含相關(guān)數(shù)據(jù)表格,其中包含用戶名、用戶密碼、用戶權(quán)限、最后登錄時間和登錄次數(shù)5項數(shù)據(jù)。用戶登錄系統(tǒng)利用事件結(jié)構(gòu)來持續(xù)響應(yīng)前面板中不同的用戶事件,通過不斷的循環(huán)來執(zhí)行不同事件源激發(fā)的事件。
注冊成功后,用戶可以通過登錄本系統(tǒng)進行操作。用戶憑用戶名和密碼登錄,登錄成功后,面板會根據(jù)用戶的權(quán)限打開相應(yīng)的按鍵。一般的用戶登錄后只能修改密碼或者直接進入數(shù)據(jù)測量報警系統(tǒng),但是管理員還可以管理用戶。登錄時,保證在輸入框內(nèi)輸入的用戶名不為空且用戶存在;不為空后程序從數(shù)據(jù)庫記錄集(Recordset)中讀記錄,和輸入的密碼和權(quán)限進行比較。比較成功后,數(shù)據(jù)庫中的登錄次數(shù)和最后一次登錄時間將被更新。管理員登錄后,單擊“進入系統(tǒng)”“用戶管理”等不同按鈕將觸發(fā)事件,也可直接單擊“退出系統(tǒng)”按鈕結(jié)束程序。
3.2.2? 串口通信
串口通信指傳數(shù)據(jù)只有一根線,一次只能傳輸一位,在對速率要求不高的情況下,使用串口通信,通信線路簡單,實用價值高,適合短距離通信。Arduino和 LabVIEW之間多種通信方法,其中一種是利用LabVIEW Interface for Arduino Toolkit(LIAT)工具包進行連接,另外一種則是串口控制方式,利用VISA插件實現(xiàn)。
利用LIAT工具包進行連接,其包中庫函數(shù)的數(shù)量有限,傳感器類型單一。如果官方的傳感器庫中沒有實驗所需的傳感器,則無法編程,存在一定的局限性。同時因為利用LIAT工具包不需要對Arduino進行編程,這對了解Arduino硬件邏輯和把握整體思維邏輯不利。所以本系統(tǒng)中使用串口控制方式,利用VISA插件實現(xiàn)連接。
進行上下位機通信前要掌握串口通信的總體流程。串口通信首先需要調(diào)用串口配置(VISA Configure Serial Port)函數(shù)完成參數(shù)設(shè)置,為避免數(shù)據(jù)接收失敗或出現(xiàn)錯誤幀需對錯誤輸入進行設(shè)置。初始化成功后,利用該串口進行數(shù)據(jù)收發(fā)。LabVIEW串口配置流程圖如圖4所示。發(fā)送數(shù)據(jù)使用VISA寫函數(shù),接收數(shù)據(jù)使用VISA讀函數(shù),讀取函數(shù)中“字節(jié)總數(shù)”接線端子應(yīng)該讀取在串口緩沖區(qū)的字節(jié)總數(shù)。在完成數(shù)據(jù)傳輸任務(wù)后,將串行端口關(guān)閉,對話終止,并釋放出串行資源。
3.2.3? 主界面設(shè)計
為能夠在LabVIEW界面上清晰地反映數(shù)據(jù),需要選擇正確且占用內(nèi)存小的程序結(jié)構(gòu)。本設(shè)計中LabVIEW用戶登錄系統(tǒng)主體部分選擇事件結(jié)構(gòu),事件結(jié)構(gòu)一般不會被單獨地用于“while”循環(huán),而是嵌套在其中。事件結(jié)構(gòu)主要用于對前面板進行響應(yīng)來實現(xiàn)用戶界面交互,使用事件結(jié)構(gòu)不僅可以降低程序的CPU需求,還可以簡化框圖代碼,保證了在響應(yīng)過程中的所有交互。同時,本設(shè)計利用移位寄存器來實現(xiàn)用戶信息的改變,利用移位寄存器可以將I循環(huán)的結(jié)果作為I+1循環(huán)的輸入。在周期的每次迭代結(jié)束后,移位寄存器的右端存儲周期結(jié)束時的數(shù)據(jù),在下一個周期開始時,數(shù)據(jù)出現(xiàn)在左端。
Arduino通過串口將室內(nèi)環(huán)境的數(shù)據(jù)按照二氧化碳濃度、濕度和溫度的順序傳輸給上位機。由于從Arduino Uno經(jīng)串口發(fā)送過來的字符串并未轉(zhuǎn)換成所對應(yīng)的物理量。因此,上位機讀取串口緩沖區(qū)中的數(shù)據(jù)后,通過“匹配模式”節(jié)點,把收到的數(shù)據(jù)一分為三,分為三份子字符串,二氧化碳濃度、溫度、濕度數(shù)值顯示。
該系統(tǒng)采用LabVIEW記錄數(shù)據(jù),將實時數(shù)據(jù)錄入到數(shù)據(jù)表中,同時將數(shù)據(jù)的獲取日期和具體的數(shù)據(jù)一一對應(yīng),使歷史數(shù)據(jù)可以快速、準確地查看。寫入的數(shù)據(jù)既可以在前面板查看,又保存在本地文件測量數(shù)據(jù).txt中,如圖5所示。點擊前面板的“查看歷史數(shù)據(jù)”按鈕,打開子VI。輸入指定時間段后,在歷史數(shù)據(jù)表格中顯示出相應(yīng)時間段的數(shù)據(jù),表頭包含時間、二氧化碳濃度和溫濕度。
4? 結(jié)? 論
本文完成了基于LabVIEW和Arduino的家居環(huán)境參數(shù)測量報警系統(tǒng)設(shè)計,通過用戶登錄模塊、數(shù)據(jù)測量顯示模塊、聲光報警模塊等,實現(xiàn)了數(shù)據(jù)采集及超限報警功能。該系統(tǒng)各模塊相互連接,設(shè)計出了方便快捷、易于操作、準確度高的家居智能小幫手。
Arduino與LabVIEW都具有操作便捷、易于上手、可拓展性好的特點,兩者結(jié)合使測量更加系統(tǒng)便捷高效、易于操作,也便于后續(xù)完善修復(fù),編輯添加新功能。本系統(tǒng)運行平穩(wěn),測量結(jié)果較準確,達到了設(shè)計目的。
本設(shè)計仍存在不足之處,僅實現(xiàn)了家居環(huán)境中溫濕度和二氧化碳濃度的測量報警功能,設(shè)計范圍較窄。實驗中使用的CCS811空氣質(zhì)量傳感器可以進行空氣質(zhì)量的全方位檢測,不僅限于二氧化碳濃度測量。在今后的研究設(shè)計中,可以多加入一些參數(shù)的采集測量,如甲醛濃度等。
同時,本設(shè)計還沒有形成真正的產(chǎn)品實物,后續(xù)設(shè)計可以利用3D打印技術(shù),打印一個美觀、實用、有設(shè)計感的外型。還可以增加聯(lián)網(wǎng)功能,設(shè)計一款手機APP,利用系統(tǒng)測量的數(shù)據(jù)真正實現(xiàn)智能互聯(lián),例如室內(nèi)二氧化碳濃度過高,系統(tǒng)自動開啟風扇、空調(diào)或者是新風系統(tǒng)等。
參考文獻:
[1] 鄭玲玲,張金,劉芳,等.基于LabVIEW和Arduino的溫濕度采集系統(tǒng)設(shè)計 [J].中國科技信息,2021(6):81-83.
[2] 侯偉,張小潔,耿凡娜,等.基于LabVIEW的土壤溫濕度實時監(jiān)測系統(tǒng)設(shè)計 [J].電子測量技術(shù),2019,42(4):141-145.
[3] 劉凱多,陳振宇,袁洪喜,等.基于機器視覺的學習環(huán)境及狀態(tài)監(jiān)測裝置 [J].電子制作,2021(14):66-67+75.
[4] 王維剛,李偉,張穎,等.基于LabSQL的LabVIEW與Access數(shù)據(jù)庫的通信 [J].教育教學論壇,2012(36):158-159.
[5] 田彬.試析基于LabSQL的LabVIEW數(shù)據(jù)庫訪問技術(shù) [J].電子科學技術(shù),2017,4(2):42-44+68.
[6] 劉宏達,聞子俠,馬忠麗.基于虛擬儀器技術(shù)的遠程測控實驗系統(tǒng)開發(fā) [J].實驗技術(shù)與管理,2009,26(11):75-79.
作者簡介:吳越(2001—),女,漢族,江西贛州人,碩士研究生在讀,研究方向:通信工程、自然語言處理;孫海春(1985—),女,漢族,山東聊城人,碩士生導(dǎo)師,副教授,博士,研究方向:人工智能。