O Smart Watering é uma plataforma IoT para monitoramento e controle remoto de um sistema de irrigação sustentável desenvolvido com o Raspberry Pi Pico W.
Este é o projeto final destinado à Unidade 7 do EmbarcaTech, um programa de capacitação profissional técnica destinado a alunos de nível superior em Tecnologias da Informação e Comunicação (TIC) e áreas correlatas, focado em tecnologias de Sistemas Embarcados.
O Smart Watering é um sistema de irrigação automatizado, sustentável e de baixo custo, composto por uma plataforma IoT (SaaS) com funcionalidades inovadoras, disponível para smartphones, tablets e computadores. Este sistema também inclui uma API REST para realizar a comunicação entre a plataforma IoT e o Raspberry Pi Pico W.
Este projeto foi tema do meu Trabalho de Conclusão de Curso (TCC), com o título “Smart Watering: Um Sistema de Monitoramento Remoto e Controle de Irrigação Sustentável Baseado em Plataforma IoT”. Além disso, fui bolsista no projeto por um ano, que também foi aprovado e fomentado pelo Programa Centelha - Ceará (2022).
Veja este vídeo de exemplo no YouTube em https://www.youtube.com/watch?v=AMdGk-LIUu8
.
O Smart Watering permite, ao agricultor, diversos recursos e funcionalidades, como:
- Painel de controle interativo com gráficos e widgets para visualização, em tempo real, dos dados meteorológicos e de irrigação, como umidade de ar e solo, temperatura e luminosidade do ambiente, ponto de orvalho, nível de água do reservatório, nível de chuva e consumo de água referente aos meses do ano. Essa funcionalidade permite, aos usuários, monitorar a plantação e tomar decisões com base nas condições meteorológicas apresentadas.
- Os usuários podem agendar a irrigação remotamente (sem a necessidade de se deslocar até o local da plantação) de várias formas, por exemplo: por dia, horário, umidade do solo ou fluxo de água. Esta flexibilidade permite, ao agricultor, definir valores dinâmicos e específicos em cada uma das regas, tornando a plataforma adequada para a gestão de diversos tipos de plantas. A rega automática pode ser definida para períodos únicos ou diários.
- Em termos de gestão, os usuários podem visualizar, adicionar, editar e remover as regas agendadas. Além disso, podem pesquisar por atributos específicos, aplicar filtros e ordenar informações em colunas de tabelas, personalizar as unidades de temperatura, as medidas do reservatório de água, as notificações do sistema, os temas de cores e o menu da plataforma.
- Gerar relatórios inteligentes dos dados coletados dos sensores, presentes na plantação, para uma análise posterior e aprimoramento de recursos hídricos. Os usuários podem selecionar os dados e períodos de tempo pretendidos e arquivá-los para referência futura.
- Acesso a página de administração integrada, a qual facilita a gestão de dados dos usuários, sensores, permissões, autenticações e configurações, garantindo uma plataforma organizada e acessível aos administradores.
- Além disso, o Smart Watering permite acesso a uma API REST para usuários obter recursos da plataforma e do sistema de irrigação. Esta interface permite a coleta de dados, em tempo real, o envio de comandos para o sistema de irrigação e a configuração da plataforma. A API REST é protegida por autenticação, a qual concede acesso apenas aos usuários autorizados. Através deste recurso, os usuários podem obter acesso instantâneo a informações críticas, incluindo dados de sensores, agendas de irrigação, notificações, consumo de água e configurações da plataforma.
A plataforma é compatível e responsiva em smartphones, tablets e computadores, a qual permite sua adaptação em diferentes tamanhos de telas e sistemas operacionais.
Para montar e desenvolver o sistema de irrigação, são necessários os seguintes materiais e tecnologias:
Material | Tipo | Tecnologia | Descrição |
---|---|---|---|
FC-28 | Sensor | Wi-Fi (802.11) | Protocolo de comunicação sem fio. |
YL-83 | Sensor | REST | Arquitetura de comunicação. |
DHT11 | Sensor | JSON | Formato de dados da API. |
TEMT6000 | Sensor | SQLite | Banco de dados relacional. |
HCSR-04 | Sensor | C | Linguagem de programação do firmware. |
YF-S201 | Sensor | Django | Framework de desenvolvimento web em Python. |
Bomba de Água | Atuador | HTML, CSS e JavaScript | Linguagens de marcação, formatação e programação. |
Relé | Atuador | Bootstrap 5 | Framework front-end. |
RTC DS3231 | Módulo | jQuery | Biblioteca de manipulação do DOM em JavaScript. |
Raspberry Pi Pico W | Microcontrolador | ApexCharts, DataTables e Ion.RangeSlider | Biblioteca de gráficos, tabelas e inputs. |
Os GPIOs dos sensores e atuadores devem ser conectados ao Raspberry Pi Pico W da seguinte forma:
Pico W | DS3231 | DHT11 | Relé | YF-S201 | HC-SR04 | TEMT6000 | YL-83 | FC-28 |
---|---|---|---|---|---|---|---|---|
GP0 | SDA | |||||||
GP1 | SCL | |||||||
GP16 | OUT | |||||||
GP17 | IN | |||||||
GP18 | IN | |||||||
GP19 | ECHO | |||||||
GP20 | TRIG | |||||||
GP26 | OUT | |||||||
GP27 | A0 | |||||||
GP28 | A0 | |||||||
3V3 | VCC | VCC | VCC | |||||
5V | VCC | VCC | VCC | VCC | VCC | |||
GND | GND | GND | GND | GND | GND | GND | GND | GND |
Após conectar todos os componentes, o sistema deve ser semelhante à imagem ilustrada abaixo.
O fluxograma abaixo ilustra as interações do firmware do Raspberry Pi Pico W com a plataforma IoT e outros recursos do sistema.
Instale o GCC, o Visual Studio Code e a extensão Raspberry Pi Pico. Em seguida, importe o projeto pico_firmware
e selecione o SDK na versão v1.5.1
.
Edite o arquivo main.c
, adicionando suas credenciais de Wi-Fi, endereço IP (ou servidor) e a configuração de data e hora do módulo RTC.
Na função main()
, execute ds3231_configure_time()
apenas uma vez. Depois, comente essa função e recompile o firmware para salvar a data e hora local na variável ds3231_data
.
As demais configurações são opcionais.
Por fim, configure o CMake, compile o projeto e faça o upload do firmware (build/main.uf2
) para o Raspberry Pi Pico W.
Com o Git instalado, clone o repositório do projeto:
foo@bar:~$ git clone https://github.com/lucapwn/smart-watering.git
Com o Python instalado, navegue até a pasta principal do projeto e instale as dependências da aplicação:
foo@bar:~$ pip install -r requirements.txt
Aplique as alterações no banco de dados da aplicação:
foo@bar:~$ python manage.py migrate --run-syncdb
Crie um usuário com permissões de administrador:
foo@bar:~$ python manage.py createsuperuser
Por fim, execute o servidor da aplicação:
foo@bar:~$ python manage.py runserver 0.0.0.0:80
Agora, você pode acessar a aplicação no seu computador através de http://localhost.
Para usá-la em outro dispositivo, obtenha o endereço IP do computador que está executando a aplicação.
Se tudo estiver configurado corretamente, os dados dos sensores serão exibidos, em tempo real, na plataforma.
Obrigado por chegar até aqui!
Desenvolvido por Lucas Araújo.
Esse software é licenciado pelo MIT.