Smart Pot Sensor: IoT applicato all’agricoltura (Parte 2)

Smart Pot Sensor

Anche il settore agroalimentare è interessato dall'evoluzione tecnologica dell’Internet delle Cose (IoT), con innovazioni di tecnologie produttive, processi e filiera in generale. Nel precedente articolo abbiamo iniziato a progettare un sensore per monitorare i parametri vitali di una pianta, sia essa in un vaso in balcone sia in giardino. Questo oggetto è stato battezzato Smart Pot Sensor, ma per essere veramente smart e per abbracciare la filosofia IoT ha bisogno di connettività.

Introduzione

In questo articolo andremo ad upgradare il nostro Smart Pot Sensor dotandolo di una connettività di tipo wireless ed in particolar modo una connessione Wi-Fi attraverso un oggetto che nell'ambiente Arduino è molto conosciuto: il modulo ESP-01 (rappresentato in Figura 1).

Figura 1. Modulo di comunicazione Wi-Fi ESP-01

Questo piccolissimo oggetto è un modulo wi-fi completo basato sul chip ESP8266, un microcontrollore progettato proprio per comunicazioni Wi-Fi dalla ESPRESSIF SYSTEMS (in Figura 2 è riportato il diagramma a blocchi). Il microcontrollore ESP8266 include al proprio interno un processore RISC Tensilica L106 a 32 bit, caratterizzato da un consumo energetico estremamente basso e velocità di clock massima di 160 MHz. Il chip è dotato anche di un sistema operativo in tempo reale (RTOS) che integra lo stack Wi-Fi. Nonostante il sistema operativo precaricato, la potenza di calcolo a disposizione dei progettisti è ancora generosa, mentre l'architettura utilizzata consente un ottimo risparmio energetico (per applicazioni IoT o dispositivi elettronici indossabili). Infine, il chip offre tre modalità di funzionamento (modalità attiva, modalità sleep e modalità deep sleep) che si adattano facilmente alle diverse applicazioni per cui è stato progettato.

Figura 2. Diagramma a blocchi del microcontrollore ESP8266 (fonte: datasheet ufficiale)

Le altre caratteristiche del modulo ESP-01 sono:

  • Wi-Fi a 2.4 GHz secondo lo standard 802.11b/g/n
  • UART/I2C/HSPI/Ir comunicazioni seriali
  • GPIO e PWM

Figura 3. ESP-o1 Tabella PINOUT

Non mi dilungo particolarmente sulle funzionalità del componente o della board ESP-01, che già sono state largamente discusse tra gli articoli del blog.

Il progetto (fase 2)

Partendo dal progetto che abbiamo già realizzato nel precedente articolo (e schematizzato in Figura 4) passiamo ora ad implementare la connettività wireless creandoci un Web Server. L'idea di base è realizzare un'estensione del monitor seriale, facendo in modo che tali informazioni, anziché finire all'interno della console dell'IDE di Arduino, vengano mostrate in una pagina web, il cui accesso avviene tramite la rete Wi-Fi e l'indirizzo IP generato dal modulo ESP-01.

Figura 4. Schema dei collegamenti ai sensori

Il modulo ESP-01, per chi non lo sapesse, non è semplicemente un modulo di estensione per Arduino (come le shields) ma è una vera e propria scheda di sviluppo autonoma cosiddetta "intelligente". Infatti, il chip ESP8266 che troviamo a bordo del modulino è un microcontrollore che va programmato. Il successo di questo modulo, oltre ad essere economico, è anche dovuto alla compatibilità con l'IDE Arduino e alla presenza di librerie complete all'interno dell'IDE stesso (ovviamente le librerie devono essere scaricate). Inoltre, anche per la programmazione, può essere utilizzato un convertitore ad hoc oppure, attraverso la schematizzazione riportata in Figura 5, è possibile programmare il modulo sfruttando la seriale di Arduino (e ponendo in reset la scheda Arduino).

Figura 5. Schema di collegamento Arduino <-> ESP01 per programmazione

