经验:
网上大部分关于mq-2的代码,实现的功能判断是否有烟雾值,通过D0读取,而具体的烟雾值无法读取。由于树莓派无法直接读取模拟信号A0值,所以得借助PCF8591(读取烟雾值关键adc)读取,这个PCF8591相当关键,必须使用。
1、硬件准备:
树莓派3b+、mq-2、PCF8591(读取烟雾值关键adc)和杜邦线
PCF8591如下图:
2、实物连接
(1)PCF8591与树莓派相连接:
树莓派的SDA与SCL在树莓派3.3v下边
(2)mq-2与树莓派和PCF8591相连接
按照下面的提示连接即可:
mq-2 PCF8591 树莓派
vcc---------------------------------------------------------------------3.3v
GND------------------------------------------------------------------GND
AOUT----------------------A0
关键连接如下面
3、设置树莓派打开I2C接口
打开树莓派终端,输入以下指令进入配置界面
sudo raspi-config
选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动
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、运行结果
6、总结
史上最详细的mq-2教程
关注公众号:小白XBIT
可获取更多传感器使用案列