from machine import Pin, I2C, ADC, Timer
import ssd1306
import time
# ESP32 Pin assignment
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
oled = ssd1306.SSD1306_I2C(128, 64, i2c)
# MQ-135 Gas Sensor Pin
mq_pin = ADC(Pin(34))
# Function to read MQ-135 data and convert it to PPM
def read_mq135():
raw_value = mq_pin.read()
voltage = raw_value / 4095 * 3.3 # Convert ADC value to voltage
Rs = (3.3 - voltage) / voltage # Calculate sensor resistance
ppm = 446 * (Rs / 10) # Convert sensor resistance to PPM
return ppm
# Function to update OLED display
def update_display(timer):
oled.fill(0)
ppm_value = read_mq135()
# Display air quality information
oled.text('Air Quality Monitor', 5, 5)
oled.text('PPM: {:.2f}'.format(ppm_value), 5, 25)
# Display additional information
oled.text('Temperature: 25°C', 5, 45)
oled.text('Humidity: 50%', 5, 65)
oled.show()
# Set up a timer to update the display every 5 seconds
timer = Timer(0)
timer.init(period=5000, mode=Timer.PERIODIC, callback=update_display)
# Initial display update
update_display(None)
# You can add more code here for other functionalities or sensors