Centralina per gestione Presepio del Duomo di Pieve di Soligo

Descrizione Generale

Dopo aver utilizzato per diversi anni un sistema di centraline acquistate, abbiamo notato che questo sistema presentava dei limiti sia per quanto riguarda l’utilizzo di certi componenti elettrici (led, trasformatori di potenza…), sia per quanto riguardava la programmazione generale del sistema e gli apparecchi necessari al suo funzionamento (PC dedicato con porte seriali, programmazione di immagini binarie e così via). Si è quindi pensato di mantenere il vecchio sistema, soltanto per quanto riguarda la parte elettrica, affiancandolo ad un nuovo sistema che gestisca sia la parte di programmazione, un’ espansione dei canali elettrici disponibili per gli automatismi, e sia la comunicazione tra nuovo impianto, vecchio impianto e vari dispositivi audio e di automazione nella rete locale. Ne nasce Atlantis, un sistema che racchiude sia componenti in bassa tensione per il controllo delle varie schede, che componenti di potenza a cui vanno collegate le varie linee del presepio.

Principalmente Atlantis è costituita da 2 schede Arduino Mega 2560, una delle quali dotata di Ethernet Shield con SD, 2 schede relè comandate a 5v da 8 relè ciascuno, un blocco da 2 relè all’interno del pannello di controllo per la regolazione dell’intero impianto elettrico, un commutatore e uno schermo LCD.

Pannello di Controllo

Il pannello di controllo è costituito da una scatola elettrica contenente l’ingresso dell’alimentazione, che viene poi distribuita tramite gli interruttori alle varie centraline. Il pannello di controllo è costituito dai seguenti componenti:

  1. Interruttore alimentazione generale: quando la centralina è spenta, la luce rossa al suo interno rimarrà accesa a segnalare la presenza di alimentazione. Premendo il pulsante la luce si spegnerà e verrà data alimentazione a tutta la parte di elettronica di segnale (Schede Arduino, schermo LCD, led, relè controllo sicurezza, schede relè 3-4)
  2. Interruttore alimentazione centralina AVR1: se premuto, alimenta la scheda AVR1 e una spia verde notificherà la presenza di tensione su tale scheda.
  3. Interruttore alimentazione centralina AVR2: se premuto, alimenta la scheda AVR2 e una spia verde notificherà la presenza di tensione su tale scheda.
  4. Interruttore alimentazione RELE 3-4: se premuto, alimenta le linee relè 3-4 e una spia verde notificherà la presenza di tensione su tali linee.
  5. Cicalina/Segnalatore luminoso stato allarme/emergenza: se attivato produrrà un suono di allarme, disabilitando automaticamente l’alimentazione dei pulsanti delle linee AVR1, AVR2, RELE 3-4.
  6. Voltmetro, sempre acceso come segnalatore di presenza tensione.
  7. Schermo LCD: notifica lo stato attuale di Atlantis: in particolare nel pannello compare il modo di funzionamento in corso (AUTOMATICO, MANUALE, EMERGENZA), il numero di cicli da SD che ha già compiuto (per avere una stima delle ore di attività), l’attuale istruzione in esecuzione a fianco di quella appena eseguita, e uno spazio dove vengono notificati errori di vario genere durante l’esecuzione dei comandi (fare riferimento al numero dell’ errore).
  8. Led segnalatore: verde: funzionamento automatico, blu: funzionamento manuale, rosso: errore/emergenza, viola: ricezione comandi da rete/gestione richieste da rete, bianco: accensione/interpretazione comando.
  9. Commutatore da pannello a 3 modalità: security bypass, automatico, manuale.

Atlantis Main Unit

Costituita da una scheda Arduino Mega 2560 e un Ethernet Shield con scheda SD, è il cuore di Atlantis. Il microcontrollore è programmato secondo il codice sorgente allegato ed è in grado di gestire tutti gli aspetti di Atlantis: dalla lettura e interpretazione dei file su SD, all’invio comandi verso le varie centraline, passando per il controllo dei vari sensori fino ad arrivare all’ascolto di vari canali per il controllo manuale della centraline. Questa unità si occupa anche di gestire il pannello LCD, il led di notifica, l’alimentazione elettrica dei canali AVR1, AVR2, RELE 3-4, il commutatore sul pannello di controllo, e tutta la comunicazione.

