"""
===============================================================
Avraham Aram Ben de Souza
Enrico de Andrade Bertozzi Miranda
Miguel Santana da Costa
===============================================================
"""
from machine import Pin, ADC, I2C
import time
import math
import machine
# LCD
from i2c_lcd import I2cLcd
# Atuadores
from actuators import Actuator
# Sensores
from dht import DHT22
from my_sensors import LDR, MQ2, Ultrassonic
# Funções
from functions import media, temp_umid, p1, p2, p3, p4
"""
===============================================================
"""
# LCD
i2c = I2C(0, scl=Pin(22), sda=Pin(21))
lcd = I2cLcd(i2c, 0x27, 2, 16)
# Atuadores
pump = Actuator(23, "Bomba")
fan_1 = Actuator(5, "Ventilador 1")
fan_2 = Actuator(17, "Ventilador 2")
led_1 = Actuator(16, "Led 1")
led_2 = Actuator(4, "Led 2")
led_3 = Actuator(0, "Led 3")
led_4 = Actuator(2, "Led 4")
# Sensores
ldrs = [
LDR(27),
LDR(14),
LDR(12),
LDR(13)
]
gases = [
MQ2(32),
MQ2(33)
]
dhts = [
DHT22(Pin(25)),
DHT22(Pin(26))
]
ultra = Ultrassonic(19, 18)
# SENSORES RETIRADOS DO PROJETO
# ph = ADC(Pin(34));
# ph.atten(ADC.ATTN_11DB)
# ec = ADC(Pin(35));
# ec.atten(ADC.ATTN_11DB)
"""
===============================================================
Checando os componentes
===============================================================
"""
def boot_check():
print("\n=== BOOT DO SISTEMA ===")
try:
temp_umid(dhts)
print("[OK] DHT22")
except:
print("[ERRO] DHT22")
try:
media([l.calc() for l in ldrs])
print("[OK] LDR")
except:
print("[ERRO] LDR")
try:
media([g.calc() for g in gases])
print("[OK] MQ2")
except:
print("[ERRO] MQ2")
try:
ultra.calc()
print("[OK] Ultrassonico")
except:
print("[ERRO] Ultrassonico")
# try:
# ph.read()
# print("[OK] pH")
# except:
# print("[ERRO] pH")
# try:
# ec.read()
# print("[OK] EC")
# except:
# print("[ERRO] EC")
print("========================\n")
time.sleep(2)
"""
===============================================================
Automação dos controladores
===============================================================
"""
def controlar(temp, gas, nivel, lux):
pump.set(nivel >= 100)
fan_1.set(gas >= 80)
fan_2.set(gas >= 80)
led_1.set(lux >= 80)
led_2.set(lux >= 80)
led_3.set(lux >= 80)
led_4.set(lux >= 80)
# if gas > 70:
# print("[ALERTA] GAS ALTO - DESLIGANDO TUDO")
# pump.off()
# ventilador.off()
# luz.off()
# valvula.off()
# loop princiapl
boot_check()
while True:
# leitura única
t,u = temp_umid(dhts)
g = media([x.calc() for x in gases])
l = media([x.calc() for x in ldrs])
# l = ldrs[0].calc()
n = ultra.calc()
# phv = (ph.read()/4095)*14
# ecv = (ec.read()/4095)*20
# controle
controlar(t, g, n, l)
# páginas
p1(t,u, lcd)
time.sleep(1)
p2(l,g, lcd)
time.sleep(1)
# Adicione a variavel ecv para condutividade
p3(n, lcd)
time.sleep(1)
# Adicione a variavel phv para pH
p4(t,g, lcd)
time.sleep(1)Bomba
Exaustor 1
Exaustor 2
LED 1
LED 2
LED 3
LED 4