Hola geektimes! ¿Alguna vez se ha preguntado cómo suena una "señal eléctrica" a lo largo de las pistas de las placas de circuito impreso entre microcircuitos, transistores, diodos, resistencias y condensadores? Una de las variantes de dicha señal en la electrónica moderna es un bus digital, y una de las interfaces populares para el intercambio de datos a través del bus es UART. A menudo se usa en microcontroladores para comunicarse con una computadora o algún tipo de periferia. Para obtener sonido en el bus, no es necesario conectar un altavoz con un amplificador a un bus real con
UART ohm, porque puede simularse en el programa. ¿Le interesan los sonidos con los que terminó o necesita un programa para experimentar? Entonces pido gato.
Escuchamos archivos en el autobús con UART
¿Qué sonido resultará si transfieres archivos a través de
UART ? Aquí hay algunos ejemplos obtenidos con los siguientes parámetros
UART :
- 115200 baudios
- Bit 8 bits
- Bit de paridad: ninguno
- Stop Bit Longitud: 1
Sonido del juego Stalker Shadow of Chernobyl (archivo XR_3DA.exe, al final de la pista, a partir de las 2:36, hay una melodía).
El sonido del texto y el código del artículo sobre el sintetizador de voz (el artículo en sí está
aquí ).
¿Cómo suena la foto de Lena?

El resultado fue solo
ruido .
El sonido del libro "Entropía y pronóstico de series de tiempo en la teoría de sistemas dinámicos" en formato pdf.El sonido del firmware del microcontrolador de la serie Atmega para un reproductor wav.¿Para qué se puede usar?
Teóricamente, puede haber dicha información en forma de texto, imagen, video o programa que tendrá no solo un significado funcional o un significado estético, sino también el sonido "hermoso" de un bus digital, y luego resultará en algún tipo de poesía "digital" .
También puede diversificar muestras para dubstep. En general, en mi opinión, escuchar los sonidos de un bus digital es casi tan interesante como escuchar el ruido de las ondas de radio en ondas cortas, en general, para un aficionado.
Cómo funciona o un poco sobre UART
Lo que es
UART se puede leer en
Wikipedia .
UART es muy fácil de simular en un programa. De hecho, solo necesita poder crear una caída de señal de 0 a 1 y viceversa (en el caso de un archivo
WAV con una capacidad de 16 bits, estos son valores de -
A a +
A , donde
A es la amplitud de la señal) y grabarlo en un archivo de audio. La interfaz
UART funciona de esta manera: después del bit de inicio, que es lógico "cero", debe establecer el nivel en función de los datos proporcionados, de menor a mayor. Luego viene un bit de paridad que no puedes usar. Al final del mensaje hay un bit de parada ("unidad" lógica), cuya longitud puede ser diferente. El código de muestra se puede encontrar en el código fuente, que se encuentra al final del artículo. Se puede encontrar más información sobre UART en la red, una gran cantidad de material. UART se puede utilizar para otros fines, por ejemplo, como PWM, pero en nuestro caso, esto significa que, en teoría, incluso puede transferir una señal de sonido completa directamente al altavoz, como se hace en reproductores wav en el microcontrolador. Sin embargo, sugeriría usarlo como un generador de meandros. La frecuencia de tono y la fase de la señal se pueden proporcionar en forma de bits de datos, por ejemplo,
00001111 creará un meandro cuyo período será igual a 10 períodos de tiempo de transmisión de un bit (ya que en este caso también hay un bit de inicio igual a 0 y un bit de parada igual a 1) Debido a los bits de inicio y parada, no todos los períodos de meandro se pueden transmitir, por ejemplo, en este caso
01100110 , ya que en esencia escucharemos dicha secuencia en el bus
0011001101 . Si utiliza una alta velocidad de transferencia de datos, por ejemplo, 115200 baudios, tiene sentido crear frecuencias de sonido audibles estirando los períodos de los meadras en varios bytes.
...
Usando este
enlace puede descargar el programa para convertir el archivo al sonido del bus
UART . También hay una versión que usa OpenAL para reproducir sonido durante la operación del programa, aquí está el
enlace .
El código fuente del programa se proporciona a continuación:
Archivo de encabezado 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
Código fuente del archivo SoundsDigitalBus.cpp #include "SoundsDigitalBus.h" #if SDB_WITH_OPENAL == 1
Archivo main.h #ifndef MAIN_H_INCLUDED #define MAIN_H_INCLUDED #define LINUX 0x00 #define WINDOWS 0x01 #define RU 0x00 #define EN 0x01
Archivo main.cpp #include "main.h" sdb soundsDigitalBus; int main() { static FILE *fp = NULL;
PD : Noté un error que en el código fuente el bit de inicio es lógico 1, no 0, y el bit de parada es 0, no 1. Quien necesita una coincidencia básica de la señal de sonido de la realidad puede corregir el error en sí.