Arduino, Internet das Coisas e Computação vestível

Você está em »

[Voltar]

[Avançar]

4.5. Regador de planta

O projeto consiste em um sistema automatizado de monitoramento de umidade do solo que combina leitura de dados, exibição visual e resposta mecânica. O sensor de umidade mede o nível de água presente no solo e envia os dados para o arduino uno, que processa a informação e exibe no display LCD I2C (16x2) o valor percentual e o estado atual — seco ou molhado. Para facilitar a visualização, um LED RGB indica a condição do solo por meio das cores vermelho e verde, enquanto um servo motor é acionado quando o solo está seco, realizando um giro de 60 graus como resposta física de alerta ou controle para liberação de água.

Componentes utilizados: Arduino Uno, sensor de umidade do solo, display LCD I2C (0x27, 16x2), LED RGB com resistores, servo motor (SG90 ou similar) e jumpers.

// Programa: Projeto Cofre eletrônico   
// Autor: André Luis Marques da Silveira
// Data: 14/09/2023
#include "Wire.h" #include "LiquidCrystal_I2C.h" #include "Servo.h" LiquidCrystal_I2C lcd(0x27, 16, 2); Servo servoMotor; // Pinos do LED RGB const int pinRed = 9; const int pinGreen = 10; const int pinBlue = 11; // Pino do sensor de umidade const int sensorPin = A0; // Servo no pino 6 const int servoPin = 6; // Valores de calibração (ajuste conforme seu sensor) const int seco = 800; // valor no ar (seco) const int molhado = 400; // valor no solo úmido/molhado // Controle do servo bool servoAtivado = false; unsigned long tempoAtivacao = 0; void setup() { lcd.init(); lcd.backlight(); pinMode(pinRed, OUTPUT); pinMode(pinGreen, OUTPUT); pinMode(pinBlue, OUTPUT); servoMotor.attach(servoPin); servoMotor.write(0); // posição inicial lcd.setCursor(0, 0); lcd.print("Sensor Umidade"); delay(1500); lcd.clear(); } void loop() { int leitura = analogRead(sensorPin); // Converte leitura para porcentagem (0 a 100) int umidade = map(leitura, seco, molhado, 0, 100); umidade = constrain(umidade, 0, 100); // Exibe no LCD lcd.setCursor(0, 0); lcd.print("Umidade: "); lcd.print(umidade); lcd.print("% "); lcd.setCursor(0, 1); // Define faixas de umidade if (umidade < 51) { lcd.print("Status: SECO "); setColor(0, 0, 255); // Vermelho servoMotor.write(60); } else { lcd.print("Status: MOLHADO"); setColor(255, 0, 0); // Verde servoMotor.write(0); } delay(100); } // Função para definir cor do LED RGB void setColor(int red, int green, int blue) { analogWrite(pinRed,red); analogWrite(pinGreen,green); analogWrite(pinBlue,blue); }

 

[Voltar]

[Avançar]