Projeto IA
Sistema de irrigação automático que utiliza lógica fuzzy para determinar a necessidade hídrica em tempo real e algoritmo genético para otimizar dinamicamente os parâmetros de irrigação. Opera em dois modos (Manual/Automático) com persistência em EEPROM.
- Controle dual: Manual (botão físico) / Automático (lógica inteligente)
- Lógica Fuzzy: 2 entradas (temperatura, umidade solo), 6 regras, saída singleton
- Algoritmo genético:
- Otimiza tempo de irrigação (1-20 segundos)
- Otimiza intervalo entre irrigações (10-1440 minutos)
- Persistência: Armazena modo operacional e melhor indivíduo na EEPROM
- Monitoramento: LCD 16x2 + Serial Monitor para depuração
- Proteções: Debounce para botão, controle seguro do motor com BJT
| Componente | Quantidade | Notas Técnicas |
|---|---|---|
| Arduino Uno R3 | 1 | ATMega328P |
| Sensor DHT11 (temp/umid. ar) | 1 | Pino A1 |
| Sensor capacitivo solo | 2 | Pinos A0 e A2 |
| LCD 16x2 (I2C) | 1 | Display status em tempo real |
| Motor CC 5V/200mA | 1 | Controlado via pino 9 |
| Transistor BC547 | 1 | Controle de potência do motor |
| Resistores | 3 | 100Ω (motor), 1kΩ (pull-down botão) |
| Botão táctil | 1 | Modo 6 (com debounce) |
-
Fuzzificação:
- Temperatura:
Baixa(<25°C),Média(25-55°C),Alta(>55°C) - Umidade Solo:
Seco(<40%),Normal(40-70%),Úmido(>70%)
- Temperatura:
-
Regras de Inferência (Exemplos):
SE Temperatura ALTA E Solo SECO → Necessidade ALTA (0.8) SE Temperatura MÉDIA E Solo NORMAL → Necessidade BAIXA (0.2)
-
Desfuzzificação:
- Método singleton:
necessidade = (Σ(regra_i * peso_i)) / Σ(regra_i) - Aciona irrigação se
necessidade > 0.5
- Método singleton:
Estrutura do Indivíduo:
struct Individuo {
int tempoIrrigacao; // 1-20 segundos
int intervalo; // 10-1440 minutos (até 24h)
float fitness; // Calculado por:
}; // (eficiência*0.6 + conservação*0.3 + estabilidade*0.1)Fluxo do AG:
- Inicialização aleatória (população: 10 indivíduos)
- Avaliação de fitness baseada em:
- Eficiência hídrica
- Conservação de recursos
- Estabilidade do solo
- Seleção por torneio (tamanho 3)
- Cruzamento aritmético
- Mutação gaussiana (±60 minutos)
- Elitismo (preserva melhor indivíduo)
#define MOTOR_PIN 9 // Controle do motor
#define BOTAO_MANUAL 6 // Botão de modo (com debounce)
#define DHTPIN A1 // Sensor DHT11
#define SENSOR_SOLO_1 A0 // Sensor solo 1
#define SENSOR_SOLO_2 A2 // Sensor solo 2
// LCD: SDA-A4, SCL-A5 (I2C)

