Go Down

Topic: "Decodifica" sequenza di note con arduino (Read 905 times) previous topic - next topic

Lima68

Salve a tutti,
                ho la necessità di generare, alla pressione di un pulsante, una serie di suoni utilizzando la classica "funzione"
Code: [Select]
tone(pin, frequenza, durata) . E fin qui non ci son problemi.
Quello che chiedo,in questo post, è: esiste la possibilità di "decodificare" questo suono, con un altro arduino, e, in base al suono ricevuto, fargli fare una determinata azione? Il concetto di base è quello delle Seletive radio che, in base al tipo di suono inviato da un dispositivo, viene ricevuto da un altro dispositivo e fa compiere, alla radio piuttosto che ad arduino, un'azione. Ora so che le selettive radio utilizzano i toni DTMF; se con un arduino invio una serie di suoni ,utilizzando il codice sopracitato, parliamo sempre di toni DTMF o è una cosa diversa e, quindi, si deve procedere in altri modi?
(attenzione: la realizzazione si intende composta da 2 arduino il quale 1 genera il segnale audio, il 2 lo riceve e lo deve decodificare il tutto passante da un sistema di comunicazione impossibilitato a generare suoni se non il parlato vero e proprio)
Spero di essermi spiegato sufficientemente bene.
Ringrazio chiunque saprà aiutarmi.

Alessandro

Datman

Uno solo a onda quadra, sì. Per il DTMF devi usare un decoder apposito.
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

Lima68

Ciao,
      la tua risposta non mi è chiara. Forse mi sono spiegato male io.
Il mio intento è quello di generare un suono, come i suoni delle selettive radio(le selettive radio vengono utilizzate per inviare un segnale audio che, ad esempio una centrale operativa, decodifica e capisce chi l'ha mandata ed altri dati sul mittente,opportunamente inseriti in un gestionale....spiegata in soldoni), utilizzando il codice "tone",o altre funzioni che potete suggerirmi, per generarlo(e questo non mi crea problemi nel farlo). Il "problema è come "decodificarlo",da un altro arduino, (credo sia la parola giusta) e fargli fare qualcosa( ad esempio accendere un led) . i miei quesiti sono questi:
1- generando un suono con la funzione "tone" (formato da più note) esso è considerabile un DTMF e,quindi, decodificaile con shield dedicata, oppure risulta essere un "suono" non DTMF?
2- Nel caso non fosse un tono DTMF c'è un modo per " decodificarlo e far fare qualcosa ad arduino?

Datman

Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

Lima68

Porti pazienza, ma questa sua risposta a quale delle 2 domande sarebbe riferita?
Quello che mi riporta lo conosco e lo utilizzo tranquillamente..quello che ho chiesto io è se la funzione "tone" di arduino genera un suono o un tono DTMF e nel caso arduino, con la funzione "tone" non generasse un DTMF come e se può essere "decoficato". Non ho bisogno che, a 2 domande ben specfiche, mi venga risposto con una cosa che non c'entra.( se no avrei chiesto come si decodifica un tono DTMF..cosa ,tra l'altro, reperibile facilmente su internet)

docdoc

1- generando un suono con la funzione "tone" (formato da più note) esso è considerabile un DTMF e,quindi, decodificaile con shield dedicata, oppure risulta essere un "suono" non DTMF?
La seconda che hai detto. Un DTMF è un "doppio suono" ossia due toni suonati contemporaneamente (Dual Tone MultiFrequency)  che rappresentano riga e colonna del tasto di una tastiera telefonica 3x4.
Per emettere un DTMF devi avere un generatore DTMF. In alternativa potresti campionare i 12 suoni DTMF e riprodurli come forme d'onda (con un mp3 player per Arduino ad esempio).

Quote
2- Nel caso non fosse un tono DTMF c'è un modo per " decodificarlo e far fare qualcosa ad arduino?
E' una singola frequenza, non è affidabile, quindi direi di no. L'alternativa sarebbe costruire un segnale partendo da una frequenza fissa "modulata" per rappresentare i vari bit, cosa che potresti fare attivando e disattivando l'uscita di un pin, o, meglio, direttamente con un apposito circuito (es. un oscillatore basato su un 555, il cui output lo controlli col pin digitale).
Ma la vedo sempre non proprio banale, quindi dato che dico sempre che va prima identificata l'esigenza e poi valutate le possibili soluzioni, se vuoi prova a spiegare meglio quale sia l'esigenza.


Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

Datman

Un suono DTMF è composto da due toni miscelati, che puoi generare con due oscillatori di qualsiasi tipo, anche con Arduino.

Per decodificare un DTMF, però, serve un decoder, o due NE567, o due rivelatori con filtri a banda stretta, o devi fare un'analisi dello spettro (ma non con Arduino).
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

gpb01

#7
Jun 18, 2020, 09:01 am Last Edit: Jun 18, 2020, 09:02 am by gpb01
>Lima68: Se fai una semplice ricerca con Google per "arduino dtmf tone generator" trovi decine di esempi e di schemi, idem per la parte decodifica.  Ovvio che NON basta SOLO Arduino, ma ci vuole un minimo di componentistica esterna.

Guglielmo
Search is Your friend ... or I am Your enemy !

Lima68

Ma infatti gpb01 ...io non chiedevo come codificare e decodificare un DTMF che ,come giustamente dici tu, ricercando in rete si trovano schemi ecc. Mi ha risposto bene docdoc che mi ha chiaramente detto che la funzione "tone" di arduino non genera un segnale decodificabile come intendo io(così ho capito).

Provo a spiegare il progetto che vorrei realizzare visto che docdoc me lo chiede.

L'idea è di replicare una selettiva radio( tipo il beep beep delle radio della polizia per intenderci) da inviare attraverso un app che simula le radio rtx, ovvero generare un suono con arduino che,al ricevente, indichi alcuni dati che andranno ad esser stampati su monitor seriale(come ad esempio il nominativo di un veicolo,ovviamente preinpostato a monte della programmazione, l'arrivo sulla scena ecc). Per cui questo suono dovrebbe essere generato da arduino, passare tramite app dal mittente al destinatario, essere "decodificato" per far scrivere sul monitor seriale qualcosa.
Spero docdoc, e ovviamente tutti gli altri, di essermi fatto capire.

Alessandro

Datman

#9
Jun 18, 2020, 04:24 pm Last Edit: Jun 18, 2020, 04:25 pm by Datman
Deve esserti sfuggita la mia precedente risposta:

"Un suono DTMF è composto da due toni miscelati, che puoi generare con due oscillatori di qualsiasi tipo, anche con Arduino.

Per decodificare un DTMF, però, serve un decoder, o due NE567, o due rivelatori con filtri a banda stretta, o devi fare un'analisi dello spettro (ma non con Arduino)."
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

docdoc

La "selettiva" di cui parli è la DSC usata dalle forze dell'ordine e non solo, visto che fa parte del GMDSS (codifica marina), ma direi di non complicare troppo le cose.

Però le informazioni che hai dato ancora non sono proprio sufficienti (almeno per me) per poter trovare una possibile soluzione, tutto il discorso può variare abbastanza in base ad alcuni fattori per cui provo ad elencare quelli che mi vengono in mente, che ti consiglio comunque di prendere in considerazione (a meno che tu non l'abbia già fatto, ma non avendolo detto non so ;) ):

1) tipo di informazioni da trasmettere: bastano i 12 simboli del DTMF (numeri 0-9 più i due simboli "*" e "#" delle tastiere) o servono anche altri caratteri? Certo, si potrebbero "ricodificare" altre informazioni con questi 12 simboli, ad esempio se mando un asterisco questo deve essere seguito da 3 cifre che identificano un carattere ASCII (ma ciò comporta la necessità di trasmettere ben 4 toni DTMF per ogni carattere "extra")

2) affidabilità della trasmissione: dato che possono capitare interferenze che potrebbero impedire la trasmissione di tutti gli elementi, sono dati importanti e quindi serve un metodo di correzione degli errori? quindi si può o deve configurare ad esempio una risposta ACK ad ogni pacchetto ricevuto per confermare la ricezione, o NAK per chiedere la ritrasmissione)?

3) tipologia di trasmissione: qual è la quantità di informazioni da mandare in ogni "pacchetto" e quale la velocità minima necessaria di trasmissione?

Praticamente tutti questi aspetti sono legati ovviamente tra loro.

Assumendo per ora che la codifica DTMF vada bene per questioni di praticità e relativa semplicità, e che ci sia un Arduino che trasmette ed uno che riceve.

Quindi per trasmettere ed evitare di usare altri accrocchi, ti consiglierei di provare ad implementare un piccolo convertitore passivo D/A con R/2R come QUESTO oppure con un circuitino D/A su I2C come QUESTO.

Per il ricevitore, credo che possa bastare quello che già ti avevano suggerito, vedi ad esempio QUESTO.

Una volta fatto un piccolo "lab" con due Arduino connessi localmente, il resto è un problema solo software e di codifica.
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

Datman

#11
Jun 18, 2020, 04:35 pm Last Edit: Jun 18, 2020, 04:43 pm by Datman
Quella è la ZVEI-1: Google: ZVEI-1
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

Datman

Generare la sequenza con Arduino è un gioco per lattanti; :) Decodificarla con Arduino da solo, sarà un po' più laborioso. Prima di tutto, devi amplificare il segnale fino a ottenere livelli logici (0-5V); poi, con pulseIn devi identificare una per una le note. Se cominci con una sequenza lenta, è facile; bisogna vedere, poi, quanto riesci a velocizzare.
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

docdoc

Quella è la ZVEI-1: Codifica ZVEI-1
Si, vero. Ma comunque non è semplice da gestire, per cui non serve... ;)

Decodificarla con Arduino da solo, sarà un po' più laborioso.
Appunto, a meno che non stia progettando un sistema radio per la Protezione Civile e/o non abbia tempo in abbondanza da dedicare a questo progetto, la cosa non è proprio semplice, e limitandosi ai DTMF potrebbe bastargli. Ma non conoscendo le caratteristiche richiete né l'ambito di applicazione, non serve sbilanciarsi con spunti tecnologicamente interessanti ma difficili da implementare ;)
Alex "docdoc"
- "Qualsiasi cosa, prima di rompersi, funzionava"

Datman

#14
Jun 18, 2020, 04:46 pm Last Edit: Jun 23, 2020, 05:18 pm by Datman
Decodificare la ZVE-1 con Arduino:
Google: ZVEI-1 Arduino
Hi,I'm Gianluca from Roma.I play&work with electronics since I was16(1984).
After 25yrs of maintenance on cameras&video mixers,since 2013myJob is HDTVstudios design.
Since Jan2015 IPlayWith Arduino:bit.ly/2F3LPWP
Thanks 4 a Karma if U like my answer

Go Up