venerdì 31 gennaio 2014

OSD on screen display

Ciao a tutti volevo aggiornarvi sul mio impianto di domotica. Nell'ultimo post vi ho parlato di come visualizzavo le info provenienti dai vari sensori e relè, praticamente usavo una libreria chiamata TVOUT molta pratica e facile da usare ma chiaramente con molti limiti dovuti alla bassa risoluzione praticamente avevo a disposizione una decina di righe e colonne e quindi costretto a scrivere tutto in sintesi. Di seguito la funzione che usavo per stampare a video come si può intuire la risoluzione era solo di 96 x 96 px anche se è possibile leggermente aumentarla.
void monitor() // funzione che stampa a video le info richieste
{
 TV.end();
       TV.begin(_PAL,96,96); // for PAL system
       TV.clear_screen();
       TV.select_font(font8x8); // utilizzando font8x8 
       TV.set_cursor (0, 0); 
       for (generica2 = 0; generica2 <10; generica2++)
       {
      TV.print(ritorno[generica2]); 
      TV.println(valore[generica2+1]);
       }
}
Girando per il Web ho trovato una scheda prodotta dalla sparkfun che utilizza come circuito integrato il Max7456
è un On Screen Display e chiaramente permette di mettere delle scritte in sovraimpressione a delle immagini. E' un circuito che viene usato spesso dagli aereomodellisti e mandano su un video ripreso dall'aereomodello, tutte le info di cui necessitano. Con questo circuito oltre ad avere una risoluzione decisamente maggiore ho in pratica recuperato anche un canale del dvr in quanto le scritte vanno in sovraimpressione. Ho collegato questo circuito ad arduino ai pin 10-11-12-13, in rete si trova anche qualche libreria denominata appunto MAX7456 ma ho preferito non usarle in quanto ho avuto problemi con la gestione del protocollo rs485 che utilizzo per i comandi ptz dal dvr ad arduino tramite lo shield 485. I pin indicati sopra non possono essere cambiati in quanto la scheda OSD usa il protocollo SPI che a sua volta comunica tramite tali pin.Il pin 13 viene usato per il clock il pin 11 per il MOSI ovvero i dati escono dal master e vanno allo slave, Master output Slave input.Il pin 12 è per il MISO ovvero Master input Slave output e infine il 10 per selezionare lo slave con cui comunicare. infatti se ci fosse un'altro slave andrebbe collegato tutto in parallelo con l'altro slave tranne il pin 10 che invece gli assegneremo il 9 e cosi via.
Come potete vedere dall'immagine sulla vostra sinistra ho la libertà di scrivere in modo più leggibili le frasi e ho potuto usare anche ON / Off invece di 1 / 0. Ho aggiunto anche una guida ai comandi, cosa impossibile da fare col vecchio sistema oltre ad avere la possibilità di mettere varie pagine.Usando la maggior parte dei pin di arduino per indirizzare le mie schede modom636, che pilotano dei relè che a loro volta collegano varie utenze, è capibile che un uso inappropriato dei pin condivisi può portare a non pochi problemi.Dimenticavo, un'altro vantaggio di usare la scheda osd è che ho ridotto del 40% il programma in quanto prima il lavoro veniva svolto sempre da arduino ora si limita a comunicare solo i dati al max7456.Non ho pubblicato il programma in quanto la parte dell'osd è ripartito in vari punti del programma e la pubblicazione della sola funzione monitor servirebbe a ben poco.

domenica 17 marzo 2013

Visualizzare lo stato dei Relè

Ciao a tutti come dicevo nei post precedenti, in questo mio progetto di domotica fai da te, ho usato come server un dvr che uso chiaramente anche per le telecamere di videosorveglianza. Tale sistema ha il vantaggio di essere indipendente da arduino, quindi un compito in meno per il processore, ma nello stesso tempo ci sono anche delle limitazioni in quanto arduino non è direttamente collegato alla rete.

Uno dei problemi che ho dovuto risolvere è che non essendo appunto arduino collegato alla rete, avere delle info sullo stato dei relè. Come già detto il problema l'ho risolto usando la libreria tvout.h, questa libreria tramite due uscite digitali ci offre un'uscita video da arduino.
 Tale uscita l'ho collegata ad uno degli ingressi del dvr cosi posso inviarmi tutte le info di cui necessito.
