Hai Geektimes! Pernahkah Anda bertanya-tanya bagaimana "sinyal listrik" terdengar di sepanjang jalur papan sirkuit tercetak antara sirkuit mikro, transistor, dioda, resistor, dan kapasitor? Salah satu varian dari sinyal seperti itu dalam elektronik modern adalah bus digital, dan salah satu antarmuka populer untuk bertukar data melalui bus adalah UART. Ini sering digunakan dalam mikrokontroler untuk berkomunikasi dengan komputer atau semacam periferal. Untuk mendapatkan suara di bus, sama sekali tidak perlu menghubungkan speaker dengan amplifier ke bus nyata dengan
UART ohm, karena dapat disimulasikan dalam program. Apakah Anda tertarik dengan bunyi apa yang akhirnya Anda dapatkan, atau apakah Anda memerlukan program untuk bereksperimen sendiri? Lalu saya minta kucing.
Kami mendengarkan file di bus dengan UART
Suara apa yang akan dihasilkan jika Anda mentransfer file melalui
UART ? Berikut adalah beberapa contoh yang diperoleh dengan parameter
UART berikut:
- Tingkat baud 115200
- Bit 8 bit
- Parity Bit: Tidak Ada
- Stop Bit Length: 1
Sound of the game Stalker Shadow of Chernobyl (file XR_3DA.exe, di akhir trek, mulai pukul 2:36, ada melodi).
Suara teks dan kode artikel tentang synthesizer ucapan (artikel itu sendiri ada di
sini ).
Seperti apa foto Lena?

Hasilnya hanya
noise .
Suara buku "Entropi dan perkiraan deret waktu dalam teori sistem dinamik" dalam format pdf.Suara firmware mikrokontroler seri Atmega untuk pemutar wav.Untuk apa itu digunakan?
Secara teoritis, mungkin ada informasi seperti itu dalam bentuk teks, atau gambar, atau video, atau dalam bentuk program yang tidak hanya memiliki makna fungsional atau signifikansi estetika, tetapi juga bunyi "indah" dari bus digital, kemudian berubah menjadi semacam puisi "digital" .
Anda juga dapat mendiversifikasi sampel untuk dubstep. Secara umum, menurut pendapat saya, mendengarkan suara bus digital sama menariknya dengan mendengarkan suara gelombang radio dalam gelombang pendek, secara umum, untuk seorang amatir.
Cara kerjanya atau sedikit tentang UART
Apa itu
UART dapat dibaca di
Wikipedia .
UART sangat mudah disimulasikan dalam suatu program. Bahkan, Anda hanya perlu dapat membuat penurunan sinyal dari 0 ke 1 dan sebaliknya (dalam kasus file
WAV dengan kapasitas bit 16 bit, ini adalah nilai dari -
A ke +
A , di mana
A adalah amplitudo sinyal) dan merekamnya dalam file audio. Antarmuka
UART berfungsi seperti ini: setelah bit mulai, yang logis "nol", Anda perlu mengatur level tergantung pada data yang disediakan, dari yang rendah ke yang tinggi. Berikutnya datang sedikit paritas yang tidak bisa Anda gunakan. Di akhir pesan ada stop bit (“unit” logis), yang panjangnya bisa berbeda. Contoh kode dapat ditemukan dalam kode sumber, yang ada di akhir artikel. Informasi lebih lanjut tentang UART dapat ditemukan di jaringan, banyak materi. UART dapat digunakan untuk keperluan lain, misalnya sebagai PWM, tetapi dalam kasus kami, ini berarti bahwa secara teoritis Anda bahkan dapat mentransfer sinyal suara penuh langsung ke speaker, seperti yang dilakukan pada pemain wav pada mikrokontroler. Namun, saya lebih suka menggunakannya sebagai generator berliku-liku. Frekuensi nada dan fase sinyal dapat disediakan dalam bentuk bit data, misalnya,
00001111 akan membuat berliku-liku yang periodenya akan sama dengan 10 periode waktu transmisi satu bit (karena dalam kasus ini ada juga bit mulai sama dengan 0 dan bit berhenti sama dengan 1). Karena bit mulai dan berhenti, tidak semua periode berliku dapat ditransmisikan, misalnya, dalam hal ini
01100110 , karena pada dasarnya kita akan mendengarkan urutan seperti itu di bus
0011001101 . Jika Anda menggunakan kecepatan transfer data yang tinggi, misalnya 115200 baud, masuk akal untuk membuat frekuensi suara yang dapat didengar dengan meregangkan periode meadras dengan beberapa byte.
...
Dengan menggunakan
tautan ini, Anda dapat mengunduh program untuk mengonversi file menjadi suara bus
UART . Ada juga versi menggunakan OpenAL untuk memutar suara selama operasi program, di sini adalah
tautannya .
Kode sumber program disediakan di bawah ini:
File header SoundsDigitalBus.h#ifndef SOUNDS_DIGITAL_BUS_H_INCLUDED #define SOUNDS_DIGITAL_BUS_H_INCLUDED #define SDB_WAV_FILE_NAME "sdb_output.wav" #define SDB_UART_BIT 8 #define SDB_UART_PARITY 0 #define SDB_UART_STOP_BIT 1 #define SDB_UART_BAUDRATE 9600 #define SDB_UART_BAUDRATE_MAX 921600
Kode Sumber File SoundsDigitalBus.cpp #include "SoundsDigitalBus.h" #if SDB_WITH_OPENAL == 1
File main.h #ifndef MAIN_H_INCLUDED #define MAIN_H_INCLUDED #define LINUX 0x00 #define WINDOWS 0x01 #define RU 0x00 #define EN 0x01
File main.cpp #include "main.h" sdb soundsDigitalBus; int main() { static FILE *fp = NULL;
PS Saya melihat kesalahan bahwa dalam kode sumber bit mulai logis 1, bukan 0, dan bit berhenti adalah 0, bukan 1. Siapa yang butuh kecocokan dasar dari sinyal suara kenyataan dapat memperbaiki kesalahan itu sendiri.