Um monitor de umidade do solo com interface de pixel art que exibe o "humor" da sua planta em um display TFT usando um ESP32. Conecta ao Wi‑Fi para enviar o status da planta a uma API web.
- Descrição
- Características
- Hardware Necessário
- Software e Bibliotecas
- Configuração e Calibração
- Detalhes da API
- Estrutura do Código
- Autor
Este projeto transforma um sensor de umidade do solo em um display interativo. Ele mede a umidade da terra e traduz a leitura em uma das três emoções faciais, em pixel art minimalista:
- 😄 Feliz: umidade ótima (>= 50%)
- 😐 Sério: umidade média (>= 20% e < 50%)
- 😢 Triste: umidade baixa (< 20%), precisa de água Além de exibir o humor, o dispositivo conecta ao Wi‑Fi e envia o status (percentual de umidade e situação) para uma API web, permitindo monitoramento remoto.
- Monitoramento em tempo real: lê e atualiza a umidade do solo
- Feedback visual imediato: UI clara em pixel art
- Conectividade Wi‑Fi: integração com rede local
- Integração com API: envia status ao ligar e sempre que a emoção muda
- UI adicional:
- Ícone de Wi‑Fi no canto superior direito (verde online, X vermelho offline)
- Controle de backlight com ícone de "lâmpada" no canto superior esquerdo
- Renderização eficiente: a tela só é redesenhada quando o estado emocional muda
- Placa ESP32‑2432S028R (ou similar com display TFT integrado)
- Sensor de umidade do solo (preferencialmente capacitivo)
- Fios/Jumpers para conexão
- IDE: Arduino IDE ou PlatformIO
- Bibliotecas (Arduino):
TFT_eSPI,XPT2046_Touchscreen,ArduinoJson - Inclusas com ESP32:
WiFi.h,HTTPClient.h,WiFiClientSecure.h
-
Montagem do hardware
- VCC do sensor →
3.3Vou5Vdo ESP32 - GND do sensor →
GNDdo ESP32 - Analógico (AOUT) → pino
35do ESP32 (SOIL_SENSOR_PIN)
- VCC do sensor →
-
Configuração de rede (no topo do arquivo
.ino)
// ===================== CONFIGURAÇÃO DE REDE =====================
const char* ssid = "SEU_WIFI"; // <-- SSID
const char* password = "SUA_SENHA_AQUI"; // <-- SENHA
const char* apiEndpoint = "https://tech-planta-api.vercel.app/";- Calibração do sensor (passo mais importante)
- Carregue o código no ESP32 e abra o Monitor Serial (115200)
- Valor SECO: sensor no ar (defina
SENSOR_DRY_VALUE)
// Exemplo:
#define SENSOR_DRY_VALUE 4095 // Valor lido com o sensor no ar (seco)- Valor ÚMIDO: ponta do sensor em água/terra bem úmida (defina
SENSOR_WET_VALUE)
// Exemplo:
#define SENSOR_WET_VALUE 1200 // Valor lido em terra bem úmida- Atualize os valores no início do
.inoe recompile
- Endpoint:
https://tech-planta-api.vercel.app/ - Método:
POST - Segurança (HTTPS): usa
WiFiClientSecurecomclient.setInsecure()para permitir conexão sem verificação de certificado - Payload (JSON) enviado:
{
"valor_unidade": 75,
"situacao_atual": "Feliz"
}- Exemplo de situação adicional:
"situacao_atual": "Monitorando"
- Bibliotecas e configurações: pinos, rede, API e calibração
setupWiFi(): conecta ao Wi‑FisendDataToAPI(): formata e envia JSON ao endpointdrawWifiStatusIcon(): ícone de status do Wi‑FidrawToggleButton(): ícone da lâmpada (toggle da tela)toggleBacklight(): liga/desliga luz de fundodrawEmotionFace(): desenha o rosto na telareadSoilPercent(): lê o sensor e converte para porcentagemsetup(): inicializa hardware/Wi‑Fi e envia status inicialloop(): verifica toque, lê sensor e checa Wi‑Fi
Jefferson Carlos Lima