Rádio FM com RDS, Amplificador de Áudio, Codificador Rotativo e Display OLED. O TinyFMRadio é um rádio FM controlado por ATtiny45/85 com RDS (RDA5807) e um amplificador de áudio integrado (XPT8871 ou TC8871), um display OLED (SSD1306) e um codificador rotativo. Você pode conectar diretamente uma bateria de íon de lítio protegida, um alto-falante de 3W / 4 Ω e uma antena de FM.
Hardware
O RDA5807MP de baixo custo é um sintonizador de rádio FM estéreo de transmissão de um único chip com sintetizador totalmente integrado, seletividade IF, RDS/RBDS e decodificador MPX. O sintonizador utiliza o processo CMOS, suporta múltiplas interfaces e requer o menor número de componentes externos. Tudo isso o torna muito adequado para dispositivos portáteis.
Esquema ATtiny85 RDA5807 TinyFMradio FM Rádio com RDS

Software
O firmware é apenas um esboço de demonstração que implementa funcionalidades básicas. Ao pressionar o botão do codificador rotativo, o RDA5807 busca a próxima estação de rádio. Girar o codificador rotativo aumenta/diminui o volume. A frequência selecionada e o volume são armazenados na EEPROM. O nome da estação, frequência, intensidade do sinal, volume e estado de carga da bateria são exibidos em um display OLED.
Implementação I²C
A implementação do protocolo I²C é baseada em um método rudimentar de bitbanging. Foi especificamente projetado para os recursos limitados do ATtiny10 e ATtiny13, mas deve funcionar com alguns outros AVRs também. Devido à baixa frequência de clock da CPU, não requer atrasos para o tempo correto. Para economizar recursos, apenas as funcionalidades básicas necessárias para esta aplicação são implementadas. Para obter informações detalhadas sobre o princípio de funcionamento da implementação I²C, visite TinyOLEDdemo.
Controlando o RDA5807
O circuito integrado sintonizador de FM RDA5807MP é controlado via I²C pelo ATtiny. Ele possui seis registradores de 16 bits graváveis (endereços 0×02 – 0×07) e seis registradores de 16 bits legíveis (endereços 0×0A – 0×0F). O RDA5807 possui dois métodos de acesso de escrita, um sequencial no qual os registradores são sempre escritos a partir do endereço 0×02 e um método indexado no qual o endereço do registrador é transferido primeiro e depois o conteúdo. Ambos os métodos são determinados por diferentes endereços I²C. Para transferir o conteúdo do registrador de 16 bits, o byte alto é enviado primeiro. O RDA5807 é controlado definindo ou limpando certos bits nos respectivos registradores. Os detalhes dos significados dos registradores individuais podem ser encontrados na ficha técnica. O conteúdo atual dos registradores é salvo nos arrays RDA_regs. A implementação RDA é baseada no trabalho de Maarten Janssen
Implementação do Codificador Rotativo
A implementação do codificador rotativo utiliza interrupções de mudança de pino apenas em um dos pinos escrita de forma que o efeito de bouncing seja automaticamente suprimido.

Veja também:
Compilando e Carregando o Software
Se estiver usando a IDE Arduino
- certifique-se de ter instalado o ATtinyCore.
- Vá em Tools ⇾ Board ⇾ ATtinyCore e selecione ATtiny25/45/85 (Sem bootloader).
- Vá em Tools e escolha as seguintes opções de placa:
-
- Chip: ATtiny45 ou ATtiny85
- Clock: 1 MHz (interno)
- B.O.D.: desabilitado
-
- Deixe o restante nas configurações padrão
- Conecte o programador ao seu PC e ao conector ICSP do dispositivo.
- Vá em Tools ⇾ Programador e selecione o seu programador ISP (por exemplo, USBasp).
- Vá em Tools ⇾ Burn Bootloader para gravar os fuses.
- Abra o sketch TinyFMRadio e clique em Carregar.
Se estiver usando o arquivo hex pré-compilado,
- certifique-se de ter instalado o avrdude.
- Conecte o programador ao seu PC e ao cabeçalho ICSP do dispositivo.
- Abra um terminal.
- Navegue até a pasta com o arquivo hex.
- Execute o seguinte comando (se necessário, substitua “t85” pelo seu chip e “usbasp” pelo programador que você usa):
avrdude -c usbasp -p t85 -U lfuse:w:0x62:m -U hfuse:w:0xd7:m -U efuse:w:0xff:m -U flash:w:tinyfmradio.hex
Se estiver utilizando o makefile (Linux/Mac),
- Certifique-se de ter instalado a cadeia de avr-gcc toolchain e avrdude.
- Conecte o seu programador ao PC e ao cabeçalho ICSP do dispositivo.
- Abra o makefile e altere o chip, caso não esteja utilizando o ATtiny85, e o programador, caso não esteja utilizando o usbasp.
- Abra o terminal.
- Navegue até a pasta com o makefile e o sketch do Arduino.
- Execute “make install” para compilar, gravar os fusíveis e carregar o firmware.
Lista de material
Quantidade | Valor | Nome | Descrição |
Resistores 1/4W | |||
4 | 10k (103) | R1,R7,R8,R9 | 0603 |
3 | 1k (102) | R2,R5,R6 | 0603 |
2 | 4k7 (472) | R3,R4 | 0603 |
Capacitores | |||
7 | 100n | C1,C5,C6,C8,C14,C15,C16 | 0603 — Capacitor cerâmico |
1 | 47u | C2 | 1206 — Capacitor cerâmico |
1 | 470uF | C3 | CAP-SMD_D10.0-L10.3 — Capacitor eletrolítico |
2 | 10u | C4,C7 | 0603 — Capacitor cerâmico |
2 | 1u | C9,C11 | 0603 — Capacitor cerâmico |
1 | 1n | C10 | 0603 — Capacitor cerâmico |
2 | 390n | C12,C13 | 0603 — Capacitor cerâmico |
Semicondutores | |||
1 | LED-Blue | LED1 | LED-0603 — Led azul |
1 | RDA5807MP | U2 | SOP-8_150MIL — Receptor FM |
1 | XPT8871ES | U3 | HSOP-8 – Amplificador de áudio |
1 | XC6206P332PR | U4 | SOT-89 — 3.3V — Regulador de tensão |
1 | ATTINY85-20SU | U1 | SOIC-8_208MIL — Microcontrolador |
Diversos | |||
1 | Slide Switch | POWER | SLIDE SWITCH DPDT 1P2T JB |
2 | Header | SPK,VIN | HDR-1 × 2/2.54 |
1 | Rotary Encoder | SW1 | BOURNS_PEC11R-4XXXF-SXXXX |
1 | Header | ANT | HDR-1 × 1/2.54 |
1 | I2C | I2C | HDR-4 × 1/2.54 |
1 | ICSP-6 | ICSP | ICSP-6 – Conector de programação |
1 | 32.768 khz | Y1 | XTAL-32KHZ — Cristal |

Download Arquivos para esta montagem, PCB em PDF, Gerber
Referências
Fonte: https://oshwlab.com/wagiminator/attiny85-tinyfmradio
Comentar via Facebook