-
大小: 6.79KB文件類型: .rar金幣: 1下載: 0 次發布日期: 2024-05-05
- 語言: Python
- 標簽:
資源簡介
【實例簡介】 以樹莓派為基礎,連接有毒氣體傳感器、溫濕度傳感器、Co2濃度傳感器,如果傳感器檢測到的數據超過預設的值,將會觸發燈光和蜂鳴器報警
【核心源碼】 air_detection_alarm_system.py
【核心源碼】 air_detection_alarm_system.py
代碼片段和文件信息
import?time
import?serial
import?binascii
import?RPi.GPIO?as?GPIO
GPIO.setmode(GPIO.BOARD)
GPIO.setup(11?GPIO.OUT)?#蜂鳴器針腳
GPIO.setup(12GPIO.INpull_up_down=GPIO.PUD_DOWN)?#有毒氣體檢測針腳
GPIO.setup(13GPIO.OUT)?#有毒氣體燈光針腳
GPIO.setup(15GPIO.OUT)?#溫度燈光針腳
GPIO.setup(18GPIO.OUT)?#co2濃度燈光針腳
def?buzzer():?#聲音報警
????
????pu={
????“1“:261.36
????“2“:293.66
????“3“:329.63
????“4“:349.23
????“5“:392
????“6“:440
????“7“:439.88
????}
????p?=?GPIO.PWM(11?1)??
????p.start(50)
????try:
????????xxx=“1155665-4433221“
????????for?i?in?xxx:
????????????
????????????if?i?==?“-“:
????????????????time.sleep(0.5)
????????????????continue
????????????p.ChangeDutyCycle(50)
????????????p.ChangeFrequency(pu[i])
????????????time.sleep(0.5)
????????????p.ChangeDutyCycle(0)
????except:
????????pass
????p.stop()
????
????
def?Toxic_gas(a):?#有毒氣體檢測
????ydu_bj=a
????try:
????????GPIO.setup(12GPIO.INpull_up_down=GPIO.PUD_DOWN)
????????
????????status?=?GPIO.input(12)
????????if?status?==?True:
????????????ydu_bj=0
????????????print(“未發現有毒氣體“)
????????????GPIO.output(13False)?#有毒氣體報警燈暗
????????else?:
????????????ydu_bj?=?ydu_bj?+1
????????????if?ydu_bj>1:
????????????????print(“發現有毒氣體“)
????????????????GPIO.output(13True)?#有毒氣體報警燈亮
????????????????buzzer()
????????????????????
????????????else:
????????????????print(“可能有有毒氣體“)
????????return?ydu_bj
????except?KeyboardInterrupt:
????????pass
????????return?ydu_bj
def?wendu(abc):
????try:
????????
????????wen=a
????????shi=b
????????wen_bj=c
????????GPIO.setmode(GPIO.BOARD)
????????
????????channel?=?16???????????#引腳號16??
????????data?=?[]???????????#溫濕度值
????????j?=?0???????????????#計數器?????????
????????GPIO.setup(channel?GPIO.OUT)?
????????time.sleep(1)
????????GPIO.output(channel?GPIO.LOW)??
????????time.sleep(0.024)????????#給信號提示傳感器開始工作
????????GPIO.output(channel?GPIO.HIGH)?
????????GPIO.setup(channel?GPIO.IN)?
????????while?GPIO.input(channel)?==?GPIO.LOW:?
????????????continue
????????while?GPIO.input(channel)?==?GPIO.HIGH:?
????????????continue?
????????while?j?40:??
????????????k?=?0
????????????while?GPIO.input(channel)?==?GPIO.LOW:??
????????????????continue
????????????while?GPIO.input(channel)?==?GPIO.HIGH:??
????????????????k?+=?1
????????????????if?k?>?100:??
????????????????????break
????????????if?k?6:??
????????????????data.append(0)??
????????????else:??
????????????????data.append(1)??
????????????j?+=?1??
???????????
????????humidity_bit?=?data[0:8]????????#分組??
????????humidity_point_bit?=?data[8:16]??
????????temperature_bit?=?data[16:24]??
????????temperature_point_bit?=?data[24:32]
????????check_bit?=?data[32:40]??
????????humidity?=?0??
????????humidity_point?=?0??
????????temperature?=?0??
????????temperature_point?=?0??
????????check?=?0??
????????for?i?in?range(8):??
????????????humidity?+=?humidity_bit[i]?*?2?**?(7?-?i)??????????????#轉換成十進制數據??
????????????humidity_point?+=?humidity_point_bit[i]?*?2?**?(7?-?i)??
????????????temperature?+=?temperature_bit[i]?*?2?**?(7?-?i)??
??????
評論
共有 條評論