Centraline AVR

Sono state utilizzate delle centraline AVR, già in nostro possesso, per gestire le dissolvenze delle luci del presepio. Sono state impostate per funzionare in maniera manuale, inviando direttamente i comandi tramite le linee seriali della scheda principale Atlantis. Per una documentazione completa fare riferimento al progetto di Sergio Salvitti, all’indirizzo: http://www.salvitti.it/geo/project/presepio.html

Centralina RELE

Costituita da un Arduino Mega 2560, riceve tramite una porta seriale le stringhe di comando provenienti dall’Atlantis Main Unit, le interpreta, e attiva il canale relè corrispondente. In totale sono gestiti 16 relè, di cui 15 alimentati a 220V. e 1 (canale 4.8) con funzione di interruttore generico a cui possono essere collegati carichi con un massimo di 250V a 10A. Vi è presente anche un sensore di fiamma e un’altra linea seriale per comunicare i messaggi di allarme/emergenza.

Rete

Infrastruttura

Atlantis si appoggia ad una normale rete locale con o senza router. In questo caso è stato scelto di utilizzare un router economico che gestisca anche il protocollo DHCP, sebbene condizione non necessaria per il corretto funzionamento della centralina. E’ possibile aggiungere access point ed eventuali switch per aumentare la portata della rete.

Piano di Indirizzamento

Il router ha come indirizzo IP: 192.168.0.1, Subnet: 255.255.255.0.
E’ stato riservato al DHCP (per eventuali smartphone o pc di controllo) il range tra 192.168.0.100 e 192.168.0.199.
Atlantis ha come IP: 192.168.0.200, il PC Audio: 192.168.0.201.

Porte di Comunicazione

Porta comunicazione Atlantis: 80, Porta comunicazione PC Audio: 222.
Porta di comunicazione dei dispositivi comandati dalla funzione ET: 222.

Protocolli di Comunicazione

Una delle parti complesse di Atlantis è quella di dover ‘dialogare’ con vari dispositivi, ciascuno con un proprio protocollo che richiede vari accorgimenti sia hardware che software (correnti costanti, tempistiche…). Si elencano i principali protocolli usati per le comunicazioni sia in entrata che in uscita.

Comandi in entrata: Rete e Seriali

Atlantis accetta, oltre ai comandi scritti su SD, anche comandi manuali o di diagnostica. Tali comandi possono essere inviati o via seriale o via rete.

Seriale: tramite linea Serial0 di Arduino (usb) a 9600 baud.

Rete: tramite protocollo TCP/IP sfruttando le istruzioni del protocollo HTTP. Il formato istruzione dovrà essere quindi anticipato dalla stringa ‘GET \’ seguita dall’istruzione e da uno spazio. Tutto il resto sarà scartato automaticamente.

Centraline AVR

Le centraline AVR sono comandate tramite le linee Seriali 1 e 2. Le istruzioni, solo in uscita, sono composte da byte inviati a 2400 baud. Di seguito la mappa istruzioni.

UP: DECIMALE: da 176 a 183, ESADECIMALE: da BO a B7
DOWN: DECIMALE: da 192 a 199, ESADECIMALE: da C0 a C7
ON: DECIMALE: da 16 a 23, ESADECIMALE: da 10 a 17
OFF: DECIMALE: da 0 a 7, ESADECIMALE: da 00 a 07
VELOCITA’: DECIMALE: da 32 a 47, ESADECIMALE: da 20 a 2F
FUOCO: DECIMALE: da 112 a 11, ESADECIMALE: da 70 a 77
ALBA: (ascii) 00, ESADECIMALE: 30 30
GIORNO: (ascii) @@, ESADECIMALE: 40 40
TRAMONTO: (ascii) PP, ESADECIMALE: 50 50
NOTTE: (ascii) “, ESADECIMALE: 60 60

Note sulla linea seriale: deve esserci costantemente un valore basso in pin PWM collegato al secondo cavo della seriale, che nel momento in cui passa l’istruzione diventa alto ed abilita il segnale in ingresso sull’AVR.

Centraline RELE

La centralina RELE è comandata tramite la linea Seriale 3, le istruzioni, sia in entrata che in uscita, sono composte da stringhe inviate a 300 baud.

Funzioni operative

