Le interruzioni dell’alimentazione elettrica sono eventi più frequenti di quanto si possa immaginare. Anche un semplice blackout di pochi minuti può causare disagi, perdita di dati, deterioramento degli alimenti conservati nei frigoriferi e nei congelatori o, nei casi più critici, compromettere la corretta conservazione di farmaci che richiedono temperature controllate.
Nella maggior parte dei casi ci si accorge del problema soltanto al proprio rientro in casa, quando ormai è troppo tardi per intervenire o valutare la durata effettiva dell’interruzione.
Da questa esigenza nasce il progetto: un sistema semplice, affidabile ed economico in grado di monitorare costantemente la presenza dell’alimentazione elettrica e di avvisare immediatamente l’utente in caso di anomalie. Grazie alla connettività Wi-Fi e a un’infrastruttura cloud dedicata, il dispositivo è in grado di rilevare sia la perdita di alimentazione sia il successivo ripristino del servizio, mantenendo l’utente sempre informato ovunque si trovi.
L’obiettivo è offrire una soluzione accessibile che trasformi una normale presa elettrica in uno strumento intelligente di monitoraggio, capace di aumentare la sicurezza domestica e fornire una maggiore tranquillità nella vita di tutti i giorni.
Realizzazione
Per rispondere a questa esigenza ho sviluppato un prototipo di sistema per il monitoraggio remoto dell’alimentazione elettrica, progettato per rilevare tempestivamente eventuali interruzioni di corrente e notificare automaticamente l’utente.
Il prototipo è composto dai seguenti elementi:
Dispositivo ESP32
Sito web in PHP
Canale Telegram
Il principio di funzionamento è piuttosto semplice: ogni 5 minuti l’ESP32 invia una richiesta di “ping” a uno script PHP installato su un dominio pubblico, trasmettendo il proprio ID univoco.
Lo script PHP riceve la richiesta e aggiorna il campo last_ping della relativa tabella MySQL, registrando l’ultimo contatto ricevuto dal dispositivo.
Un secondo script PHP, eseguito automaticamente tramite Cron ogni 15 minuti, controlla tutti i dispositivi contrassegnati come “online“. Se rileva un valore last_ping più vecchio di 15 minuti, presume che il dispositivo non sia più raggiungibile, probabilmente a causa di un’interruzione dell’alimentazione elettrica.
In questo caso il sistema invia una notifica a un canale Telegram preconfigurato e aggiorna lo stato del dispositivo impostandolo come “offline“, evitando così l’invio ripetuto di segnalazioni per lo stesso evento.
BLACKOUT RILEVATO
Casa Verona non invia heartbeat da almeno 5 minuti.
Viceversa, se durante il controllo vengono individuati dispositivi contrassegnati come “offline” che hanno inviato un last_ping negli ultimi 15 minuti, il sistema considera ripristinata la connessione e aggiorna il loro stato a “online“.
Contestualmente viene inviata una notifica al canale Telegram per segnalare il ritorno alla normalità, consentendo di sapere immediatamente che l’alimentazione elettrica è stata ripristinata e che il dispositivo è tornato operativo.
CORRENTE RIPRISTINATA
Casa Verona è tornato online.
Un esempio di messaggi ricevuti nel canale Telegram:
Evolutive
Creare una applicazione per iPhone e Android che sostituisca il canale Telegram e consenta la configurazione del dispositivo, ad esempio scegliere il router wifi e impostare la password, e ricevere le notifiche push dal server.
Il dispositivo sarà uno smart plug che consentirà di gestire 16A, questo disponde:
led rosso: nessuna connessione
led giallo: connessione solo verso il router wifi domestico
led verde: connessione fino al server
micro pulsante incassato: reset e reimpostazione del router wifi
Applicazione mobile
È prevista la realizzazione di un’applicazione per iOS e Android che sostituirà l’attuale sistema di notifiche basato su Telegram, offrendo un’interfaccia più intuitiva e funzionalità avanzate di configurazione e monitoraggio.
L’applicazione consentirà di:
Configurare il dispositivo durante la prima installazione.
Selezionare la rete Wi-Fi domestica e impostarne la password.
Associare uno o più dispositivi al proprio account.
Ricevere notifiche push in tempo reale in caso di interruzione o ripristino dell’alimentazione elettrica.
Visualizzare lo stato attuale dei dispositivi (online/offline).
Consultare lo storico degli eventi e delle segnalazioni.
Dispositivo Smart Plug
Il sistema sarà integrato in una presa intelligente (Smart Plug) con capacità di commutazione fino a 16 A, progettata per monitorare la presenza dell’alimentazione elettrica e comunicare con il server centrale tramite rete Wi-Fi.
Il dispositivo sarà dotato di tre LED di stato:
LED rosso: nessuna connessione Wi-Fi disponibile.
LED giallo: connessione attiva al router Wi-Fi domestico, ma impossibilità di raggiungere il server remoto.
LED verde: connessione correttamente stabilita sia con il router Wi-Fi sia con il server remoto.
Un micro pulsante incassato consentirà di eseguire operazioni di manutenzione e configurazione:
Pressione breve: funzioni diagnostiche o riavvio del dispositivo.
Pressione prolungata: cancellazione delle impostazioni Wi-Fi e avvio della procedura di riconfigurazione della rete domestica.
Allenarsi a tennis con un lancia palline è un metodo utile ed economico per fare progressi nel gioco.
Quello che trovo affascinante nel tennis è la sfida individuale, fatta di strategia, forza, sensibilità, coordinazione e gesti eleganti.
Praticare questa disciplina richiede allenamento costante e coordinazione; per ottenere risultati soddisfacenti sono necessarie molte ore di pratica sul campo e diverse lezioni con un maestro.
Il maestro di tennis è fondamentale per impostare correttamente il colpo, ma sono soprattutto le sessioni di allenamento a permettere di assimilare il posizionamento sulla palla, la coordinazione del corpo e i movimenti che portano all’esecuzione del tiro.
Senza questa pratica, si rischia di tornare dal maestro senza aver realmente compreso come eseguire il colpo, rendendo necessario correggere nuovamente l’impostazione durante la lezione.
Il lancia palline consente invece di ripetere il movimento molte volte, fino a padroneggiare il diritto, il rovescio e tutti i colpi fondamentali.
L’idea è quella di svilupparlo internamente, sia come sfida personale sia per avere la possibilità di evolverlo e personalizzarlo liberamente nel tempo.
La sua realizzazione richiede la progettazione sia della parte hardware, costituita dal telaio e dall’elettronica, sia della componente software.
La componente hardware ha l’obiettivo di lanciare le palline oltre la rete del campo da tennis con angolazioni, velocità e rotazioni (spin) configurabili. La parte software, invece, si basa su un microcontrollore incaricato di gestire la velocità dei motori e gli altri parametri di funzionamento del sistema.
In questo primo progetto è stato realizzato un prototipo che, come vedremo, si è rivelato fondamentale per individuare alcune criticità successivamente risolte nel secondo progetto.
Al momento della stesura di questo articolo, la fase costruttiva è ancora in corso. Per questo motivo verranno descritti i passaggi previsti nelle fasi successive e l’articolo sarà progressivamente aggiornato con ulteriori approfondimenti e sviluppi del progetto.
Costruzione del telaio
La struttura è composta da due cornici che, nella prima versione del progetto, erano state realizzate in alluminio e assemblate mediante staffe avvitate. Questa scelta era stata dettata principalmente dalla scarsa esperienza nell’utilizzo della saldatrice.
Tale soluzione ha però evidenziato alcuni limiti: durante il funzionamento, le vibrazioni tendevano ad allentare progressivamente le viti, compromettendo la stabilità e la rigidità dell’intera struttura.
Nel progetto successivo si è quindi optato per l’impiego di profili rettangolari in ferro 30 x 20 mm saldati tra loro. Questa soluzione garantisce una maggiore robustezza strutturale, riduce sensibilmente gli effetti delle vibrazioni e risulta più semplice da realizzare, poiché il ferro è un materiale particolarmente adatto alle operazioni di saldatura.
Sulla cornice interna sono montate le due ruote che hanno il compito di comprimere e lanciare la pallina da tennis.
La cornice interna è imperniata sulla cornice esterna, consentendo così la rotazione sul piano verticale (tra 0 e 60 gradi) e permettendo di variare l’angolo di lancio della pallina.
A sua volta, la cornice esterna è incernierata al telaio principale nella parte superiore e inferiore, consentendo la rotazione dell’intero gruppo di lancio sull’asse orizzontale, con un’escursione compresa tra -30° e +30°, e permettendo così il corretto orientamento del sistema.
Nella prima versione del progetto, la cornice interna era incernierata a quella esterna in posizione centrale. Questa configurazione ha però reso necessaria la realizzazione di un’incavatura nella struttura esterna, al fine di consentire alla ruota superiore di muoversi liberamente durante la rotazione.
Nella nuova versione, invece, il punto di rotazione è stato spostato nella parte superiore della cornice. Questa scelta ha permesso di mantenere lineare la struttura esterna, semplificandone la realizzazione e aumentandone la robustezza.
Come contropartita, durante il movimento di inclinazione verticale del gruppo di lancio, la parte inferiore della cornice interna sporge maggiormente all’esterno del box, richiedendo quindi una maggiore attenzione nella progettazione degli ingombri.
Le due ruote utilizzate nella versione iniziale avevano un diametro di 120 mm e consistevano in tipiche ruote in plastica con superficie esterna convessa. Questa conformazione non garantiva un’adeguata precisione nella direzione della pallina.
Per questo motivo si è deciso di sostituirle con ruote di diametro inferiore, pari a 100 mm.
Ruote usate per lanciare la pallinea da tennis
Inoltre, sulla parte esterna verrà applicato un elemento toroidale realizzato in PLA tramite stampa 3D, caratterizzato da un incavo studiato appositamente per guidare la pallina e migliorarne la precisione di lancio.
Un’ulteriore modifica ha riguardato il sistema di cadenza del lancio delle palline.
Nella versione iniziale era stato scelto l’utilizzo di due servomotori in alternativa al classico sistema basato su un disco rotante forato, utilizzato per il rilascio sequenziale delle palline tra le due ruote. I servomotori erano collegati a un tubo tramite supporti realizzati in stampa 3D; ciascun servo azionava una piccola paletta che, in modo sincronizzato, regolava la discesa delle palline verso il sistema di lancio.
Servo inserito nel supporto e paletta per il rilascio della pallina nel meccanismo di lancio
Tuttavia, entrambe le soluzioni presentavano dei limiti: la pallina entrava tra le ruote principalmente per effetto della gravità, rendendo difficile il controllo in condizioni di inclinazione elevata e impedendo il raggiungimento di angoli di lancio estremi.
La nuova soluzione prevede invece l’utilizzo di un solenoide assiale, un componente in grado di generare lo spostamento di un pistoncino mediante una breve attivazione elettrica. Il pistoncino verrà quindi utilizzato per spingere attivamente la pallina tra le due ruote, consentendo il funzionamento anche a inclinazioni più elevate.
Solenoide assiale usato per spingere la pallina tra le ruote
La corrente massima assorbita durante l’azionamento del solenoide è di circa 400 mA per ogni impulso, un valore del tutto accettabile per l’applicazione. È infatti importante che, nel momento in cui la pallina viene spinta tra le ruote, non si verifichino cali significativi di tensione o corrente che possano ridurre la velocità di rotazione dei motori e, di conseguenza, la potenza di lancio della pallina.
Considerando che il sistema è alimentato da una batteria per motociclo da 9 Ah, la riserva energetica disponibile dovrebbe essere più che sufficiente a garantire il corretto funzionamento dell’intero dispositivo.
Nell’eventualità in cui l’assorbimento del solenoide o la compressione della pallina tra le ruote dovessero causare una riduzione della velocità di rotazione dei motori e, conseguentemente, della velocità di lancio, si potrebbe valutare l’impiego di un volano.
L’aggiunta di una massa volanica consentirebbe infatti di accumulare energia cinetica durante il funzionamento e di rilasciarla nei brevi istanti in cui il sistema è soggetto a maggiori richieste di potenza, contribuendo a mantenere più costante la velocità delle ruote e quindi la regolarità dei lanci.
Le staffe utilizzate per fissare il motore su un lato della cornice interna e il cuscinetto sul lato opposto sono state realizzate mediante stampa 3D, così da ottenere componenti perfettamente adattati alle dimensioni e alle esigenze specifiche del progetto.
Staffe per il fissaggio dei motori e dei cuscinetti
Si è riscontrato tuttavia un problema: le staffe realizzate in PLA non garantivano una rigidità sufficiente. Le elevate velocità di rotazione delle ruote generavano infatti vibrazioni che venivano amplificate dalla flessibilità del materiale, compromettendo la stabilità dell’intera struttura e influenzando negativamente la precisione del sistema di lancio.
Fissaggio della ruota al cuscinettoFissaggio della ruota al motore
Per questa ragione, nel nuovo telaio si è deciso di utilizzare profili in ferro. Una coppia di tali profili verrà saldata direttamente alla cornice interna, mentre una seconda coppia sarà invece fissata tramite viti.
Questa soluzione consente di regolare con maggiore precisione la distanza tra le ruote, ottimizzando il grado di compressione della pallina durante il passaggio tra le stesse e migliorando così l’efficacia e la consistenza del lancio.
Centralina
Il lanciapalline richiede una parte elettronica necessaria per il controllo della velocità delle ruote, l’attivazione del solenoide assiale e per l’orientamento del dispositivo di lancio.
Nel prototipo iniziale erano presenti un interruttore per l’accensione della centralina, un display LCD 20×4 che consentiva la navigazione nei menu tramite un joystick, un pulsante per l’avvio e l’arresto del lancio delle palline, un LED verde e uno rosso per indicare lo stato di funzionamento del sistema e un buzzer acustico utilizzato per segnalare l’imminente inizio della sequenza di lancio.
Contenuto della centralina
Lo schema elettronico prevede l’utilizzo di un microcontrollore ESP32 a 38 pin, scelto per l’elevato numero di interfacce disponibili, la capacità di elaborazione e la connettività integrata, caratteristiche che lo rendono particolarmente adatto alla gestione delle funzionalità del lanciapalline.
Schema del microcontrollore
Si è inoltre reso necessario l’utilizzo di un expander di GPIO (MCP23017), poiché il numero di porte disponibili sul microcontrollore non era sufficiente per interfacciare tutti i componenti richiesti dal progetto.
Schema dell’expander di gpio
L’expander MCP23017 viene interfacciato al microcontrollore tramite il bus I²C e configurato tramite l’indirizzo 0x00. Questa soluzione consente di espandere il numero di ingressi e uscite disponibili utilizzando solamente due linee di comunicazione, senza occupare ulteriori porte GPIO del microcontrollore.
Tuttavia l’expander presenta alcuni limiti. Ad esempio, non sono indicati per la gestione di segnali ad alta velocità; per questo motivo vengono generalmente utilizzati per interfacciare componenti a commutazione lenta come pulsanti, LED, solenoidi assiali e relè.
Inoltre, dispone di due gruppi di porte (A e B) in grado di gestire una corrente massima di circa 125 mA per gruppo e 20 mA per singola porta. Tale capacità risulta spesso insufficiente per pilotare direttamente carichi quali LED multipli o relè.
Per questo motivo si ricorre frequentemente all’utilizzo di componenti di interfaccia, come transistor o driver dedicati, in grado di gestire correnti più elevate. Nel caso specifico dei tre LED (rosso, giallo e verde), viene utilizzato un ULN2003, un driver di potenza a transistor Darlington usato per pilotare carichi che un microcontrollore o un chip GPIO (come il MCP23017) non possono alimentare direttamente.
Inoltre, questi dispositivi non sono indicati per la gestione di segnali ad alta velocità; per questo motivo vengono generalmente utilizzati per interfacciare componenti a commutazione lenta come pulsanti, LED, solenoidi assiali e relè.
Per il pilotaggio dei due motori, nella fase iniziale del progetto è stato erroneamente utilizzato un driver L298N. Tale soluzione si è però rivelata inadeguata, in quanto il driver era fortemente sottodimensionato rispetto alla corrente richiesta dai due motori 775, soprattutto nelle fasi di avviamento e sotto carico.
L298N – driver per il controllo della velocità di una coppia di motori
Questo ha reso necessario individuare una soluzione di pilotaggio più idonea, in grado di gestire correnti significativamente più elevate e garantire un funzionamento affidabile del sistema.
La scelta è quindi ricaduta su un regolatore di potenza PWM da 120 W, ritenuto adeguato per il pilotaggio dei motori 775 utilizzati nel progetto. Questa soluzione consente di regolare la velocità di rotazione delle ruote in modo efficiente, garantendo al contempo una capacità di gestione della corrente compatibile con le esigenze del sistema.
Regolatore di potenza PWM da 120 W
La regolazione della velocità dei motori, nel modulo PWM scelto, avviene originariamente tramite un potenziometro da 10 kΩ. Questa soluzione non è però compatibile con il tipo di controllo previsto dal progetto, nel quale la velocità deve essere gestita digitalmente dall’ESP32.
Per questo motivo si è deciso di sostituire il tradizionale potenziometro con un encoder rotativo KY-040. A differenza di un potenziometro, l’encoder non imposta direttamente un valore analogico, ma genera impulsi che vengono letti dal microcontrollore. In questo modo il valore di velocità desiderato viene acquisito dall’ESP32, che può elaborarlo e applicarlo secondo la logica di funzionamento del sistema, consentendo una gestione più flessibile e integrata dei parametri di lancio.
KY-040 – encoder rotativo
Quando l’albero dell’encoder viene ruotato, il dispositivo genera due segnali digitali, denominati CLK (clock) e DT (data), che vengono acquisiti dal microcontrollore. Analizzando la sequenza temporale di tali segnali, l’ESP32 è in grado di determinare sia l’avvenuta rotazione sia il verso della stessa (orario o antiorario).
L’encoder KY-040 integra inoltre un pulsante che viene azionato premendo il perno rotante. Questa funzionalità consente di utilizzare un unico componente sia per la variazione dei parametri sia per la loro conferma.
Il funzionamento adottato nel progetto prevede quindi la modifica del valore desiderato mediante la rotazione della manopola dell’encoder e la successiva conferma tramite la pressione del pulsante integrato (SW).
Lo schema elettrico prevede che i tre segnali dell’encoder (CLK, DT e SW) siano mantenuti a livello logico alto mediante resistenze di pull-up da 8,2 kΩ, come mostrato nello schema seguente.
Schema elettrico per interfacciare il KY-040
Poiché il regolatore PWM richiede un tradizionale potenziometro analogico da 10 kΩ per l’impostazione della velocità, si è reso necessario individuare una soluzione che consentisse di interfacciarlo con il sistema di controllo digitale basato su ESP32.
A tale scopo è stato utilizzato un potenziometro digitale MCP42010, un circuito integrato dotato di due canali indipendenti da 10 kΩ, controllabili tramite interfaccia SPI. Il dispositivo
consente di convertire i valori digitali inviati dal microcontrollore in una resistenza variabile, emulando di fatto il comportamento di un tradizionale potenziometro.
MCP42010 – potenziometro digitale
In questo modo l’ESP32 può ricevere i comandi dell’encoder rotativo KY-040, elaborare il valore di velocità selezionato dall’utente e impostare di conseguenza la resistenza del MCP42010. Dal punto di vista del regolatore PWM, il potenziometro digitale si comporta esattamente come il potenziometro originale da 10 kΩ, consentendo una regolazione completamente elettronica della velocità dei motori.
Nello schema seguente è possibile osservare i collegamenti dell’interfaccia SPI provenienti dall’ESP32 verso il chip MCP42010, utilizzati per la configurazione del potenziometro digitale. Sono inoltre visibili le tre connessioni che replicano i terminali di un tradizionale potenziometro (A, W e B), attraverso i quali il dispositivo fornisce la resistenza variabile richiesta dal regolatore PWM.
Schema del potenziometro digitale doppio da 10k ohm
La centralina è dotata di un display LCD da 20 colonne e 4 righe che consente la visualizzazione di un menu navigabile tramite un mini joystick. Attraverso tale interfaccia è possibile configurare tutti i principali parametri di funzionamento del lanciapalline, tra cui la velocità dei motori, gli angoli di lancio orizzontale e verticale, la cadenza di rilascio delle palline e altre impostazioni operative.
Come già descritto, l’utilizzo dell’expander MCP23017 si è reso necessario per compensare il numero limitato di GPIO disponibili sull’ESP32. Anche il display LCD tradizionale richiede infatti un elevato numero di collegamenti elettrici, rendendo poco efficiente il suo collegamento diretto al microcontrollore.
Per questo motivo è stata adottata un’interfaccia I²C per il display LCD, che consente di ridurre drasticamente il numero di connessioni necessarie. Grazie a questa soluzione, il display può essere collegato utilizzando le stesse linee I²C già impiegate da altri dispositivi del sistema, semplificando il cablaggio e preservando le porte GPIO disponibili per ulteriori funzionalità.
Come già accennato, la navigazione all’interno del menu viene effettuata tramite un joystick. Poiché ogni direzione di movimento e la pressione del pulsante integrato corrispondono a ingressi distinti, il collegamento diretto avrebbe richiesto l’utilizzo di numerose porte GPIO del microcontrollore.
Per ridurre il numero di ingressi necessari, si è scelto di utilizzare una rete a partitore resistivo. Questa soluzione consente di collegare tutti i comandi del joystick a un unico ingresso analogico dell’ESP32.
Il principio di funzionamento è semplice: ogni volta che la leva viene spostata in una determinata direzione oppure premuta, viene selezionata una diversa combinazione di resistenze. Di conseguenza, il partitore genera in uscita un differente livello di tensione, che viene letto dal convertitore analogico-digitale del microcontrollore.
A ciascun comando del joystick corrisponde quindi un intervallo di tensione ben definito. L’ESP32, misurando il valore analogico presente in ingresso, è in grado di riconoscere quale direzione è stata selezionata o se il pulsante è stato premuto. Nel progetto i livelli di tensione sono stati dimensionati in modo da risultare approssimativamente multipli di una frazione della tensione di alimentazione pari a 3,3 V, garantendo una distinzione affidabile tra i vari comandi.
Schema del partitore resistivo
Come anticipato in precedenza, per il lancio delle palline viene utilizzato un solenoide assiale da 12 V con una forza nominale di 25 N. Questo componente richiede, durante l’attivazione, una corrente relativamente elevata che non può essere erogata direttamente dalle uscite dell’ESP32.
Per questo motivo il pilotaggio del solenoide viene affidato a un MOSFET di tipo IRLZ44N. Il microcontrollore controlla il terminale di gate del MOSFET mediante un segnale a bassa corrente, mentre il transistor si occupa di commutare la corrente necessaria all’alimentazione del solenoide.
In questo modo è possibile utilizzare un segnale digitale proveniente dall’ESP32 per controllare un carico a 12 V e ad assorbimento elevato, senza sovraccaricare le uscite del microcontrollore e garantendo un funzionamento affidabile dell’intero sistema.