Go Down

Topic: Risponditore telefonico DTMF (Read 2088 times) previous topic - next topic

Ciao a tutti,

Conoscete qualche shield di riconscimento toni DTMF per creare una sorta di risponditore automatico?

La mia idea e' di interporre l'Arduino (con opportuna shield) tra la presa del telefono di casa (quindi non GSM) e il cordless.
L'Arduino avrebbe il compito di:
- riconoscere il RING e il numero del chiamante, mantenento inibito il RING verso il cordless.
- se il chiamante non e' stato riconosciuto, fa passare la chiamata al cordless che iniziera' a squillare
- se il chiamante viene riconosciuto, senza far squillare il cordless, deve poter rispondere in modo automatico e riconoscere/inviare toni dtmf a chi chiama (terminando poi la chiamata)

Attualmente ho l'Arduino UNO ma con una opportuna shield si potrebbe ottimizzare con un Arduino Nano/Mini in quanto  la necessita' e' di memorizzare 2 numeri di telefono e 3-4 codici dtmf.

C'e' qualcuno che ha gia' fatto qualcosa del genere?
Grazie

uwefed

#1
Apr 10, 2012, 12:16 pm Last Edit: Apr 10, 2012, 12:27 pm by uwefed Reason: 1
Ma vuoi rispondere al telefono solo a chi chiama con il numero di tel sopresso?

Non ho mica idea come viene trasmesso il numero di chi chiama. Comunque é un servizio che deve essere attivato.

Per il DTMF:
http://code.google.com/p/arduino-based-dtmf-decoder/
http://blog.makezine.com/2010/06/26/dtmf-shield-adds-touchtones-to-the/

Ciao Uwe


Ma vuoi rispondere al telefono solo a chi chiama con il numero di tel sopresso?

L'Arduno dovrebbe rispondere al numero che ha in memoria e attendere un codice dtmf a cui rispondera' con un suo codice, sempre in dtmf, per poi terminare la chiamata.
Naturalmente, se al telefono "risponde" l'Arduino, e' preferibile che non si senta alcuno squillo, non avrebbe senso scomodare l'utente.
Mentre se il numero del chiamante non e' quello memorizzato, allora l'Arduino lascia passare la telefonata e si mette da parte.


Non ho mica idea come viene trasmesso il numero di chi chiama. Comunque é un servizio che deve essere attivato.


Probabilmente non sono stato del tutto chiaro, provo a riformulare.
Posto che il servizio del gestore telefonico di fornitura del numero chiamante sia attivo (ormai lo e' sempre), l'Arduino dovrebbe decodificare il numero del chiamante mentre la chiamata e' in arrivo (cioe' ancor prima di aprire la cominicazione). In poche parole, dovrebbe fare la stessa cosa che fa il cordless quando ci visualizza il numero mentre il telefono squilla.

Schematizzando, ecco le funzioni che dovrebbero esserci nello shield:
- riconoscimento lo stato di RING presente sul doppino
- decodifica del numero chiamante
- cambiamento di stato da "ascolto" a "colloquio" ("alzare la cornetta")
- trasmissione bidirezionale in DTMF
- chiusura della comunicazione ("abbassare la cornetta")


Per il DTMF:
http://code.google.com/p/arduino-based-dtmf-decoder/
http://blog.makezine.com/2010/06/26/dtmf-shield-adds-touchtones-to-the/

Ciao Uwe

Grazie dei link ora me li guardo.

m_ri

#3
Apr 10, 2012, 03:02 pm Last Edit: Apr 10, 2012, 03:12 pm by m_ri Reason: 1
-Per "sospendere" lo squillo, se non sbaglio dovresti filtrare la componente alternata di 90(o 150??)volt..invece di solito quando la cornetta è abbassata ci sono sui 48 volt che si abbassano a 12 quando alzi la cornetta..spero di non dire una castroneria,ma direi che potresti semplicemente mettere un relè tra telefono e linea pilotato dall'arduino..quando intercetta una chiamata,scollega subito il telefono se vuole,altrimenti lo lascia com'è..
-per il numero: nei modem gsm(penso funzioni anche così per quelli pstn) basta mandare all'inizio il comando AT+CLIP=1...da lì in poi, quando qualcuno chiama,oltre a scrivere ring ti scrive anche il numero di cellulare compreso tra i doppi apici..per trovarlo, fai qualcosa del tipo num=strstr(RXmodem,"/"+39") e avrai che num punta al numero di telefono..dovrai fermarti a leggerlo al successivo "


-per il numero: nei modem gsm(penso funzioni anche così per quelli pstn) basta mandare all'inizio il comando AT+CLIP=1...da lì in poi, quando qualcuno chiama,oltre a scrivere ring ti scrive anche il numero di cellulare compreso tra i doppi apici..per trovarlo, fai qualcosa del tipo num=strstr(RXmodem,"/"+39") e avrai che num punta al numero di telefono..dovrai fermarti a leggerlo al successivo "


Sebbene non avessi intenzione di usare un modem, puo' essere un'idea, anzi, ho gia' un modem interno per notebook che usa un connettore micro-pci e forse apro un topic per capire come utilizzarlo.
Oppure si puo' valutare l'uso di un modem embedded generico che si trova in rete.

Pero' vorrei evitare l'uso di un modem, mi sembra eccessivo per quello che voglio fare.

supergiox

Ti faccio un UP perchè è un progetto molto interessante :)

m_ri

mhh,da una veloce ricerca ho trovato qua http://www.datasheetcatalog.com/catalog/p764200.shtml il componente PCD3316..
però ti dico subito che ho fatto una ricerca mooolto superficiale..  :)

Go Up