quinta-feira, 9 de julho de 2026

Receptor de RF 433Mhz OOK BM2302-34-2

Neste BLOG vamos estudar o receptor de RF de 433Mhz da empresa Holtek. O modelo em questão é o BM2302-34-2. Veja a imagem abaixo. Este é um módulo que possui um receptor OOK da Holtek BC2302C/D. Ele possui sistema anti-interferência bem robusto e opera com transmissão que tenha modulação OOK (On-Off Keying), ou em português, Chaveamento Liga Desliga, que é a forma mais simples de dados de forma digital

O funcionamento deste sistema é como um interruptor de luz, só que para a portadora de RF (Radio frequência). De acordo com os bits da informação transmitida, a portadora hora está ligada, hora está desligada. Exemplo: Bit nível lógico 1, a portadora está ligada em sua potência máxima. Bit nível lógico 0, a portadora está desligada. É como se fosso o antigo código Morse, onde o operador usava uma chave telegráfica para ligar e desligar o sinal. Apesar de ser uma técnica muito antiga, ela é usada até hoje, especialmente em dispositivos que precisam de circuitos simples e de baixo consumo, como controles remoto, sensores sem fio e até alguns sistemas de comunicação por fibra ótica. Veja a imagem abaixo. 

Sistema de modulação OOK
Uma vez ligado o receptor em 5V, ele entra em modo de recepção e qualquer sinal presente em sua antena é fornecido como sinal de dados no pino DOUT após a modulação. Existem dois modelos que a empresa Holtek disponibiliza, BM2302-3x-2 e o BM2302-6x-2. Na tabela abaixo, podemos ver as diferenças:


As principais características deste módulo são apresentadas abaixo:

  • Tensão de operação: 2,4V ~5,5V
  • Corrente de funcionamento: 4.0mA
  • Sensibilidade: -108dBm
  • Máxima potência na antena: +10dBm
  • Modulação: OOK
  • Faixa de transmissão de dados: 0.5Ksps ~19Ksps
  • Modo de operação: Recepção
  • Dimensões: 43 x 10.5 x 5.5 mm
Descrição dos pinos

Na tabela anterior, podemos observar que o modelo BM2302-6x-2 pode operar em modo de SLEEP. Consumindo 0.5uA em 5V. Ambos os receptores utilizam um CHIP receptor Sub-1GHz BC2302C/D. O datasheet deste circuito integrado pode ser baixado neste link aqui. O diagrama em blocos deste receptor esta mostrado abaixo:


Neste artigo não iremos abordar o funcionamento deste circuito integrado e apenas o módulo de recpção, mas fica esta imagem como uma ilustração dos blocos internos deste receptor. Para aqueles que quiserem se apronfundar, baixem o datasheet e estudem com detalhes.

Vamos fazer uma aplicação real com este receptor, usando um microcontrolador da Holtek HT66F0185. Vamos nos basear no circuito proposto abaixo. 


Neste circuito temos os seguintes componentes principais:

  • Microcontrolador HT66F0185
  • Receptor de RF BM2302 de 433Mhz
  • Um botão tipo chave tactil para realizar a gravação do código
  • Um buzzer ativo
  • Uma saída a relé para uso geral. (Na prática usaremos um led)
  • Um led Onboard para sinalização geral de funcionamento
Vamos usar um kit de microcontrolador Holtek da empresa QSP Tecnologia. Este kit tem todos os circuitos para podermos realizar os testes desta aplicação. Quem quiser adquirir este kit pode acessar a loja online neste link aqui. As ligações do microcontrolador com os diversos periféricos. serão feitas por meio de JUMPERS, do tipo usados no Arduino, portanto de facil acesso. Também iremos utilizar um controle remoto com o CHIP também da Holtek HT6P20, já abordado aqui em outros BLOG deste site. Iremos desenvolver um código em linguagem C que leia os comandos do controle remoto que chega no receptor de modo que seja possível aprender este código e salvar no microcontrolador e depois identificar para realizar alguma tarefa específica, neste caso irá ligar um LED por 1,5 segundos. Veja a foto deste KIT com as ligações  e o receptor em uma pquena Matriz de contatos.


Para criarmos o código vamos usar a IDE da Holtek, HT-IDE3000, gratuíta e que pode ser baixada do site aqui. Podemos ver esta IDE na imagem abaixo. Com ela podemos editar o código, compilar, simular e depurar e também possível realizar a gravação do microcontrolador diretamente nela.


Já fizemos um outro BLOG neste site sobre as ferramentas de gravação bem como usar a IDE da Holtek. Caso tenha interesse, procure neste BLOG. 

Nosso código tem como função identificar o protocolo do controle remoto com o CHIP HT6P20, ja abordado aqui em outros BLOGs e salvar na memória EEPROM do microcontrolador se o botão PROG for pressionado. Uma vez salvo, se vier um código igual, o microcontrolador irá ligar um pino de saída por um tempo de 1,5 segundos, veja esta parte do código abaixo.


Na função "TestaSenhas" é verificado se chegou alguma senha pelo receptor, indicado pelo FLAG "SenhaReady". Se a senha recém chegada for duas vezes iguais a senha salva na Matriz "SenhaSalva[0]", então é executado a porção de código dentro desta estrutura de teste "if". Ele gera um BEEP no Buzzer da placa Kit de Holtek e liga tando o LED Onboard como a saída "OUT1" por um tempo de 1,5 segundos. Caso contrário ele só zera este FLAG e senha a senha chegada e salva na variável "Senha". A rotina principal do código inicializa os periféricos usados nesta aplicação do microcontrolador através da função "Mcu_init" e no loop infinito, testa o botão PROG através da função "TrataCh0" e testa as senhas na função "TestaSenhas". Vamos ver a função que configura os periféricos do microcontrolador.



Nesta função, o microcontrolador desabilita o cão de guarda, configura os GPIOs, configura a interrupção externa, configura o timer 2. A configuração da porta serial foi somente para efeito de Debug no terminal serial qualquer. O circuito esta usando a interrpção do pino PB0 que é a INT0. Nesta interrupção, devemos ativar o modo de borda de subida e descida para gerar a interrupção externa. O sinal de saída do receptor é injetado neste pino de interrupção para que o microcontrolador possa medir os tempos do sinal do protocolo do HT6P20. Veja na imagem abaixo o registrador INTEG e os bits necessários para a configuração desta opção.


É necessário habilitar a interrupção externa e isso é feito no registrador INTC0, setando o bit 1 (INT0E) em vermelho. Repare o bit 4, que é o FLAG sinalizador de que a interrupção INT0 ocorreu. Isto deve ser testado na rotina de interrupção afim de se certificar realmente que ocorreu a interrupção.

Vejam a rotina de interrupção. Vetor de interrupção 0x04 (Igual a dos microcontroladores PIC16F Midrange). Logo no inicio zera o FLAG  de interrupção e testa se é borda de subida ou descida. Isto é importante porque o nosso algoritmo dispara o timer 2 (Compact Timer) toda vez que surge uma borda de descida e paraliza este timer na borda de subida, desta forma consegue medir a quantidade de pulsos neste periodo. O clock usado para incrementar o timer 2 é de 2Mhz, gerando um incrmento do timer 2 a cada 0,5us. Uma vez na borda de subida, é paralizado o timer através do bit T2PAU e chamando a função "GeraNumero", que é o grande segredo deste código. Para zerar o conteúdo do timer 2 é necessário ligar e desligar o timer atraves do bit T2ON. 


Temos um vídeo no nosso canal onde explicamos esta aplicação. Vou deixar este vídeo logo abaixo. Aproveito e peço que se inscrevam no meu canal no Youtube, pois temos diversos vídeos sobre projetos eletrônicos, tutoriais, programação e unboxing de equipamentos eletrônicos.



Obrigadao por ler e acompanhar nossos conteúdos. Para aqueles que queiram adquirir o material usado nesta aplicação vou deixar link logo abaixo:

Kit de Microcontrolador Holtek - Clique aqui.
Módulo com HT66F0185  - Clique aqui.
Código fonte do receptor de controle remoto tipo HT6P20 - Clique aqui.
Controle Remoto - Clique aqui.
Receptor OOK 433Mhz - Clique aqui.

Nenhum comentário:

Postar um comentário

Manual do Usuário do CLP Apollo - Versão 1.00

  Descrição: Neste blog vamos mostrar em detalhes o nosso CLP com ESP-32. Vamos escrever um artigo de modo que possa ser utilizado até como ...