HOME                                                                     

Chiave DTMF

                                    da 1 a 8 cifre

 

 

Introduzione

Tempo fa sulle pagine di questo sito, ho sottoposto alla vostra attenzione una chiave dtmf criptata, molto sicura e difficilmente violabile, cliccando QUI se vorrete potete darci un'occhiata.

Naturalmente maggiore affidabilità certe volte significa anche maggiore complessità, per cui su richiesta di un amico, nel tempo libero ho realizzato sempre una chiave a toni dtmf, però molto più semplice e quindi anche più vulnerabile.

Per la decodifica dei segnali sono andato a ripescare un vecchio mt8870, sicuramente ne avrete qualcuno anche voi nei cassetti, per la gestione del quale, ho utilizzato un altrettanto vecchio pic 16f84, tutto all'insegna della semplicità.

Visto che c'ero, ho inserito anche un display della Hitachi, in modo anche da poter visualizzare i codici decodificati.

Il circuito è nato per essere collegato al ricevitore di un ripetitore, in modo da poter attivare od inibire il funzionamento dello stesso a distanza, ma credo che il circuito in oggetto possa essere impiegato anche su altre apparecchiature; purché lo si alimenti con una tensione di 5 Volt stabilizzata e non si superino i 500 mVpp di segnale all'ingresso del tm8870.

Voglio ricordarvi, che il tm8870, peccato non sia più in produzione, decodifica oltre ai toni dallo zero al nove, anche i toni dalla A alla F; infatti, con le quattro linee di cui dispone lavora in esadecimale, mettendoci a disposizione un totale di sedici toni decodificabili che possiamo inserire nell'ordine che più preferiamo, purché non si superi il limite massimo che ho fissato ad otto.

Ad ogni tono dtmf è associato un numero o una lettera (caselle verdi). Ciascun tono è ottenuto dalla miscelazione di due frequenze, una bassa (caselle gialle verticali), ed una alta (caselle gialle orizzontali). Ad esempio il tono dtmf "5" è ottenuto dalla miscelazione delle due frequenze di 770 Hz e 1336 Hz..

A destra, accanto ad ogni tono dtmf è riportato il corrispondente codice binario in uscita dal decodificatore mt8870.

A destra, un generico treno d'impulsi dtmf, ognuno dei quali ha una durata pari a 50 ms, intervallati da pause di 50 ms circa.

Clicca qui per ascoltare i toni.

Schema elettrico

Guardando lo schema elettrico, avrete sicuramente notato, che le linee dati verso il display sono in comune anche col decodificatore mt8870, ciò ovviamente per non passare a pic più ingombranti, ridurre il numero delle piste e semplificare il circuito.

Questo risultato si paga con una implementazione software piu articolata e complessa, che dovrà gestire in modo opportuno tali linee, che saranno in un primo momento predisposte come ingressi per leggere il codice in arrivo dal mt8870, e successivamente predisposte come uscite per inviare i dati ricevuti al display e visualizzarli correttamente.

Quando un tono dtmf è riconosciuto valido dall'mt8870, quest'ultimo manda a livello alto il pin 6 del pic (rb0), per avvertirlo che vi è un codice pronto ai sui pin 7-8-9-10 (rb1-2-3-4), il pic di conseguenza lo legge e lo memorizza nella sua ram interna.

Questa operazione si ripete per ogni tono dtmf in arrivo, purché il tempo che intercorre tra ognuno di essi non superi 800 ms circa, superato tale limite si può ragionevolmente credere che non vi siano più altri toni dtmf in arrivo ed il pic decide quindi di passare alla loro visualizzazione.

A tale fine, il pic manda a livello basso il suo pin 11 (rb5), per mandare in alta-impedenza le uscite dell'mt8870 disattivandolo, che a questo punto è come se non fosse più collegato al circuito, a seguire predispone i pin 6-7-8-9 (rb0-1-2-3) come uscite, per pilotare adeguatamente il display e visualizzare i toni dtmf arrivati.

