冉玉梅
摘 要:基于無線的測溫測距實驗系統選擇了典型的溫度傳感器和超聲波傳感器,文章使用nRF24L01和ZigBee兩種方式進行無線傳輸數據實驗,利用Visual Basic實現上位機實驗軟件功能,具有直觀性和交互性。通過方便的人機對話,學生可以完成4種實驗,根據實驗結果圖形直觀感受傳感器性能指標。該實驗系統可以輔助教學,用于課堂演示,提高課程的教學質量。
關鍵詞:ZigBee;nRF24L01;溫度傳感器;超聲波傳感器
高校在開展“傳感器與檢測技術”教學時,通常使用企業生產的實驗平臺,包括傳感器安裝臺、顯示與激勵源、傳感器符號及引線單元、處理電路單元等。除了費用較高外,系統控制對象相對固定,控制方式較為單一,硬件和軟件不開放[1]。而隨著無線傳感器網絡的逐漸普及,將各類傳感器實時監測的數據,通過無線傳輸的方式進行收集,再通過上位機程序處理,即“無線”+“傳感”的模式將成為未來趨勢。為了讓學生更加直觀地認識無線傳感模式,搭建了基于無線的測溫測距實驗系統。
1 實驗系統簡介
短距離無線通信包括無線編解碼芯片,無線數傳芯片,ZigBee,WiFi,藍牙,IrDA這些方式,本文選擇了無線數傳芯片和ZigBee兩種方式。我國傳感器產品開發涵蓋光敏、熱敏、力敏、氣敏、電壓敏、磁敏、濕敏、聲敏、射線敏、離子敏和生物敏等傳感器,系統選擇了常用的溫度傳感器和超聲波傳感器。系統包括4個實驗,分別為無線數傳芯片傳輸溫度傳感器數據、無線數傳芯片傳輸超聲波傳感器數據、ZigBee模塊傳輸溫度傳感器數據、ZigBee模塊傳輸超聲波傳感器數據。
系統主要由控制器、無線傳輸模塊、傳感器模塊和上位機軟件構成。通過單片機連接無線傳輸模塊和傳感器,傳感器收集數據,無線模塊發射端將數據發送到連接上位機的接收端,上位機軟件系統對數據進行處理并實時顯示。
系統對溫度傳感器、超聲波測距傳感器和單片機采用﹢5.0 V的電源供電,對無線模塊采用﹢3.3 V供電。軟件設計主要通過Keil4.0,IAR EW8051-8.1和Visual Basic6.0開發。
2 硬件設計
硬件系統由檢測模塊和無線傳輸模塊組成。無線數傳芯片通過芯片提供的接口進行數據的傳輸,典型的數傳芯片有Si4432,nRF24L01,CC1100等,系統使用nRF2401L芯片。ZigBee是基于IEEE802.15.4標準的低功耗局域網協議,CC2530是用于ZigBee的一個片上系統解決方案[2]。檢測模塊包括溫度傳感器和超聲波傳感器,溫度傳感器選擇的型號是DS18B20,測溫范圍在﹣55~﹢125 ℃,在常溫環境中實驗測量時,通常在15~40 ℃變化,系統通過圖形化顯示的數據也在此區間內。超聲波傳感器選擇的型號是HC-SR04,可提供2~400 cm的非接觸式距離感測功能。
3 軟件設計
軟件設計針對單片機和上位機,分別通過Keil4.0,IAR EW8051-8.1和Visual Basic6.0開發。對ZigBee設備,使用Z-Stack協議棧開發,定義通信硬件和軟件在不同級如何協調工作[2]。為了實現Z-Stack代碼的公用,用戶需要添加幾個文件,編寫自己的任務處理函數。一個是主文件,存放具體的任務事件處理函數;一個主文件的頭文件;一個是以Osal開頭的操作系統接口文件,專門存放任務處理函數數組tasksArr[]的文件。
在Visual Basic6.0中有一個名為Microsoft Communication Control的通信控件。通過對此控件的屬性和事件進行相應編程操作,可以實現串口通信,部分代碼如下。
MSComm1.OutBufferSize = 2
If MSComm1.PortOpen = True Then MSComm1.PortOpen = False
MSComm1.SThreshold = 1
MSComm1.InputLen = 0
MSComm1.InputMode = comInputModeText
MSComm1.InBufferCount = 0
根據軟件模塊化設計方法,將實驗系統軟件功能模塊劃分為“選擇無線傳輸方式”模塊、“選擇傳感器類型”模塊、“選擇com端口”模塊、“選擇波特率”模塊、“選擇保存文件”模塊、“打開串口/關閉串口”模塊、“保存數據/停止保存”模塊、文字顯示模塊、圖形化數據演示模塊[3]。
4 實驗設計舉例
4.1 無線數傳芯片的傳輸方式
以傳輸溫度傳感器數據為例,選擇nRF24L01芯片模塊,通過USB接口連接單片機和nRF24L01接收器。
運行“基于無線的傳感器實驗系統”軟件,“選擇無線傳輸方式”中單擊“無線數傳芯片”,“選擇傳感器類型”中單擊“溫度傳感器”,單擊“選擇com端口”下顯示的端口號,“選擇波特率”中單擊“9600”,“選擇保存文件”中按照自己的存放路徑和存放文件名稱進行修改。
按下單片機上的加電開關,單擊“打開串口”。將不同溫度的熱源接近傳感器,傳感器收集到溫度值,nRF24L01芯片將這些數值傳遞到上位機軟件,以圖形、文本兩種方式顯示溫度,如圖1所示,“實時數據”中的數值和單片機上液晶顯示屏上數據一致。
單擊“保存數據”按鈕,經過一段時間后,單擊“停止保存”按鈕,期間的數據將保存在“data.txt”文檔中,雙擊打開可瀏覽。單擊“關閉串口”,將單片機的加電開關關閉,完成本個實驗的運行過程。無線數傳芯片傳輸超聲波傳感器數據的實驗過程與上述過程相似[4]。
4.2 ZigBee的傳輸方式
以ZigBee模塊傳輸超聲波傳感器數據為例,選擇ZigBee無線傳輸模塊,將超聲波傳感器安裝到CC2530發送端接口上,CC2530發送端模塊連接到移動電源。
各項參數進行相應選擇后,打開CC2530模塊的加電開關,單擊“打開串口”,將超聲波傳感器對準不同的參照物,反饋的距離數據通過CC2530傳遞到上位機,以圖形、文本顯示數據。ZigBee模塊傳輸溫度傳感器數據的實驗過程與上述過程相似[5]。
一般的上位機通過手工方式選擇端口,先連接無線模塊,在“設備管理器”中查看占用的端口號,再返回系統選擇相應選項,過程復雜效率低。本系統在運行時通過代碼自動搜索被占用的端口號,顯示在選項菜單中,提高了工作效率[6]。
5 結語
基于模塊化的思想,設計并開發了基于無線的測溫測距實驗系統,在系統中使用了兩種傳感器和兩種無線傳輸方式。本實驗系統具有可靠高效的優點。4個實驗項目直觀地展現了傳輸方式與傳感器之間的連接,圖形化展示了傳感器數據的變化,其設計目的是給學生提供實際動手機會,有利于學生加深對無線傳輸方法和常用傳感器的了解。