Come si vede dalla foto in questa prima schermata controllo una presa denominata linea 3 a cui collego utenze all'occorrenza, poi c'è la fan che è il ventilatore  poi c'è il decoder di sky , le telecamere che accendo all'occorrenza, una luce fuori al terrazzo, visibile anche nel video poi c'è l'abbeveratoio automatico per il mio cagnolone poi la percentuale di apertura della tenda e ancora qualche parametro relativo alla tenda.
A parte la percentuale relativo all'apertura della tenda e il numero di bevute, per il resto uso lo "0" se un'utenza non è alimentata e "1" se chiaramente è alimentata.


 La libreria Tv out non offre una grande risoluzione anche dovuta all'esigua memoria di arduino, personalmente uso 96x96 px, chiaramente la grafica è limitata a poche righe ma sufficiente a darmi le info sullo stato dei relè.
Certo se si usa la scheda Ethernet si è più liberi di creare una pagina web ad hoc usando il browser o creando un app specifica. Ho usato questo sistema per aver velocemente tutto sotto controllo, videocamere e stato dei relè con un normale programma per dvr, usando come si vede dalle immagini i comandi ptz.

Voglio solo ricordare che , usando questo metodo, cioè i comandi ptz, quelli che servono per muovere le telecamere munite di servo per il movimento, ma che io invece uso per comandare varie utenze, serve una scheda per la ricezione del protocollo rs-485 usato appunto dai comandi ptz. Questa scheda Rs-485 va collegata tra l'ingresso seriale di arduino cioè i piedini 0 , 1  e l'uscita ptz del dvr.
La libreria tvout usa le interruzioni e quindi per evitare problemi di attivazioni dei relè , quando procedo all'attivazione di qualche relè, disattivo sempre la trasmissione. In ogni caso per non sovraccaricare il processore faccio generare il segnale tv solo quando ho necessità di controllare lo stato dei vari relè.
Lo stato dei relè viene letto sempre tramite indirizzamento delle mie schede modom636. 



martedì 29 gennaio 2013

Gestione tenda

Ciao a tutti oggi vi presento un video che ho realizzato per mostrarvi come gestisco la tenda con i miei moduli modom636, tramite l'utilizzo dei comandi Ptz.

Da questo video si può vedere come controllo la tenda fuori al terrazzo, ho fatto uso di un sensore ad ultrasuoni per stabilire la giusta posizione della tenda  per fermarla nel punto desiderato e quando finisce di aprirsi la faccio tornare un pò indietro per metterla in tensione.Per comandarla ho usato due moduli modom636 più un'altro per accendere la luce. E come si può notare dal video mentre la tenda è in movimento si possono pilotare anche altre utenze come appunto la luce fuori al terrazzo.Per qualsiasi  info hicina@libero.it

lunedì 7 gennaio 2013

Modom636 : collegamenti






In questo post voglio mostrarvi alcune immagini con i collegamenti tra vari moduli. Come detto vanno collegati tutti in parallelo. Per quanto riguarda l'ingresso per monitorare lo stato dei vari relè, per comodità uso un pin analogico di arduino invece di uno digitale, che comunque può essere usato. In realtà abbinando un semplice attuatore ad un modulo modom636 si può leggere anche un segnale analogico.A dire il vero volevo integrarlo già nella scheda ma essendo hardware in più che nella maggior parte dei casi non veniva usato portava solo ad un'inutile aumento del prezzo della scheda. Nei prossimi post mostrerò qualche esempio.
Modom636

  
5 schede che controllano e attivano 5 relè bistabili

domenica 23 dicembre 2012

Modom636

Come dicevo nel mio primo post, come server uso un normale dvr con uscita per le telecamere ptz, diciamo che quasi tutti i dvr in commercio hanno questa funzione. In realtà l'uscita serve a manovrare le telecamere direzionabili. Non avendo tali telecamere, vado a sfruttare questi controlli per accendere o spegnere da remoto luci e utenze varie.
Questi comandi sfruttano l' RS-485  un protocollo che usa una linea bifilare ed è abbastanza immune ai disturbi.
La scheda arduino-uno per funzionare con il protocollo RS-485 ha bisogno di uno shield che si interfaccia con l'uscita ptz del DVR. Lo shield si può trovare sul sito EtherMania, da remoto uso l'app Meye che fornisce 10 comandi per ogni canale, se si ha un DVR da 8 canali avete 80 comandi a disposizione se si ha uno da 16 canali, avrete chiaramente 160 comandi.
Tale sistema ha il problema che non si può vedere se un'utenza è stata attivata, certo se accendete una luce dove avete installato una cam è facile capirlo. Il problema è che se pilotiamo un'utenza che non è nel campo della cam non possiamo avere un feedback.
Il problema l'ho risolto in questa maniera, ho lasciato libero un canale del dvr.
Voi mi direte per cosa? Bene visto che arduino ha una libreria che si chiama tv-out,
in pratica simula un'uscita video, su tale uscita mando tutte le info che voglio, e siccome tale canale è collegato ad un ingresso del dvr, da remoto posso avere tutti i feedback di cui necessito.

Bene, per la comunicazione con il dvr, si usano i pin 0 e 1  più un'altro di attivazione, la libreria tv-out usa i piedini 7 e 9, quindi rimangono altri 9 pin digitali da poter usare o in ingresso o in uscita. Un pò pochini per un progetto di domotica.

Ho visto diverse idee in giro, più o meno valide, ma molto complesse o poco pratiche, chiaramente sempre dal mio punto di vista.
Cosi ho deciso di progettare qualcosa che fosse affidabile, semplice da realizzare e da gestire, pratico nella messa in opera e che sia facilmente ampliabile in caso di necessità.

Come ben sapete per poter pilotare con arduino, per esempio una luce, c'è bisogno di un'attuatore, cioè una scheda con un relè. Ho ideato, progettato e realizzato un'attuatore indirizzabile, che sfrutta 10 pin digitali di arduino, il vantaggio è che tali moduli vengono collegati in parallelo e ne potete collegare oltre 120. Tali moduli devono necessariamente pilotare un rele bistabile o passo passo. Il modulo che ho chiamato modom636 ha anche un'ingresso che va collegato ad un contatto senza tensione. Per esempio io uso i rele della finder 26.02 che hanno due contatti, uno per accendere, per esempio una luce e l'altro per verificarne lo stato.

Uso un cavo da 12 fili, 2 sono per l'alimentazione, e come dicevo i moduli vanno messi tutti in parallelo, è chiaro che se si fa un'impianto con 30 attivazioni e un domani si necessita di altri punti, basta passare un cavo dal modulo più vicino e il gioco è fatto.
Usando i relè passo passo, se va via la corrente, al ritorno si riaccende tutto normalmente. I pulsanti per le luci o per le utenze, vanno applicati sui rele bistabili e non sulle schede cosi se qualcosa non va, non rimarrete mai al buio.
Con i modom636 comando alcune prese dove ho collegato tv e vari elettrodomestici che non voglio che rimangono in stand-by, gli metto sempre un pulsante per il manuale che si integra con il remoto o gestita direttamente dal processore in base a degli eventi.
Chiaramente per utenze più potenti bisogna usare un relè adeguato o contattore.
Riassumendo si possono usare oltre 120 moduli con un cavo di appena 10 fili + 2 di alimentazione, e cosi possiamo avere a disposizione oltre 120 uscite e altrettanti ingressi. 






giovedì 6 dicembre 2012

Passione domotica

Appassionato da sempre alla domotica, mi sono avvicinato in modo pratico solo dopo aver conosciuto Arduino fantastica scheda che permette di fare molte esperienze e spaziare in vari campi. Ho realizzato molti progetti, ma con la domotica sempre tra i miei pensieri. Ho realizzato un sistema basato su arduino e un dvr con comandi per le telecamere ptz. Ormai sono mesi che uso questo sistema per comandare varie utenze da remoto con il mio cellulare e monitorarle tramite un canale del dvr e le librerie tv out di arduino. Dopo un pò avevo sempre più idee e sempre meno porte. Cosi è nata l'idea di creare un modulo che mi permettesse di aumentare le porte in modo sufficiente. Tale sistema doveva essere semplice da installare, da programmare e nello stesso tempo affidabile.La risposta è tutta nel modulo che ho chiamato appunto Modom636.