經(jīng)驗(yàn):
網(wǎng)上大部分關(guān)于mq-2的代碼吹缔,實(shí)現(xiàn)的功能判斷是否有煙霧值煤蚌,通過D0讀取端三,而具體的煙霧值無法讀取舷礼。由于樹莓派無法直接讀取模擬信號A0值,所以得借助PCF8591(讀取煙霧值關(guān)鍵adc)讀取郊闯,這個(gè)PCF8591相當(dāng)關(guān)鍵且轨,必須使用。
1虚婿、硬件準(zhǔn)備:
樹莓派3b+旋奢、mq-2、PCF8591(讀取煙霧值關(guān)鍵adc)和杜邦線
PCF8591如下圖:
2然痊、實(shí)物連接
(1)PCF8591與樹莓派相連接:
樹莓派的SDA與SCL在樹莓派3.3v下邊
(2)mq-2與樹莓派和PCF8591相連接
按照下面的提示連接即可:
mq-2? ? ? ? ? ? ? ? ? ? ? ? ? ? PCF8591? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 樹莓派
vcc---------------------------------------------------------------------3.3v
GND------------------------------------------------------------------GND
AOUT----------------------A0
關(guān)鍵連接如下面
3至朗、設(shè)置樹莓派打開I2C接口
打開樹莓派終端,輸入以下指令進(jìn)入配置界面
sudo raspi-config
選擇 Interfacing Options -> I2C ->yes 啟動(dòng) i2C 內(nèi)核驅(qū)動(dòng)
4剧浸、代碼
import time
from smbus import SMBus
address = 0x48
MODE0? = 0x00? #Channel0 = AIN0
? ? ? ? ? ? ? ? #Channel1 = AIN1
? ? ? ? ? ? ? ? #Channel2 = AIN2
? ? ? ? ? ? ? ? #Channel3 = AIN3
MODE1? = 0x10? #Channel0 = AIN3-AIN0
? ? ? ? ? ? ? ? #Channel1 = AIN3-AIN1
? ? ? ? ? ? ? ? #Channel2 = AIN3-AIN2
MODE2? = 0x20? #Channel0 = AIN0
? ? ? ? ? ? ? ? #Channel1 = AIN1
? ? ? ? ? ? ? ? #Channel2 = AIN3-AIN2
MODE3? = 0x30? #Channel0 = AIN1-AIN0
? ? ? ? ? ? ? ? #Channel1 = AIN3-AIN2
CHNL0? ? ? = 0x40? #Using Channel0
CHNL1? ? ? = 0x41? #Using Channel1
CHNL2? ? ? = 0x42? #Using Channel2
CHNL3? ? ? = 0x43? #Using Channel3
DAouputEn? = 0x40
PCF8591 = SMBus(1)
while True:
? ? value0 = PCF8591.read_byte(address)
? ? PCF8591.write_byte(address, CHNL0)
? ? time.sleep(2)
5锹引、運(yùn)行結(jié)果
6矗钟、總結(jié)
史上最詳細(xì)的mq-2教程
關(guān)注公眾號:小白XBIT
可獲取更多傳感器使用案列