Oi Geektimes! Você já se perguntou como um "sinal elétrico" soa ao longo dos trilhos das placas de circuito impresso entre microcircuitos, transistores, diodos, resistores e capacitores? Uma das variantes desse sinal na eletrônica moderna é um barramento digital, e uma das interfaces populares para troca de dados através do barramento é o UART. É frequentemente usado em microcontroladores para se comunicar com um computador ou algum tipo de periferia. Para obter som no barramento, não é necessário conectar um alto-falante com um amplificador a um barramento real com o
UART , porque ele pode ser simulado em um programa. Você está interessado em quais sons você criou ou precisa de um programa para experimentar? Então eu peço gato.
Ouvimos arquivos no ônibus com o UART
Que som resultará se você transferir arquivos via
UART ? Aqui estão alguns exemplos obtidos com os seguintes parâmetros
UART :
- Taxa de transmissão 115200
- Bit 8 bits
- Bit de paridade: Nenhum
- Comprimento do bit de parada: 1
Som do jogo Stalker Shadow of Chernobyl (arquivo XR_3DA.exe, no final da faixa, a partir das 2:36, está uma melodia).
O som do texto e código do artigo sobre o sintetizador de fala (o próprio artigo está
aqui ).
Como é a foto da Lena?

O resultado foi apenas
ruído .
O som do livro "Entropia e previsão de séries temporais na teoria dos sistemas dinâmicos" em formato pdf.O som do firmware do microcontrolador da série Atmega para um reprodutor wav.Para que ele pode ser usado?
Teoricamente, pode haver essa informação na forma de texto, imagem ou vídeo, ou na forma de um programa que terá não apenas significado funcional ou significado estético, mas também o som "bonito" de um ônibus digital; então, isso é algum tipo de poesia "digital" .
Você também pode diversificar amostras para dubstep.Em geral, na minha opinião, ouvir os sons de um barramento digital é tão interessante quanto ouvir o ruído das ondas de rádio em ondas curtas, em geral, para um amador.
Como funciona ou um pouco sobre o UART
O que é o
UART pode ser lido na
Wikipedia .
O UART é muito fácil de simular em um programa. Na verdade, você só precisa criar uma queda de sinal de 0 a 1 e vice-versa (no caso de um arquivo
WAV com uma capacidade de 16 bits, esses são valores de -
A a +
A , onde
A é a amplitude do sinal) e gravá-la em um arquivo de áudio. A interface do
UART funciona da seguinte maneira: após o bit inicial, que é lógico “zero”, você precisa definir o nível, dependendo dos dados fornecidos, do mais baixo ao mais alto. Em seguida, vem um pouco de paridade que você não pode usar. No final da mensagem, há um bit de parada ("unidade" lógica), cujo comprimento pode ser diferente. Um exemplo do código pode ser encontrado no código-fonte, que está no final do artigo. Mais informações sobre o UART podem ser encontradas na rede, muito material. O UART pode ser usado para outros propósitos, por exemplo, como PWM, mas, no nosso caso, isso significa que teoricamente é possível transferir um sinal de som completo diretamente para o alto-falante, como é feito em reprodutores wav no microcontrolador. No entanto, eu prefiro sugeri-lo como um gerador de meandros. A frequência do tom e a fase do sinal podem ser fornecidas na forma de bits de dados, por exemplo,
00001111 criarão um meandro cujo período será igual a 10 tempos de transmissão de um bit (já que nesse caso também há um bit inicial igual a 0 e um bit final igual a 1) Devido aos bits de partida e parada, nem todos os períodos de meandro podem ser transmitidos, por exemplo, neste caso
01100110 , pois, em essência,
ouviremos essa sequência no barramento
0011001101 . Se você usar uma alta taxa de transferência de dados, por exemplo, 115200 baud, faz sentido criar frequências sonoras audíveis esticando os períodos das meadras em vários bytes.
...
Usando esse
link, você pode baixar o programa para converter o arquivo no som do barramento
UART . Há também uma versão usando o OpenAL para reproduzir som durante a operação do programa, aqui está o
link .
O código fonte do programa é fornecido abaixo:
Arquivo de cabeçalho 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-fonte do arquivo SoundsDigitalBus.cpp #include "SoundsDigitalBus.h" #if SDB_WITH_OPENAL == 1
Arquivo main.h #ifndef MAIN_H_INCLUDED #define MAIN_H_INCLUDED #define LINUX 0x00 #define WINDOWS 0x01 #define RU 0x00 #define EN 0x01
Arquivo main.cpp #include "main.h" sdb soundsDigitalBus; int main() { static FILE *fp = NULL;
PS Notei um erro que no código fonte o bit inicial é lógico 1, não 0, e o bit de parada é 0, não 1. Quem precisa de uma correspondência básica do sinal sonoro da realidade pode corrigir o erro.