from machine import Pin, I2C, ADC
import onewire, ds18x20, time
from ssd1306 import SSD1306_I2C
# I2C setup for OLED
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=400000)
oled = SSD1306_I2C(128, 64, i2c)
# MQ135 on ADC0 (GP26)
mq135 = ADC(Pin(26))
# DS18B20 setup
dat = Pin(2)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(dat))
roms = ds_sensor.scan()
if not roms:
oled.fill(0)
oled.text("No DS18B20", 0, 0)
oled.show()
raise Exception("No DS18B20 sensor found!")
else:
print('Found DS18B20:', roms)
while True:
# Read MQ135 gas value
gas_value = mq135.read_u16()
# Read temperature
ds_sensor.convert_temp()
time.sleep_ms(750)
temp_c = ds_sensor.read_temp(roms[0])
# Display on OLED
oled.fill(0)
oled.text("Env Monitor", 0, 0)
oled.text("Gas: {}".format(gas_value), 0, 16)
oled.text("Temp: {:.1f}C".format(temp_c), 0, 32)
oled.show()
time.sleep(1)
Loading
ssd1306
ssd1306
Loading
ds18b20
ds18b20