Formato istruzioni e standard

Ogni singolo comando inviato alla scheda principale è costituito da una stringa di 6 caratteri ASCII, a cui si aggiunge, come settimo carattere, il carattere di fine stringa ‘\0’.

Il formato delle istruzioni è composto secondo questi due modi:

FF_D.C, dove ‘FF’ è il nome dell’istruzione, ‘_’ un carattere divisorio, ‘D’ è il dispositivo verso cui deve essere indirizzato il comando, ‘.’ un carattere divisorio, ‘C’ il canale a cui si riferisce l’istruzione o il carattere che deve essere inviato (vedasi funzione ET).

FF_NNN, dove ‘FF’ è il nome dell’istruzione, ‘_’ un carattere divisorio, ‘NNN’ è un numero in base 10 compreso tra 000 e 999. Solo per le funzioni AU e WA.

Di seguito sono riportate tutte le funzioni disponibili con la tabella verso cui l’operazione è indirizzata.

Funzione ON

Accende il canale corrispondente della centralina selezionata.
Esempio istruzione: on_1.1 => Accende il canale 1 della centralina 1.

Funzione OF (off)

Spegne il canale corrispondente della centralina selezionata.
Esempio istruzione: of_1.1 => Spegne il canale 1 della centralina 1.

Funzione UP

Attiva l’accensione in dissolvenza del canale corrispondente della centralina selezionata. Il canale sarà inizialmente spento e a fine esecuzione sarà completamente acceso. Esempio istruzione: up_1.1 => Dissolvenza sul canale 1 della centralina 1.

Funzione DO (down)

Attiva lo spegnimento in dissolvenza del canale corrispondente della centralina selezionata. Il canale sarà inizialmente acceso e a fine esecuzione sarà completamente spento. Esempio istruzione: do_1.1 => Dissolvenza sul canale 1 della centralina 1.

Funzione SP (speed)

Imposta la velocità di dissolvenza sulla centralina selezionata. Più alto sarà il numero nel campo ‘C’, più veloce sarà la dissolvenza. Esempio istruzione: sp_1.7 => Imposta sulla centralina 1 la velocità di dissolvenza 7.

Funzione FU (fuoco)

Imposta la funzione ‘fuoco’ sulla centralina selezionata. Esempio istruzione: fu_1.8 => Imposta la funzione ‘fuoco’ sul canale 8 della centralina 1.

Funzione AU (audio)

Invia al PC Audio il comando di riproduzione di un file audio. I file audio devono essere in formato WAVE e nominati con il numero corrispondente, ad esempio 001.wav. Verrà inviata una stringa ethernet corrispondente al numero del file audio da riprodurre verso il PC Audio, e quest’ultimo riprodurrà il suono. Ulteriori informazioni nella sezione Atlantis Audio. Esempio istruzione: au_001 => Riproduce il file audio 001.wav.

Funzione ET (ethernet)

Questa funzione consente di inviare dei comandi verso altri dispositivi connessi alla rete ethernet o wifi del sistema. In particolare, riferendosi al modello istruzione FF_D.C, ‘D’ sarà il numero del dispositivo connesso, e ‘C’ il carattere ASCII dell’istruzione da inviare. L’IP del dispositivo ethernet è quello base di Atlantis, incrementato di ‘D’ nell’ultimo byte. Ad esempio, se Atlantis ha come indirizzo base 192.168.0.200, e ‘D’ vale 1, l’indirizzo verso cui sarà inviata l’istruzione sarà 192.168.0.201. Esempio istruzione: et_2.A => Invia il carattere ‘A’ come stringa di rete verso l’IP 192.168.0.202. La porta di comunicazione di default è la 222.

Funzione WA (wait)

Molto utile nel ciclo automatico via SD, questa funzione fa sì che la centralina si metta in uno stato di pausa e non esegua istruzioni per un numero NNN si secondi, compreso tra 000 e 999. Tutte le funzioni, come il controllo manuale da rete, i controlli di sicurezza ecc… rimangono comunque operativi nel corso dell’attesa. La funzione può quindi essere sbloccata in qualsiasi momento agendo manualmente attraverso un qualsiasi canale di comunicazione della centralina. Esempio istruzione: wa_010 => Mette la centralina in uno stato di attesa per 10 secondi.

