通過使用Arduino開發(fā)板和雨量傳感器(Rain Sensor)連接,可以輕松制作一個簡單的雨水檢測系統(tǒng)(Rain Detection System)。傳感器將檢測到任何降雨,Arduino開發(fā)板將對其進行感應并執(zhí)行所需的操作。這樣的系統(tǒng)可用于許多不同的領(lǐng)域,例如農(nóng)業(yè)和汽車領(lǐng)域。降雨檢測可用于自動調(diào)節(jié)灌溉過程。而且,連續(xù)的降雨數(shù)據(jù)可以幫助農(nóng)民使用該智能系統(tǒng),僅在需要時才自動為作物澆水。同樣,在汽車領(lǐng)域,通過使用雨水檢測系統(tǒng)可以使雨刷器完全自動化。而且,家庭自動化系統(tǒng)還可以使用雨水檢測功能自動關(guān)閉窗戶并調(diào)節(jié)室溫。在本篇文章中,我們將使用Arduino和蜂鳴器制作簡單的雨量傳感器。然后,您可以在該設置基礎之上制作任何所需的內(nèi)容。另外,請注意,雨量傳感器模塊根據(jù)使用情況也稱為雨滴傳感器、或雨水傳感器,但本文中它們均指的是同一傳感器,并且工作原理相同。
所需的材料
● Arduino UNO開發(fā)板
● 雨量傳感器
● 蜂鳴器
● 面包板
● 連接導線
雨量傳感器
雨量檢測模塊由兩個電路板組成,分別是雨量傳感器電路板和控制板。
雨量傳感器電路板模塊(Rain Sensor)由兩個銅線組成,其設計方式使得它們在干燥條件下可為電源電壓提供高電阻,并且該模塊的輸出電壓為5V。隨著電路板上濕度的增加,該模塊的電阻逐漸減小。隨著電阻的降低,其輸出電壓也會相對于模塊上的濕度降低。雨量傳感器電路板模塊由兩個用于連接到控制板的引腳組成,如下所示。
控制板模塊控制靈敏度并將模擬輸出轉(zhuǎn)換為數(shù)字輸出。如果模擬值低于控制板的閾值,則輸出為低電平;如果模擬值高于閾值,則輸出為數(shù)字高電平。為了進行比較和轉(zhuǎn)換,使用了LM393運算放大器比較器。運算放大器比較器是一個有趣的電路,可以用來比較兩個不同的電壓值。
如下所示,雨量控制模塊由4個用于連接Arduino的引腳組成,即VCC、GND、D0、A0,另外兩個引腳用于連接雨量傳感器電路板模塊??傊炅總鞲衅麟娐钒迥K檢測雨水,控制板模塊用于控制靈敏度,并將模擬值轉(zhuǎn)換為數(shù)字值。
雨量傳感器的工作原理
雨量傳感器模塊的工作原理很容易理解。在晴天期間,由于模塊干燥,因此對電源電壓具有很高的電阻。該電壓在模塊的輸出引腳上為5V。如果由Arduino的模擬引腳讀取,則此5V讀取為1023。在下雨期間,雨水會導致雨量傳感器模塊電路板的濕度增加,進而導致電阻減小。隨著電阻逐漸減小,輸出電壓開始減小。
當雨量傳感器模塊完全濕透并且其提供的電阻最小時,輸出電壓將盡可能低(約0)。如果由Arduino的模擬引腳讀取,則此0V將讀取為0值。如果模塊部分潮濕,則該雨板模塊的輸出將取決于其提供的電阻。如果通過防雨板模塊提供的電阻的輸出為3V,則讀取的模擬值將為613??梢酝ㄟ^以下公式得出查找ADC的公式:ADC =(模擬電壓值X 1023)/ 5。通過使用此公式,您可以將任何模擬電壓轉(zhuǎn)換為Arduino模擬讀取值。
電路圖
下面的電路圖顯示了Arduino與雨量傳感器的電路連接。
電路圖中所示的雨量傳感器模塊連接至控制板??刂瓢宓腣CC引腳連接到5V電源。接地引腳接地。如果需要,可以將D0引腳連接到Arduino的任何數(shù)字引腳,并且該引腳必須在程序中聲明為輸入引腳。 由于D0引腳輸出的是高低電平信號,因此我們無法獲得D0引腳確切的輸出電壓值。如果輸出引腳超過閾值電壓,則控制模塊可以監(jiān)測輸出的變化。即使雨量傳感器模塊中的輸出電壓發(fā)生一點變化,我們也需要操作蜂鳴器。由于這些原因,我們使用A0引腳,并將其連接到Arduino的模擬引腳,這使得監(jiān)視輸出變化變得容易。蜂鳴器可以連接到Arduino的任意數(shù)字引腳。如果蜂鳴器需要5V以上的電壓,則嘗試使用繼電器電路或晶體管。
代碼說明
雨量傳感器的Arduino代碼是使用Arduino IDE編寫的。該項目的完整代碼在本文末尾給出。
#define rainfall A0
#define buzzer 5
int value;
int set=10;
將引腳A0定義為rainfall,將引腳5定義為buzzer,并將變量“value”和“set”聲明為整數(shù),并將其變量set值設置為10??梢愿鶕?jù)實際情況更改此值。如果您希望即使下雨很小也能啟動蜂鳴器,將變量值設置為最小值。
void setup() {
Serial.begin(9600);
pinMode(buzzer,OUTPUT);
pinMode(rainfall,INPUT);
}
初始化串口通訊,并將蜂鳴器設置為輸出引腳,將rainfall引腳設置為輸入引腳。
void loop() {
value = analogRead(rainfall);
Serial.println(value);
value = map(value,0,1023,225,0);
在loop函數(shù)中,函數(shù)analogRead讀取雨量傳感器的值。Serial.println(value)在串口監(jiān)視器上打印該值,這在調(diào)試時很有幫助。map函數(shù)映射輸出引腳上的雨量傳感器的值,并為變量分配一個值,范圍為0到225。
if(value>=set){
Serial.println("rain detected");
digitalWrite(buzzer,HIGH);
如果讀取的傳感器值大于set值,則程序進入循環(huán),在串口監(jiān)視器上打印消息并打開蜂鳴器
else{
digitalWrite(buzzer, LOW);
僅當該值小于set值時,程序才進入else功能。當設定值大于傳感器的值時,將關(guān)閉蜂鳴器,表明沒有雨。
基于Arduino的雨水檢測系統(tǒng)的工作
該系統(tǒng)的工作方式是:在下雨時,雨水充當觸發(fā)器,從而觸發(fā)蜂鳴器。在雨滴傳感器的Arduino代碼中,我們定義了引腳5是蜂鳴器和A0是雨滴傳感器引腳。
這是雨量傳感器的眾多應用場景中的一種,在雨刷、其他家庭自動化、農(nóng)業(yè)部門等中也會看到相同的原理。希望您理解該項目并喜歡進行制作。
編輯:hfy
-
雨量傳感器
+關(guān)注
關(guān)注
1文章
35瀏覽量
8943 -
Arduino
+關(guān)注
關(guān)注
188文章
6469瀏覽量
186966
發(fā)布評論請先 登錄
相關(guān)推薦
評論