# Importe tout les modules requis from machine import Pin, I2C, UART import uSGP30 import uBME280 from i2c_lcd import lcd import time # Défini l'interface du protocole I2C i2c = I2C(0, scl = Pin(9), sda = Pin(8), freq = 1024) # Défini l'interface UART utilisée pour le Bluetooth BT = UART(1, baudrate = 9600, tx = Pin(4), rx = Pin(5)) # Défuini les adresses I2C requis pour les capteurs BME_addr = 0x76; SGP30_adrr = 0x58; # Déclare les paramètres des capteurs bme280 = uBME280.BME280(uBME280.BME280_OSAMPLE_1, BME_addr, i2c) # Le BME280 prends comme argument : le mode du capteur, l'adresse i2c du capteur et l'interface du protocole i2c sgp30 = uSGP30.SGP30(i2c, SGP30_adrr) # Le SGP30 prends comme argument : l'interface du protocole i2c et l'adresse i2c du capteur display = lcd(i2c) # Crée les variables contenants les valeurs extérieures t = str(bme280.read_temperature()/100) p = str(bme280.read_pressure()/1000) h = str(bme280.read_humidity()/1000) # Les valeurs ci dessus doivent être converties en texte car l'écran requiers des valeurs car sinon le programe renvoie une "TypeError: object with buffer protocol required" # De plus, les valeurs doivent êtres divisés par 100 ou par 1000 car elles ne sont pas dans la bonne unitée (capteur en pascal, valeur attendue en kPascal) t_CO2, t_COV = sgp30.measure_iaq() co2 = str(t_CO2) # Crée la fonction qui permet de récupérer les valeurs def Update_Valeurs(): t = str(bme280.read_temperature()/100) p = str(bme280.read_pressure()/1000) h = str(bme280.read_humidity()/1000) t_CO2, t_COV = sgp30.measure_iaq() co2 = str(t_CO2) # Crée la fonction qui permet d'afficher le "premier écran" def First_Screen(): # Affiche le premier "écran" (Température + Humidité) display.home() display.write("Temp = ") display.write(t) display.write(" °C") display.setCursor(0,1) display.write("THum = ") display.write(h) display.write(" %") # Crée la fonction qui permet d'afficher le "deuxième écran" def Second_Screen(): # Affiche le deuxième "écran" (Pression + CO2) display.clear() display.home() display.write("P = ") display.write(p) display.write(" Pa") display.setCursor(0,1) display.write("TCO2 = ") display.write(co2) display.write(" ppm") # Crée la fonction qui permet d'afficher les valeurs def Update_Screen(): # Affiche le premier "écran" First_Screen() time.sleep(5) Second_Screen() time.sleep(5) display.clear() # Crée la fonction qui permet d'envoyer les valeurs en bluetooth def Send_Datas(a, b, c, d): BT.write(a) BT.write(b) BT.write(c) BT.write(d) # Lance le programme indéfiniment while True: Update_Valeurs() Send_Datas(t, h, p, co2) Update_Screen()