《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于Arduino的智能環(huán)境監(jiān)控系統(tǒng)設(shè)計
基于Arduino的智能環(huán)境監(jiān)控系統(tǒng)設(shè)計
2014年微型機與應(yīng)用第20期
渠 淼,,牛國鋒,冒張霄,,孫丹丹
常熟理工學(xué)院 計算機科學(xué)與工程學(xué)院,,江蘇 常熟 215500
摘要: 針對實時環(huán)境狀況監(jiān)測,設(shè)計了一種基于Arduino的環(huán)境狀況監(jiān)測系統(tǒng),。該系統(tǒng)以Arduino UNO和各類傳感器為核心,,設(shè)計并編寫了Arduino UNO程序,實現(xiàn)實時,、便捷地監(jiān)測周圍環(huán)境的溫度,、濕度、光照及噪音變化情況,,并采集傳感器數(shù)據(jù)上傳到監(jiān)測平臺,。實踐表明,該設(shè)計能夠經(jīng)濟,、高效地實現(xiàn)數(shù)據(jù)采集,,可用于實時環(huán)境狀況的快速監(jiān)測。
Abstract:
Key words :

  摘  要: 針對實時環(huán)境狀況監(jiān)測,,設(shè)計了一種基于Arduino的環(huán)境狀況監(jiān)測系統(tǒng),。該系統(tǒng)以Arduino UNO和各類傳感器為核心,設(shè)計并編寫了Arduino UNO程序,,實現(xiàn)實時,、便捷地監(jiān)測周圍環(huán)境的溫度、濕度,、光照及噪音變化情況,,并采集傳感器數(shù)據(jù)上傳到監(jiān)測平臺。實踐表明,,該設(shè)計能夠經(jīng)濟,、高效地實現(xiàn)數(shù)據(jù)采集,,可用于實時環(huán)境狀況的快速監(jiān)測。

  關(guān)鍵詞: Arduino,;智能,;環(huán)境監(jiān)測;溫濕度監(jiān)測

0 引言

  近兩年,,工業(yè)化進(jìn)程的日益發(fā)展導(dǎo)致環(huán)境污染問題日益突出,,隨著環(huán)境狀況的不斷惡化,各地霧霾天氣日益嚴(yán)重,,已經(jīng)影響到了人們的正常出行,、生活以及健康,因此人們掌握了解自身所處周邊環(huán)境狀況信息的需求越來越迫切,。伴隨著當(dāng)前移動互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,,   3 G、WiFi,、GPRS等無線通信方式的實現(xiàn)和廣泛應(yīng)用,,都為實時環(huán)境狀況監(jiān)測提供了條件,人們可以隨時隨地了解自己所處的環(huán)境狀況信息,,為出行和生活提供便捷服務(wù),,為尋求更加健康的環(huán)境提供依據(jù)。本文主要研究利用現(xiàn)有的成熟傳感技術(shù)和互聯(lián)網(wǎng)技術(shù)實現(xiàn)實時獲取環(huán)境狀況信息,,這種實現(xiàn)方法簡單快速,,成本低廉,具有很高的實用性,。

  Arduino是近年來快速流行起來的一種控制器,,它是一個硬件平臺,使用的核心是一個AVR芯片,,整塊控制板類似于單片機開發(fā)板,,但是在功能上強大了很多。本文基于Arduino平臺設(shè)計一個環(huán)境監(jiān)測系統(tǒng),,用來檢測一天中溫度,、濕度、光照以及噪音變化情況,,并將數(shù)據(jù)寫入SD卡中進(jìn)行分析,具有很高的實用性,。

