樹(shù)莓派基礎(chǔ)實(shí)驗(yàn)21:煙霧報(bào)警傳感器實(shí)驗(yàn)

一、介紹

?? 氣體傳感器MQ-2是檢測(cè)空氣中可燃?xì)怏w濃度的易燃?xì)怏w和煙霧傳感器菠净。他們經(jīng)常用于家用禁舷、工業(yè)或汽車(chē)中的煙氣和易燃?xì)怏w彪杉,如液化石油氣,異丁烷牵咙,丙烷隔嫡,甲烷和酒精的氣體檢測(cè)設(shè)備。


二崭捍、組件

★Raspberry Pi主板*1

★樹(shù)莓派電源*1

★40P軟排線(xiàn)*1

★PCF8591模數(shù)轉(zhuǎn)換器模塊*1

★煙霧傳感器模塊*1

★有源蜂鳴器模塊*1

★面包板*1

★跳線(xiàn)若干

三氧敢、實(shí)驗(yàn)原理

煙霧傳感器
煙霧傳感器
有源蜂鳴器模塊
煙霧傳感器模塊原理圖

??MQ-2氣體傳感器是一種表面離子型和N型半導(dǎo)體,它使用氧化錫半導(dǎo)體氣敏材料另凌,當(dāng)環(huán)境溫度在200至300℃時(shí)谱轨,氧化錫會(huì)吸附空氣中的氧氣并形成氧陰離子吸附,從而降低半導(dǎo)體中的電子密度吠谢,從而增加其電阻土童。當(dāng)與煙霧接觸時(shí),如果晶界阻擋層被煙霧調(diào)制并發(fā)生變化工坊,則可能導(dǎo)致表面電導(dǎo)率發(fā)生變化献汗。因此,你可以獲得煙霧存在的信息王污,煙霧濃度越高罢吃,材料的導(dǎo)電性越高,因此輸出電阻越低昭齐。

??在這個(gè)實(shí)驗(yàn)中尿招,如果有害氣體達(dá)到一定濃度,蜂鳴器會(huì)發(fā)出蜂鳴聲警告司浪。

??煙霧報(bào)警傳感器有兩個(gè)LED指示燈泊业。POWER-LED是電源指示燈,接通電源后常亮啊易。DOUT-LED是數(shù)字輸出指示燈吁伺,當(dāng)沒(méi)有檢測(cè)到煙霧時(shí)熄滅,DO輸出高電平租谈;當(dāng)檢測(cè)到煙霧時(shí)篮奄,DO輸出低電平,DOUT-LED指示燈亮割去。而判定是否有煙霧的臨界值可以通過(guò)旋轉(zhuǎn)藍(lán)色元件上的十字螺絲調(diào)節(jié)窟却,調(diào)節(jié)到?jīng)]有煙霧時(shí)DOUT-LED燈剛好熄滅時(shí)即可。

四呻逆、實(shí)驗(yàn)步驟

??第1步:連接電路夸赫。這里要注意,有源蜂鳴器使用的電源為3.3V咖城,煙霧傳感器使用的是5V茬腿。

樹(shù)莓派 T型轉(zhuǎn)接板 PCF8591模塊
SDA SDA SDA
SCL SCL SCL
5V 5V VCC
GND GND GND
煙霧傳感器模塊 T型轉(zhuǎn)接板 PCF8591模塊
AO * AIN0
DO G17 *
VCC 5V VCC
GND GND GND
有源蜂鳴器 T型轉(zhuǎn)接板
I/O G18
VCC 3.3V
GND GND
煙霧報(bào)警傳感器實(shí)驗(yàn)電路圖
煙霧報(bào)警傳感器實(shí)驗(yàn)實(shí)物接線(xiàn)圖

??第2步:PCF8591模塊采用的是I2C(IIC)總線(xiàn)進(jìn)行通信的呼奢,但是在樹(shù)莓派的鏡像中默認(rèn)是關(guān)閉的,在使用該傳感器的時(shí)候切平,我們必須首先允許IIC總線(xiàn)通信握础。

打開(kāi)I2C總線(xiàn)通信

