Ger Koper blog
Telecomando portachiavi sono tipicamente utilizzati per porte da garage e simili. Anche i sistemi di apertura delle porte dell’auto li usano. Il protocollo di questi dispositivi sembra essere relativamente standard. Quando si preme uno dei pulsanti, vengono inviati una serie di impulsi a radiofrequenza (rf) che vengono successivamente ricevuti dall’apparecchiatura di apertura della porta. Questi confrontano la sequenza di codice ricevuto con il codice memorizzato internamente e quando uguale aprire o chiudere la porta. Questo principio viene utilizzato anche per il controllo dell’illuminazione, la trasmissione di informazioni sulla stazione meteo, ecc.
Questo piccolo rapporto è sui cosiddetti portachiavi come mostrato sopra. Questi sono attualmente abbondantemente disponibili sul web. Hanno il vantaggio di avere un meccanismo con cui possono essere programmati da un altro portachiavi. La procedura è relativamente semplice ma richiede una certa persistenza: alla fine funzionerà:
- Premere contemporaneamente i pulsanti A e B. Il LED si accende e dopo qualche tempo inizia a lampeggiare velocemente. Ciò indica che il portachiavi viene cancellato e i pulsanti possono essere rilasciati.
- Ora, premendo uno qualsiasi dei pulsanti, il LED lampeggia solo una volta molto breve. Questo indica che non viene trasmesso alcun codice.
- Chiamiamo questo portachiavi “vuoto” numero 1. Il portachiavi da cui vogliamo copiare è il numero 2.
- Ora copieremo il codice del pulsante X, A, B, C o D, dal portachiavi 2 al portachiavi 1 pulsante Y (A, B, C o D).
- Premere il pulsante X sul portachiavi 2, il suo LED brucerà continuamente per indicare che sta trasmettendo le sequenze di codice.
- Pulsante Y sul portachiavi 1, il suo LED emette un breve lampeggio iniziale e quindi rimane spento.
- Portare i due portachiavi, mantenendo i pulsanti spinti, insieme, di solito da davanti a davanti, ma altre posizioni possono anche funzionare, fino a quando il LED sul tasto 1 inizierà a lampeggiare. Quindi i pulsanti possono essere rilasciati.
- Premere ora il pulsante Y sul portachiavi 1 e il LED dovrebbe brillare continuamente per indicare che sta trasmettendo un codice. Se tutto è andato bene questo codice attiva anche la porta che è stata controllata da key fob 2.
- Questo può essere ripetuto per tutti e quattro i pulsanti. Codici identici per due pulsanti diversi possono anche essere programmati, la chiave non si lamenterà.
Importante notare che i portachiavi dall’aspetto simile possono avere protocolli diversi, anche se simili. Seguire le istruzioni del venditore se necessario.
Si può anche acquistare un’unità di controllo che contiene due relè che possono essere controllati da due pulsanti di un portachiavi sopra descritto. Queste unità devono anche essere programmate, anche se sono dotate di portachiavi pre-programmati. L’unità ha un DIP-selettore che imposta la modalità di controllo. Qui usiamo che un singolo pulsante commuta sia on che off. L’unità ha due LED che si trovano accanto ai relè e indicano lo stato del relè: on o off. Vicino al pulsante di controllo c’è un altro LED. Lampeggia al ricevimento di un segnale rf codificato da un portachiavi.
Se si desidera operare con codici diversi da quelli codificati dalla fabbrica, si procede come segue
- I codici vengono cancellati premendo il pulsante fino a quando il LED inizia a lampeggiare.
- Ora, i tasti non possono più commutare i relè anche se il LED potrebbe lampeggiare per indicare che è stato ricevuto un codice.
- Premendo il pulsante sull’unità una volta che porta l’unità in modalità di programmazione, il LED si accende.
- Premere prima sul portachiavi il pulsante che deve controllare il relè A. Il LED lampeggia per indicare la ricezione. Rilasciare il pulsante. Il LED rimane acceso.
- Premere ora sul portachiavi il pulsante che deve controllare il relè B. Il LED lampeggia per indicare la ricezione e si spegne.
- L’unità è ora programmata. Premendo i due pulsanti si attiveranno i relè A e B.
- Nota, che premendo due volte lo stesso pulsante si programmerà solo il relè A!
Potrebbe essere interessante utilizzare un codice completamente diverso con i portachiavi e l’unità. Tale è descritto per un Raspberry Pi da un instructable scritto da george7378. Di seguito un esempio di una traccia di un codice pulsante.
Il segnale rf è acceso durante il tempo “alto”, in genere circa 0,5 ms, e spento durante il segnale” basso”, circa 1 ms. Queste sequenze vengono ripetute con un intervallo di circa 10 ms in modo che centinaia di sequenze di codice vengano inviate premendo il pulsante per un secondo o giù di lì. Il codice può essere facilmente letto, un alto breve seguito da un basso lungo è interpretato come un binario 1 mentre un alto lungo seguito da un basso corto è un binario 0. La sequenza di codice binario consiste quindi di 25 bit, qui 1111 0000 0101 0110 0101 1110 1. Ci sono 225 = 33.554.432 codici diversi possibili con questi 25 bit.
Con il piccolo programma Python descritto da instructable sopra menzionato è relativamente semplice inserire il proprio codice. L’utilizzo di un’antenna 17,2 cm sul trasmettitore 433 MHz rende la codifica dei telecomandi molto più semplice. Soprattutto se si rende grande il numero di ripetizioni di sequenza, cioè cambia NUM_ATTEMPTS da 10 a 100.
Ci sono molti codici diversi possibili già con questa sequenza a 25 bit, ma se si immagina che il numero di bit, il tempo “alto”, il tempo “basso” e il tempo di ripetizione possano essere variati a piacimento si vede perché di solito non c’è troppa interferenza tra unità e portachiavi di varia origine. Ci saranno limiti sui tempi e codici utilizzati, ma un sacco di variazione rimane per un determinato set.
Alcune osservazioni sui programmi descritti in instructable.
- Utilizza la stessa porta GPIO per l’invio e la ricezione. Ho trovato più facile averne di diversi in modo che entrambe le unità possano essere collegate contemporaneamente.
- Utilizzando sulla prima riga il codice
#!/usr/bin/python
e rendendolo eseguibile per esempio
chmod +x TransmitRF.py
permette di chiamare il programma più semplice come
./TransmitRF.py a_on
e ripetere la sua operazione.
- Invece di usare ReceiveRF.py, il programma per leggere la sequenza di codice da portachiavi, preferisco usare il mio Logic 4 Digital + Analog Logic Analyzer da Saleae. Dà molta più libertà nell’analizzare i dati.