Dunque, avremo in definitiva due software:

  • il primo per dotare il modulo ESP-01 di una logica. Di fatto il software implementerà le funzionalità per creare e gestire efficacemente la rete Wi-Fi. Il codice che vi propongo utilizza il modulo in configurazione access point, ossia crea una rete ad hoc (con tanto di SSID e password configurate nel codice) a cui ci si può accedere attraverso l'indirizzo IP. In genere, in questa configurazione l'indirizzo IP che si autoassegna il modulo ESP-01 è 192.168.4.1. Un'altra funzionalità del modulo sarà quella di rimanere in ascolto sulla seriale dalla quale riceve le informazioni dei sensori attraverso Arduino, ed usarle per completare il contenuto della pagina home del Web Server;
  • il secondo software è un upgrade del software già realizzato nel precedente articolo. A differenza del precedente, questo software aggiunge la funzionalità di SoftwareSerial, ossia un'ulteriore comunicazione seriale che viene gestita non più a livello hardware ma a livello software. Anche in questo caso la community Arduino viene a facilitarci il compito. Infatti, è disponibile una libreria nell'IDE di Arduino che facilita al massimo l'implementazione di una seriale gestita a livello software.

Schema circuito

In Figura 6 è riportato lo schema circuitale realizzato che integra il progetto dell'articolo precedente (ossia i 4 sensori) e il modulo di comunicazione Wi-Fi. Anche in questo caso, lo schema di interconnessione è molto semplice e immediato. E' possibile realizzarlo con l'ausilio di una breadboard (o eventualmente di una shield di prototipazione). Per il modulo ESP-01 sono disponibili anche degli adattatori per la breadboard che facilitano ancora di più le interconnessioni. Da notare, come il modulo ESP-01 sia alimentato questa volta dalla tensione di uscita 3.3 V anziché la 5 V. Questo perché il modulo è progettato per lavorare nel range di tensioni di alimentazione 3/3.6 V e non va assolutamente collegato all'alimentazione a 5 V.

Figura 6. Schema di collegamento Arduino <-> ESP01 per utilizzo Software Serial

Scelte di programmazione

Prima di mostrarvi i due codici (per ESP-01 e per Arduino), riportati integralmente nei successivi paragrafi, voglio riassumervi alcune scelte tecniche adottate durante la programmazione:

    • Per evitare errate gestioni è consigliato far lavorare le seriali dello sketch Arduino a velocità differenti. Nella fattispecie ho aggiornato la seriale del monitor a 38400 e ho impostato la SoftwareSerial a 57400, che corrisponde anche alla massima frequenza di lavoro consigliata. Inoltre, per la seriale software ho utilizzato i pin 10 e 11. Se nell'implementazione di questo progetto non utilizzate Arduino UNO, ma un'altra versione, vi consiglio di prestare massima attenzione alla scelta dei pin da utilizzare per la seriale. Un ottimo aiuto è dato direttamente dalle indicazioni riportate nel materiale su Arduino.cc, poiché non tutti i pin di I/O presentano la funzionalità di interrupt esterno necessario per il corretto funzionamento della libreria SoftwareSerial.
    • Anche in questo caso è stata creata una variabile "vitality" nel software per ESP-01 che serve a visualizzare in sequenza i simboli |\-/-. Rispetto al progetto precedente, questa è fondamentale per capire se la pagina web visualizzata si sta aggiornando regolarmente.
    • Rispetto alla console, la pagina web può mostrare una grafica migliore e più accattivante utilizzando il codice html. Però il mio consiglio è di non strafare, in quanto più codice si aggiunge e più la comunicazione va a rilento. Per ottimizzare, ho creato una specie di template con l'header iniziale direttamente nel software del modulo ESP-01, mentre attraverso la seriale viene inviato un testo con pochi tag di formattazione html.
    • Ho utilizzato anche la gestione del blink del LED a bordo del modulo ESP-01 per avere una diagnostica del corretto funzionamento del modulo.

[...]

ATTENZIONE: quello che hai appena letto è solo un estratto, l'Articolo Tecnico completo è composto da ben 2282 parole ed è riservato agli ABBONATI. Con l'Abbonamento avrai anche accesso a tutti gli altri Articoli Tecnici e potrai fare il download in formato PDF eBook e Mobi per un anno. ABBONATI ORA, è semplice e sicuro.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend