Bomba de controle automático ESP32 usando sensor de umidade do solo com LCD (MicroPython)
Controle automático da bomba de água com MicroPython. Usando a placa ESP32 e o sensor de umidade do solo. Ligue a bomba de água se o nível de umidade do solo for baixo. Desligue a bomba de água se o nível de umidade do solo for alto. Mostrar o status na tela LCD.




Código MicroPython – Bomba de controle automático ESP32 usando sensor de umidade do solo com tela LCD
from machine import Pin, SoftI2C from machine import Pin, ADC from i2c_lcd import I2cLcd import time import _thread # PUMP pump = Pin(33, Pin.OUT) pump.off() # LCD i2c = SoftI2C(scl=Pin(22), sda=Pin(21),freq=100000) lcd = I2cLcd(i2c, 0x27,2,16) time.sleep(1) lcd.clear() # Soil Moisture soil = ADC(Pin(35)) m = 100 min_moisture=0 max_moisture=4095 soil.atten(ADC.ATTN_11DB) #Full range: 3.3v soil.width(ADC.WIDTH_12BIT) #range 0 to 4095 def check_moisture(): print('Check Moisture Starting...') global m while True: try: soil.read() time.sleep(2) m = (max_moisture-soil.read())*100/(max_moisture-min_moisture) moisture = 'Soil Moisture: {:.1f} %'.format(m) print("Soil Moisture: " + "%.1f" % m +"% (adc: "+str(soil.read())+")") time.sleep(5) except: pass # START text = 'Starting...' lcd.putstr(text) # RUN global pump_status pump_status = 'OFF' def show_lcd(): while True: try: moisture = 'Moisture: {:.1f} %'.format(m) pump_s = 'PUMP: {:}'.format(pump_status) lcd.clear() lcd.putstr(pump_s) time.sleep(2) lcd.clear() lcd.putstr(moisture) time.sleep(2) except: pass def auto_pump(): global pump_status while True: if m < 20: time.sleep(1) pump.on() pump_status = 'ON (AUTO)' time.sleep(5) # TURN ON PUMP 5 sec pump.off() pump_status = 'OFF (AUTO)' time.sleep(10) else: pass _thread.start_new_thread(check_moisture,()) _thread.start_new_thread(show_lcd,()) _thread.start_new_thread(auto_pump,())
Please follow and like us: