TELECOMANDO TELEFONICO VOCALE

Posted in: Elettronica,Schemi e Progetti |

TELECOMANDO  TELEFONICO  VOCALE

INTRODUZIONE
Salve, tempo addietro ho avuto modo di apprezzare le potenzialità di un famoso chip prodotto dalla  Statunitense ISD, in tecnologia DAST (Direct Analog Storage Tecnology). Trattasi di un circuito integrato veramente favoloso: L’ISD1016 , adatto per la registrazione e la riproduzione di messaggi vocali; all’interno del quale troviamo tutto l’occorrente per la conversione analogico digitale, nonché un preamplificatore microfonico con AGC, un banco di memoria EEPROM per la memorizzazione permanente dei messaggi, con relativa circuiteria per l’indirizzamento della stessa, un convertitore digitale analogico seguito da un amplificatore di B.F. per l’ascolto direttamente in altoparlante, oltre naturalmente a dei filtri che ne delimitano la banda passante.

Nel nostro caso con l’ISD1016 disponiamo di un tempo massimo di registrazione/riproduzione di 16 secondi, questo grazie alle locazioni di memoria contenute al suo interno selezionabili attraverso le otto linee A0-A7, con le quali possiamo impostare l’indirizzo di memoria a partire dal quale avverrà la registrazione/riproduzione. Ho pensato quindi di utilizzarlo abbinandolo ad un mio vecchio telecomando telefonico DTMF, come risponditore vocale che mi informasse sullo stato degli otto canali pilotabili. Con questo dispositivo, vi sarà possibile accendere o spegnere a distanza una qualsiasi apparecchiatura elettrica che si trovi a casa vostra, da un qualunque telefono purché dotato di tastiera DTMF. Al termine del lavoro, l’effetto finale l’ho trovato veramente accattivante, per cui è con piacere che lo sottopongo all’attenzione di tutti i lettori. (VEDI FOTO)

MODALITA’  D’ACCESSO
Vediamo ora cosa succede quando arriva una chiamata telefonica. Se nessuno alza la cornetta del telefono per rispondere, al termine del decimo squillo, il software provvederà ad inviare un livello alto al pin n°1 del PIC che attraverso il transistor TR1 chiuderà il relè RL9 agganciando la linea, subito dopo il PIC tramite le linee B0-B4, indirizzerà la memoria dell’ISD1016 con la sequenza opportuna, facendo ascoltare al chiamante il seguente messaggio: “ CIAO INSERISCI IL CODICE ”. A questo punto se siete stati voi a chiamare, allora digiterete sul tastierino del vostro telefono il codice a quattro cifre che al primo accesso al sistema sarà “1234”. Se per qualche motivo il codice non è quello giusto, il sistema informerà il povero malcapitato inviandogli il seguente messaggio: “ IL CODICE E’ ERRATO CIAO ” facendo cadere la linea.

Se invece eravate voi a chiamare, si presume che abbiate digitato il codice correttamente, nel qual caso il messaggio vocale che ascolterete sarà il seguente: “ IL CODICE E’ ESATTO ”. A partire da questo momento avrete accesso a tutte le funzioni offerte dal sistema. Potrete digitare un numero compreso tra 1 e 8 per attivare o disattivare un canale. L’attuatore é del tipo bistabile, per cui ad ogni pressione supponiamo del pulsante n°3, ascolterete dal ricevitore del telefono il seguente messaggio: “ IL CANALE 3 E’ ACCESO ” oppure  “ IL CANALE 3 E’ SPENTO ” informandovi così sullo stato del relè corrispondente al numero digitato. Se dopo aver ottenuto l’accesso volete soltanto conoscere lo stato attuale di ogni singolo relè, allora dovrete digitare “ * ”, subito dopo, una serie di messaggi simili al precedente vi informeranno sullo stato di ogni singolo relè, se è acceso oppure spento.

Se per ragioni di sicurezza vorrete cambiare il codice d’accesso, potrete farlo durante un accesso al sistema digitando “ # ”. In questo caso udirete dal ricevitore del vostro telefono il seguente messaggio: “ INSERISCI IL CODICE NUOVO ”; a questo punto digitate i quattro numeri che sceglierete per comporre il nuovo codice ed alla fine il sistema vi informerà che ha acquisito il nuovo codice inviandovi il seguente messaggio: “ IL CODICE NUOVO 2468 E’ ATTIVO ”; supponendo che voi abbiate digitato “2468”. Se durante questa operazione un numero non viene riconosciuto sarà inviato il messaggio: “ E’ ERRATO ”; se invece dovesse cadere improvvisamente la linea o venisse a mancare l’energia elettrica, saranno modificate solo le cifre fino a quel momento digitate.

Ricordatevi di appuntarvi da qualche parte il codice perché non vi verrà più ripetuto. Se non sarete più in grado di accedere al sistema perché avete dimenticato il codice, l’unica possibilità che avrete è quella di resettare il sistema togliendo alimentazione al circuito e dopo qualche secondo, tenendo premuto il pulsante P1 ridare alimentazione al circuito e successivamente rilasciare P1. In questo modo il codice d’accesso iniziale sarà “1234”. Ricordarsi che questa operazione va fatta anche quando si alimenta il circuito per la prima volta, affinché si  resetti la memoria interna del PIC.

Tutti i dati relativi al codice d’accesso ed allo stato dei relè, sono memorizzati in modo permanente nella EEPROM interna del PIC, per cui anche se per qualche motivo verrà a mancare l’alimentazione a 220 V.  i dati non andranno perduti; quindi al ritorno dell’alimentazione, sia il codice d’accesso che lo stato dei relè, assumeranno lo stato precedente all’interruzione dell’alimentazione. Dopo che avrete terminato le vostre operazioni, potrete interrompere la comunicazione digitando lo “0” (zero); il sistema vi risponderà col messaggio: “ CIAO ” facendo cadere la linea subito dopo. Attenzione, la linea cadrà ugualmente preceduta dal messaggio  “ CIAO ” se nell’arco di tempo di 15 secondi circa  non viene effettuata nessuna operazione; quindi se vorrete tenere impegnata la linea premere ripetutamente “ * ”, ascoltando a ripetizione lo stato attuale dei relè.

DESCRIZIONE DEL CIRCUITO
Molto sommariamente passo ora a descrivervi il principio di funzionamento elettrico del sistema. Osservando il circuito elettrico della FIG.1 notiamo che è essenzialmente costituito da cinque blocchi distinti:

1) l’interfaccia telefonica;

2) il decodificatore DTMF realizzato con l’8870;

3) il registratore/riproduttore con l’ISD1016;

4) l’attuatore per gli otto relè relativi agli otto canali;

5) il microcontrollore PIC16F84A

che costituisce il cuore di tutto il sistema, in quanto governa i precedenti blocchi attraverso le sue 13 linee di input/output. Dallo schema elettrico si nota inoltre come le quattro linee da B0 a B4 siano condivise dai vari blocchi, grazie al software di gestione che le abilita come input oppure come output, attivando di volta in volta il blocco col quale intende dialogare in quel momento, disabilitando tutti gli altri non interessati alla comunicazione.