Al termine della stampa si conclude un ciclo, e per farne ripartire un altro, il pic riporta a livello alto il suo pin 11 (rb5), per riattivare l'mt8870 con lo stesso ordine visto prima, evitando in questo modo che display ed mt8870 entrino in conflitto tra loro nella condivisione delle linee di comunicazione.

Il pic, in questo caso specifico, non avendo bisogno di un clock di riferimento particolare, può fare a meno del suo quarzo di riferimento, per cui, per la scansione di tutte le operazioni interne ed esterne, può servirsi benissimo del clock generato dall'mt8870, prelevato appunto dal condensatore da 33pF ed inviato al suo ingresso di clock pin 16.

Dei cinque pin di in/out rimasti liberi, ne ho utilizzati due, uno per leggere lo stato del pulsante che serve per cambiare il codice della chiave, e l'altro per pilotare un led in modalità toggle; quindi, tutte le volte che un codice in arrivo sarà riconosciuto valido, il led si accenderà se era spento, oppure si spegnerà se era acceso.

Quest'ultima uscita, avrete cura di collegarla ad un transistor, oppure ad un transistor che piloti un relè, in funzione dell'uso che ne farete, vedi figura che segue.

Programmazione codici

Per la parte hardware non mi pare vi sia null'altro da dire. Per la parte software, sempre che ne abbiate voglia, potrete scorrere il listato ASM QUI che ho cercato di corredare di tutte le indicazioni utili alla sua interpretazione, in modo da poterlo eventualmente modificare secondo le vostre esigenze; se poi amate la vita facile cliccate QUI per scaricare il file HEX, da inserire direttamente nel pic.

Se si esclude il potenziometro per la regolazione del contrasto del display, il circuito non ha punti di taratura, per cui, dopo averlo collegato al ricevitore ed averlo alimentato, dovrà funzionare immediatamente.

Abbiate cura soltanto di dosare il livello audio ad un valore di 150 mVpp circa, e noterete che inviando un treno di toni dtmf, il loro corrispondente valore alfanumerico, sarà visualizzato sul display immediatamente.

Inizialmente, dopo che avrete programmato il pic, il codice residente in memoria sarà pari a "12345", vi suggerisco quindi di provare ad inviarlo, e tutte le volte che lo farete, il led si accenderà oppure si spegnerà, evidenziando il corretto funzionamento della chiave.

Se invece provate ad inviare un codice diverso, noterete che pur se rappresentato sul display, non avrà nessuna influenza sul led, che manterrà il suo stato di acceso o spento, presente in quel momento.

Naturalmente tale codice potrete modificarlo come meglio vi pare, e per farlo vi basterà semplicemente tenere premuto il pulsante p1 mentre ne inviate uno nuovo; a partire da quel momento quello sarà il nuovo codice, che resterà memorizzato nella eeprom interna del pic, fino a quando non deciderete di cambiarlo nuovamente, e sarà presente anche dopo successivi spegnimenti ed accensioni del circuito.

Potrete sbizzarrirvi ad inserire numeri o lettere a vostro piacimento, il pic oltre a memorizzarne la sequenza da voi scelta, ne memorizzerà anche il loro numero, che come detto prima, non deve essere maggiore di otto.

Considerazioni finali

Quando il circuito prenderà posto nella sua sede definitiva, il display evidentemente non lo guarderà più nessuno, per cui se preferite potrete anche toglierlo dal suo connettore, in quanto il circuito continuerà a funzionare lo stesso.

Tutte le prove sono state effettuate prelevando il segnale di bassa frequenza direttamente dall'altoparlante del mio ricevitore vhf, e trasmettendo i segnali dtmf col mio portatilino munito di tastierino alfanumerico.

Sperando di essere stato sufficientemente chiaro, auguro a tutti voi buon lavoro e buon divertimento.

Cordialmente....

it9dpx  #135  (Francesco M.)