Differenze tra le versioni di "Comandare centralina allarme low cost 433Mhz con un raspberry"

Da raspibo.
Jump to navigation Jump to search
Riga 1: Riga 1:
 
== Introduzione ==
 
== Introduzione ==
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi (apri cancelli e trasmissioni a codice fisso), facendo vedere come potesse essere "relativamente semplice" con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: "perchè non attivare/disattivare la mia centralina di allarme dal raspberry?".  
+
Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi [[Some experiments on Radio Remote Controls ]](apricancelli e trasmissioni a codice fisso), facendo vedere come potesse essere "relativamente semplice" con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: "perchè non attivare/disattivare la mia centralina di allarme dal raspberry?".  
 
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.
 
La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual  volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina.
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina.  
+
Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici,  gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina.
 
 
  
 
== Modulini tx/rx FS1000A ==
 
== Modulini tx/rx FS1000A ==

Versione delle 17:03, 8 dic 2016

Introduzione

Qualche tempo fa avevo letto una mail su Agora di Renzo, dove raccontava una sua esperienza sui radiocomandi Some experiments on Radio Remote Controls (apricancelli e trasmissioni a codice fisso), facendo vedere come potesse essere "relativamente semplice" con alcune librerie, leggere i codici generati dai radiocomandi o perfino effettuare un bruteforce nel tentativo di beccare quello da replicare; cosi ho pensato: "perchè non attivare/disattivare la mia centralina di allarme dal raspberry?". La mia motivazione in relatà non è scontata, da qualche annetto ho fatto escludere l'invio degli SMS nella mia promozione telefonica mobile, cosi sono riuscito a risparmiare un paio di euro al mese, per cui ora ogni qual volta ne invio uno, devo pagare 25 cent, e questa cosa ultimamente stava cominciando a diventare un pò seccante per gestire la cetralina. Essendo una centralina low cost acquistata su ebay (che ha già sventato due furti), utilizza codici fissi su due frequenze diverse 433Mhz/868Mhz (e permette di essere allarmato, a parte dai vari sensori filari, tramite radiofrequenze con invio di un codice fisso a 433/868mhz inviato da sensori PIR, magnetici, gas, fumo o qualsiasi altra cosa basta che sia stato preventivamente acquisito e memorizzato in fase di configurazione dalla centralina).Inoltre al suo interno è presente un modulo GSM che serve a notificare i segnali di allarme oppure di alimentazione assente o batteria tampone scarica tramite l'invio si SMS, e ricevere comandi sempre tramite SMS per allarmare/disallarmare la centralina.

Modulini tx/rx FS1000A

Circa 5 mesi fà, ho acquistato due modulini a 2 euro su ebay denominati FS1000A che sono finalmente riuscito a testare; questi, possono lavorare tranquillamente alla frequenza di nostro interesse 433,92Mhz.

Per quanto riguarda il modulo di trasmissione le specifiche e le connessioni sono le seguenti:

Portata: 20-200mt
Tensione di alimentazione: da 3,5Vdc a 12Vdc
Modo di funzionamento: AM
Velocità di trasmissione: 4 KB/s
Potenza: 10mW
Frequenza di trasmissione: 433,92 Mhz
Dimensioni: 19x19 mm
DATA <-> Raspberry BCM GPIO17 (pin0 wiringPi) 
Vcc  <-> Raspberry 5v
GND  <-> Raspberry GND


Per quanto riguarda il modulo di ricezione le seguenti:

Tensione di alimentazione: 5Vdc
Assorbimento a riposo: 4mA
Frequenza di ricezione: 433,92 Mhz
Sensibilità: -105dB
Dimensioni: 30x14 mm
Vcc  <-> Raspberry 5v
DATA <-> (non usato)
DATA <-> Raspberry BCM GPIO18 (pin1 wiringPi)
GND  <-> Raspberry GND

Installazione e configurazione librerie su Raspberry PI

Dopo avere collegato il raspberry ai moduli, ora serve configurare ed installare le librerie che ci consentiranno di scoprire i codici che vengono inviati alla centralina dai radiocomandi a 4 canali, utilizzando il modulo di ricezione, cosi da poterli replicare utilizzando il modulo di trasmissione.

Le alternative a livello di librerire che ho trovato in rete sono due, ovvero sfruttare le pigpio, oppure utilizzare le librerie rc-switch. Ho visto che la seconda scelta era la più documentata online con i moduli FS1000A, cosi ho deciso di intraprendere questa strada.

L'installazione e la configurazione dell'ambiente è abbastanza veloce, ho eseguito prima di tutto un aggiornamento alle ultime versione del firmware, dato che alcuni lamentavano malfunzionamento se non aggiornati.

Cosi ho eseguito l'aggiornamento del kernel/firmware e dei vari pacchetti:

sudo rpi-update
sudo apt-get update
sudo apt-get upgrade

Successivamente installiamo le wiringPi per l'accesso alla GPIO:

cd ~/
git clone git://git.drogon.net/wiringPi
cd wiringPi
./build

Poi è possibile scrivere il proprio programma tramite le rc-switch(ci sono diversi esempi), io ho utilizzato le 433Utils:

cd ~/
git clone git://github.com/ninjablocks/433Utils.git
cd 433Utils
git clone https://github.com/sui77/rc-switch.git
cd RPi_utils

Ora, prima di compilare, modifichiamo i pin corretti usati per la trasmissione e ricezione (GPIO17, GPIO18) relativamente pin 0 e pin 1

https://projects.drogon.net/raspberry-pi/wiringpi/pins/

Quindi per i file code.cpp e codesend.cpp ho settato il pin 1:

int PIN = 1;
...

mentre per il file RFSniffer.cpp ho settato il pin 0, fatto ciò lanciare nella directory corrente il comando make e attendere la compilazione

Recupero codici del telecomando e replicazione

Per recuperare i codici utilizzati dal telecomando/i o sfruttato l'utility RFSniffer ( in alcuni casi potrebbe essere utile variare la modulazione per riuscire a individuarli )

Telecomando.jpg

Io mio telecomando utilizza un chip cinese, fornito dalla (Silvan Chip Electronics Tech. Co., Ltd.) SC2260-R4 (standard PT2260) e la modulazione di default ha funzionato ma non perfettamente, ovvero ad una distanza che supera il metro non becca il segnale, e alle volte neppure da vicino, per cui c'è ancora da capire perchè, probabilemente va configurata la modulazione corretta ma dato che il mio intento per ora era recuperare i codici da replicare, andava più che bene.


Quindi, dando il comando e premendo i tasti del radiocomando ho mappato i due comandi per abilitare/disabilitare la centralina:

Ricevitore test.png

pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./RFSniffer
Received 16546576
Received 16546576
Received 16546576
Received 16546576
Received 16546528
Received 16546528
Received 16546528
Received 16546528

Da ciò è possibile sfruttare l'utility codesend per inviare il codice corretto(precedentmente identificato) per allarmare/disallarmare la centralina:

Trasmettitore test.png

pi@raspberrypi ~/433Utils/RPi_utils $ sudo ./codesend 16546576
sending code[16546576]
pi@raspberrypi ~/433Utils/RPi_utils $

Per integrare il tutto sul mio sistema, avendo una pagina web per monitorare il mio raspberry su un server web (nas: samba, minidlna, transmission, amuled, vpn, shell web etc etc) è stato interfacciare il comando codesend lato web, cosi collegandomi dall'esterno in vpn tramite smartphone posso collegarmi all'interfaccia web (protetta da password) e allarmare/disarmare la centralina, senza dover più spendere un centesimo per gli SMS , ed attualmente funziona:D

Prossimamente, devo riuscire a capire come configurare il ricevitore in modo che riesca a beccare il segnale che viene inviato alla sirena wifi per essere abilitata/disabilitata, anche da lunga distanza (modulazione errata?! antenna non ottimale?!) ,questo per avere un feedback dalla centralina quando la stessa centralina viene allarmata/disarmata.