Neste artigo, falarei sobre um programa de
processamento simples que "escuta" o microfone e determina os números discados no telefone no modo de tom.
Prefácio
A universidade permaneceu no passado há cerca de dez anos, mas durante todo esse tempo não deixei sentimentos nostálgicos e ansiava por ciência. Há um sentimento de que não terminei algo ou corremos algo muito rápido. Felizmente, as plataformas modernas fazem você se sentir um estudante a vida toda.
O laboratório nº 3 do curso “Fundamentos do processamento de sinais digitais” LETI na plataforma
openu me levou a escrever este artigo.
Princípio de funcionamento
Se você pressionar os botões do telefone (ou
aqui ), poderá ouvir que cada caractere tem sua própria frequência, ou melhor, até duas, e essa combinação codifica exclusivamente um caractere.
Nossa tarefa é extrair as duas frequências mais fortes do sinal ruidoso e verificar se elas codificam algum caractere de acordo com a tabela:
| 1209 Hz | 1336 Hz | 1477 Hz | 1633 Hz |
---|
697 Hz | 1 | 2 | 3 | Um |
---|
770 Hz | 4 | 5 | 6 | B |
---|
852 Hz | 7 | 8 | 9 | C |
---|
941 Hz | * | 0 0 | # | D |
---|
Eu usei o processamento, como possui todas as primitivas para trabalhar com microfone e transformada de Fourier.
O algoritmo é o seguinte:
- imagine o sinal como um espectro, fft.analyze retornará um array float [] para nós
- encontre o número de referência n 1 correspondente à amplitude máxima
- Zerul ele e tudo em um determinado bairro (escolhido sabiamente), para não pegar duas frequências próximas
- encontramos o 2º número de referência n 2 correspondente ao máximo das amplitudes restantes
- pelos números n 1 e n 2 , encontramos as frequências correspondentes de acordo com a fórmula:
onde f n - frequência de amostragem: 44100 Hz, N - número de amostras (potência de duas)
- determinamos quais frequências da tabela correspondem às encontradas (com alguma tolerância de ± 35 Hz) e encontramos o símbolo desejado
O que aconteceu
Você pode criar e executar o programa na forma de jar independente da
fonte , pode usar o telefone ou esta
página para gerar sons.

O próximo passo é implementar o mesmo no Arduino.