Jardim Interno com Arduino: Cuidado Automatizado e Inteligente de Plantas
Componentes e Materiais
| Componente | Quantidade |
|---|---|
| Arduino Nano R3 | 1 |
| Dongle Bluetooth para USB mbientLab | 1 |
| PCB Personalizada JLCPCB | 1 |
Sobre o Projeto
Jardinagem na era moderna significa tornar as coisas mais complicadas e árduas, com elétrons, bits e bytes. Combinar microcontroladores e jardinagem é uma ideia muito popular. Acho que é porque jardins têm entradas e saídas muito simples, fáceis de entender. Adivinho que as pessoas (eu incluso) veem um hobby notoriamente simples e relaxado e não podem deixar de se sentir compelidas a supercomplicá-lo.
Neste projeto, mostrarei como construir uma versão mais simples de jardim interno usando uma placa de desenvolvimento Arduino.
Forneço orientação completa passo a passo para mostrar como fazer seu próprio jardim bonito, explicando em detalhes tanto as partes de hardware quanto de software da maneira mais simples para você testar suas habilidades em eletrônica. Este projeto é muito prático, especialmente após obter a PCB personalizada que pedimos à JLCPCB para melhorar a aparência do nosso projeto, e há documentação e códigos suficientes neste guia para permitir que você crie seu sistema automático de jardim.
Fizemos este projeto em apenas 7 dias: apenas 3 dias para finalizar o hardware e a montagem, depois 4 dias para preparar o código e o app Android para controlar o jardim através dele. Antes de começar, vamos ver:
O que Você Aprenderá neste Tutorial
- Escolher os componentes certos dependendo das funcionalidades do seu projeto
- Fazer o circuito para conectar todos os componentes escolhidos
- Montar todas as partes do projeto e começar a testar
- Usar o app Android para conectar via Bluetooth e começar a manipular o sistema
Passo 1: O que é um Jardim Interno!
A maioria das plantas tem necessidades simples. Como hóspedes, são relativamente pouco exigentes. Há apenas três coisas básicas para entender antes de convidar uma planta para casa: luz, água e ar. Se você dominar estes quatro elementos, da perspectiva de uma planta, pode criar um jardim interno em quase qualquer lugar do mundo e durante qualquer estação do ano.
- Luz - A maioria das plantas de jardim precisa de pelo menos seis horas de luz por dia. Mas tem que ser boa luz. Se você colocar a mão na frente da janela e não projetar sombra, provavelmente a luz não é adequada para a maioria das plantas viverem felizes. No entanto, você pode sempre suplementar condições de pouca luz com luzes de cultivo. Se você tem luz natural modesta em casa e não quer mexer com iluminação especial, escolha plantas que normalmente precisam de pouca luz, ou tente mover seu jardim para um peitoril ensolarado.
- Água - As plantas precisam de condições próximas às de seus habitats nativos. Uma planta do deserto precisará de rega menos frequente que uma de pântano. Saber que condições de água uma planta prefere é um bom primeiro passo para manter um jardim interno bem-sucedido. É mais fácil do que você pensa porque as próprias plantas frequentemente dão pistas. Plantas com folhas grossas e emborrachadas são acumuladoras de água e geralmente sobrevivem com menos água que plantas com folhas finas e delicadas. Se você odeia regar plantas, escolha variedades que prosperam com menos, ou vasos com reservatórios ocultos para reduzir suas tarefas de rega.
- Ar - Como subproduto da fotossíntese, as plantas produzem oxigênio e filtram gases nocivos, como formaldeído, do ambiente doméstico através de suas folhas. Para manter as plantas saudáveis, você precisa manter as folhas limpas e o ar ao redor delas em movimento e úmido. Para isso, pode colocá-las em local com boa circulação de ar ou fornecer um pequeno ventilador.
Vou fazer um sistema baseado em Arduino para supervisionar o status de temperatura e umidade da minha planta e fornecer automaticamente suas necessidades como intensidade de luz, água e ar fresco puro. Para isso, preciso de sensores para controlar atuadores. Por exemplo, controlarei a intensidade da luz dependendo dos sinais do sensor de luminosidade; o mesmo para rega: usei sensor de umidade do solo para ligar/desligar uma bomba d'água; e sensor de temperatura/umidade para ligar/desligar ventiladores DC 12V.
Passo 2: Sensores e Atuadores
Fazer este sistema é a montagem de alguns sensores e atuadores para acessar dados físicos ao redor da planta e determinar o que a planta precisa e quando fornecer.
Esta é a razão para usar sensores e atuadores todos conectados a uma placa Arduino:
Sensores
- Sensor de luz BH1750: O BH1750FVI é um sensor de luz digital, IC de sensor de luz ambiente digital para interface I2C. Este IC é o mais adequado para obter dados de luz ambiente para ajustar potência de backlight de LCD e teclado de celular. Detecta ampla faixa em alta resolução (1–65535 lx).
- Sensor de umidade do solo: Sensores que medem resistência ou condutividade através da matriz do solo entre dois contatos são essencialmente lixo. Primeiro, resistência não é bom indicador de umidade, pois depende de muitos fatores que variam de jardim para jardim, incluindo pH do solo, sólidos dissolvidos na água e temperatura. Segundo, a maioria é de baixa qualidade com contatos que corroem facilmente. Na maior parte, você teria sorte se durassem uma estação inteira.
- Sensor de temperatura e umidade: O DHT11 é um sensor digital básico e ultra baixo custo de temperatura e umidade. Usa sensor de umidade capacitivo e termistor para medir o ar ambiente, e envia sinal digital no pino de dados (não precisa de pinos analógicos). É simples de usar, mas requer temporização cuidadosa para obter dados. A única desvantagem real é que você só obtém novos dados a cada 2 segundos, então leituras podem ter até 2 segundos de idade.
Atuadores
- LED branco: Um diodo emissor de luz (LED) é uma fonte de luz semicondutora de dois terminais. É um diodo junção p-n que emite luz quando ativado. Quando tensão adequada é aplicada aos terminais, elétrons recombinam com lacunas de elétrons no dispositivo, liberando energia na forma de fótons.
- Bomba d'água: Dispositivo que move fluidos (líquidos ou gases), às vezes lamas, por ação mecânica. Bombas classificam-se em três grupos principais segundo o método usado para mover o fluido: elevação direta, deslocamento e gravidade. Operam por algum mecanismo (tipicamente alternativo ou rotativo), consumindo energia para realizar trabalho mecânico movendo o fluido. Fontes de energia incluem operação manual, eletricidade, motores, ou energia eólica; tamanhos variam de microscópicos para aplicações médicas a grandes bombas industriais.
- Ventilador DC 12V: Importante entender técnicas de refrigeração para preservar a vida da sua planta movendo ar fresco ao redor quando necessário para manter a planta em condições saudáveis.
Passo 3: Fabricação da PCB (Produzida pela JLCPCB)
Sobre a JLCPCB
JLCPCB (Shenzhen JIALICHUANG Electronic Technology Development Co., Ltd.) é a maior empresa de prototipagem PCB na China e fabricante de alta tecnologia especializada em prototipagem rápida de PCB e produção de pequenas quantidades.
Com mais de 10 anos de experiência em fabricação de PCB, a JLCPCB tem mais de 200.000 clientes no país e no exterior, com mais de 8.000 pedidos online de prototipagem e produção de pequenas quantidades por dia. A capacidade de produção anual é 200.000 m² para PCBs de 1, 2 ou múltiplas camadas. A JLC é fabricante profissional de PCB com grande escala, equipamentos avançados, gestão rigorosa e qualidade superior.
Voltando ao Nosso Projeto
Para produzir a PCB, comparei preços de muitos fabricantes e escolhi a JLCPCB como melhor fornecedor e mais barato. Tudo que precisei foi alguns cliques simples para upload do arquivo Gerber e definir parâmetros como espessura, cor e quantidade da PCB, paguei apenas 2 dólares para receber minha PCB após 3 dias e notei que há ofertas de frete grátis ocasionalmente nesta plataforma de pedidos online.
Você pode obter o arquivo do circuito (PDF) aqui.
Como visto nas fotos, a PCB é muito bem fabricada e obtive o mesmo formato de folha que projetamos, com todos os rótulos e logos para guiar durante a soldagem.
Passo 4: Ingredientes
Agora vamos revisar os componentes necessários e você encontra links para compra online:
- PCB que pedimos à JLCPCB
- Arduino Nano
- Módulo ESP01
- Módulo Bluetooth HC-05 ou HC-06
- Sensor de luz BH1750
- Sensor de temperatura e umidade
- Sensor de umidade do solo
- Bomba d'água
- Ventilador DC 12V
- LEDs brancos
- Conectores header
Passo 5: A Montagem
Mostrar Todos os 9 Itens
Estamos prontos, vamos começar a soldar os componentes e não esqueça de seguir os rótulos para evitar erros. Começamos soldando o conector do Arduino para testar a fonte de alimentação e você também pode escrever código de teste básico para verificar a conexão correta de cada sensor como o sensor de luz e o mesmo para os LEDs porque estão todos conectados diretamente à placa (Arduino), então você tem acesso total a eles.
Nota: Mantenha seu ferro de solda limpo e agradável. Significa limpá-lo na esponja cada vez que usar. A ponta deve estar limpa e brilhante. Sempre que vir a ponta ficando suja com fluxo ou oxidando, perdendo o brilho, deve limpá-la. Mesmo no meio da soldagem. Ter uma ponta limpa torna MUITO mais fácil transferir calor para o alvo.
A PCB que pedimos à JLCPCB guiará você mantendo tudo no lugar certo, então não hesite em visitar este link se quiser ver a PCB que fizemos e fazer um pedido online.
Como você pode ver, usar esta PCB é muito prático pela qualidade e certamente todos os rótulos fornecem a melhor orientação, então você terá 100% de certeza que não cometerá erros de soldagem.
Soldei cada componente em seu lugar e você pode usar ambos os lados da PCB para soldar suas partes eletrônicas.
Agora temos a PCB pronta e todos os componentes bem soldados, depois preparei este design para corte a laser CNC para inserir a parte eletrônica e a planta em um suporte. Se quiser fazer o mesmo design, encontre os arquivos (DXF) aqui.
Passo 6: O App Android
Este app permite conectar ao seu Arduino via Bluetooth, e usando o modo manual você acessa ventiladores, luzes e também a bomba d'água para controle LIGADO/DESLIGADO, sem esquecer os sensores cujos dados você lê pressionando o botão "obter dados" e todos os dados apropriados serão exibidos na tela do smartphone.
Você pode obter este app Android gratuitamente neste link.
Passo 7: O Código Arduino e Validação de Teste
O código está disponível e como de costume você pode baixá-lo neste link. Como visto nas fotos, o código é simples e bem comentado para você entender por conta própria.
Como podem ver, cada botão tem funcionalidade com o sistema, mas o que realmente aprecio é o modo automático para controle de brilho da luz: coloquei o sensor de luz na base inferior da casa; ao selecionar este modo, o sistema controla o brilho dos LEDs frontais dependendo dos sinais do sensor. Também podemos ler valores de temperatura e umidade diretamente na tela do smartphone, o que é realmente impressionante.
Código
Código fonte Arduino
/************************************************************************************************************************************************************************
* - Author : BELKHIR Mohamed
* - Profession : (Developer) MEGA DAS owner
* - Main purpose : Industrial Application
* - Copyright (c) holder : All rights reserved
* - License : BSD 2-Clause License
* - Date : 20/11/2017
***********************************************************************************************************************************************************************/
/*********************************** NOTE **************************************/
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions are met:
// * Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
// * Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED
#include "DHT.h"
#include <Wire.h>
#include <BH1750.h>
// Pinos de controle
const int Pump = 4; // Controla bomba d'água
const int Fan = 5; // PWM para velocidade do ventilador
const int Light = 6; // Controla brilho dos LEDs
const int TempHum = 7; // Entrada para sensor DHT
const int Moisture = 8; // Entrada digital para comando de umidade
const int TestLED = 9; // Saída para testar LEDs na PCB
const int Brightness = 12; // Entrada para sinais do sensor de luz
const int analogMoistue = 0; // Entrada analógica para sensor de umidade
#define DHTTYPE DHT11
DHT dht(TempHum, DHTTYPE);
BH1750 lightMeter;
char Data = 'x';
String cmd = "";
int flagModeAuto = 0;
int sprayCMD = 0;
int LightCMD = 0;
int lightLevelPlus = 0;
float temperature = 0;
float humidity = 0;
uint16_t lux = 0;
void setup() {
Wire.begin();
dht.begin();
lightMeter.begin();
Serial.begin(9600);
Serial.setTimeout(100);
pinMode(Pump, OUTPUT);
pinMode(Fan, OUTPUT);
pinMode(Light, OUTPUT);
pinMode(Moisture, INPUT);
pinMode(TestLED, INPUT);
delay(1000);
digitalWrite(Pump, LOW);
digitalWrite(Fan, LOW);
digitalWrite(Light, LOW);
}
void loop() {
while (Serial.available()) {
delay(10);
Data = Serial.read();
cmd += Data;
}
if (cmd == "dt") { Serial.print(humidity); }
if (cmd == "dh") { Serial.print(lux); }
if (cmd == "db") { Serial.print(temperature); }
if (cmd == "o") { flagModeAuto = 1; }
if (cmd == "m") { flagModeAuto = 0; }
if (flagModeAuto == 1) {
autoPump();
lightBrightness();
autoFan();
}
if (flagModeAuto == 0) {
if (cmd == "f") { analogWrite(Fan, 255); }
if (cmd == "x") { analogWrite(Fan, 0); }
if (cmd == "l") { analogWrite(Light, 255); }
if (cmd == "k") { analogWrite(Light, 0); }
if (cmd == "w") { analogWrite(Pump, 255); }
if (cmd == "y") { analogWrite(Pump, 0); }
}
cmd = "";
lux = lightMeter.readLightLevel();
temperature = dht.readTemperature();
humidity = dht.readHumidity();
}
void autoPump() {
if (analogRead(analogMoistue) < sprayCMD) {
digitalWrite(Pump, HIGH);
delay(1000);
digitalWrite(Pump, LOW);
delay(1000);
}
}
void lightBrightness() {
while (lux < LightCMD) {
analogWrite(Light, lightLevelPlus);
delay(100);
lightLevelPlus++;
lux = lightMeter.readLightLevel();
}
}
void autoFan() {
if (temperature > 30) {
analogWrite(Fan, 255);
} else {
analogWrite(Fan, 0);
}
}
Peças Personalizadas e Gabinetes
dxf_mdf_5mm_s0PEHuez4w.rar
Esquemático
Disponível nos arquivos do projeto.
Processo de manufatura
- Crie um Sistema Ambilight Impressionante para Monitor com Arduino
- Construa o Clássico Jogo Pong no Arduino UNO com Display OLED – Tutorial Passo a Passo
- Detector de Frequência de Áudio com Arduino – Meça Picos de Som com Módulo de Alta Sensibilidade
- Construa Seu Próprio Tamagotchi com Arduino: Projeto DIY de Pet Digital
- Controlador Inteligente de Interruptor de Luz Sem Fio: Manipulador Remoto Baseado em Arduino
- Jogo da Velha com Arduino, Matriz LED MAX7219 e Caixa de Papelão
- Pistola de Água Inteligente com Detecção de Movimento usando Arduino Nano
- Construa um Temporizador Regressivo Confiável com Arduino e Display de 7 Segmentos SparkFun
- Girassol Eletrônico com Arduino: Rastreador Solar Autônomo
- Kit de Robô de Navegação Interna Inteligente para Projetos Arduino