??第3步:開(kāi)始編程。這里先編寫(xiě)一個(gè)PCF8591.py庫(kù)文件悴品,后面再編寫(xiě)一個(gè)python程序引入這個(gè)庫(kù)文件禀综。
??PCF8591.py庫(kù)文件就是PCF8591模塊的程序,單獨(dú)編寫(xiě)是為了便于重用苔严。在這個(gè)腳本中定枷,我們使用了一個(gè)放大器用于模擬輸入和一個(gè)LED燈用于模擬輸出,模擬輸入不能超過(guò)3.3V邦蜜!
??該程序也可以單獨(dú)運(yùn)行依鸥,用于測(cè)試3個(gè)電阻模塊的功能亥至。需用短路帽連接AIN0和INPUT0(電位計(jì)模塊)悼沈,連接AIN1和INPUT1(光敏電阻模塊),以及連接AIN2和INPUT2(熱敏電阻模塊)姐扮。
??連接LED燈絮供,AIN0(模擬輸入0)端口用于接收來(lái)自電位計(jì)模塊的模擬信號(hào),AOUT(模擬輸出)用于將模擬信號(hào)輸出到雙色LED模塊茶敏,以便改變LED的亮度壤靶。
??PCF8591的詳細(xì)內(nèi)容請(qǐng)查看樹(shù)莓派基礎(chǔ)實(shí)驗(yàn)12:PCF8591模數(shù)轉(zhuǎn)換器實(shí)驗(yàn)

#!/usr/bin/env python
#------------------------------------------------------
#
#       您可以使用下面語(yǔ)句將此腳本導(dǎo)入另一個(gè)腳本:
#           “import PCF8591 as ADC”                
#   
#   ADC.Setup(Address)  # 查詢(xún)PCF8591的地址:“sudo i2cdetect -y 1”
# i2cdetect  is  a  userspace  program to scan an I2C bus for devices.
# It outputs a table with the list of detected devices on the specified bus.
#   ADC.read(channal)   # Channal范圍從0到3 
#   ADC.write(Value)    # Value范圍從0到255
#
#------------------------------------------------------
#SMBus (System Management Bus,系統(tǒng)管理總線(xiàn)) 
import smbus   #在程序中導(dǎo)入“smbus”模塊
import time

# for RPI version 1, use "bus = smbus.SMBus(1)"
# 0 代表 /dev/i2c-0惊搏, 1 代表 /dev/i2c-1 ,具體看使用的樹(shù)莓派那個(gè)I2C來(lái)決定
bus = smbus.SMBus(1)         #創(chuàng)建一個(gè)smbus實(shí)例

#在樹(shù)莓派上查詢(xún)PCF8591的地址:“sudo i2cdetect -y 1”
def setup(Addr):
    global address
    address = Addr

def read(chn): #channel
    if chn == 0:
        bus.write_byte(address,0x40)   #發(fā)送一個(gè)控制字節(jié)到設(shè)備
    if chn == 1:
        bus.write_byte(address,0x41)
    if chn == 2:
        bus.write_byte(address,0x42)
    if chn == 3:
        bus.write_byte(address,0x43)
    bus.read_byte(address)         # 從設(shè)備讀取單個(gè)字節(jié)贮乳,而不指定設(shè)備寄存器。
    return bus.read_byte(address)  #返回某通道輸入的模擬值A(chǔ)/D轉(zhuǎn)換后的數(shù)字值

def write(val):
    temp = val  # 將字符串值移動(dòng)到temp
    temp = int(temp) # 將字符串改為整數(shù)類(lèi)型
    # print temp to see on terminal else comment out
    bus.write_byte_data(address, 0x40, temp) 
    #寫(xiě)入字節(jié)數(shù)據(jù)恬惯,將數(shù)字值轉(zhuǎn)化成模擬值從AOUT輸出

if __name__ == "__main__":
    setup(0x48) 
 #在樹(shù)莓派終端上使用命令“sudo i2cdetect -y 1”向拆,查詢(xún)出PCF8591的地址為0x48
    while True:
        print '電位計(jì)   AIN0 = ', read(0)   #電位計(jì)模擬信號(hào)轉(zhuǎn)化的數(shù)字值
        print '光敏電阻 AIN1 = ', read(1)   #光敏電阻模擬信號(hào)轉(zhuǎn)化的數(shù)字
        print '熱敏電阻 AIN2 = ', read(2)   #熱敏電阻模擬信號(hào)轉(zhuǎn)化的數(shù)字值
        tmp = read(0)
        tmp = tmp*(255-125)/255+125 
# 125以下LED不會(huì)亮,所以將“0-255”轉(zhuǎn)換為“125-255”酪耳,調(diào)節(jié)亮度時(shí)燈不會(huì)熄滅
        write(tmp)
        time.sleep(2)

??若想深入學(xué)習(xí)模/數(shù)轉(zhuǎn)換等模電知識(shí)浓恳,強(qiáng)烈推薦以下書(shū)籍,國(guó)外大學(xué)最經(jīng)典模電教程碗暗,比國(guó)內(nèi)教程生動(dòng)有趣更易懂颈将。掃碼購(gòu)買(mǎi)或者點(diǎn)擊下面的鏈接。

模擬電子基礎(chǔ)

