MQ-7 esp32 micropython
MQ-7 Датчик углекислого газа.
ESP32 > MQ-2
GND > GND
3.3 > VCC
D4 > A0
D15 > D0
В начале датчик откалибруется, желательно на чистом воздухе.
main.py
from machine import Pin, ADC
import time
import math
class MQ7:
def __init__(self, analog_pin, digital_pin=None):
self.analog_pin = ADC(Pin(analog_pin))
self.analog_pin.atten(ADC.ATTN_11DB) # 0-3.3V range
if digital_pin:
self.digital_pin = Pin(digital_pin, Pin.IN)
else:
self.digital_pin = None
# Calibration values (adjust based on your environment)
self.R0 = 10.0 # Sensor resistance in clean air
def read_analog(self):
"""Read analog value (0-4095)"""
return self.analog_pin.read()
def read_voltage(self):
"""Read voltage value (0-3.3V)"""
return (self.analog_pin.read() / 4095) * 3.3
def read_digital(self):
"""Read digital value (if digital pin connected)"""
if self.digital_pin:
return self.digital_pin.value()
return None
def read_ppm(self):
"""Estimate CO concentration in PPM"""
# MQ-7 requires heating cycles
# This is a simplified calculation - needs proper calibration
sensor_voltage = self.read_voltage()
rs = (3.3 - sensor_voltage) / sensor_voltage * 5.0 # Assuming RL=5K
ratio = rs / self.R0
# Approximate PPM calculation for MQ-7
ppm = 10 ** ((math.log10(ratio) - 0.8) / -0.4)
return ppm
# Initialize sensor
mq7 = MQ7(4, 15) # Analog on GPIO 36, Digital on GPIO 39
while True:
analog_value = mq7.read_analog()
voltage = mq7.read_voltage()
digital_value = mq7.read_digital()
ppm = mq7.read_ppm()
print(f"Analog: {analog_value}, Voltage: {voltage:.2f}V, Digital: {digital_value}, PPM: {ppm:.2f}")
time.sleep(2)

Комментарии
Отправить комментарий