sábado, 18 de julho de 2026

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 manual de consulta de funcionamento deste Controlador Lógico Programável com microcontrolador da Espressif, o famoso ESP-32. Vamos falar um pouco do controlador interno, ESP-32, da circuitaria externa, das aplicações e especificações deste CLP. 

O ESP-32

O ESP32 é uma família de microcontroladores de 32 bits desenvolvida pela Espressif Systems, projetada para aplicações embarcadas e Internet das Coisas (IoT). O grande diferencial do ESP32 é que ele já integra Wi-Fi e Bluetooth no próprio chip, eliminando a necessidade de módulos externos para comunicação sem fio.

Principais características:
  • Processador de 32 bits (Xtensa LX6 nas versões clássicas)
  • Clock de até 240 MHz
  • Um ou dois núcleos (dependendo da versão)
  • Alimentação em 3,3 V
  • Wi-Fi 2,4 GHz integrado
  • Bluetooth Classic e Bluetooth Low Energy (BLE)
  • Conversores ADC e DAC
  • PWM por hardware
  • Interfaces UART, SPI, I²C, I²S
  • Temporizadores (Timers)
  • Touch Sensor capacitivo
  • RTC (Real Time Clock)
  • Modos de baixo consumo de energia (Deep Sleep)
Para efeito de comparação, abaixo temos uma tabela entre o ESP-32 e um Arduino com microcontrolador ATMEGA328P.


O ESP32 pode ser adquirido em três formatos principais: chip (CI), módulo e placa de desenvolvimento. Cada um é indicado para uma fase diferente do projeto. Para inicio do desenvolvimento e montagem em protoboard ou placa perfurada (Padrão) é recomendável utilizar o DEV-KIT, ou seja um módulo pronto com USB, conversor serial USB (Normalmente com CHIP CH340C), LED onboard, regulador e etc. Já agora com sua placa pronta e produção em baixa escala, recomenda-se utilizar o módulo com ESP-32. Uma "caixinha" metálica com a pinagem na própria PCB e montagem em superficie. E para grandes escalas de montagem, a melhor solução seria utilizar o CHIP que é um pastilha em formato SMD e encapsulamento QFN. Detalha, quanto mais próximo do CHIP, é necessário acrescentar outros circuitos como memória e circuitos auxiliares. Veja na imagem abaixo essas três formas que podemos encontrar o ESP-32


O módulo utilizado em nosso CLP é o módulo ESP-32 modelo ESP-WROON-32E. O datasheet pode ser baixado neste link. Existem dois modelos, o final "E" e o final "UE". O primeiro tem antena Onboard, ou seja, na própria placa. E o outro modelos possui um conector para se conectar uma entena externa. 

Se o integrador for instalar o CLP dentro de uma caixa metálica e aterrada, recomenda-se utilizar a versão com antena externa "UE". Pois desta forma, pode-se colocar um cabo do módulo para a caixa e instalar uma anterna externa sem problemas. Veja a imagem abaixo:

Existem diversos módulos da própria Espressif ou de outros fabricantes que podem ser cópias ou mesmo módulos compatíveis. Os principais módulos são destacados abaixo:

  • ESP32-WROOM-32
  • ESP32-WROOM-32D
  • ESP32-WROOM-32E
  • ESP32-WROVER
  • ESP32-S3-WROOM-1
  • ESP32-C3-WROOM
  • ESP32-C6-WROOM

  • Pinagem do ESP-32 (ESP-WROON-32E)

    O ESP-WROON-32 tem um total de 38 pinos, veja abaixo a posição e suas características principais.


    Fonte desta imagem aqui. Esta imagem foi retirada do site "last minute engineer". 

    O CLP Apollo:

    Agora que já estamos brevemente o ESP-32, vamos apresentar nosso CLP com base no ESP-WROON-32E. As principais características estão listadas abaixo:

    • Microcontrolador ESP32-WROOM-32E.

    • Arquitetura 32 bits RISC.

    • 5 Entradas opto-acopladas.

    • 8 Saídas opto-acopladas.

    • Comunicação RS-485 com proteção (TVS e PTC).

    • Alimentação de 24 volts.

    • Barramento I2C para módulo LCD externo.

    • 4 Entradas analógicas selecionáveis (4-20mA ou 0-10V).

    • 1 Buzzer ativo para sinalizações em geral


    O CLP Industrial da QSP Tecnologia com microcontrolador ESP32-WROOM-32E é uma solução inovadora que alia a flexibilidade do desenvolvimento em ambiente Arduino, com a robustez necessária para aplicações industriais. Com um microcontrolador de 32 bits da empresa Espressif, este Controlador Lógico Programável (CLP) permite automação eficiente, conectividade avançada e integração com sistemas IoT, tudo em um único dispositivo. Com este CLP baseado no ESP-32, você pode modernizar processos industriais utilizando tecnologias abertas, flexíveis e acessíveis, mostrando que o Arduino é uma ferramenta viável para a indústria. Ideal para empresas que desejam inovar sem depender de soluções fechadas e de alto custo!

    A placa interna do CLP Apollo:

    Abaixo temos a placa interna do nosso CLP Apollo versão 2.0. Esta placa é instalada dentro de um gabinete industrial de ABS com suporte para trilho DIN, padrão industrial.


    Todos os componentes são SMD (Surface Mounted Device). Podemos observar as principais partes listdas abaixo:
    1. Entrada da alimentação de 24V
    2. Regulador Chaveado de 24V para 5V
    3. Buzzer ativo
    4. Comunicação RS-485 com proteções PTC e TVS
    5. Bornes de entradas digitais
    6. Bornes de saídas digitais
    7. Conector USB para gravação e comunicação com terminal e supervisório
    8. O módulo ESP-32
    9. Opto-acopladores de entrada e saída
    10. Amplificador das entradas analógicas
    11. O botão de reset
    12. A barra de pinos responsáveis por selecionar corrente ou tensão
    13. Conector para comunicação I2C
    14. Dois JUMPERS para conecxão do GND
    Vamos mostrar agora a pinagem externa do nosso CLP. A Imagem mostra a placa versão 1.XX mas esta nova placa tem a mesma pinagem até para manter compatível os modelos de CLP.


    Fonte de alimentação de 24V:

    A fonte de alimetnação do CLP é de 24V nominais mas pode ser alimentado por uma faixa de 18V até 26V DC. Ele utiliza um conversor DC-DC com CHIP MC34063 para gerar 5V para o restante dos circuitos. Tem proteção contra inversão de polaridade na entrada, tem proteção contra sobre tensão com TVS e filtro capacitivo. A frequência de chaveamento deste regulador é de aproximadamente 100Khz. Na saída tem um TVS de 5V para proteção dos demais circuitos no caso deste regulador entrar em curto. Veja na imagem abaixo o circuito eletrônico dele.


    A sua capacidade de corrente é de 250mA contínua, mas suficiente para alimentar o ESP-32 e demais circuitos. 

    Fonte de 3,3V

    O Circuito também possui um regulador de 3,3V baseado no LD1117 de 3,3 volts. Ideal para alimentar o ESP-32 que opera com essa tensão. Ele é um regulador linear com encapsulamento SMD

    Essas tensões de 24V e de 3,3V bem como a tensão de entrada de 24V menos a queda do diodo de proteção podem ser medidas em pontos específicos, utilizando um multímetro na função de Voltímetro e utilizando o GND da placa e três pontos de teste mostrados abaixo:


    Comunicação USB:

    Este circuito é a interface USB ↔ UART utilizando o CH340C, responsável por permitir que o computador grave o firmware no ESP32 e também faça comunicação serial (monitor serial). Além disso, ele implementa o reset e a entrada automática no modo bootloader, dispensando que o usuário pressione os botões BOOT e RESET manualmente


    Por que dois transistores Q9 e Q10?

    Os sinais RTS e DTR são ativos em nível baixo e podem variar simultaneamente. A configuração com dois transistores BC847 implementa uma lógica que evita combinações indesejadas desses sinais, garantindo que RESET e GPIO0 (BOOT) sejam acionados na sequência correta para colocar o ESP32 em modo de programação sem provocar resets espúrios. Os resistores de 10 kΩ (R55 e R57) atuam como polarização (pull-up/pull-down conforme a topologia), mantendo os transistores desligados quando não há comando do CH340.


    Microcontrolador ESP-32

    O modelo do microcontrolador utilizado é o ESP-WROON-32E. Podemos ver as ligações dos seus pinos ao circuitos externos. Basicamente podemos dividir a pinagem nos tipos abaixo:
    • Pinos digitais de entrada
    • Pinos digitais de saída
    • Pinos analógicos
    • Pinos de comunicação serial UART e I2C
    • Pinos de controle como o RESET e o BOOT
    • Pinos de alimentação
    Existe um capacitor multicamada de 1uF que esta localizado bem próximo dos pinos de alimentação do módulo. A sua posição é C24

    Circuito de RESET

    O circuito de reset é responsável por resetar o microcontrolador toda vez que liga a placa eletrônica ou resetar pelo usuário, através de uma chave de pressão TACTIL, veja o circuito abaixo. A chave SW1 quando pressionada, reseta o módulo ESP-32
    Porta I2C: 

    Usado para conexão com uma IHM ou modelos de IHM com este tipo de interface. Consulte o nosso site para ver os modelos disponíveis. Também é possível conectar módulos externos como expansores de IO, medidores, acionadores e etc. Importante mencionar que este cabo não pode ultrapassar 50 cm. Também não é possivel alimentar dispositivos com corrente superior a 50mA. Respeite esses limites para não danificar o equipamento. Abaixo temos a pinagem deste conector:


    Entrada de 4 à 20mA: 

    Esta é uma entrada de corrente analógica padrão industrial, ideal para sensores industriais como por exemplo, transmissores de temperatura PT100, sensores de posição, como réguas potênciométricas, sensores de profundidade ou de pressão. Abaixo temos uma imagem de um sensor de temperatura de 4 à 20mA e fundo de escala de até 200°C.

    Este é um exemplo de sensor que utiliza um padrão industrial de corrente de 4-20mA. De um lado instala-se um sensor PT100 de 3 fios (3 parafusos na parte de baixo) e nos outros 2 parafusos instala-se na fonte de alimentação e na entrada analógica do CLP conforma imagem baixo:

    Na imagem acima podemos ver o transmissor de temperatura, a fonte de alimentação de 24V, o sensor PT100 de 3 fios e o Data Colletor que seria o nosso CLP. O positivo do Data Colletor mostrado na imagem acima é uma das entradas analógicas de 4-20mA do CLP. Portanto podemos dizer que a entrada estará em série com o transmissor de temperatura, por isso a forma de sinal é de corrente. 

    Para converter o sinal de corrente em tensão para posterior medição pelo conversor AD de 12 bits do ESP32, temos um circuito com amplificador operaciona LM324 que converte a corrente que passa por um resistor de 100R e amplifica para os níveis de medição do ADC. 

    O cálculo de ganho deste circuito esta mostrado abaixo. Os resistores de realimentação R42 e o R46 aplicam um ganho de 1,65 neste amplificador. Para uma corrente de 20mA, a tensão na saída deve estar por volta de 3,3V


    Exemplo, se a corrente de entrada for 4mA, a tensão de saída será 0,66V. se a corrente de entrada for 20mA a tensão de saída será 20mA x 165, ou seja, 3,3V. O programador deve realizar em seu código uma regra de três. O valor de 3,3V na entrada do ADC, reflete 4095 na saída do ADC. Vamos mostrar a equação que devemos aplicar em nosso código. Exemplo, se tivermos medindo um sensor de temperatura com faixa de 0-200ºC. O valor medido seria:

    Onde: 
    • TempMed é o valor de temperatura medido
    • TempFC é o valor de fundo de escala, por exemplo 200 graus centígrados

    Circuito de comunicação RS-485

    Este circuito é muito utilizado para comunicação entre equipamentos industriais, muito comum em automação industrial, comercial e residencial. Alguns equipamentos como CLPs, Inversores de frequência, módulos sensores, alarmes de incêndio e centrais industriais. Pode-se utilizar um protócolo proprietário ou um já padronizado como é o caso do MODBUS RTU. Quem vai decidir qual usar, vai ser o programador do CLP. Veja o circuito abaixo.


    O coração deste circuito é o transceptor SP485 ou também poderá ser o MAX485. Os dispositivos que irão se comunicar com o CLP, devem ser conectados no conector CN3, respeitando a polaridade RSA e RSB. Os dois componentes PTC1 e 2 protegem em caso de curto, limitando a corrente e não danificando o SP485. Os diodos D6, D7 ceifam tensões acima de 5V. A rede resistiva formada pelos resistores R4, R5 e R6 criam um balanço na tensão, fazendo com que o sinal tenha uma excursão praticamente no centro da tensão de alimentação do CI, ou seja, no meio de 5V. O tipo de comunicação é HALF DUPLEX, ou seja, hora se transmite a informação, hora recebe. Não é possível enviar e receber ao mesmo tempo. É necessário adicionar um resistor fim de linha de 120R 2W para balancear a linha. Veja na imagem abaixo os sinais RSA (Amarelo) e RSB (Azul), eles estão opostos um do outro. A informação é a diferença entre eles, por isso são muito utilizados em ambientes industriais devido a presença de muitos ruídos, provenientes de motores, contatores e etc.


    Podemos conectar diversos dispositivos no barramento RS-485, apenas diferenciando pelo endereçamento de cada dispositivo. Desta forma, teremos um mestre e diversos escravos ou clientes. Veja a imagem abaixo:

    Circuito do Buzzer

    O CLP tem um BUZZER para uso geral. Trata-se de um BEEP ativo. Ele quando ativado toda um sinal de aproximadamente 3Khz. Este BUZZER esta conectado no pino GPIO27. Quando coloca este pino em nível lógico 1, é ativado este buzzer. Veja o circuito abaixo:

    Entradas digitais

    As entradas digitais são opto-acopladas pelo EL3H7-A, veja data sheet aqui. Uma tensão acima de 12V, já ativa a entrada, mas é recomendada utilizar 24V nominais. Podemos ver na imagem abaixo, uma das entradas. As demais são identicas. O capacitor de saída filtra qualquer acionamento não desejavel, eliminando ruido. O resistor R22 limita a corrente no LED interno do Opto-Acoplador.


    Saídas Digitais

    As saídas digitais são Opto-Acopladas pelo EL3H7-A e um Transistor NPN. Como temos 8 saídas digitais, é utilizado uma matris de transistores ULN2803, datasheet aqui. Para cada saída temos um LED que indica que a saída esta ativada ou não. Para ligar um dispositivo na saída, colocamos a alimentação de 24V no dispositivo, exemplo relé, e o negativo nai saída do CLP. 


    Este circuito acima mostra apenas uma saída para exemplificar. Mas temos 8 saídas. É usada uma rede resistiva de 270R para limitar a corrente dos LEDs dos 8 Opto-Acopladores. Veja na imagem abaixo a posição dos opto-acopladores, da matriz de transistores ULN2803, os 8 LEDs de saída e os conectores KRE.


    Programação no CLP Apollo

    Para se programar este CLP, podemos utilizar algumas ferramentas que vamos mostrar agora. A programação é feita em linguagem C/C++. Pode-se programar em LADDER mas vou deixar para o usuário pesquisar as ferramentas, pois sempre recomendo utilizar a linguagem C/C++. As ferramentas de programação estão listadas abaixo:

    Arduino IDE versão 2.0.0


    VS Code + Platformio


    Muitos irão preferir a IDE do Arduino e é perfeitamente possivel realizar qualquer tipo de código com ela no nosso CLP Apollo. Mas eu recomendo utilizar a segunda opção, pois podemos fazer tudo que a IDE do Arduino faz, só que com uma "pegada" mais profissional. Vou deixar abaixo um vídeo do nosso canal de como instalar, configurar e usar o VS Code mais o Platformio.


    Temos em nosso canal no Youtube, muitos vídeos explicando como utilizar e damos diversos exemplos de aplicação. Nosso canal vai ficar aqui para vocês conferirem.

    Para terminarmos este BLOG, vou deixar a documentação do nosso CLP que compoem de manual do usuário, folder, Pinout, datasheet e exemplos de código.

    Arquivos
    Obrigado por ler nosso BLOG e qualquer dúvida, entre em contato com a QSP Tecnologia ou em nossa loja RoboMakers. Também pode entrar em contado com nosso Whatsapp (11) 98647-0924


    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.

    domingo, 5 de julho de 2026

    Receptor de controle remoto do tipo HT6P20 no microcontrolador Holtek HT66F0185

    Sabemos que o mundo da radio frequência é fascinante e ainda um mistério em muitos aspéctos. A história começa com a descoberta de que a eletricidade e o magnetismo são fenômenos intrinsecamente ligados e podem se propagar pelo espaço através de ondas eletromagnéticas. No século XIX, Michael Faraday mostrou que o campo magnético variável pode induzir uma corrente elétrica também variável e vice e versa, ou seja, uma corrente elétrica variável também produz um campos magnetico variável


    Alguns anos depois James Clerk Maxwell veio com um conjunto de equações matemáticas que demostravam a existencia de ondas eletromagnéticas que se propagavam a velocidade da luz, desta forma demostrando teóricamente que a luz e as ondas de rádio pertencem ao mesmo fenômeno físico. 
    Em 1887, Heinrich Hertz comprovou experimentalmente as previsões de Maxwell ao gerar e detectar ondas de rádio em laboratório. Em sua homenagem, a unidade de frequência passou a ser chamada de hertz (Hz)
    Desde então a radio frequência evoluiu rapidamente e passou a ser utilizada em diversas aplicações como hoje conhecemos, celular, televisão, internet, IOT, LORA, Wi-Fi, Bluetooth, comunicação via satélite, dispositivos de automação e controles remoto de carro e potões automaticos. 

    A faixa de frequência utilizada hoje é muito ampla e vai de acordo com a aplicação e sua eficiência. Abaixo eu mostro uma tabela com cada faixa de frequência e seu comprimento de onda.

    FaixaFrequênciaComprimento de onda
    VLF (Very Low Frequency)3 kHz – 30 kHz100 km – 10 km
    LF (Low Frequency)30 kHz – 300 kHz10 km – 1 km
    MF (Medium Frequency)300 kHz – 3 MHz1000 m – 100 m
    HF (High Frequency)3 MHz – 30 MHz100 m – 10 m
    VHF (Very High Frequency)30 MHz – 300 MHz10 m – 1 m
    UHF (Ultra High Frequency)300 MHz – 3 GHz1 m – 10 cm
    SHF (Super High Frequency)3 GHz – 30 GHz10 cm – 1 cm
    EHF (Extremely High Frequency)30 GHz – 300 GHz1 cm – 1 mm

    Neste artigo vamos explorar novamente um circuito e código em linguagem C para decodificar os controles remoto de portão ou centrais de alarme, muito utilizados ainda hoje em dia. Também é possível utilizar esta aplicação para automação e controles de carrinhos de controle remoto. A frequência utilizada será 433Mhz e a modulação ASK. Vamos utilizar como transmissor de radio frequência e controles semelhantes ao da figura abaixo:


    Vamos usar nesta aplicação diversos componentes eletrônicos, como o microcontrolador HT66F0185, mas na versão de módulo (Módulo Holtek HT66F0185) para facilitar a montagem, o controle remoto com o chip HT6P20 (Exitem diversos modelos de diversos fabricantes), um kit de desenvolvimento de Holtek (Kit Holtek), novamente para facilitar e agilizar os testes e finalmente um circuito com um receptor de RF de 433Mhz. Abaixo uma lista do material utilizado:

    • Controle remoto com chip HT6P20
    • Modulo Microcontrolador HT66F0185
    • Kit de desenvolvimento e aprendiagem da QSP com micro Holtek HT66F0185
    • Receptor de RF na frequência de 433Mhz
    • Jumper do tipo usados em Arduino
    Todo este material pode ser adquirido em nossa loja virtual (RoboMakers) bem como o código no microcontrolador HT66F0185. 

    O uso deste microcontrolador se justifica principalmente por ser um micro de facil acesso (Cika do Brasil) e por ser um micro muito acessível e barato em comparação com seu concorrente Microchip. Cerca de U$0,50 alé de possuir ferramente de software e compilador GCC gratuítos. Também é possível adquirir um gravador chamado e-Link para executar a gravação In-Circuit. Temos abaixo primeiro a imagem da IDE HT-IDE3000 da própria Holtek e que pode ser baixada no site dele aqui. Também é possivel baixar os documentos como manual da IDE e do Compilador. Detalhe que o compilador ja vem embutido na IDE, portando não precisa instalar ou baixar separadamente. 


    Temos também que demonstrar o gravador e-Link que é responsável por realizar a gravação In-Circuit. A gravação é serial síncrona, possuindo uma linha de clock e uma linha de dados. Ele utiliza de 4 pinos para fazer a gravação, são eles:
    1. Alimentação que pode ser 3,3V ou 5V
    2. GND
    3. Clock ICPCLK
    4. Dados ICPDA

    Abaixo temos o gravador e-Link e seu software de gravação chamado de HOPE3000 For e-Link e pode ser baixado aqui no site da Holtek


    É possível fazer a depuração do código via IDE HT-IDE3000 e este gravador ou apenas fazer a sua gravação. Para isso vamos utilizar o software também gratuíto HOPE3000, imagem abaixo. O link para baixar este software esta logo acima. 


    Neste software é possível gravar o firmware na memória FLASH e também dados na memória EEPROM, para isso tem buffers, um da esquerda armazena o seu firmware compilado e a direita, os dados não voláteis. 

    Pode realizar todas as tarefas abaixo usando este software:
    1. Gravação do Firmware
    2. Gravação dos dados na EEPROM
    3. Travar os Lock bits
    4. Apagar o microcontrolador por inteiro ou somente a FLASH ou a EEPROM
    5. Ler o firmware se não estiver travado
    6. Ler os dados da EEPROM se não estiver travado
    E alguns comandos são aceitos por este software como:
    1. Ligar a alimetnação 5V ou 3,3V
    2. Resetar o micro
    3. Fazer um upgrade do firmware do gravador
    Caso você deseja realizar gravações em muitos microcontroladores ou placas ja produzidas na sua fábrica, recomenda-se utilizar um gravador robusto e que pode fazer a gravação Off-line, ou seja, sem a conexão ao computador, ideal para produções. Este gravador chama-se e-WritePro. Veja imagem abaixo:


    Agora que já abordamos todas as ferramentas de software e de hardware para realizar a criação do firmware e sua gravação, vamos falar do circuito criado para testar nosso controle remoto. Este circuito esta abaixo e podemos observar o microcontrolador HT66F0185, o receptor de RF de 433Mhz, um botão de gravação PROG, para salvar o código aprendido do controle remoto, uma saída a relé, uma saída para led Onboard e um Buzzer ativo. Analise este esquemático com atenção, reparando na pinagem do microcontrolador e esses periféricos, pois esses serão utilizados no nosso código.


    Para definir as ligações do microcontrolador nos periféricos, nós utilizamos das diretivas #define. Assim conseguimos nomear cada sinal para cada periérico, por exemplo o Buzzer ligado ao pino PB1, o led onboard ligado ao pino PA7 e assim por diante. Veja esta parte do código abaixo como nos definimos o hardware desta aplicação.


    Vamos mostrar agora o setup da bancada com todas as ligações e o controle remoto. A alimentação da placa esta sendo feita por uma fonte externa de 12V. Podemos visualizar a placa didática com o módulo Holtek HT66F0185, os jumpers de conexão, uma placa perfurada onde foi montado o receptor 433Mhz e um controle remoto simples de duas teclas. Depois vamos mostrar também o sinal de saída deste receptor.


    O sinal de saída codificado vem do chip HT6P20, ja explicado neste BLOG, veja em outras publicações, mas vamos colocar novamente aqui o protocolo utilizado por este chip. Consta de um trem de pulsos, um sinal chamado de piloto seguindo de um pacote de endereço e dados e uma sequência de fim de pacote. O firmware do microcontrolador faz a função de aprender este código e decodificar. Uma vez decodificado ele liga um led e uma saída por 1,5 segundos e depois desliga. Mas você poderá acrescentar outras rotinas conforme a sua necessidade, o céu é o limite da sua criatividade. Na imagem abaixo, podemos ver o periodo do piloto com 23 clocks, 20 bits de endereço, 4 bits de dados e 4 bits de anti-code (0101). 


    A função GeraNumero do nosso firmware tem a função de montar este pacote de bits e identificar cada parte do pacote. Desta forma, uma vez identificado o pacote, podemos salvar se o botão PROG for pressionado e posteriormente testado se este pacote veio novamente ou um outro pacote de bits. 


    Nos utilizamos uma interrupção externa com borda de subida e descida, um timer 2 chamado de Compact Timer para gerar o tamanho de cada bit e uma lógica para identificar o pacote. Quando chega um pacote novo e não é pressionado o botão PROG, então é chamado uma rotina que testa as senhas, podemos ver esta rotina abaixo. Ela testa 2 vezes consecutivas as senhas que chegaram, e no caso positivo, liga o led e a saida Out1 por 1,5 segundos. 


    O receptor utilizado foi um receptor ASK Super-Regenerativo de baixo custo da antiga empresa Telecontrolli, modelo RR3, veja a imagem abaixo. Estou deixando neste link as suas especificações, datasheet.

    A razão de se utilizar este receptor, é porque eu tinha achado várias unidades em meu estoque, mas também funciona com outros modelos similares como por exemplo RWS-371. Veja a imagem abaixo um exemplar deste modelo.


    Pode-se baixa o seu datasheet aqui neste link. O diagrama em blocos destes receptores esta mostrado abaixo e é composto entrada da antena de dipolo de 17,3 cm, um pré amplificador de RF que dá a sensibilidade de apeoximadamente 100dBm, um oscilador de RF, um filtro passa baixa, um amplificador AM, um comparador LM358 e o sinal de saída. Veja na imagem abaixo, um diagrama em blocos deste receptor.


    O objetivo do receptor é transformar um sinal de rádio extremamente fraco (da ordem de microvolts) em um sinal digital de 0 e 1 que o microcontrolador (como o HT66F0185) possa decodificar. A antena recebe as ondas eletromagnéticas de 433,92Mhz. O sinal recebido é extremamente fraço, da ordem de unidades de micro volts até alguns mili volts, dependendo da distância e da potência do transmissor. Este sinal sozinho é impossivel de ser processado pelo microcontrolador que trabalha de forma digital. O pré-amplificador de RF tem a função de aumentar o sinal recebido, manter a relação sinal ruido otima e casar a impedância com a antena de modo que ocorra a máxima transferência de potencia. O oscilador de RF é o coração do receptor. Diferentemente de um receptor super-heteródino, aqui o oscilador trabalha praticamente na própria frequência de recepção, ou seja, 433,92Mhz. Ele funciona muito próximo do ponto de oscilação, demodo que quando chega um sinal na antena, o oscilador muda a sua amplitude. Esta variação é justamente o que permite detectar os sinais ASK. O oscilador Quench existem nestes tipos de receptores Super-Regenerativos, deligando o oscilador milhares de vezes por segundo e isto faz o circuito operar com enorme ganho. O filtro LP é um filtro passa baixa onde permite passar a informação e bloqueia a portadora de 433,92Mhz. Ela retira a portadora e sobra somente os bits 011101100111000. Chegando quase no final, tem o amplificador AM que é um amplificador de envoltória, por isso ASK (Amplitude Shift Keying). Por último temos o comparador que compara o sinal recebido com relação a uma referência. E na saída obtem-se o sinal digital. Temos as características elétricas deste receptor na imagem abaixo:


    Vamos capturar com o osciloscopio este trem de pulso que chega no receptor 433Mhz. Podemos observar que o transmissor envia pacotes de bits um atrás do outro em um espaço que é determinado pelo tempo do piloto, veja o protocolo do HT6P20. Quando vocês montarem este circuito com o receptor, vão observar com o osciloscópio que mesmo sem o sinal do controle remoto, existe um sinal na saída do receptor. Isto é plenamente normal, uma vez que o receptor capta ruidos externos aleatórios. Mas quando se pressiona o botão do controle remoto, ele elimita este ruido, uma vez que a sua potência é bem superior a esses ruidos.


    Veja o vídeo completo no youtube


    Para adquirir o código fonte do microcontrolador, clique aqui
    Para adquirir a placa didática com o microconttrolador HT66F0185, clique aqui
    Para adquirir apenas o modulo HT66F0185, clique aqui
    Para adquirir o controle remoto, clique aqui

    Conclusão:
    Podemo concluir que apartir deste código, o usuário pode criar seus próprios projetos como de portão automatico, centrais de alarme ou cercas elétricas, alarmes automotivos, automações residenciais e qualquer aplicação que envolva frequencia livre de 433Mhz e para aplicações simples e de distancias de até 100 metros sem obstáculos. 

    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 ...