Pada artikel ini saya akan berbicara tentang program
pemrosesan sederhana yang "mendengarkan" mikrofon dan menentukan nomor yang diputar pada ponsel dalam mode nada.
Kata Pengantar
Universitas tetap ada di masa lalu sekitar sepuluh tahun yang lalu, tetapi selama ini saya tidak meninggalkan perasaan nostalgia dan merindukan ilmu pengetahuan. Ada perasaan bahwa saya tidak menyelesaikan sesuatu, atau kami menjalankan sesuatu terlalu cepat. Untungnya, platform modern membuat Anda merasa seperti mahasiswa seumur hidup.
Laboratorium No. 3 dari kursus "Dasar-Dasar Pemrosesan Sinyal Digital"
LETI pada platform
opensu mendorong saya untuk menulis artikel ini.
Prinsip kerja
Jika Anda menekan tombol telepon (atau di
sini ), Anda dapat mendengar bahwa setiap karakter memiliki frekuensi sendiri, atau bahkan dua, dan kombinasi ini secara unik mengkodekan karakter.
Tugas kami adalah mengekstrak dua frekuensi terkuat dari sinyal berisik dan memeriksa apakah mereka menyandikan beberapa karakter sesuai dengan tabel:
| 1209 Hz | 1336 Hz | 1477 Hz | 1633 Hz |
---|
697 Hz | 1 | 2 | 3 | A |
---|
770 Hz | 4 | 5 | 6 | B |
---|
852 Hz | 7 | 8 | 9 | C |
---|
941 Hz | * | 0 | # | D |
---|
Saya menggunakan pemrosesan, seperti ia memiliki semua primitif untuk bekerja dengan mikrofon dan transformasi Fourier.
Algoritma adalah sebagai berikut:
- bayangkan sinyal sebagai spektrum, fft.analyze akan mengembalikan array float [] kepada kami
- temukan nomor referensi n 1 yang sesuai dengan amplitudo maksimum
- Zerul dia dan semuanya di lingkungan tertentu (dipilih dengan bijak), agar tidak menangkap 2 frekuensi dekat
- kami menemukan nomor referensi 2 n 2 sesuai dengan maksimum amplitudo yang tersisa
- dengan angka n 1 dan n 2 kami menemukan frekuensi yang sesuai sesuai dengan rumus:
di mana f n - frekuensi sampling: 44100 Hz, N - jumlah sampel (kekuatan dua)
- kami menentukan frekuensi mana dari tabel yang sesuai dengan yang ditemukan (dengan toleransi ± 35 Hz) dan menemukan simbol yang diinginkan
Apa yang terjadi
Anda dapat membangun dan menjalankan program dalam bentuk stoples mandiri dari
sumbernya , Anda dapat menggunakan telepon atau
halaman ini untuk menghasilkan suara.

Langkah selanjutnya saya ingin menerapkan hal yang sama pada Arduino.