Funzioni AB-GI-TR-NO (alba-giorno-tramonto-notte)

Valido solo per le centraline AVR, corrisponde alle istruzioni già impostate dal costruttore “ALBA”, “GIORNO”, “TRAMONTO”, “NOTTE”, e consistono nell’avvio dell’esecuzione automatica dell’effetto desiderato (dissolvenza UP di un canale, in contemporanea della dissolvenza DOWN di un altro). Esempio istruzione: ab_2.X => Invia il comando di “ALBA” alla centralina 2.

Altre funzioni di sistema

Queste funzioni non si usano nel normale funzionamento automatico del sistema, ma vengono utilizzate durante lavori di manutenzione o configurazione di Atlantis:

  • pausa_ Varia il modo di funzionamento in “MANUALE”
  • cicla_ Varia il modo di funzionamento in “AUTOMATICO”
  • reload Riavvia Atlantis con i parametri di default
  • secby1 Bypassa i sensori di sicurezza e gli allarmi
  • secby0 Ripristina il controllo dei sensori di sicurezza con relativi allarmi
  • alarm1 Attiva l’allarme
  • alarm0 Spegne l’allarme e imposta il modo funzionamento “MANUALE”
  • panel1 Abilita il selettore sul pannello di controllo

Scheda SD e programmazione

La scheda SD è alloggiata all’interno della Ethernet Shield di Atlantis Main Unit. La scheda è formattata in FAT. All’interno devono essere presenti questi file:

  • prog.txt : è il file contenente il programma che viene eseguito dalla modalità automatica. Le istruzioni all’interno del file devono essere scritte sequenzialmente una per riga (CR+LF) e non sono ammessi i commenti all’interno del codice. A fine ciclo è bene lasciare una linea vuota di terminazione.
  • conta.txt : all’interno di questo file c’è scritto in ascii la stringa corrispondente al numero di cicli eseguiti da Atlantis.
  • index.htm : è il pannello di controllo via rete che viene inviato al client nel momento in cui vengono inoltrare richieste di istruzioni manuali via rete.

Possono essere presenti anche altri file, purché non abbiano gli stessi nomi di quelli descritti sopra e non mandino in conflitto la corretta esecuzione degli script.

Controllo Manuale

Tramite i comandi manuali è possibile comandare Atlantis da remoto o tramite altri sistemi.

I comandi manuali sono sempre disponibili anche quando la centraline è in modalità automatica, e hanno priorità di esecuzione su tutti gli altri comandi programmati sul file della scheda SD. Per attivare la modalità automatica è necessario agire sul commutatore da pannello e spostarlo da “Automatico” a “Manuale”.

In caso non si sia nei pressi della centralina o il commutatore sia lontano da raggiungere è possibile attivare la modalità manuale attraverso la stringa di rete ‘GET \pausa_’ o tramite uno dei canali descritti sotto.

Controllo tramite PC

Avviando da pc il programma ‘ATLANTIS’ che si trova fornito nella directory principale di Atlantis, sarà possibile inviare le stringhe di comando tramite un interfaccia utente intuitiva e facile da usare. Basta solo impostare l’IP e la porta di comunicazione (ci sono già dei parametri corretti predefiniti), scegliere i comandi e il numero della centralina tramite i menù a tendina sotto e cliccare su ‘INVIA COMANDO’ per inoltrare la richiesta via rete. E’ inoltre possibile inviare comandi personalizzati tramite l’apposito campo attivabile dal flag ‘Invio diretto da riga di comando’ oppure è possibile cliccare sui pulsanti colorati per inviare funzioni speciali di sistema. Molto comodo il pulsante ‘TUTTI’ che permette di inviare un comando a tutti i canali della centralina selezionata.

Software versione 1
Software versione 2

Il programma, prima di inviare il comando, verifica la presenza della centralina in rete, e solo nel caso che quest’ultima sia presente e disponibile, inoltrerà il comando.

ATTENZIONE: tutti i comandi inviati tramite questa finestra sono immediatamente operativi. Usare con cautela specialmente in fase di test o durante il cablaggio delle linee.

Controllo tramite browser web