1 Arduino UNO主控板及傳感器

  Arduino是一款便捷靈活,、方便開發(fā)者使用和上手的開源電子原型平臺,包含各種型號的Arduino板及擴展板硬件資源和Arduino IDE軟件資源,。Arduino不僅僅是全球最流行的開源硬件,,也是一個優(yōu)秀的硬件開發(fā)平臺,,更是當(dāng)前硬件開發(fā)的趨勢。

  本設(shè)計主要采用Arduino UNO主控板,、DHT11溫濕度傳感器模塊,、光照強度傳感器以及聲音傳感器,外接SD卡進(jìn)行數(shù)據(jù)存儲,。

  1.1 Arduino UNO主控板及擴展板

  Arduino由一個基于Atmel AVR單片機的開放源碼的硬件平臺和一套專門的開發(fā)環(huán)境組成,。Arduino UNO[1]是目前使用最廣泛的Arduino控制器,具有Arduino的所有基本功能,。UNO的處理器核心是ATmega328,,它包括14路數(shù)字輸入/輸出接口(其中6路可作為PWM輸出,6路模擬輸入),,一個16 MHz晶體振蕩器,,一個USB接口,一個電源插座,,一個ICSP接口和一個復(fù)位按鈕,,其結(jié)構(gòu)和引腳電路如圖1所示[2]。在掌握了Arduino UNO開發(fā)技術(shù)以后,,就可以將自己編寫的代碼輕松地移植到其他型號的控制器上,,可以用來開發(fā)交互產(chǎn)品,比如可以讀取大量的開關(guān)和傳感器信號,,并且可以控制各式各樣的電燈,、電機和其他物理電子設(shè)備等。

001.jpg

  1.2 DHT11溫濕度監(jiān)測模塊

  DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號輸出的溫濕度復(fù)合傳感器,,它采用專用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),,確保該傳感器模塊具有極高的可靠性與卓越的長期穩(wěn)定性能[3]。DHT11采用單總線方式與Arduino進(jìn)行數(shù)據(jù)傳輸,,單線制串行接口使系統(tǒng)集成變得簡易快捷,。該傳感器體積超小、功耗極低,,信號傳輸距離可達(dá)20 m以上,,同時具有精度準(zhǔn)確、讀取靈敏等優(yōu)點,,使其成為各類應(yīng)用甚至最為苛刻應(yīng)用場合的最佳選擇,。DHT11數(shù)字溫濕度傳感器可以測出實時的環(huán)境溫度和相對濕度,溫度范圍為0~50℃,,溫度的檢測精度為1℃,;它的相對濕度范圍為20 %RH~90 %RH,檢測精度為1 %RH,,兩次讀取傳感器數(shù)據(jù)的時間采樣周期間隔不低于1 s[4],。

  傳感器包括一個電阻式感濕元件和一個NTC測溫元件,,并與一個高性能8位單片機相連接,因此該產(chǎn)品具有品質(zhì)卓越,、響應(yīng)超快,、抗干擾能力強、性價比極高等優(yōu)點,。每個DHT11傳感器都在極為精確的濕度校驗室中進(jìn)行校準(zhǔn),,校準(zhǔn)系數(shù)以程序的形式存在OTP內(nèi)存中,傳感器內(nèi)部在檢測型號的處理過程中要調(diào)用這些校準(zhǔn)系數(shù),。

  1.3 光敏強度傳感器

  熱敏模塊用于溫度檢測,,對所處環(huán)境的溫度進(jìn)行檢測,采用NTC 10 k?贅熱敏電阻,,靈敏度好,,當(dāng)溫度升高時,電阻值會隨之降低,,模擬值輸出為0~1 023,,結(jié)合Arduino的傳感器擴展板用模擬口便可以讀取模擬值。

  光敏電阻器是利用半導(dǎo)體的光電導(dǎo)效應(yīng)制成的一種電阻值隨入射光的強弱而改變的電阻器,,又稱為光電導(dǎo)探測器,。當(dāng)入射光強時電阻減小,入射光弱時電阻增大,。光敏電阻器可用來對周圍環(huán)境光的強度進(jìn)行檢測,,結(jié)合Arduino控制器可實現(xiàn)光的測量,可通過3P傳感器連接線與Arduino專用傳感器擴展板結(jié)合使用,。

  1.4 聲音傳感器

  模擬聲音傳感器聲音模塊對環(huán)境聲音強度最敏感,,一般用來檢測周圍環(huán)境的聲音強度。該傳感器在環(huán)境聲音強度達(dá)不到設(shè)定閾值時輸出高電平,,當(dāng)外界環(huán)境聲音強度超過設(shè)定閾值時輸出低電平,;小板數(shù)字量輸出可以與單片機直接相連,通過單片機來檢測高低電平,,由此來檢測環(huán)境的聲音,;小板數(shù)字量輸出可以直接驅(qū)動繼電器模塊,由此可以組成一個聲控開關(guān),,可以使用它制作聲控開關(guān)等,。此傳感器只能根據(jù)震動原理識別聲音的有無,不能識別聲音的大小或者特定頻率的聲音,,其靈敏度可通過數(shù)字電位器調(diào)節(jié),。Arduino可以通過模擬輸入接口對其輸出信號進(jìn)行采集。