In dettaglio il PIC, con le linee A1 e B7 gestisce  l’ISD1016; con la linea B6 l’attuatore dei relè e con la linea A0 l’8870. Partendo dall’interfaccia telefonica, notiamo che gli squilli vengono rivelati dall’optoisolatore 4N25, al cui piedino quattro sarà presente un impulso rettangolare a +5V. circa, di durata pari alla durata di uno squillo. Questi impulsi perverranno al pin 3 del PIC che li conterà, ed allo scadere del decimo squillo abbiamo visto prima cosa accade. Il trasformatore T1 assieme all’optoisolatore descritto prima isolano galvanicamente la linea telefonica da tutto il sistema. Tale trasformatore, con rapporto di trasformazione 1/1 e con impedenza pari a 800 ohm circa provvede al trasferimento della B.F. nei due sensi; sia in arrivo dalla linea telefonica verso l’8870 che decodificherà i toni DTMF, sia verso la linea telefonica per quanto riguarda i messaggi da inviare generati dall’ISD1016. Dopo aver conteggiato i dieci squilli il PIC chiuderà il relè RL9 effettuando il collegamento con la linea.

A questo punto il PIC rimarrà in attesa che arrivino dei toni DTMF, leggendo in continuazione lo stato del suo pin 17 collegato al pin 15 dell’8870; quando quest’ultimo invierà su tale pin un livello alto, vorrà dire che un segnale DTMF è stato decodificato correttamente, quindi il PIC predisporrà le linee B0-B3 come input e leggerà il dato inviatogli dall’8870. Tali segnali non avranno alcun effetto sull’ISD1016 perché disabilitato. Il software si occuperà quindi di riconoscere il comando in arrivo e di inviare in risposta il messaggio adeguato tramite l’ISD1016. Ciò avviene predisponendo le linee B0-B4 questa volta come output, inviando l’indirizzo per l’ISD1016 su tali linee e solo dopo che il PIC avrà mandato basso il suo pin 13 verso il pin 24 dell’ISD1016, quest’ultimo riconoscerà il comando come valido e riprodurrà il messaggio da inviare. Al termine della riproduzione l’ISD1016 informerà il PIC, mandando basso il suo pin 25 verso il pin 18 del PIC che era rimasto in attesa, il quale potrà ora continuare con le sue successive elaborazioni.

La comunicazione verso l’attuatore dei relè avviene attraverso le tre linee B4-B6 in modo seriale, sfruttando uno shift-register del tipo “SIPO”, ovvero un dispositivo con ingresso seriale ed uscita parallela. Più precisamente, io ho scelto di usare il “4094” il cui funzionamento si può intuire facendo riferimento al diagramma temporale rappresentato nella fig.3. Al pin2 del  4094 vengono inviati i bit dati relativi allo stato di ogni singolo relè; al pin 3 il clock per ogni singolo bit da acquisire ed al pin1 lo strobe che carica i bit dati su dei latch interni e li presenta contemporaneamente alle uscite che comandano i relè. Consiglio di realizzare l’attuatore dei relè, su una basettina separata così come ho fatto io. Ognuno potrà infatti usare i relè adeguati alla potenza da commutare od all’occorrenza usare degli opto-triac. Il clock che scandisce tutte le funzioni, viene generato dall’8870 e tramite il condensatore da 39 pF inviato anche al pin 16 del PIC. Il pin1 del PIC pilota tramite una resistenza di limitazione anche il diodo leed LD1, indicando con la sua accensione che vi è una comunicazione in atto.

IL PROGRAMMATORE

Nella TABELLA 1 ho riportato le 20 parole da registrare sull’ISD1016 coi relativi indirizzi di partenza di ognuna.

parole

Nelle TABELLA 2 ho riportato invece i messaggi completi ottenuti dalla composizione delle precedenti 20 parole che si ascolteranno dal ricevitore del telefono durante le varie operazioni.

messaggi

Per chi non dispone del programmatore per registrare le parole sull’ISD1016, in FIG.2 propongo un semplice circuito col quale potrete agevolmente  svolgere tale operazione. Il procedimento è un po’ macchinoso, ma se eseguito con calma e determinazione, vi darà dei buoni risultati sin dal primo tentativo. Dopo aver dato alimentazione al programmatore, imposterete sui dip-switch l’indirizzo di partenza della parola da registrare che potrete prelevare dalla TABELLA 1. Supponendo di voler registrare la parola “ ZERO ” imposteremo sui dip-switch l’indirizzo di partenza, il cui valore binario corrispondente è: “ 0000.1010 ”. Quindi premeremo il pulsate “ REC ” e tenendolo premuto, premeremo anche il pulsante “ START ” per il tempo strettamente necessario a pronunciare con decisione davanti al microfono la parola  “ ZERO ”, rilasciandolo subito dopo, rilasciare ora anche il pulsante  “ REC ”.