Se sprovvisti di pc e software specifici, è possibile utilizzare Atlantis in modalità manuale anche attraverso il browser web di un semplice dispositivo dotato di wifi in grado di aprire pagine web.
Per aprire la schermata di comando è sufficiente aprire da browser l’indirizzo IP di Atlantis Main Unit, e da lì si aprirà un interfaccia minimale in grado di eseguire le operazioni basilari sui canali delle varie centraline. Un indirizzo di esempio è questo: http://192.168.0.200:80

ATTENZIONE: tutti i comandi inviati tramite questa finestra sono immediatamente operativi. Usare con cautela specialmente in fase di test o durante il cablaggio delle linee.

Atlantis Audio

Tutti i software di Atlantis Audio sono all’interno della directory /Audio/ della cartella principale di Atlantis.

Software PC server effetti audio

Come descritto prima, la funzione AU, invia ad un PC una stringa di 3 caratteri ascii che costituisce il numero della traccia audio da riprodurre.

E’ stato quindi creato in linguaggio C, un programma server ad hoc da far girare su un PC, che riceve i comandi sulla porta di comunicazione selezionata, e attiva una sottofunzione per riprodurre il suono. I suoni possono essere riprodotti in parallelo consentendo più istanze della funzione che riproduce il suono. E’ possibile riprodurre solo file WAVE, e la stringa in entrata deve essere composta da solo 3 caratteri: l’estensione .wav viene aggiunta automaticamente dal server. Ad esempio: invio via rete 001, il programma eseguirà 001.wav

Software PC per colonna sonora

Questo set di programmi riproduce la musica di sottofondo del presepio. L’attivazione della colonna sonora viene data da un programma che controlla se Atlantis è accesa oppure no tramite dei ‘ping’ ad intervalli prefissati sulla rete. Se la scheda è disponibile e sta lavorando, attiverà la musica, altrimenti la spegnerà. Il programma scelto per la riproduzione dei file audio è foobar2000, con alcune personalizzazioni per adattarlo meglio alle esigenze di questo sistema.

Codici Errori

Sotto la tabella associa il numero di errore che potrebbe comparire sul display di Atlantis con la descrizione dell’errore noto.

#Descrizione Errore
1SCHEDA SD NON TROVATA O NON RICONOSCIUTA
Questo errore viene mostrato quando non è possibile rilevare la scheda SD, oppure se la scheda SD è danneggiata o presenta problemi di formattazione.
2CLIENT NON RAGGIUNGIBILE – ERRORE ETHERNET
Questo errore viene mostrato quando non è possibile connettersi con il dispositivo di rete al quale si deve inviare l’istruzione. Verificare l’effettiva accensione del dispositivo, le connessioni di rete e la correttezza degli indirizzi IP.
3STRINGA NON RICONOSCIUTA
Questo errore viene mostrato quando non è possibile associare l’istruzione ricevuta con una già programmata all’interno di Atlantis
4ERRORE APERTURA FILE ISTRUZIONI PROG.TXT
Questo errore viene mostrato quando non è possibile aprire e/o modificare il file. Controllare che non sia danneggiato, e in caso ripristinare tramite PC.
5ERRORE APERTURA FILE CONTATORI CONTA.TXT
Questo errore viene mostrato quando non è possibile aprire e/o modificare il file. Controllare che non sia danneggiato, e in caso ripristinare tramite PC.
6ERRORE APERTURA FILE INDEX.HTM
Questo errore viene mostrato quando non è possibile aprire e/o modificare il file. Controllare che non sia danneggiato, e in caso ripristinare tramite PC.
7ALTRO TIPO DI ERRORE / NON GESTITO

Credits

ATLANTIS CONTROL UNIT

Centralina di controllo per il presepio del Duomo di Pieve di Soligo

Progettazione e programmazione a cura di Sam,
si ringraziano per l’aiuto nella creazione del pannello Marco De Biasio e Luca Mura, il Gruppo Presepio e la Parrocchia del Duomo di Pieve di Soligo per il sostegno.

Per le centraline AVR fare riferimento al progetto di Sergio Salvitti
L’utilizzo in questo progetto delle centraline AVR sopra citate rispetta le norme incluse nella la licenza d’uso fornita dall’autore.

Gennaio – Agosto 2015

© 2015 Samuele Ziero
Licensed Under Creative Commons – Attribuzione – Non commerciale – Condividi allo stesso modo 3.0
http://creativecommons.org/licenses/by-nc-sa/3.0/it/deed.it