PREMESSA
Chi si occupa di automazione per lavoro come me, molto spesso avrà avvertito la necessità di controllare i propri dispositivi programmabili da remoto, dovendo fare spesso i conti con la totale mancanza di infrastrutture cablate atte a permettere questo genere di implementazioni. In questi casi la soluzione WiFi si rivela sempre l'ancora di salvezza. Cercando soluzioni professionali in rete però, è più che mai consono imbattersi in dispositivi PLC programmabili che richiedono la conoscenza del ladder o che comunque, richiedano di perdere tanto tempo per apprendere linguaggi di programmazione proprietari di nuova generazione, che spesso, oltre a non permettere al progettista di avere completa padronanza dell'hardware, non ne consentono talvolta nemmeno la profonda personalizzazione.
Se aggiungiamo inoltre, i costi discutibili richiesti per accedere a suites di programmazione complete (quasi mai fornite di default con gli hardware reperibili sul mercato), ecco nascere nei geek come me l'innata necessità di estraniarsi da quel mondo fatto di regole inviolabili e precisi paletti monetari, progettando e costruendo dal nulla un piccolo hardware universale che possa essere programmato attraverso i comuni linguaggi in uso anche ai non professionisti. Ovviamente mi riferisco al C, al Basic e al Pascal, intesi nelle loro versioni strutturali, orientate ai microcontrollori di uso comune. Sebbene nel mondo lavorativo sia un profondo estimatore, nonché un utilizzatore degli ARM (soprattutto quelli prodotti da ST e NXP), la semplicità dei microcontrollori Microchip PIC, mi ha portato ancora una volta a sceglierli per sviluppare questo genere di applicazione.
EASY PLC WIFI
Ho progettato e poi costruito questo dispositivo per sfruttare le potenzialità del WiFi nel controllo remoto dei dispositivi elettronici di casa. Spinto dal desiderio di automatizzare il più possibile l'appartamento in cui vivo, espandendo così le potenzialità dell'impianto domotico già esistente, ho provveduto ad installare Easy PLC WiFi per controllare il riscaldamento e la climatizzazione di casa, nonché per monitorare i parametri ambientali (come temperatura e umidità) degli ambienti in cui vivo, nonché per verificare lo stato di alcuni sensori o di altre utenze installate. Spinto da queste esigenze, pertanto, ho dotato il dispositivo delle seguenti caratteristiche:
♦ Interfaccia WiFi con Web Server integrato;
♦ Interfaccia USB per l'utilizzo di PC e una App di configurazione di base;
♦ N.1 porta di controllo OneWire per gestire una rete di sensori di temperatura DS18x20 oppure un singolo AM2302 (DHT22);
♦ N.4 ingressi digitali optoisolati (max 24V);
♦ N.4 uscite a relè con contatto 12V/20A;
♦ N.1 RTCC interno (data e ora) con batteria tampone per controlli temporizzati;
♦ 1024 bytes di memoria non volatile EEPROM per la memorizzazione dei parametri di programma;
♦ N.1 uscita di controllo per driver motori passo/passo (Enable + Direction + Pwm Step);
♦ Alimentazione 12Vcc (appositamente dimensionata per implementare Easy PLC WiFi anche nei camper e in ambiente automotive);
♦ Porta di programmazione MCU-ICSP interfacciabile con MikroProg di Mikroe.
PROGETTO E REALIZZAZIONE DEL DISPOSITIVO
Il progetto di EASY PLC WiFi ha richiesto alcuni giorni di lavoro, nonché alcuni firmware test, per delineare correttamente la configurazione finale dell'hardware. Soprattutto la parte radio WiFi, ha richiesto uno studio approfondito per la collocazione del modulo transciever sul PCB, onde verificare il corretto orientamento del lobo di emissione dell'antenna, la corretta polarizzazione della stessa, nonché l'impatto della seppur piccola emissione elettromagnetica sull'ambiente circostante e sull'hardware di sistema stesso. Solo a quel punto è stato possibile elaborare con DipTrace lo schema elettrico definitivo del dispositivo, convertito successivamente, dopo un nuovo e doveroso nuovo controllo, nel PCB finale. Nonostante la complessità e le dimensioni contenute che ho voluto riservare alla scheda, sono bastati due strati per contenere tutti i componenti elettronici necessari al progetto. Una volta completato lo sbroglio del PCB, con DipTrace è stato possibile valutarne l'aspetto 3D e dallo stesso poi, ricavare il file grafico "STEP" utilizzabile da qualunque altro CAD di disegno tridimensionale per le successive elaborazioni. Attraverso Freecad, ho così provveduto a plasmare il contenitore plastico attorno alla scheda, materializzandolo poi in PLA con la stampante 3D del mio laboratorio di casa. Il contenitore, realizzato in due pezzi, è stato opportunamente sagomato per permettere ai connettori della scheda di affacciarsi all'esterno.
PARTICOLARE DEL FRONT PANEL
Su front panel trovano posto i connettori di ingresso segnale e i dispositivi di segnalazione. La porta "USB" consente l'interfacciamento di Easy PLC Wifi con l'APP di controllo installata su PC. Attraverso questa utility è possibile programmare il PLC WiFi con tutti i parametri necessari al suo funzionamento integrato, all'interno di una rete wireless. Il led rosso "SYS" è dimensionato dal firmware per lampeggiare una volta al secondo, evidenziando così l'esecuzione attiva del programma gestionale interno. La porta "ICSP" permette di programmare la MCU del dispositivo attraverso un comune programmatore di Microchip PIC. Il pinout, in questo caso, è disegnato per interfacciarsi elettricamente con il MikroProg di Mikroe. La porta "ONWIRE" permette di accedere, attraverso l'apposito bus, sia ai sensori di temperatura della famiglia Dallas DS18x20, che ai sensori di temperatura e umidità della famiglia DHT22. La porta "INPUTS", infine, permette di controllare lo stato logico di 5 ingressi digitali opportunamente optoisolati. I segnali applicabili non devono eccellere i 24V DC.
PARTICOLARE DEL REAR PANEL
Su rear panel trovano posto i connettori di controllo delle uscite. Alla porta "OUTPUTS" sono collegati i contatti normalmente aperti di 5 piccoli relè. I loro scambi consentono il pilotaggio di carichi alimentati a 12V con correnti massime di 20A, ideali per comandare piccoli carichi o eventualmente altri relé in cascata per il controllo di carichi molto più sostenuti. Alla porta "STEPPER", invece, possono essere collegati i pin di controllo dei più comuni driver di motori passo passo reperibili sul mercato, come ad esempio il 2DM542 o il più potente 2DM860H. Nel pinout di questa porta, infatti, sono disponibili i segnali di controllo digitale "ENABLE" e "DIRECTION" destinati rispettivamente ad abilitare il funzionamento del driver e a selezionare il senso di rotazione del motore stesso, nonché il pin di controllo "STEP" modulabile in PWM, che consente sia di discernere la velocità di rotazione del motore, sia di stabilire con un numero prestabilito di impulsi, lo spostamento angolare dello stesso. Alla porta "PWR", infine, è applicata la tensione di alimentazione di 24VCC per il funzionamento complessivo del PLC. Al suo interno è presente un piccolo alimentatore switching, che dalla tensione di alimentazione applicata alla porta PWR, ricava tutte le tensioni necessarie al funzionamento delle unità interne, come ad esempio i 12V per l'apparato di uscita a relè e i 5V per i sensori ambientali e i 3,3V per il funzionamento dell'unità logica e WiFi. Una piccola batteria tampone a 3V, infine, assicura il mantenimento dell'ora e della data nell'RTC di sistema, anche quando l'alimentazione elettrica principale è sospesa.
IL CUORE DEL SISTEMA
Il motore di Easy PLC WiFi è costituito da una MCU Microchip a 8 bit siglata PIC18F46K22. Questa, oltre a controllare gli ingressi, le uscite digitali e tutte le periferiche installate (RTC e sensori ambientali), supporta il funzionamento del piccolo web server integrato, che nel complesso rappresenta l'interfaccia di controllo utente del dispositivo. La comunicazione WiFi è garantita da un performante modulo di controllo integrato e commerciato da Microchip, siglato: MRF24WB0MA. Questo dispositivo, oltre a contenere l'interfaccia radio transceiver a 2,4GHz, permette la gestione in autonomia del traffico TCP/IP stack della rete wireless, sostenendo la cifratura delle comunicazioni secondo i protocolli di criptazione più diffusi, come ad esempio il WEP, il WPA e WPA2. Il codice html destinato a compilare la pagina web, visualizzabile e controllabile dall'utente con un comunissimo browser, invece, è memorizzato insieme al programma di gestione generale, nella FLASH della MCU. Ho scelto il modulo MRF24WB0MA per la sua semplicità di utilizzo e per la possibilità di interfacciarlo a qualsiasi MCU, attraverso un vasto pinout di controllo che spazia dalla seriale TTL UART, al protocollo SPI.
CONFIGURAZIONE DI SISTEMA
La configurazione dei dati principali di sistema di Easy PLC Wifi avviene attraverso la porta USB di cui il dispositivo è dotato. Con l'apposita APP che ho realizzato in .net, infatti, è possibile inserire tutti i parametri di rete necessari al web server per collegarsi a qualsiasi access-point, come ad esempio: l'indirizzo IP, l'indirizzo della maschera di sottorete e del gateway, il MAC address e la chiave criptata. Attraverso l'APP, inoltre, è possibile programmare l'ora e la data del RTC di bordo, scrivere e testare l'aspetto e le funzionalità della pagina HTML di controllo che verrà visualizzata nel browser ad ogni richiesta utente e infine, verificare il corretto funzionamento del firmware, attraverso la system console.
LA FUNZIONE WEB SERVER
Ho realizzato Easy PLC Wifi con lo scopo di rendere il controllo elettronico dei più svariati dispositivi web, il più semplice e intuibile possibile. Il cuore del sistema, il PIC18F46K22, è programmabile con i più disparati compilatori disponibili sul mercato, come ad esempio il MikroC o il MikroBasic di Mikroe. Attraverso la porta ICSP, infine, è possibile riversare il codice direttamente nella flash del microcontrollore, mettendolo in esecuzione in pochi secondi. Attraverso il compilatore, inoltre, è possibile scrivere sia il codice necessario al funzionamento dell'hardware (qui sotto uno spezzone del codice scritto in MikroBasic) ...
... sia il codice HTML condito con tutto lo JAVASCRIPT che si rende necessario. Come abbiamo visto in precedenza, la stessa funzionalità è disponibile eventualmente, anche dall'APP di controllo. La dimensione massima del codice destinato alla pagina web del server non deve eccellere i 3,5 kbyte.
Dopo aver configurato Easy PLC WiFi tramite l'apposita APP, caricato il firmware di controllo e atteso successivamente il tempo necessario alla connessione all'access point, con qualsiasi browser sarà possibile richiamare la pagina web del dispositivo. Questo avverrà semplicemente digitando l'indirizzo IP precaricato in precedenza, in questo caso: http://192.168.1.116 nella sezione apposita destinata all'URL. In pochi secondi apparirà la schermata predefinita dal codice. Come si può notare, nella pagina web sono presenti i valori ambientali di "Temperatura" e "Umidità", rilevati attraverso la porta OnWire del PLC (al quale in quel momento è connesso un sensore DHT22), lo stato degli ingressi del PLC (in quel momento tutti a OFF) e lo stato delle uscite (anch'esse tutte a OFF). Per cambiare lo stato di quest'ultime sarà sufficiente cliccare con il mouse sul link "Accendi/Spegni" per variarne istantaneamente lo stato logico.
Il controllo remoto di Easy PLC WiFi è possibile da qualsiasi sistema operativo (Microsoft Windows, Linux, Android, ecc.) che disponga di un normalissimo internet browser. Qualora Easy PLC Wifi sia collegato a un router, con la giusta configurazione delle porte di accesso, potrebbe essere controllato anche da internet, da qualsiasi posto al mondo in cui esista un accesso al web.