《模擬電子基礎(chǔ)》點(diǎn)擊購(gòu)買(mǎi):https://u.dangdang.com/OIVk

??第4步:編寫(xiě)控制程序言疗。我們通過(guò)點(diǎn)煙的方式產(chǎn)生可燃性氣體靠近MQ-2氣體傳感器的位置晴圾。屏幕上將顯示0到255之間的值。如果有害氣體達(dá)到一定濃度噪奄,蜂鳴器會(huì)發(fā)出斷續(xù)蜂鳴聲死姚,并且屏幕上會(huì)印有“Danger Gas”沾凄。
??你可以轉(zhuǎn)動(dòng)模塊上電位器的軸來(lái)提高或降低濃度閾值。
??MQ-2氣體傳感器需要加熱一段時(shí)間知允。等到屏幕上打印的值保持穩(wěn)定并且傳感器變熱撒蟀,這意味著它可以正常且敏感的工作。注意:氣體傳感器發(fā)熱是正常的温鸽,實(shí)際上保屯,溫度越高傳感器就越敏感。

實(shí)驗(yàn)屏幕截圖

#!/usr/bin/env python
import PCF8591 as ADC
import RPi.GPIO as GPIO
import time
import math

DO = 17
Buzz = 18
GPIO.setmode(GPIO.BCM)

def setup():
    ADC.setup(0x48)
    GPIO.setup  (DO,    GPIO.IN)
    GPIO.setup  (Buzz,  GPIO.OUT)
    GPIO.output (Buzz,  1)  #高電平不響涤垫,低電平觸發(fā)報(bào)警蜂鳴

def Print(x):
    if x == 1:
        print ''
        print '   *********'
        print '   * Safe~ *'
        print '   *********'
        print ''
    if x == 0:
        print ''
        print '   ***************'
        print '   * Danger Gas! *'
        print '   ***************'
        print ''

def loop():
    status = 1
    count = 0
    while True:
        print 'ADC.read(0)==' , ADC.read(0)  #有煙霧時(shí)姑尺,該值增大
        
        tmp = GPIO.input(DO);
        print 'tmp==' ,tmp    
#無(wú)煙霧時(shí)為高電平,tmp=1,打印safe蝠猬,有煙霧時(shí)為低電平切蟋,打印Danger Gas!
        if tmp != status:
            Print(tmp)
            status = tmp
        if status == 0:
            count += 1
            if count % 2 == 0:
                GPIO.output(Buzz, 0)  #檢測(cè)到煙霧后榆芦,報(bào)警聲為斷續(xù)蜂鳴聲柄粹,低電平為響
            else:
                GPIO.output(Buzz, 1)  #高電平不響
        else:
            GPIO.output(Buzz, 1)
            count = 0
                
        time.sleep(0.2)

def destroy():
    GPIO.output(Buzz, 1)
    GPIO.cleanup()

if __name__ == '__main__':
    try:
        setup()
        loop()
    except KeyboardInterrupt: 
        destroy()


??

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市匆绣,隨后出現(xiàn)的幾起案子驻右,更是在濱河造成了極大的恐慌,老刑警劉巖崎淳,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件堪夭,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡拣凹,警方通過(guò)查閱死者的電腦和手機(jī)森爽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)嚣镜,“玉大人爬迟,你說(shuō)我怎么就攤上這事∑砘蹋” “怎么了雕旨?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)捧请。 經(jīng)常有香客問(wèn)我凡涩,道長(zhǎng),這世上最難降的妖魔是什么疹蛉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任活箕,我火速辦了婚禮,結(jié)果婚禮上可款,老公的妹妹穿的比我還像新娘育韩。我一直安慰自己克蚂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布筋讨。 她就那樣靜靜地躺著埃叭,像睡著了一般。 火紅的嫁衣襯著肌膚如雪悉罕。 梳的紋絲不亂的頭發(fā)上赤屋,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音壁袄,去河邊找鬼类早。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嗜逻,可吹牛的內(nèi)容都是我干的涩僻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼栈顷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逆日!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起妨蛹,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤屏富,失蹤者是張志新(化名)和其女友劉穎晴竞,沒(méi)想到半個(gè)月后蛙卤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡噩死,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年颤难,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片已维。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡行嗤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出垛耳,到底是詐尸還是另有隱情栅屏,我是刑警寧澤,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布堂鲜,位于F島的核電站栈雳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏缔莲。R本人自食惡果不足惜哥纫,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望痴奏。 院中可真熱鬧蛀骇,春花似錦厌秒、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至暑诸,卻和暖如春岛马,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屠列。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工啦逆, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人笛洛。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓夏志,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親苛让。 傳聞我的和親對(duì)象是個(gè)殘疾皇子沟蔑,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容