DTMF decoder (MT8870)

DTMF (dual-tone multi-frequency) is een systeem dat gebruikt wordt in de telefonie om opdrachten te versturen (voornamelijk als telefoonnummer) binnen de frequentiebandbreedte van spraak (125 – 8,000 Hz). Het is de opvolger van pulskiezen en wordt soms ook toonkiezen of toondrukkiezen (TDK) genoemd.

Met deze tutorial zetten we DTMF tonen om naar binaire/decimale waarden. Zo zijn we in staat door middel van een toon, een GPIO poort aan te sturen. Dit project focust zich alleen op de detectie van het DTMF signaal en het in decimale waarde zichtbaar maken. Het is daarna erg eenvoudig om bij een herkende waarde een bepaalde GPIO poort te activeren.

T65 TDK telefoontoestel met DTMF toonkiezer

Dual tone
Dual tone betekent dat er twee frequenties tegelijk worden uitgezonden. In totaal zijn er acht frequenties. Steeds wordt er een van de vier laagste en een van de vier hoogste tegelijk uitgezonden. Er zijn dus zestien verschillende combinaties in een matrix van vier bij vier.
De frequenties zijn zo gekozen dat er door menging van deze frequenties geen frequentie kan ontstaan die bij deze acht frequenties staat. Men koos voor een menging van twee tonen, zodat een decoder niet zou reageren op toevallige spraakinformatie.

De frequentieverdeling en de binaire uitkomst van de MT8870 DTMF decoder ziet er als volgt uit:

MT8870 module
De module werkt op 5V, heeft 4 datalijnen en een en StQ-datalijn die Hoog is als er een DTMF signaal gedetecteerd wordt. Mocht je hiervoor een LAAG signaal willen gebruiken, deze is naast de pin op de module aangebracht.

Verschillende aansluitpinnen

Ik heb twee afbeeldingen geplaatst omdat je beide regelmatig tegenkomt. Het verschil is dat er een NOT-streepje bij de StQ pin geprint is, dit hoort als het signaal geïnverteerd is. Ook is de voedingsaansluiting met de ground omgewisseld. Hoe dan ook. Ik neem aan dat beide prima werken. Je zou de module kunnen doormeten om te bevestigen wat +5V en GND op het board is. Hier vind je de het schema.

De module wordt als volgt met de Raspberry Pi verbonden.

Aansluittabel MT8870 module met de Raspberry Pi

DTMF encoder
Als je smartphone een 3mm mini-jack koptelefoon aansluiting heeft, is het wellicht een idee om een (gratis) Dialer-app te installeren en je smartphone met de decoder module te verbinden. Zo kun simpel de decoder van DTMF signalen voorzien.

Niet iedereen heeft een DTMF encoder of een smartphone met een 3mm koptelefoon aansluiting. Ik heb een filmpje gemaakt dat je kunt afspelen. De koptelefoon uitgang van je pc, laptop (of smartphone) waarmee je het filmpje afspeelt verbind je met de DTMF module door middel van een 3mm mini-jack kabel.

Naast het afspelen van het filmpje kun je gelijktijdig op je pc Putty gebruiken om het script op te starten en de resultaten te lezen. In het filmpje hieronder zie je mijn resultaten.

Pak het zip-bestand uit, verplaats het met een FTP cliënt naar een map op de Raspberry Pi en start het script met:

python readDtmf.py

Veel succes!