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

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...