2 硬件設(shè)計

  溫度,、濕度,、光照和聲音傳感器采集到的都是模擬信號,需要從模擬量轉(zhuǎn)換到數(shù)字量,,最終實現(xiàn)數(shù)字式輸出,。各個傳感器與Arduino連接也非常方便,只需將其輸出端接到Arduino相應(yīng)的數(shù)字引腳,;也可以采用Arduino傳感器擴展板,,將傳感器的輸出端直接連在擴展板上。硬件連接示意圖如圖2所示,。

002.jpg

  將DHT11溫濕度模塊的VCC,、GND、DOUT引腳分別接至Arduino UNO控制板上的+5 V,、GND,、數(shù)字端口2,還需要在VCC與DOUT之間串聯(lián)一個5 kΩ的上拉電阻,。將光敏傳感器的VCC,、GND、DOUT引腳分別接至Arduino UNO控制板上的+5 V,、GND,、模擬引腳端口A0。將聲音傳感器VCC,、GND,、DOUT引腳分別接至Arduino UNO控制板上的+5 V、GND,、模擬引腳端口A1,。將SD卡模塊VCC、GND引腳分別接至Arduino UNO控制板上的+5 V和GND,,MISO,、MOSI、SCLK,、CS 4個引腳分別連接控制板上的10,、11、12,、13端口,。

3 軟件設(shè)計

  3.1 Arduino IDE

  Arduino IDE是一個專門用來編寫Arduino程序的軟件,將程序編寫好后,,就可以通過此軟件上傳程序到Arduino開發(fā)板中執(zhí)行,。AVR單片機中的程序是使用Arduino庫寫成的,Arduino的集成開發(fā)環(huán)境使用起來簡單方便,,簡化了單片機工作的流程,,對AVR庫進(jìn)行了二次編譯封裝,,把端口都打包好了,寄存器,、地址指針之類的基本不用管,,大大降低了軟件開發(fā)難度。

  在計算機端安裝好Arduino IDE軟件開發(fā)環(huán)境后,,使用USB線將Arduino UNO連接至計算機的USB端口為控制板供電,,即可進(jìn)行程序的編寫、下載和調(diào)試[5],。

  3.2 實現(xiàn)程序

  Arduino實現(xiàn)主要程序代碼如下:

  #include<SD.h>

  #include<dht11.h>

  dht11 DHT11,;

  #define DHT11_PIN 2//DHT11引腳

  #define LIGHT_PIN A0//光敏引腳

  const int chipSelect=4;//SD卡CS選擇引腳

  void setup()

  {

  Serial.begin(9600),;//初始化串口

  pinMode(10,,OUTPUT);

  //將SS引腳設(shè)置為輸出狀態(tài),,UNO為10號引腳

  Serial.println("Initializing SD card"),;//初始化SD卡

  if(!SD.begin(chipSelect))

  {

  Serial.println("initialization failed!");

  return,;

  }

  Serial.println("initialization done."),;

  }

  void loop()

  {

  Serial.println("Read data from DHT11");

  DHT11.read(DHT11_PIN),;//讀取DHT11的數(shù)據(jù)

  Serial.println("Read data from Light Sensor"),;

  //讀取光敏模塊數(shù)據(jù)

  int light=analogRead(LIGHT_PIN);

  Serial.println("Open file and write data"),;

  File dataFile=SD.open("datalog.txt",,F(xiàn)ILE_WRITE);

  //打開文件并將DHT11檢測到的數(shù)據(jù)寫入文件

  if(dataFile)

  {

  dataFile.print(DHT11.humidity),;

  dataFile.print(",,");

  dataFile.print(DHT11.temperature),;

  dataFile.print(",,");

  dataFile.println(light),;

  dataFile.close(),;

  }

  else

  {

  Serial.println("error opening datalog.txt");

  }

  Serial.println("Wait for next loop"),;//延時1 min

  delay(60000),;

  }

  3.3 數(shù)據(jù)導(dǎo)出并繪制圖表分析

  連接的SD卡記錄到不同傳感器的數(shù)據(jù)后,通過計算機打開SD卡,可以看到名為datalog.txt的文件,,這就是數(shù)據(jù)記錄器所采集到的數(shù)據(jù)環(huán)境,。分析數(shù)據(jù)并繪制圖表的方法很多,可以采用很多專業(yè)的軟件完成,。本設(shè)計只需要做一些簡單的數(shù)據(jù)分析,,因此在Excel中即可完成,。

  將SD卡中數(shù)據(jù)記錄器記錄的文本數(shù)據(jù)導(dǎo)入到Excel中,,導(dǎo)入方法如下[6]:

  (1)首先在EXCEL中選擇“文件”→“打開”菜單項,,會彈出打開文件窗口,,在打開的窗口中將打開文件類型選擇為“所有文件(*.*)”,然后打開需要導(dǎo)入的文件并打開,;

 ?。?)單擊“打開”按鈕后,會彈出文本導(dǎo)入向?qū)?,Excel會對文本進(jìn)行分行處理和分列處理,;

  (3)被導(dǎo)入的文本按行和列分好后,,選擇其中的一列數(shù)據(jù)(即某一傳感器的數(shù)據(jù)),,根據(jù)數(shù)據(jù)選擇生成相應(yīng)形式的數(shù)據(jù)折線圖,顯示數(shù)據(jù)的變化情況,。

