Disclaimer
Prestare sempre attenzione nel 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
IoT - smartHome (181 posts)
08/08/2015
Acquisizione dati - Il ricevitore [English version]
di Marco Lamanna
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...