Sistema Domotico STM32 con App Android per Idroponica o giardino: Controllo Completo di Luci Irrigazione e Clima
- Postato 12 gennaio 2025
- Elettronica
- By Daniele Baglivo
- 634 Views
Un sistema domotico completo per idroponica,orto,giardino o serra che integra hardware STM32 websocket e un'app Android personalizzata. Il sistema permette il controllo totale dell'ambiente: illuminazione, irrigazione, temperatura e ventilazione, tutto gestibile da remoto attraverso un'interfaccia mobile intuitiva.
In questo articolo spiegherò in dettaglio il sistema di controllo domotico che ho sviluppato per gestire una coltivazione indoor idroponica o per sistemi di irrigazione giardino,ecc... Il sistema è controllabile tramite un'app client sviluppata con Ionic/Vue.js che comunica con il microcontrollore stm32 attraverso WebSocket.
Il controllo puo` avvenire sia in locale,ma anche da remoto, ma in quest'ultimo caso bisogna avere un ip statico o un servizio come noip. Oggi vedremo solo la parte in locale, ma eventualmente faro` un articolo dedicato per la gestione da remoto.
Caratteristiche Principali
- Controllo luci con timer
- Gestione pompe d'irrigazione con timer multipli
- Controllo temperatura e umidità
- Gestione ventilazione
- Controllo riscaldamento
- Interfaccia app per il controllo remoto
- Sincronizzazione oraria via NTP
- Facilmente ampliabile con altre uscite
Hardware Necessario
- STM32 (Blue Pill)
- Modulo Ethernet W5500
- Sensore DHT22 (temperatura e umidità)
- Sensore umidità terreno
- 5 relè per il controllo di:
- Luci
- Pompe (x2)
- Ventilazione
- Riscaldamento
Librerie Utilizzate
Struttura del Codice
1. Gestione WebSocket
Il sistema utilizza WebSocket per la comunicazione real-time:
void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length)
Gestisce:
- Connessione/disconnessione client
- Autenticazione token
- Comandi di controllo
- Aggiornamento stati
2. Struttura Dati
Il sistema memorizza le configurazioni nella struttura Settings:
- Stati manuali/automatici
- Timer per luci e pompe
- Soglie temperatura/umidità
- Stati correnti dei relè
3. Controllo Dispositivi
Tre funzioni principali gestiscono il sistema:
void controlLights() // Gestione illuminazione
void controlPump() // Gestione pompe irrigazione
void controlEnvironment() // Gestione clima
4. Gestione Timer
Supporta:
- Timer giornaliero per le luci
- Timer multipli per ogni pompa
- Controllo automatico ventilazione/riscaldamento basato su sensori
5. Persistenza Dati
Salvataggio configurazioni in memoria Flash:
void saveSettings()
void loadSettings()
6. Sincronizzazione NTP
Mantiene l'ora sincronizzata:
void syncTime()
void setupNTP()
Funzionamento
Inizializzazione
- Caricamento configurazioni
- Setup sensori e relè
- Connessione rete
- Avvio WebSocket server
- Sincronizzazione ora
Loop Principale
- Lettura sensori (DHT22, umidità suolo)
- Controllo dispositivi
- Gestione WebSocket
- Salvataggio configurazioni modificate
Logica di Controllo
Verifica:
- Timer programmati
- Soglie sensori
- Stati manuali
- Condizioni ambientali
Schema Hardware:
App android:
Conclusioni
Questo sistema offre un controllo combinando:
- Automazione basata su timer
- Controllo ambientale
- Gestione remota
- Persistenza delle configurazioni
- Configurazione flessibile
Il codice è strutturato in modo modulare e può essere facilmente esteso per aggiungere nuove funzionalità.
Il sistema e` ancora in fase di sviluppo e in futuro non escludo nuovi aggiornamenti, in ogni caso se volete partecipare con suggerimenti e nuove idee,fatecelo saper nei comenti del nostro canale youtube..
Vi metto a disposizione il codice che ho scritto con il relativo apk android, potete scaricarlo qui Stm32_websocket.zip
Caricheremo a breve il video sul nostro canale AdbProject che mostra il funzionamento del sistema. Se avete il piacere ci farebbe molto piacere se mettete un bel like e vi inscrivete al nostro canale, grazie!