4 結(jié)論

  本設(shè)計利用DHT11溫濕度傳感器,、光敏傳感器、聲音傳感器組成了環(huán)境監(jiān)測的基本因素,,實現(xiàn)了對溫濕度,、環(huán)境光以及噪音的快捷實時檢測,可以方便地掌握自己身處的環(huán)境情況,。本設(shè)計具有價格低廉,、輕便簡潔、便于攜帶等特點,,可適用于計算機機房,、圖書館、儲存糧倉,、溫室大棚測溫,、空調(diào)室溫控制等對環(huán)境較為敏感和對溫度控制要求較高的場所[7]。除此以外,,本設(shè)計應(yīng)用領(lǐng)域也比較廣泛,,包括暖通空調(diào)測試及檢測設(shè)備、汽車、數(shù)據(jù)記錄器,、消費品,、自動控制、氣象站,、家電濕度調(diào)節(jié)器,、醫(yī)療除濕器等。在不久的將來,,隨著無線傳感器技術(shù)ZigBee模塊的日趨成熟,,無線網(wǎng)絡(luò)傳感器被良好地應(yīng)用于此設(shè)計中,實現(xiàn)網(wǎng)絡(luò)中各個節(jié)點之間信息更加便捷地傳輸與通信,,對環(huán)境狀態(tài)的實時監(jiān)測將更加方便,、及時和有效[8]。

  參考文獻(xiàn)

  [1] 蔡睿妍.Arduino的原理及應(yīng)用[J].電子設(shè)計工程,,2012,,20(16):155-157.

  [2] Arduino UNO管腳標(biāo)注[EB/OL].[2011-10-28].http://my.oschina.net/jingshishengxu/blog/34134.

  [3] 沈金鑫.Arduino與LabVIEW開發(fā)實戰(zhàn)[M].北京:機械工業(yè)出版社,2014.

  [4] 成都智能盒子科技有限公司.DHT 11數(shù)字溫濕度傳感器[EB/OL](2014-06-30).http://x.openjumper.com/dht11.2012.

  [5] 陳呂洲.Arduino程序設(shè)計基礎(chǔ)[M].北京:航空航天大學(xué)出版社,,2014.

  [6] 陳呂洲.Arduino程序設(shè)計基礎(chǔ)[M].北京:航空航天大學(xué)出版社,,2013.

  [7] 袁本華,董錚.基于Arduino控制板的溫室大棚測溫系統(tǒng)設(shè)計[J].安徽農(nóng)業(yè)科學(xué),,2012,,40(8):5049-5050.

  [8] 王立巖,楊世鳳.基于ZigBee技術(shù)的溫室環(huán)境檢測系統(tǒng)設(shè)計[J].天津科技大學(xué)學(xué)報,,2011,,26(1),60-63.


此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。