树莓派基础实验13:雨滴探测传感器实验
一、介紹
?? 雨滴傳感器或雨滴檢測傳感器,用于檢測是否下雨以及降雨,廣泛用于汽車的雨刷系統(tǒng),智能照明系統(tǒng)和天窗系統(tǒng)。
二、組件
★Raspberry Pi 3主板*1
★樹莓派電源*1
★40P軟排線*1
★PCF8591模數(shù)轉(zhuǎn)換器模塊*1
★雨滴傳感器模塊*1
★面包板*1
★跳線若干
三、實驗原理
??在雨滴系統(tǒng)中,用雨滴傳感器檢測降雨量,并轉(zhuǎn)換控制器檢測到的信號。然后根據(jù)這些信號自動設(shè)置雨刮器的時間隔,以方便地控制雨刮器的電機。在智能照明系統(tǒng)中,自動檢測駕駛環(huán)境并調(diào)整照明模式,提高惡劣環(huán)境下的行車安全。在智能天窗系統(tǒng)中,檢測是否下雨,如果檢測到雨滴就自動關(guān)閉天窗。
??有兩根金屬線彼此靠近,但不會在雨水檢測板上交叉。當(dāng)雨水落在電路板上時,兩根金屬線會導(dǎo)通。因此兩根金屬線之間會有電壓。
??控制板上有兩個指示燈,電源指示燈PWR-LED和輸出信號指示燈DO-LED。電源指示燈在通電后常亮,沒有雨的時候出信號指示燈不亮;雨滴上去,候出信號指示燈亮。雨滴板和控制板是分開的,方便將線引出,大面積的雨滴板,更有利于檢測到雨水。
??控制板上有兩個輸出,數(shù)字輸出DO,模擬輸出AO。接上5V電源電源燈亮,感應(yīng)板上沒有水滴時,DO輸出為高電平,滴上一滴水,DO輸出為低電平,刷掉上面的水滴,又恢復(fù)到輸出高電平狀態(tài),靈敏度可以通過藍色的可變電阻調(diào)節(jié)。
??AO模擬輸出,連接到PCF8591的模擬輸入AIN0口,通過比對模擬值轉(zhuǎn)化為的數(shù)字值大小,可以檢測滴在上面的雨量大小,雨水越大,電阻值越小,模擬值轉(zhuǎn)化為的數(shù)字值越小。數(shù)字值的范圍當(dāng)然是0~255, 不同的值對應(yīng)是降雨量的多少毫米,則需要實體測量,雨滴板的放置方式不同結(jié)果都不同,本文不作研究。
四、實驗步驟
??第1步:連接電路。
| SDA | SDA | SDA |
| SCL | SCL | SCL |
| 5V | 5V | VCC |
| GND | GND | GND |
| DO | G17 | * |
| AO | * | AIN0 |
| VCC | 5V | VCC |
| GND | GND | GND |
??第2步: PCF8591模塊采用的是I2C(IIC)總線進行通信的,但是在樹莓派的鏡像中默認是關(guān)閉的,在使用該傳感器的時候,我們必須首先允許IIC總線通信。
??第3步: 開始編程。這里先編寫一個PCF8591.py庫文件,后面再編寫一個python程序引入這個庫文件。
??PCF8591.py庫文件就是PCF8591模塊的程序,單獨編寫是為了便于重用。在這個腳本中,我們使用了一個放大器用于模擬輸入和一個LED燈用于模擬輸出,模擬輸入不能超過3.3V!
??該程序也可以單獨運行,用于測試3個電阻模塊的功能。需用短路帽連接AIN0和INPUT0(電位計模塊),連接AIN1和INPUT1(光敏電阻模塊),以及連接AIN2和INPUT2(熱敏電阻模塊)。
??連接LED燈,AIN0(模擬輸入0)端口用于接收來自電位計模塊的模擬信號,AOUT(模擬輸出)用于將模擬信號輸出到雙色LED模塊,以便改變LED的亮度。
??PCF8591的詳細內(nèi)容請查看樹莓派基礎(chǔ)實驗12:PCF8591模數(shù)轉(zhuǎn)換器實驗。
??若想深入學(xué)習(xí)模/數(shù)轉(zhuǎn)換等模電知識,強烈推薦以下書籍,國外大學(xué)最經(jīng)典模電教程,比國內(nèi)教程生動有趣更易懂。掃碼購買或者點擊下面的鏈接。
《模擬電子基礎(chǔ)》點擊購買:https://u.dangdang.com/OIVk
??第4步: 編寫雨滴探測程序。感應(yīng)板上沒有水滴時,DO輸出為高電平,數(shù)字輸出指示燈DO-LED滅 ,打印 * Not raining *。滴上一滴水,DO輸出為低電平,數(shù)字輸出指示燈DO-LED亮,打印 * Raining! *。刷掉上面的水滴,又恢復(fù)到輸出高電平狀態(tài)。
#!/usr/bin/env python import PCF8591 as ADC import RPi.GPIO as GPIO import timeDO = 17 GPIO.setmode(GPIO.BCM)def setup():ADC.setup(0x48)GPIO.setup(DO, GPIO.IN)def Print(x):if x == 1:print ''print ' ***************'print ' * Not raining *'print ' ***************'print ''if x == 0:print ''print ' *************'print ' * Raining!! *'print ' *************'print ''def loop():status = 1 #初始狀態(tài)為無水,高電平,所以為1while True:print ADC.read(0) #打印模擬輸出的值轉(zhuǎn)化為的數(shù)字值(0~255)print GPIO.input(DO) #打印數(shù)字輸出DO的值(無雨為1,有雨為0)tmp = GPIO.input(DO)if tmp != status: #滴水時DO輸出為低電平,無水時為高電平Print(tmp) # tmp != status即遇狀態(tài)變化時,打印情況status = tmptime.sleep(2)if __name__ == '__main__':try:setup()loop()except KeyboardInterrupt: pass??
總結(jié)
以上是生活随笔為你收集整理的树莓派基础实验13:雨滴探测传感器实验的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nodejs的内存管理,垃圾回收机制
- 下一篇: RS232 RS422 RS485通讯原