Transmissor AM de Música com Arduino Nano
Componentes e Materiais
| Arduino Nano R3 | 1 |
| Resistor 10 kΩ | 2 |
| Capacitor 10 µF | 1 |
| Protoboard | 1 |
Aplicações e Serviços Online
- Arduino IDE
Sobre o Projeto
Os microcontroladores ATmega permitem projetos interessantes. A ideia: construir um transmissor AM com Arduino Nano (qualquer Arduino funciona).
O Desafio: AM em Dispositivo Digital
Modulação de Amplitude (AM) varia a amplitude da portadora conforme o sinal de entrada. Matematicamente, multiplica-se a portadora pelo sinal. Mas o ATmega só tem saídas digitais (HIGH/LOW) — não há AM "real" possível.
A Solução: PWM como AM
Transforma-se o sinal analógico de entrada em PWM usando o ADC e o Timer1 de 16 bits do ATmega. O Timer2 gera a portadora (31 kHz a 8 MHz) no pino D11, modulada pelo PWM. O rádio AM atua como filtro passa-baixa no PWM, recuperando o áudio original.
Nota: É prova de conceito. Para uso real como transmissor RF, adicione filtro passa-baixa anti-aliasing na entrada de áudio e filtro passa-baixa contra harmônicos na saída RF.
Código (Arduino AM Transmitter)
/* Licença Creative Commons Attribution-ShareAlike 4.0 International */
#define ANTENNA_PIN PB3 // Arduino Nano/Uno D11
void setup() {
Serial.begin(115200);
// Geração da frequência da portadora
uint32_t fTransmit = 600; // kHz
DDRB |= (1 << ANTENNA_PIN);
TCCR2A = (0 << COM2A1) + (1 << COM2A0); // Toggle OC0A no Compare Match
TCCR2A |= (1 << WGM21) + (0 << WGM20); // Modo CTC
TCCR2B = (0 << CS22) + (0 << CS21) + (1 << CS20); // Sem prescaler
OCR2A = F_CPU / (2000 * fTransmit) - 1;
char strbuf[255];
sprintf(strbuf, "Transmitira a %d kHz", (F_CPU / (2 * (1 + OCR2A)) / 1000));
Serial.println(strbuf);
// Geração do sinal PWM
TCCR1A |= (1 << WGM11) + (1 << WGM10); // Fast PWM 10 bits
TCCR1B = (1 << WGM12);
TCCR1B |= (0 << CS12) + (0 << CS11) + (1 << CS10); // Sem prescaler
TIMSK1 = (1 << OCIE1A) + (1 << TOIE1);
// Configuração ADC
ADMUX = (1 << REFS1) + (1 << REFS0); // Referência interna 1.1V
ADCSRA = (1 << ADEN) + (1 << ADSC) + (1 << ADATE); // Auto-trigger, free running
ADCSRA |= (1 << ADPS2) + (1 << ADPS1) + (0 << ADPS0); // Divisor 64 -> 18.5k sample rate
DIDR0 = (1 << ADC0D);
}
ISR(TIMER1_OVF_vect) {
uint8_t adcl = ADCL;
uint8_t adch = ADCH;
OCR1A = (adch << 8) + adcl;
DDRB |= (1 << ANTENNA_PIN);
}
ISR(TIMER1_COMPA_vect) {
DDRB &= ~(1 << ANTENNA_PIN);
}
void loop() {
// Tudo feito por interrupções
}
Esquemático
Disponível na seção de esquemáticos do projeto original.
Processo de manufatura
- O Legado e a Evolução da Jukebox Clássica
- Partituras: Dos Manuscritos Medievais à Publicação Moderna — Visão Geral da Indústria
- Semáforos: Engenharia, História e Inovações Futuras
- Construa Seu Próprio LUMAZOID: Visualizador de Música DIY com Arduino
- Construa um Spybot Controlado por Bluetooth com Arduino
- Decodifique Sinais PPM de Receptor RC com Arduino: Guia Passo a Passo
- FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
- DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Usando Termistor Facilmente: Guia Passo a Passo com Arduino