Blog migrato su nuova piattaforma

Disclaimer

Prestare sempre attenzione a seguire le indicazioni fornite in questo blog, soprattutto se si tratta di apparecchiature elettriche collegate alla tensione di 220V. Non mi ritengo responsabile di danni causati dall'aver seguito i consigli qui pubblicati.
Grazie
Visualizzazione post con etichetta ethernet shield. Mostra tutti i post
Visualizzazione post con etichetta ethernet shield. Mostra tutti i post

giovedì 25 gennaio 2018

Home Automation System - Antifurto ed OpenHAB - Fase operativa




Come promesso, ecco la seconda parte del post relativo all'integrazione dell'antifurto con OpenHAB, solo per quanto riguarda lo stato degli ingressi...per poter monitorare anche in remoto il loro stato...cosa che la mia attuale centralina non mi permette di fare...


Passiamo quindi alla fase operativa (o distruttiva, dipenderà dall'obiettivo raggiunto 😱). Ricapitoliamo quanto c'è da fare:


  • portare tutti gli ingressi dell'antifurto al Raspberry PI3
  • costruire una piccola scheda di interfaccia per abbassare il segnale dei sensori / contatti da 4.5v a max 3.3v attraverso partitori di tensione (questo per non bruciare gli ingressi del raspberry)
  • connettere gli ingressi dell'antifurto agli ingressi di questa schedina e le sue uscite ai GPIO del raspberry
  • installare e configurare su OpenHAB il GPIO binding (vedere https://github.com/openhab/openhab1-addons/wiki/GPIO-Binding)
  • infine, inserire in una sitemap su OpenHAB gli oggetti per la visualizzazione dello stato degli ingressi dell'antifurto

Iniziamo...

Cablaggi vari

Il raspberry è vicino alla centralina dell'antifurto dove arrivano diretti 3 degli 11 ingressi che devo gestire...gli altri 8 sono gestiti da una scheda di espansione distante dalla centrale, alla quale è collegata solo tramite bus seriale...

Fortunatamente ci sono un paio di tubi vuoti che collegano le due scatole di derivazione...quindi mi basta passare un cavo di rete dalla scheda di espansione alla scatola vicino alla centrale (e quindi vicino al raspberry).

Ho scelto il cavo di rete perchè ha proprio 8 fili (quanti ne servono a me...), è schermato ed è comodo da passare...

E allora passiamo questo cavo...e dopo averlo passato colleghiamo i sui 8 terminali agli 8 ingressi della scheda di espansione dell'antifurto...


Questa sopra è la scatola di derivazione che contiene l'espansione dell'antifurto (scatola bianca in basso...) e tutti i segnali dei singoli sensori / contatti...
Il cavetto di rete è quello blu che si vede uscire dal secondo tubo a partire dall'alto...i suoi fili sono collegati ai morsetti neri che a loro volta sono collegati alla scheda di espansione.

Bene qui è tutto fatto...possiamo chiudere.

Andiamo al piano di sopra, dove c'è la scatola di derivazione che porta tutto alla centrale.

Ecco la scatola di derivazione, vicino alla centrale, dove arrivano tutti i cablaggi necessari...compreso il nostro cavetto di rete blu


Recupero anche i 3 ingressi non gestiti dalla scheda di espansione, ma collegati direttamente alla centrale, cercando di capire quali connessioni fossero quelle giuste in tutto questo groviglio...


Quindi, gli 8 fili del cavo di rete più i tre recuperati qui direttamente li porto alla schedina d'interfaccia autocostruita (e si vede...) con i partitori di tensione. Eccola, lato destro ingressi, lato sinistro uscite...al centro le resistenze per il partitore, una coppia per ogni ingresso...


Ultimo step, connessione tra uscite e GPIO del raspberry...


Se contate bene i fili, non sono 11 come detto prima ma 12...perchè oltre a tutte le connessioni dei segnali bisogna mettere anche la massa in comune tra impianto antifurto e Raspberry...il 12° filo è proprio questo...ed è connesso ad un terminale GND del raspberry (nel suo pin header ci sono più terminali GND...basta sceglierne uno comodo...)

Tutto collegato...il Raspberry si accende ancora e anche l'antifurto sembra ancora funzionante...bene, per adesso nulla di distruttivo!!!

Prima di passare al software faccio qualche prova: apro e chiudo le finestre e le persiane e verifico con il tester che il relativo ingresso passi da 0v a 3v (il partitore mi da 3v in corrispondenza del 4.5v originario) e viceversa.

Configuriamo OpenHAB

Adesso che la parte hardware è a posto (parola grossa!!!!), tocca al software...intervento sicuramente con potenzialità meno distruttive 😎

Installiamo su OpenHAB il GPIO Binding, che ci permette di interfacciare OpenHAB direttamente con i GPIO del raspberry su cui gira...

Come al solito passiamo dalla PAPERUI (l'interfaccia web di configurazione di OpenHAB) e seguiamo il percorso Add-ons -> Bindings


Per info dettagliate si può consultare la documentazione ufficiale

Fatto questo, occorre creare gli items OpenHab relativi ai singoli 11 ingressi che vogliamo gestire in modo che poi possano essere inseriti in una sitemap. Creiamo quindi il file gpio.items nella cartella /etc/openhab2/items ed inseriamo gli 11 oggetti legati ognuno ad un ingresso GPIO

Ecco come appare il mio file (editor Visual Studio Code con estensione Platformio, consigliatissimo!!!!)



Come vedete, oltre ad altri parametri, ogni riga è legata ad un pin diverso, che corrisponde ad un ingresso GPIO del raspberry. Il parametro activelow indica se bisogna considerare un contatto aperto se il segnale è a 0v ... nel nostro caso è a "no" perchè, come abbiamo visto, quando il contatto è APERTO, abbiamo tensione...

Aggiungiamo ancora gli items appena creati in una sitemap, editando il relativo file ed otteniamo a video qualcosa di simile a questo (visto da app OpenHAB su smartphone)


Adesso parte un periodo di verifica che tutto funzioni e stia in piedi ... non ne sono ancora certo al 100%, ma ci sono buoni presupposti...🍀🍀🍀



Disclaimer:

le operazioni indicate nel presente post sono eseguite a mio rischio e pericolo e non sono da utilizzare come guida tecnica. Chi effettua le stesse operazioni su proprio o altrui impianti ne è direttamente responsabile

venerdì 19 gennaio 2018

Home Automation System - Antifurto ed OpenHAB - L'idea iniziale




Incredibile ma vero!!! Sono riuscito a raggiungere un piccolo traguardo, inseguito da un pò di tempo...Riuscire ad integrare in OpenHAB lo stato dell'antifurto...più precisamente dei suoi ingressi!!!

Molti di voi diranno...beh, semplice...ormai tutti gli antifurti hanno questa caratteristica...tramite centraline moderne e app mobile è possibile farlo...certo!!! Ma il mio antifurto ha 10 anni e cambiare centralina ha un costo non di poco conto...e all'epoca non era così scontato avere un sistema "online" come oggi...

Il mio obiettivo era solo quello di intercettare lo stato dei sensori e non di permettere la gestione totale dell'antifurto, anche per un discorso di sicurezza...in sostanza, nel momento in cui per qualche motivo mi arriva la telefonata dall'antifurto a fronte di allarme, al volo riesco a capire quale sensore è stato aperto (chiaramente mentre mi catapulto a casa...)...ad oggi questa cosa non la posso fare perchè il combinatore telefonico non è in grado di interfacciarsi in maniera dettagliata alla centrale per capire quale ingresso ha fatto scattare l'allarme!!!

E allora basta intercettare tutti i cablaggi provenienti dai diversi sensori radar volumetrici e contatti magnetici, in qualche modo interfacciarli con una schedina tipo Arduino o simili in modo da ottenere lo stato di "APERTO" o "CHIUSO"...alla fine i diversi sensori dell'antifurto non fanno nient'altro che questo...

Inizio allora con i miei esperimenti per capire che tipo di segnale viaggia, documentazione alla mano...e scopro che, oltre al doppino che porta corrente a tutti i sensori / magneti (a 13.5v), ci sono tutti singoli fili, per ogni contatto / sensore che interessano a me...cioè, la massa di riferimento e la tensione...quando tra i due capi non c'è tensione, il contatto è CHIUSO, quando c'è una tensione positiva il contatto è APERTO...in sostanza sono gli 0 e gli 1 logici che interessano a me...

Prima di interfacciare il tutto con OpenHAB faccio delle prove con il tester...anche perchè devo capire che valore di tensione arriva sul contatto che mi identificherà il mio 1 logico...in base anche alla schedina che andrò ad usare come interfaccia, avrò delle soglie di tensione da rispettare per non bruciare gli ingressi...

Quindi, metto i terminali del TESTER tra massa e cavetto del segnale di un contatto (ad esempio porta d'ingresso, che è vicina alla scatola di derivazione...)...tensione pari a 0...perfetto, la porta è chiusa...Apro la porta, per sicurezza verifico la tastiera dell'antifurto che mi segnala contatto aperto e quindi controllo la tensione...4.5v...chiudo la porta...torna a 0...direi che funziona...ho intercettato il segnale che mi interessa...E' così per ogni sensore / contatto...

Direi che la mia idea può funzionare...poichè ho 11 ingressi da gestire (vari sensori e contatti singoli oppure messi in serie come unico ingresso...) devo trovare una schedina che mi permetta di gestire almeno 11 ingressi digitali, che abbia una tensione compatibile con i 4.5v forniti dai contatti e che possa essere connessa in rete per trasmettere l'informazione a OpenHAB tramite MQTT...

La scelta è tra

- una schedina NodeMCU ESP8266, con wifi integrato che però da specifica accetta solo 3.3v negli ingressi digitali;


- un Arduino UNO con shield ethernet che dovrebbe accettare fino a 5v negli ingressi digitali;


La prima scelta sarebbe più comoda perchè ha il wifi integrato ed è molto più piccola...bisognerà però fare un piccolo circuito per abbassare la tensione da 4.5v a sotto i 3.3v.
Con Arduino UNO invece la tensione è già a posto ma la scheda è molto più grande e necessita anche di uno shield (una scheda) in più...

Pensa che ti ripensa mi viene un lampo di genio...


il Raspberry PI3 dove attualmente stanno girando OpenHAB e il broker MQTT ha anche una serie di GPIO digitali...se riesco a far arrivare tutti i segnali, posso usarla direttamente, così evito di sprecare un'ulteriore scheda...ed essendo lo stesso sistema su cui gira OpenHAB non ho neanche la necessità di trasmettere il dato in rete...sarà tutto in locale... Purtroppo i suoi GPIO lavorano a 3.3v quindi il nostro 4.5v sicuramente non le farà bene...Niente paura...costruirò una piccola schedina di interfaccia con una serie di partitori di tensione per abbassare proporzionalmente la tensione sotto i 3.3v...tanto resistenze ne ho in abbondanza 😎


Se riesco a fare questo, posso usare direttamente un Binding di OpenHAB (vedi https://github.com/openhab/openhab1-addons/wiki/GPIO-Binding) che permette di integrare facilmente i segnali ottenuti tramite lettura di GPIO (in sostanza permette di agganciare un item di tipo logico 1/0 di OpenHAB allo stato di un ingresso del raspberry), senza dover fare un programma esterno, ed inviarli tramite MQTT...direi ottimo...(se funziona)

Ricapitoliamo:

 - far convergere tutti i segnali degli ingressi dell'antifurto verso il Raspberry PI3
 - creare una schedina per abbassare il segnale dei sensori / contatti da 4.5v a max 3.3v
 - collegare gli ingressi di questa schedina con i cavetti degli ingressi dell'antifurto e le uscite con il Raspberry
 - installare e configurare il binding GPIO di OpenHAB (vedi https://github.com/openhab/openhab1-addons/wiki/GPIO-Binding)
 - creare una sitemap su OpenHAB per visualizzare lo stato degli ingressi

Non dovrei aver dimenticato nulla...spero...

Nel prossimo post, a breve online, descriverò la fase operativa e il risultato ottenuto!

lunedì 28 agosto 2017

Home Automation System - MQTT e RF433 per monitor fotovoltaico...




Adesso provo ad integrare il mio ricevitore wireless RF433Mhz (sviluppato con Arduino e Modulo Ethernet) con MQTT, in modo da poter acquisire sul sistema di Home Automation i dati di produzione dell'impianto fotovoltaico.

Non sto a dilungarmi sui dettagli di come funziona il sistema di acquisizione; questo è il mio vecchio post relativo all'argomento

http://domoticaduino.blogspot.it/2017/02/sniffando-le-onde-radio-rf-433mhz.html

Quello che voglio fare adesso è la trasmissione al broker MQTT dei dati acquisiti, per la futura integrazione con OpenHAB.

Bisogna quindi mettere mano allo sketch di Arduino che gestisce il ricevitore RF 433Mhz e fare in modo di pubblicare su un particolare topic i dati acquisiti. Attualmente il sistema invia i dati ad un'interfaccia WEB tramite la chiamata ad un semplice servizio HTTP REST.

Bene, utilizzando l'IDE di Arduino (la stessa utilizzata per l'upload del firmware dei SONOFF), apro lo sketch ed effettuo la modifica al codice per gestire il collegamento con il broker MQTT.

Tralascio i dettagli tecnici perchè non sono lo scopo di questo post e se ne trovano tantissimi in giro per la rete, ma se qualcuno fosse interessato al sorgente dello sketch mi scriva una mail, sarò ben felice di condividerlo.

Il topic che ho scelto per la pubblicazione dei valori è il seguente:

arduino/groundfloor/rf433/solarenergy/state

Ho cercato di seguire la naming convention che stavo usando per i SONOFF e quindi

[device]/[zona]/[tipologia]/[id del dato]/state

Il contenuto del messaggio è semplicemente il valore della potenza rilevata in Watt.

Ecco i messaggi pubblicati, visti sempre tramite mqtt-spy:



Ed ecco il ricevitore:




Attualmente è "muto", ma il prossimo step sarà quello di aggiungere un led per verificarne il funzionamento ed eventualmente anche qualche sensore ambientale...

Vedremo...


sabato 8 agosto 2015

Acquisizione dati - Il ricevitore




Iniziamo la descrizione dei componenti del sistema: Il Ricevitore.

Eccolo ancora in versione "prototipo"


E' composto da una scheda Arduino Uno, a cui è collegato lo shield ethernet per l'accesso alla rete locale e il ricevitore wireless RF433.

FUNZIONAMENTO e PROTOCOLLO

Il ricevitore wireless riceve i messaggi inviati dai diversi sensori e li rigira al server WEP/APP tramite chiamata HTTP; in sostanza agisce da semplice router.

I protocolli di comunicazione sono molto semplici e attualmente non sicuri, quindi per adesso il sistema non può girare su rete pubblica.

Il messaggio che il sensore invia al ricevitore è una stringa composta nel seguente modo:

SENSORE;VALORE;STATO|

dove SENSORE è il nome del sensore, VALORE è il valore corrente rilevato dal sensore e STATO e una particolare condizione del sensore (ALLARME, WARNING etc etc)

Il ricevitore prende questa stringa e la invia al server WEB/APP tramite la seguente chiamata HTTP GET:

http://NOMESERVER/data.php?u=PASSWORD&d=STRINGA

dove NOMESERVER è il dominio dove gira l'applicazione WEB di acquisizione dati, PASSWORD è una parola segreta conosciuta anche dal server WEB/APP e STRINGA è il dato del sensore.

Come già detto prima, il protocollo di comunicazione è molto banale e non esiste meccanismo di ACK...per adesso è solo un prototipo per verificarne il funzionamento logico...

HARDWARE

Schema Fritzling (approssimato)


PIN 2 in OUTPUT per il led di stato RF (ROSSO), indicante attività su ricevitore Wireless;
PIN 3 in OUTPUT per il led di stato ETH (VERDE), indicante attività su scheda di rete;
PIN 5V per alimentare il ricevitore Wireless e i led;
PIN GND per dare la massa al ricevitore Wireless;
PIN 7 in INPUT per i dati del ricevitore;

L'ethernet shield è collegato all'Arduino UNO, il tutto alimentato con 5V esterni.

SOFTWARE

Routine di inizializzazione:

- viene inizializzato il ricevitore wireless RF433 utilizzando la libreria RadioHead;

- viene configurata la scheda di rete utilizzando la libreria standard Ethernet; in questo particolare caso viene assegnato un indirizzo IP statico (ma nulla vieta di usare il DHCP se la rete locale lo prevede);

- vengono inizializzati i led di stato;

corpo principale del programma:

- il processo si mette in attesa di ricevere un segnale sul ricevitore wireless RF433;

- non appena viene ricevuto un messaggio viene acceso il led di stato RF e viene inviato il messaggio al server tramite chiamata HTTP;

- durante l'invio viene acceso il led di stato ETH che si spegne al termine della chiamata HTTP;

Qui potete trovare il codice sorgente dello sketch del ricevitore: DOWNLOAD

Ecco un video del ricevitore in azione...



sabato 1 agosto 2015

Il primo progetto di acquisizione dati




Ho iniziato la progettazione del mio primo sistema di acquisizione dati con Raspberry PI e Arduino. L'idea è quella di avere una rete di sensori di acquisizione che trasmettono i dati ad una centrale che tramite rete ethernet comunica con un server per la memorizzazione.

I principali componenti sono:

- uno o più rilevatori
- un ricevitore
- un server DB per la memorizzazione
- un server WEB/APP per l'acquisizione e il monitoraggio in remoto

Ecco lo schema:



Un pò più in dettaglio...

RILEVATORI

Possono comunicare i dati con diverse modalità:

- wireless RF-433 verso il ricevitore
- ethernet verso il ricevitore
- USB verso il server

Possono essere delle schede Arduino, Raspberry o altro..
In funzione del tipo di comunicazione utilizzano ulteriori schedine di interfaccia e/o led di controllo.

RICEVITORE

Riceve i dati via wireless RF-433 o via ethernet.
Tramite ethernet trasmette i dati per la memorizzazione al server WEB/APP

E' costruito con una scheda Arduino, sulla quale è montato lo Shield Ethernet e il ricevitore wireless RF-433.
Sono presenti dei led di controllo.

SERVER WEB/APP

Riceve i dati dal ricevitore tramite ethernet o da eventuali sensori collegati direttamente all'USB.
Memorizza i dati sul server DB
Esegue il software WEB per monitoraggio remoto

Il server WEB/APP scelto è il famoso e comune Apache HTTPD, installato su Raspberry, sul quale gira la distribuzione linux Fedora.

Il software di monitoraggio è scritto in linguaggio PHP con interfaccia Bootstrap / HTML5, fruibile anche da dispositivi mobile.

SERVER DB

Memorizza fisicamente i dati ricevuti dal server WEB/APP.

Il software scelto come motore DB è Mysql Community Edition e verrà installato sullo stesso Raspberry dove risiede il server WEB/APP

venerdì 23 gennaio 2015

Test dello shield Ethernet




Eccoci arrivati al secondo test.
La prova dello shield ethernet con Arduino Uno Rev 3.


L'idea è quella di collegare lo shield in rete locale e creare un piccolo web server che risponda a delle richieste http fatte via browser per eseguire dei comandi sui dispositivi fisici collegati.

Arduino mette a disposizione la libreria Ethernet, che permette facilmente la gestione dello shield. Infatti con un paio di righe di codice il dispositivo entra in rete utilizzando il protocollo dhcp (se la rete locale lo gestisce) oppure tramite l'impostazione manuale dei parametri di rete (ip, dns, gateway, etc etc).

Il collegamento è fatto direttamente sulla scheda Arduino, come la maggior parte degli shield...I pin 10, 11, 12 e 13 vengono usati dallo shield e quindi non possono essere usati per altri scopi.

Per il nostro test, colleghiamo due led alle uscite digitali 2 e 8. Faremo in modo che Arduino, a fronte di opportune chiamate http, accenda e spenga i due led. Per raggiungere il nostro scopo utilizziamo un tablet che, connesso in rete, effettui le chiamate http per controllare i led.

Il nostro Arduino quindi si metterà in ascolto sulla porta 80 in attesa di ricevere chiamate dai client...Non appena arriverà una chiamata, in base ai parametri ricevuti, deciderà di attivare / disattivare le uscite che pilotano i led.

Ecco il video dimostrativo:



venerdì 16 gennaio 2015

Arduino Uno Rev 3 Starter Kit




Dopo qualche giorno di ricerca e indagine di mercato abbiamo acquistato su ebay lo starter kit con la scheda Arduino Uno...

...arrivato velocissimo qualche giorno dopo...


Ecco il contenuto

  • 1pz Arduino UNO R3 sigillato, ORIGINALE made in Italy
  • 1pz Cavo USB 50cm
  • 1pz Breadboard 830 punti di contatto
  • 1pz Display LCD 16X2 retroilluminato blu con caratteri bianchi, driver Hitachi HD44780, con connettori già saldati
  • 2pz Potenziometro lineare 10Kohm
  • 2pz Manopole per potenziometro
  • 1pz Connettore batteria 9V jack 2,1mm
  • 65pz Jumpers (ponticelli flessibili)
  • 10pz Pulsanti
  • 1pz Buzzer
  • 1pz relè 5V 10A 250VA
  • 1pz Sensore di temperatura LM35
  • 2pz Transistor BC547
  • 1pz Sensore di luminosità, fotoresistenza LDR
  • 10pz LED rossi
  • 10pz LED gialli
  • 10pz LED blu
  • 10pz LED verdi
  • 10pz LED bianchi
  • 1pz LED RGB anodo comune
  • 2pz condensatore 4,7uF 100V
  • 5pz Diodi 1N4007
  • 10pz Resistenze 1Kohm
  • 10pz Resistenze 10Kohm
  • 10pz Resistenze 4,7Kohm
  • 20pz Resistenze 470ohm
Diciamo che c'è di tutto e di più per fare già un pò di cose...alla modica cifra di circa 40 euro

Nello stesso ordine abbiamo acquistato anche:

una coppia di moduli (ricevitore e trasmettitore) per la comunicazione low cost RF 433 Mhz


lo shield ethernet basato sul chip W5100 con lettore sd card


un sensore per il gas metano MQ-4


alcuni led RGB catodo comune


Bando alle ciance, è arrivato il momento di fare qualche esperimento concreto...