Per verificare la bontà del lavoro svolto, premere ora brevemente il pulsante “ PLAY ” e  dall’altoparlante si udirà la parola “ ZERO ” precedentemente registrata. Si procederà allo stesso modo per tutte le 20 parole, avendo cura di pronunciarle abbastanza “chiaramente e velocemente”, e di verificare dopo ogni singola registrazione che non vi siano sovrapposizioni con la precedente, troncando le parole. Chiaramente se ciò si dovesse verificare , occorrerà ripetere la registrazione delle parole troncate. Alla fine del lavoro per ognuno dei 20 indirizzi impostati sui dip-switch, dovreste ascoltare 20 distinte ed indipendenti parole, così come rappresentato nella TABELLA 1. Poco prima ho scritto abbastanza velocemente, in quanto il tempo a disposizione per ogni singola parola è di 800 millisecondi circa, valore ottenuto dal tempo totale a disposizione diviso il numero delle parole da registrare, 16/20=0.8 ovvero  800 millisecondi. Tempo tutto sommato più che sufficiente al nostro scopo. Non scoraggiatevi se non riuscirete al primo tentativo, dopo qualche prova intuirete come coordinare la pressione dei pulsanti con la pronuncia delle varie parole.

CONCLUSIONE

Il software da me realizzato e testato non ha dato finora segni di cattivo funzionamento, con piccole modifiche può essere adattato anche a circuiti integrati DAST di più recente costruzione, ed è a disposizione di tutti presso il sito di Elettronica Flash nell’area download. Tutte le resistenze se non diversamente specificato sono da ¼W. Lo stesso discorso vale anche per i condensatori la cui tensione di lavoro e di 15V. o superiore, se non diversamente specificato. Salutandovi, auguro a tutti buon lavoro e buon divertimento, sperando di essere stato sufficientemente chiaro ed esauriente nelle descrizioni fin qui fatte. Comunque rimango a disposizione di tutti coloro che mi richiederanno ulteriori  informazioni o che vorranno inviato l’ISD1016 od il PIC già programmati. Saranno inoltre graditi suggerimenti ed osservazioni atte a migliorare il progetto che potrete farmi pervenire all’indirizzo e-mail

IT9DPX – #135  (Francesco M.)

(Articolo visitato: 6.297)

4 Risposte to “TELECOMANDO TELEFONICO VOCALE”

  1. paoli Says:

    Ottimo articolo!! fervidi complimenti !!!
    Michiedevo se sipuo modificare il tutto per un comando FTMF (TX e RX ) per comandare unrobot immerso in acqua dimare !.. tipo sottomarino .. inefetti le onde radio al di sopra diuna certa frequanza vengono cortocicuitate dalgi iono del sale ….in acqua dolce le onde radio alcune frequenze “entrano” ma in acqua dolce impossibile salvo le ELW .. dunque pensavo a untelecomando “acustico ” via DTMF co n a

  2. paoli Says:

    SEGUE : .. dicevo via DTMF o comando vocale : ricevitore con riconoscimento vocale … tuttoper superare la barriera dell’acqua di mare !:)

  3. Francesco Says:

    Grazie…
    Non ho mai provato ma penso sia possibile come si trattasse di un sonar…..Saluti.

  4. Danilo Says:

    Bellissimo progetto, mi piacerebbe avere il sorgente del PIC F1684 e il disegno del circuito stampato, è possibile?
    Ciao
    Danilo

Lascia un Commento!