Boa tarde, querido harazhiteli!
Meu nome é Mikhail Matveev e gostaria de chamar a atenção para um projeto de um "designer de rádio" moderno baseado no chip Atmega328 MK e RDA5807M.
Antecedentes
Eu acho que muitos de vocês não apenas ouviram, mas também encontraram diretamente uma plataforma como o Arduino. E, como mostram minhas estatísticas pessoais, pouquíssimos vão além dos LEDs piscantes. Quando conheci o Arduino pela primeira vez, fiquei parado pelo fato de que não havia idéias de como exatamente eu poderia usar todos os recursos da mesma ONU na "extensão máxima". O suficiente para montar um robô simples sobre duas rodas e um alarme. No entanto, eu queria fazer algo mais completo.
Então me lembrei da minha infância, na qual havia os chamados "designers de rádio". Um kit soviético de bricolage soviético, que, com montagem e solda adequadas, até começou a funcionar e capturou estações de rádio em várias faixas: Juventude, Electron-M e outros.

Nenhum desses Kit'ov eu não recebi, mas recebi o ECON-1:

O principal "truque" desse designer era que, com sua ajuda, era possível montar rápida e simplesmente um grande número de dispositivos diferentes, de simples "tweeters" a um receptor de rádio completo.
O ECON-1 é uma das muitas razões pelas quais acabei no campo de TI. E me ocorreu que seria bom criar uma versão moderna de um designer assim, para que todos pudessem desfrutar do dispositivo montado com as próprias mãos.
Protótipo na placa de circuito
Meu amigo, um talentoso engenheiro Konstantin Tomarevsky, apoiou a idéia e começamos a pensar em como fazer o primeiro protótipo.
A ideia era criar um receptor FM que pudesse ser controlado via MK.
O primeiro protótipo foi montado no local da instalação e ficou claro que funciona :)

Para a primeira versão, os seguintes componentes foram selecionados:
1. MK Atmega328P-PU
2. RDA5807M
3. tela do Nokia 5110
Esse microcontrolador é usado no Arduino UNO, respectivamente, nosso dispositivo é compatível com o UNO no nível do hardware.
RDA5807M é o "coração" do nosso designer. Este sintonizador possui os seguintes recursos:
- tecnologia CMOS
- Caixa monolítica, não requer componentes externos (quase)
- Faixa de frequência: 50-115 MHz
- Passo entre canais - de 200 a 25 kHz
- RDS / RBDS
- ADC e sintetizador de frequência integrado
- Redução de ruído adaptável
- Interface digital (I2C)
- Intensidade do sinal (RSSI)
- Amplificador
- Ajuste do volume do som
A tela da Nokia é em preto e branco, 84x48 pixels. É muito fácil conectar e gerenciar.
Após a solda na placa de circuito, ficou mais ou menos assim:

Foi decidido usar o Bootloader do Arduino, isso nos permitiu manter a compatibilidade com todas as inúmeras bibliotecas e reduzir significativamente o limite de entrada para aqueles que já tinham alguma experiência com a plataforma.
A interface de interação do usuário é implementada da seguinte maneira. Três botões conectados à entrada analógica do MK através de resistores são usados para alternar entre modos e controlar o receptor. Outro botão serve para reiniciar o MK. A tela exibe informações sobre volume, estação etc.
LUT, fotorresiste e depuração
Após testes bem-sucedidos na placa de circuito, decidimos criar vários outros protótipos usando o método LUT (e no futuro usando fotorresiste). Também decidimos melhorar o receptor adicionando outro amplificador de som para conectar não apenas fones de ouvido, mas também um alto-falante externo. A escolha caiu no PAM8403, é um amplificador simples e barato que requer energia de 5V.
O primeiro protótipo fabricado pelo método LUT tinha a seguinte aparência:

O LUT é bom para a prototipagem relativamente rápida em casa, mas quando se trata de placas de dupla face, as dificuldades começam. O número de componentes na placa aumentou - por exemplo, decidimos colocar um conector para o programador na placa, para que não houvesse necessidade de remover o MK todas as vezes para piscar. Assim, o protótipo subsequente tornou-se bilateral, foi criado pelo método fotorresistente e começou a parecer muito melhor:

Na montagem:

O próximo passo foi a rejeição dos componentes "articulados" que colocamos no quadro usando PINs de linha única. Então, decidiu-se substituir o amplificador por um LM386N, instalar um conversor de nível CD4050BE. Tudo isso complicou o design, mas o dispositivo começou a parecer muito melhor.
O protótipo final que fizemos em casa ficou assim:

Ordem PCB
Na China, você pode solicitar placas de circuito impresso fabricadas de maneira industrial. O custo é relativamente pequeno, mesmo em pequenas tiragens, e o tempo de espera (incluindo entrega) geralmente não excede 2-3 semanas.
O primeiro "lote" de placas encomendadas no PCBWay. Então ela olhou:

Um dos problemas que experimentamos com a inexperiência: a metalização "consome" uma parte significativa do tamanho do próprio furo; portanto, alguns componentes dificilmente se encaixam nos furos desejados. Ao projetar um circuito, esse ponto deve ser levado em consideração.
Com base nos resultados do teste, aprimoramos ainda mais o design adicionando vários capacitores para uma operação mais estável do dispositivo. Coletamos outro protótipo:

A porta USB é usada para alimentar o receptor. A energia também é fornecida quando o programador está conectado.
Tudo funciona!
Firmware
Também devemos insistir no firmware. Está escrito em C ++ e o distribuímos sob a licença GPLv3:
https://github.com/xtremespb/fm_receiver.Eu praticamente não desenvolvi em C / C ++, portanto (provavelmente) o código está longe de ser ideal e pode conter erros, mas a GPL e a GPL para que possa ser mais desenvolvida pela comunidade :)
Os recursos atuais do firmware incluem:
- Sintonização manual e automática de estações
- RDS
- Controle de volume
- Ativando o modo de graves aprimorado
- Liga ou desliga a luz de fundo da tela
- Visualização e visualização dinâmica do nível do sinal
Na próxima quarta revisão, tornaremos alguns "chips" mais úteis: conectaremos os canais esquerdo e direito às entradas analógicas no MK, o que nos permite "visualizar" o sinal de áudio recebido.
A propósito, os recursos do dispositivo não se limitam ao rádio! Ninguém se incomoda, por exemplo, em escrever qualquer jogo (por uma questão de interesse, criei o bom e velho Arkanoid) ou outro programa que utilize os recursos do tabuleiro.
Produção
O desenvolvimento do dispositivo, da ideia à implementação, levou cerca de 6 meses, o que, com uma quase completa falta de experiência nesse campo, não é tão ruim.
No momento, temos cerca de 10 kits totalmente montados que incluem tudo o que você precisa para criar seu próprio dispositivo:
- MK Atmega328P-PU
- Conversor de nível CD4050BE
- Tela Nokia 5110
- Receptor RDA5807M
- Programador USBasp
- Amplificador operacional LM386N
- Conectores para MK e programador
- USB B, conector de áudio 3,5, três botões, fios, conectores de linha única
- 11 resistores e 12 capacitores, 4 indutores, quartzo, um diodo zener e um LED
- alto-falante
- placa de circuito
Para a montagem, você precisa de solda, fluxo e ferro de soldar, nada mais é necessário.
Todos os componentes são embalados em uma pequena caixa de papelão “artesanal”:

As fontes de firmware já foram postadas no Github; O arquivo Gerber, o diagrama esquemático e as instruções de montagem também serão publicados posteriormente.