一、目的
这一节我们来学习如何使用ESP32连接空气质量传感器MQ135、有源蜂鸣器、酒精传感器MQ3、直流电机带扇叶PWM调速小风扇模块和0.96寸ssd1306屏幕,进行一个小实验。
二、环境
ESP32 C3开发板(MicroPython v1.19.1 on 2022-06-18)+ 空气质量传感器MQ135 + 有源蜂鸣器(低电平触发)+ 酒精传感器MQ3 + 直流电机带扇叶PWM调速小风扇模块 + 0.96寸ssd1306屏幕Win10商业 + 几根杜邦线
ESP32和各个模块接线方法:连接时注意您购买的器件电压支持情况
三、示例代码
from machine import Pin,SoftI2C,PWM,ADC
from ssd1306 import SSD1306_I2C
from ufont import BMFont
import time
# 创建I2C对象
i2c = SoftI2C(scl = Pin(2),sda = Pin(3),freq = 400_000)
# 创建oled屏幕对象
oled = SSD1306_I2C(128,64,i2c,0x3c)
# 定义字体文件
font = BMFont("fonts/unifont-14-12888-16.v3.bmf")
# 定义PWM小风扇马达对象
# freq = 40Mhz duty = 1023 4095 获取的值/最大宽带12bit 4095 * 1023
motor = PWM(Pin(8),duty=(0),freq = 4095) # 4.095khz # 风扇
# 定义蜂鸣器对象
beep = Pin(6,Pin.OUT)
# 创建MQ3传感器函数
def MQ_3():
value = 0
# 创建ADC对象
adc = ADC(Pin(4)) # ADC1
adc.atten(ADC.ATTN_11DB) # 定义ADC衰减比
adc.width(ADC.WIDTH_12BIT) # 定义ADC的宽度,对应的为0到4095的分辨率
# 求MQ3读取50次的平均值
for i in range(0,50,1):
value = value + adc.read()
value /= 50
# 通过公式计算出MQ3检测到的值
temp = ((value * 125) / 4095)
# 如果MQ3检测到的值不符合要求,则鸣叫
if (temp > 30) & (temp < 50):
beep.value(not beep.value())
time.sleep(0.1)
else:
beep.value(1)
# 在ssd1306上显示MQ3检测到的信息
font.text(oled,"%d ppm"%(temp),60,16,color=1,font_size=16,reverse=False,clear=False,show=True,half_char=True, auto_wrap=True)
print("MQ-03: %d "%(temp))
# 创建MQ135传感器函数
def MQ_135():
value = 0
# 创建ADC对象
adc = ADC(Pin(5)) # ADC0
adc.atten(ADC.ATTN_11DB) # 3.3v
adc.width(ADC.WIDTH_12BIT) # 4095
# 求MQ135读取50次的平均值
for i in range(0,50,1):
value = value + adc.read()
value /= 50
# 控制小风扇的转速
motor.duty(int((value/4095) * 1023))
font.text(oled,"%d"%(value),60,32,color=1,font_size=16,reverse=False,clear=False,show=True,half_char=True, auto_wrap=True)
print("MQ135: %d "%(value))
def main():
beep.value(0)
font.text(oled,"MQ-03:",8,16,color=1,font_size=16,reverse=False,clear=False,show=True,half_char=True, auto_wrap=True)
font.text(oled,"MQ135:",8,32,color=1,font_size=16,reverse=False,clear=False,show=True,half_char=True, auto_wrap=True)
while True:
MQ_3()
MQ_135()
time.sleep(2)
if __name__ == "__main__":
main()
四、字库和ssd1306屏幕驱动
大家查看前一篇文章获取。
物联网开发108 - Micropython ESP32 C3-ADC采集模拟量滑动电位器&PWM调速舵机角度控制_魔都飘雪的博客-CSDN博客使用ESP32 C3,连接0.96寸ssd1306屏幕、MG90S舵机、Motor Module直流电机带扇叶PWM调速小风扇模块,滑动变阻器模块来搭建我们的环境。最后,通过滑动电阻器的改变开控制舵机转动的角度和马达的转速,并将滑动变阻器的模拟值、舵机转动的角度和马达的电压值显示在屏幕上。https://blog.csdn.net/zhusongziye/article/details/130610032?spm=1001.2014.3001.5501
五、模块购买
1, MQ3和MQ135传感器购买
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.7c5a2e8d9CDCEL&id=609977307608&_u=fp01rch1aa6https://item.taobao.com/item.htm?spm=a1z09.2.0.0.7c5a2e8d9CDCEL&id=609977307608&_u=fp01rch1aa6全套资料下载链接: http://pan.baidu.com/s/1c10kCeO 密码: hcy2
2,有源蜂鸣器(低电平有效)
https://detail.tmall.com/item.htm?abbucket=8&id=21124132861&ns=1&skuId=4319138558994&spm=a230r.1.14.1.5f448a4eS5wMWnhttps://detail.tmall.com/item.htm?abbucket=8&id=21124132861&ns=1&skuId=4319138558994&spm=a230r.1.14.1.5f448a4eS5wMWn
3, PWM小风扇马达,请查看上一篇文章获取
物联网开发108 - Micropython ESP32 C3-ADC采集模拟量滑动电位器&PWM调速舵机角度控制_魔都飘雪的博客-CSDN博客使用ESP32 C3,连接0.96寸ssd1306屏幕、MG90S舵机、Motor Module直流电机带扇叶PWM调速小风扇模块,滑动变阻器模块来搭建我们的环境。最后,通过滑动电阻器的改变开控制舵机转动的角度和马达的转速,并将滑动变阻器的模拟值、舵机转动的角度和马达的电压值显示在屏幕上。https://blog.csdn.net/zhusongziye/article/details/130610032?spm=1001.2014.3001.5501