经验:
网上大部分关于mq-2的代码,实现的功能判断是否有烟雾值,而具体的烟雾值无法读取。由于树莓派无法直接读取模拟信号A0值,所以得借助PCF8591(读取烟雾值关键adc)读取,这个PCF8591相当关键,必须使用。
硬件准备:
树莓派3b+、mq-2、PCF8591(读取烟雾值关键adc)和杜邦线
PCF8591如下图:
实物连接:
PCF8591与树莓派相连接:
mq-2与树莓派和PCF8591相连接
mq-2 PCF8591 树莓派
vcc------------------------3.3v
gnd-----------------------gnd
AOUT–A0
关键连接如图:
设置树莓派:
打开I2C接口
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config
选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动
上代码:
import timefrom smbus import SMBusaddress = 0x48MODE0 = 0x00 #Channel0 = AIN0#Channel1 = AIN1#Channel2 = AIN2#Channel3 = AIN3MODE1 = 0x10 #Channel0 = AIN3-AIN0#Channel1 = AIN3-AIN1#Channel2 = AIN3-AIN2MODE2 = 0x20 #Channel0 = AIN0#Channel1 = AIN1#Channel2 = AIN3-AIN2MODE3 = 0x30 #Channel0 = AIN1-AIN0#Channel1 = AIN3-AIN2CHNL0= 0x40 #Using Channel0CHNL1= 0x41 #Using Channel1CHNL2= 0x42 #Using Channel2CHNL3= 0x43 #Using Channel3DAouputEn = 0x40PCF8591 = SMBus(1)while True:value0 = PCF8591.read_byte(address)PCF8591.write_byte(address, CHNL0)time.sleep(2)
运行结果
具体实现效果和具体资料可到微信公众号查看: