Publicado 2026-04-19
Este guia fornece uma solução completa e prática para controlar umservomotor usando um controle remoto infravermelho (IR) padrão. Seguindo as etapas abaixo, você será capaz de posicionar com precisão umservomotor pressionando botões em qualquer controle remoto IR comum (por exemplo, um controle remoto de TV ou decodificador). Não são necessários componentes específicos da marca e as instruções são baseadas em módulos amplamente disponíveis e de baixo custo.
Um controle remoto IR emite pulsos de luz invisível. Um receptor IR detecta esses pulsos e os converte em um código digital exclusivo para cada botão. Um microcontrolador lê esse código e envia um sinal de modulação por largura de pulso (PWM) correspondente aoservomotor, ajustando seu eixo em um ângulo específico.
Cenário de exemplo:O botão “aumentar volume” de um controle remoto de TV comum gira um servo em 90° (por exemplo, abrindo uma pequena trava), enquanto “diminuir volume” o retorna para 0°. Este princípio é usado em braços robóticos DIY, alimentadores automáticos para animais de estimação e sistemas de pan-tilt de câmera com controle remoto.
Importante:A maioria dos servos consome corrente significativa (200–500 mA). Não alimente o servo diretamente do pino de 5 V do microcontrolador se ele exigir mais de 500 mA. Use uma fonte externa de 5 V com aterramento comum.
Conecte os componentes da seguinte maneira. Esta fiação foi testada com sistemas padrão de 5V.
Módulo receptor IR (olhando para o lado plano):
Pino esquerdo: Sinal → Pino digital 11 do microcontrolador (exemplo)
Pino central: GND → Terra comum
Pino direito: VCC → saída de 5V
Servo Motor:
Fio marrom/preto: GND → Terra comum
Fio vermelho: 5V → Alimentação externa de 5V (ou microcontrolador 5V apenas para servos minúsculos)
Fio laranja/amarelo: Sinal → Pino 9 do PWM do microcontrolador (exemplo)
Terreno comum:Conecte o GND da fonte de alimentação externa ao GND do microcontrolador. Isto é obrigatório para uma operação estável.
Cada controle remoto IR envia códigos diferentes. Você deve primeiro ler os códigos do seu controle remoto específico.
Caso típico:Um controle remoto de TV Sony pode enviar0x10para o botão “1”, enquanto um controle remoto Samsung envia0x80. O código não é o rótulo do botão – é um número hexadecimal exclusivo da marca do botão + controle remoto.
Ação:Carregue um esboço simples de decodificador IR (disponível em bibliotecas comuns como “IRremote”) para o seu microcontrolador. Abra o Serial Monitor, pressione cada botão que deseja usar e anote os códigos. Por exemplo:
Seta para cima →0xFF629D
Seta para baixo →0xFFA857
OK/Selecionar →0xFF02FD
Decida qual botão move o servo para qual ângulo. Os ângulos servo padrão são de 0° a 180°.
Exemplo de mapeamento (usando códigos da Etapa 1):
Botão0xFF629D→ Ângulo servo 0°
Botão0xFFA857→ Ângulo servo 90°
Botão0xFF02FD→ Ângulo servo 180°
Abaixo está um exemplo de código genérico que funciona com a popular biblioteca IRremote (versão 3.x ou posterior). SubstituirREMOTE_CODE_1, REMOTE_CODE_2, etc., com seus códigos reais da Etapa 1.
#incluir#incluirconst int IR_PIN = 11; const int SERVO_PIN = 9; IRrecv irrecv(IR_PIN); resultados de decode_resultados; Servo meuServo; // Substitua-os pelos códigos reais do seu controle remoto (valores hexadecimais da Etapa 1) const unsigned long CODE_ANGLE_0 = 0xFF629D; // por exemplo, botão para cima const unsigned long CODE_ANGLE_90 = 0xFFA857; // por exemplo, botão para baixo const unsigned long CODE_ANGLE_180 = 0xFF02FD; // por exemplo, botão OK void setup() { Serial.begin(9600); irrecv.enableIRIn(); // Inicia o receptor IR myServo.attach(SERVO_PIN); meuServo.write(0); // Comece em 0° Serial.println("Pronto. Pressione os botões do seu controle remoto."); } void loop() { if (irrecv.decode(&results)) { não assinado longo recebidoCode = resultados.valor; Serial.print("Código recebido: 0x"); Serial.println(código recebido, HEX); // Mapeia o código recebido para o ângulo do servo if (receivedCode == CODE_ANGLE_0) { myServo.write(0); Serial.println("Servo → 0°"); } else if (receivedCode == CODE_ANGLE_90) { myServo.write(90); Serial.println("Servo → 90°"); } else if (receivedCode == CODE_ANGLE_180) { myServo.write(180); Serial.println("Servo → 180°"); } else { Serial.println("Botão não mapeado. Ignorado."); } irrecv.resume(); //Aguarde o próximo sinal } }
Observação:Se o seu controle remoto usar um protocolo diferente (por exemplo, NEC, Sony, RC5), a biblioteca o detectará automaticamente. O código acima funciona para a maioria dos controles remotos de consumo.
1. Alimente o circuito (alimentação servo externa, se necessário).
2. Abra o Monitor Serial a 9600 baud.
3. Pressione um botão mapeado – o servo deve se mover para o ângulo predefinido em 0,5 segundos.
4. Se o servo tremer ou não se mover, verifique:
Conexão de aterramento comum.
Capacidade de alimentação do servo (mínimo 500 mA para servos padrão).
O receptor IR não está exposto à luz solar direta ou luz fluorescente (estas causam interferência).
Conclusão central reafirmada:Um controle remoto IR padrão emparelhado com um receptor IR de baixo custo e um microcontrolador oferece controle servo preciso e sem fio, sem qualquer hardware proprietário.
Três recomendações práticas para fortalecer sua implementação:
1. Adicione vários servos:Use uma variedade de objetos servo e atribua botões diferentes a servos diferentes. Por exemplo, o botão “1” controla o servo A em 0°, o botão “2” controla o servo B em 45°.
2. Implemente um movimento suave:Substituirservo.write(ângulo)com um loop que incrementa o ângulo passo a passo (por exemplo, do ângulo atual ao ângulo alvo em incrementos de 1° com atraso de 15ms). Isso cria um movimento profissional e gradual.
3. Armazene mapeamentos de botões na EEPROM:Escreva uma pequena rotina de calibração que permita aprender novos botões sem recarregar o código. Isso é especialmente útil se você perder o controle remoto original e mudar para outra marca.
Verificação final:Antes de implantar seu projeto em uma aplicação real (por exemplo, trava de porta com controle remoto ou garra de robô), teste todos os pressionamentos de botão pelo menos 50 vezes cada. Os sinais IR podem ser bloqueados por objetos ou luz brilhante – sempre inclua um indicador visual (por exemplo, um LED que pisca quando um código é recebido) para confirmar que o sistema está funcionando.
Hora de atualização: 19/04/2026
Entre em contato com o especialista de produtos da Kpower para recomendar um motor ou caixa de engrenagens adequado para o seu produto.