Controle automático de irrigação de jardim
Participantes:
Elias Ribeiro FarciroliResumo do projeto:
Um sistema de irrigação que através de sensores de temperatura , e umidade do solo e horário do dia verificando se é necessário irrigar o jardim ,assim economizando água na redução das evaporação da água no solo.Descrição do projeto:
No projeto desenvolvido é criado um sistema hábil para acionar um sistema de irrigação aplicando a técnica por gotejamento, sempre que for apresentada uma medição de umidade no solo. Utilizando o Franzininho Wifi e sensores específicos para garantir a segurança e funcionamento integral do projeto, é possível monitorar e se necessário adequar o sistema, alterando a programação de acordo com a necessidade de cada plantação, proeminentemente possibilitando minimizar e até solucionar problemas de produção causados consequentemente por problemas climáticos que afetam diretamente o solo e a disponibilidade da água.
Imagem 1: Protótipo.
Histórico do desenvolvimento:
A ideia do projeto se deu a uma necessidade no meses secos na região sudeste no ano de 2021 .Água é um recurso essencial para a vida humana e quando sofremos com um período de seca refletimos sobre como à utilizamos e no desperdício do dia a dia.
pesquisando sobre o assunto encontrei diversas informações sobre formas de irrigação e como evitar o desperdício.
Irrigação
Um sistema de irrigação deve ser feito de forma sustentável, visando ainda o melhor aproveitamento da água evitando desperdício da mesma, consequentemente poupando outros fatores como o esgotamento do solo e o uso de energia. No caso da irrigação por gotejamento, o processo é feito umedecendo o solo junto da planta, de forma que economize água, e satisfaça as necessidades da plantação .A falta de água pode retardar o crescimento das plantas e danificar as folhas, enquanto que o excesso “afoga” as raízes, dificultando a oxigenação e contribuindo para o aparecimento de fungos e doenças. O segredo é regar devagar, parando quando a água começar a penetrar na terra.
Melhor horário para irrigação
O melhor horário para irrigar as plantas é entre as primeiras horas do dia e após as 15 horas.
Shield Franzininho Wifi
Para facilitar as ligações e a prototipagem foi desenvolvido um shield para a Franzininho Wifi utilizando uma placa perfurada dupla face de 4×6 cm e barra de pinos ,nela temos :
- VCC (3v3): Barra cor vermelha
- GND: Barra cor preta
- Esp32: Barra cor amarela
Imagem 2: Vista superior shield e Franzininho Wifi.
Imagem 3: Vista lateral shield e Franzininho Wifi.
A fim de economizar água foi desenvolvido um coletor de água de chuva , consiste em um recipiente cilíndrico com um filtro fixado na tampa , foi utilizado como recipiente um pote de sorvete e um pano como filtro.
Imagem 4: Tanque com filtro coletor de água de chuva.
Para irrigar foi utilizado uma mangueira e feito furos até as extremidades.
Imagem 5: mangueira com furos.
Hardware:
Esquemático Fritzing
Imagem 6:Esquemático fritzing.
.
Lista de materiais
Tabela 1: Lista de materiais.
Quantidade |
Componente |
1 | Franzininho Wifi |
2 | Sensor de umidade do solo |
1 | DHT11 |
1 | Módulo relé |
1 | DS3231 |
1 | Boia de nível |
1 | Display Oled |
1 | Bomba d’água 3v3 |
Foi soldado um resistor de 4K7 no pino SDA e no pino SCL ( comunicação I2C ), sem eles não é possível realizar a comunicação I2C.
Imagem 7: Resistores de 4K7.
Demonstrativo de funcionamento
Vídeo 1.
Vídeo 2.
Conclusão
O Franzininho Wifi se mostrou eficiente para a prototipagem, porém não foi utilizado seu recurso wifi, uma atualização deste projeto poderia utilizar este recurso para a informação de forma online dos valores dos sensores de umidade do solo ,temperatura e umidade ambiente. Automatizar e controlar processos visa otimizar o tempo e ganho na economia de recursos, ao usar a engenharia para melhorar técnicas comuns de subsistência, conclui-se que contribui para maior aproveitamento das mesmas, sendo possível analisar e avaliar qual melhor instrumentação a ser utilizada. A relevância do tema agrega na percepção das vantagens de um sistema automático, bem como sua influência na economia e na conscientização no que se diz respeito aos impactos ambientais. Destaca-se ainda a viabilidade de sua utilização no aproveitamento de recursos, otimização do tempo beneficiando o resultado desejado. Um sistema de irrigação deve ser feito de forma sustentável, visando ainda o melhor aproveitamento da água evitando desperdício da mesma, consequentemente poupando outros fatores como o esgotamento do solo e o uso de energia. No caso da irrigação por gotejamento, o processo é feito umedecendo o solo junto da planta, de forma que economize água, e satisfaça as necessidades da plantação.
Software/Firmware:
A lógica do programa consiste na leitura dos sensores de umidade do solo , temperatura e umidade do ambiente (DHT11), nível do tanque (boia )e hora do dia (DS3231).De acordo com o set point dessas variáveis podemos irrigar um jardim ou plantação de forma a economizar água, e de acordo com o solo alterar para melhor resultado.
Segue abaixo o código utilizado na plataforma Arduino IDE.
#include <DS3231.h>
#include “DHT.h”
#include <Adafruit_SSD1306.h>
#include <Adafruit_GFX.h>
#include <driver/adc.h>//necessario para o funcionamento do ADC do esp32
Adafruit_SSD1306 dsp(-1);//cria o objeto do display para i2c
/* Variaveis */
DS3231 relogio;
RTCDateTime dt;
int Hora, Minuto, Segundo , Dia, Mes, Ano;
int t, h;
int Sen1, Sen2, media;
boolean statusBoia;
/*=======================================================================================================*/
/* Pinos */
#define DHTPIN 6 // Digital pin connected to the DHT sensor
#define Boia 7
#define Bomba 4
const int Sensor1 = 1;
const int Sensor2 = 2;
// SDA 8
// SCL 9
/*=======================================================================================================*/
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
/* Funções */
void escreveHora() {
dsp.clearDisplay();
dsp.setCursor(0, 0);
dsp.print(F(“Data: “));
dsp.print(dt.day);
dsp.print(F(“-“));
dsp.print(dt.month);
dsp.print(F(“-“));
dsp.println(dt.year);
dsp.print(F(“Hora: “));
dsp.print(dt.hour);
dsp.print(F(“:”));
dsp.print(dt.minute);
dsp.print(F(“:”));
dsp.println(dt.second);
dsp.print(F(“Boia: “));
dsp.println(statusBoia);
dsp.display();
delay(1000);
}
void escreveTemp() {
dsp.setTextColor(WHITE);//define o texto para branco (no display ficara azul)
dsp.setTextSize(1);
dsp.clearDisplay();
dsp.setCursor(0, 0);
dsp.print(F(“Umidade: “));
dsp.print(h);
Serial.println(“h” + String(h));
dsp.println(F(“% “));
dsp.print(F(“Temp: “));
dsp.print(t);
Serial.println(“t” + String(t));
dsp.println(F(” C “));
dsp.print(F(“S1: “));
int sen1 = analogRead(Sensor1);
Serial.println(“sa” + String(sen1));
dsp.println(sen1);
delay(300);
dsp.print(F(“S2: “));
int sen2 = analogRead(Sensor2);
Serial.println(“sb” + String(sen2));
dsp.println(sen2);
dsp.display();//mostra as alterações no display, sem isso não ira mostrar nada!!
delay(1000);
}
void escreve()
{
if (isnan(h) || isnan(t) ) {
Serial.println(F(“Failed to read from DHT sensor!”));
}
escreveTemp();
escreveHora();
}
void irrigar() {
h = dht.readHumidity();
t = dht.readTemperature();
Sen1 = analogRead(Sensor1);
delay(300);
Sen2 = analogRead(Sensor2);
dt = relogio.getDateTime();
Hora = dt.hour;
Minuto = dt.minute;
Segundo = dt.second;
Dia = dt.day;
Mes = dt.month;
Ano = dt.year;
statusBoia = digitalRead(Boia);
escreve();
media = (Sen1 + Sen2) / 2;
if ( ((t <= 28) && (Hora >= 5) && (Hora <= 7) && (media >= 600)) || ((Hora >= 17) && (Hora <= 19) && (media >= 600)) ) {
if (statusBoia == false) {
digitalWrite(Bomba, HIGH);
}
}
else {
digitalWrite(Bomba, LOW);
}
escreve();
}
/*=======================================================================================================*/
void setup() {
Serial.begin(9600);
relogio.begin();
// relogio.setDateTime(__DATE__, __TIME__); //atualiza hora e data de acordo com o momento de compilação
analogReadResolution ( 10 ); // resolução de 10 bits necessario para a leitura analogica.
analogSetPinAttenuation (Sensor1, ADC_11db); // Atenuação de 6db no pino
analogSetPinAttenuation (Sensor2, ADC_11db); // Atenuação de 6db no pino
dht.begin();
dsp.begin(SSD1306_SWITCHCAPVCC, 0x3C);//inicia o display com endereco padrao
dsp.clearDisplay();//limpa a tela
pinMode(Boia, INPUT);
pinMode(Bomba, OUTPUT);
}
void loop() {
// Wait a few seconds between measurements.
irrigar();
}
Referências:
http://www.bibliotecas.sebrae.com.br/chronus/ARQUIVOS_CHRONUS/bds/bds.nsf/8af4c78945062d5e1d6c4fa50885cc81/$File/7129.pdf.Acesso em: 10 de nov. de 2021.
https://www.arduino.cc/reference/tr/language/structure/boolean-operators/logicalor/.Acesso em: 10 de nov. de 2021.
https://docs.franzininho.com.br/docs/franzininho-wifi/franzininho-wifi/.Acesso em: 15 de nov. de 2021.
https://docs.franzininho.com.br/assets/images/pinagem-franzininho-wifi-3ee791cdc4872c0837b81cd12994e047.png.Acesso em: 23 de nov. de 2021.