王文秀,吳 慧,葛 瓊,曹克濤,王亓劍,徐慧芳
(安徽新華學院,安徽 合肥 230088)
隨著物聯網技術的不斷發展,與之相關的產品開始進入人們生活。物聯網涉及眾多的產業,如工業生產、智能家居、智能交通、環境監測、衛生管理等,其生產總值已經占據了相當一部分比重。相關研究表明,預計2025年全球物聯網設備基數將達到754億臺;5G網絡的普及將會給物聯網行業帶來一次質的飛躍。目前,國家高度重視物聯網的發展,物聯網產業受到了人們的廣泛關注,在未來以物聯網為基礎的產業將會得到迅猛的發展。物聯網的基礎需要大量的傳感器來搭建。傳感器作為其中的重要組成部分,同樣會得到發展。目前,傳感器越來越多地被應用到人們生活中,降低了生活成本,也使生活更加方便。國內在傳感器方面還有很大的上升空間,既是困難,也是機遇。
溫濕度傳感器作為一種基礎傳感器,將會得到更加廣泛的應用。如今各個行業在進行現代化改造的過程中,對溫濕度的監測和調節日趨嚴格,使得精密儀器的應用也越來越廣泛。在日常工作和生活環境中,溫濕度的可控性也越來越重要,比如計算機或服務器機房的溫度、食品工業和農業生產中溫度和濕度的控制都是運營維護工作的重中之重。因此,基于溫濕度傳感器和單片機的溫濕度監測方法也將取代傳統的溫濕度監測方法。
物聯網的發展離不開基于Android系統的設備的支持??紤]到Android系統是使用最廣泛的操作系統之一,在移動端具有很好的兼容性,并且是一種開源系統,給了使用者良好的開發環境,本文設計了一款基于Android的物聯網溫濕度監測系統。
主控芯片采用STC89C52,主要完成對數據的分析和處理。數據采集部分由DHT11溫濕度傳感器組成,DHT11是應用最為廣泛的傳感器之一,應用已經相當成熟。與主機的通信由藍牙串口模塊組成,完成數據的傳輸和接收,實現下位機與上位機之間的通信。上位機是一部Android手機,用以實現數據的接收。傳感器收集周圍環境的溫度和濕度信息并發送到單片機,單片機在處理數據后通過藍牙串口模塊將數據發送到上位機,并在APP上顯示出來。系統總體設計如圖1所示,下位機整體電路如圖2所示。

圖1 系統總體設計

圖2 下位機整體電路
藍牙模塊采用JDY-31藍牙,其引腳如圖3所示;同時使用跳頻頻譜擴展技術,將頻帶拆分幾個跳頻信道,可以使無線收發器完成在不同信道之間的跳躍。藍牙技術門檻低、功耗小、安全性高,便于傳播和應用。一臺藍牙設備可以與多個藍牙設備相連接,通信極為方便。隨著藍牙通信技術的不斷更新,藍牙的傳輸速率也在不斷提高,數據傳輸速率可達1 Mb/s;并且藍牙可在一定范圍內全方位進行通信,提高了通信效率。

圖3 JDY-31引腳
溫濕度模塊采用DHT11傳感器,電路如圖4所示。當連接上電源后,DHT11進入穩定狀態,并發送指令進行工作,檢測周圍環境溫度和濕度數據。此時在上拉電阻作用下DHT11和DATA數據線都處于高電平狀態;DATA引腳處于輸入狀態,微控制器的I/O端口處于輸出狀態,將輸出低電平,但在上拉電阻作用下微控制器的輸入和輸出端口電位將被拉高。工作開始時,微控制器的傳感器發送一個啟動信號,并向單片機發送一串40位的二進制數據,表示溫濕度信號;接著輸出一個50 μs的低電平,之后才能轉化為輸入狀態。傳感器保存溫度和濕度信息后,將其發送到STC89C52。

圖4 DHT11電路
降溫模塊由L298N和電機組成。當溫濕度達到報警值時,L298N驅動電機轉動,從而達到降溫目的。L298N的IN1和IN2引腳與單片機的P1.7和P1.6口相連接。L298N引腳如圖5所示。

圖5 L298n引腳
Keil是Keil Software公司的可用于單片機的系統開發的軟件,兼容C語言,且操作簡單、易上手。本設計采用的是2009年發布的Keil μVision4版本。如圖6所示為本設計的主程序流程。首先初始化各個模塊;在完成初始化之后,DHT11模塊的工作任務開啟,采集溫濕度,并將采集到的信號發送給STC89C52;最后STC89C52將數據通過JDY-31發送給Android 手機,由Android 實時顯示溫濕度的檢測值。

圖6 主程序流程
本系統通過Android Studio軟件進行開發。開發界面如圖7所示。

圖7 Android Studio開發界面
權限設置:在APP開發的過程中權限的賦予是非常重要的,如果不能賦予權限,則無法進行正常的程序開發。在藍牙通信開發的過程中,APP需要獲得Android系統的如下權限:BLUETOOTH—允許配對的設備進行連接;BLUETOOTH_ADMIN—允許搜索和配對設備;ACCESS_COARSE_LOCATION—廣播接收器接收;BluetoothDevice.ACTION_FOUND—廣播修改權限。
藍牙開啟:在建立藍牙通信之前,需要驗證是否有藍牙設備以及藍牙設備是否已打開。對于Android系統,只有一個藍牙適配器,通過getDefaultAdapter()方法來檢測設備是否支持藍牙,并檢測藍牙是否開啟,如圖8所示。

圖8 藍牙開啟代碼
建立連接:在建立連接時需要一個UUID,用來標識不同設備的ID。手機端是作為客戶端與藍牙模塊進行連接的。在藍牙Socket進行連接之前,一定要調用BluetoothAdapter的cancelDiscovery()方法。連接的第一步是通過調用BluetoothDevice的createRfcommSocketToServiceRecord(UUID)獲取BluetoothSocket;第二步是調用BluetoothSocket的connect()方法發起連接。由于connect()是一個阻塞調用,因此連接應該在主線程以外的線程中執行。調用connect()時,請始終確保設備未執行設備發現;如果正在進行發現操作,則連接嘗試的速度將大大減緩,并且連接失敗的可能性會增加。確保在建立連接之前始終調用cancelDiscovery(),并且在調用時無須實際檢查其是否正在運行;如果確實想要執行檢查,可以調用isDiscovering()。建立連接代碼如圖9所示。

圖9 建立連接代碼
針對系統中各電路模塊的設計,通過Proteus軟件進行仿真。根據仿真結果可知,整體電路可實現設定的功能,包括溫濕度的實時顯示以及超過閾值后的降溫模式。仿真結果如圖10所示。

圖10 仿真結果
當下位機的準備完成之后,開始與上位機進行通信。給下位機通電并且打開上位機程序,打開藍牙,建立連接,發送數據。顯示界面(應用主界面和接收數據界面)如圖11所示。

圖11 顯示界面
根據實際情況可以通過Android修改閾值,修改前后數據對比如圖12所示。

圖12 閾值調整數據
本設計通過DHT11、AT89C52、Android、JDY-31等構建溫濕度監測系統,經過測試證明能夠實現Android實時顯示溫濕度值,通過Android可以調整設定的閾值,若檢測值超過閾值則進行降溫處理,實現智能化。本設計具有一定的推廣價值。