quarta-feira, 5 de fevereiro de 2025

Receptor com microcontrolador STM8S para controle remoto do tipo HT6P20

Vamos desenvolver um receptor de RF para controles remoto com CHIP HT6P20 da empresa Coreana Holtek. Vamos criar um código em linguagem C para identificar os comandos vindos de receptor de RF do tipo ASK (Amplitude Shift-Keying) ou modulação em amplitude por chaveamento. Existe diversos tipos de receptor ASK e diversos frabricantes. A imagem abaixo mostra dois exemplos deste tipo de controle remoto.

Como são controles de extremo baixo custo, são ideais para uso em diversos projetos eletrônicos envolvendo microcontoladores. Podemos destacar aplicações abaixo:

  • Centrais de Portões Automáticos
  • Equipamentos de gerenciamento de senhas
  • Chama garçon
  • Alarmes residênciais e automotivos
  • Qualquer acionamento remoto

Obs: Para sistemas de segurança, o ideal é utilizar outro tipo de controle chamado de "Rolling Code" pois este funciona semelhante a um Token. Já este tipo de controle com o CHIP HT6P20 é do tipo "Learning Code" que gera um código de 22/24 bits fixos e únicos para cada CHIP fabricado, oque não é tão seguro quando se pode utilizar "Chupa-Cabras" para salvar o segredo. Mas tudo bem, podemos utilizar em muitas outras aplicações. 

Vamos agora estudar o CHIP set destes tipo de controle remoto, o HT6P20 da Holtel. Você pode baixar o datasheet deste circuito imtegrado aqui. Podemos ver na imagem abaixo o aspector do circuito integrado no formato DIP (Dual Inline Package) mas também existe em outros formatos como em SMD SOIC8


Este circuito integrado é um encoder OTP (One Time Programable) ou seja, é gravado um código na fabrica único apenas uma vez. Ele gera um código de 24 bits, a tensão de operação dele é de 2 até 12 volts, o que permite ampla faixa de operação, desde baterias de Lion tipo CR2032 até baterias de 12 volts. Baixa consumo, oscilador interno e fácil integração com circuitos transmissores de RF. Você pode contruir seu próprio controle remoto utilizando este CI mais um trasmissor de RF por exemplo de 433Mhz, uma frequência livre e que pode ser usada para estas aplicações. Veja um exemplos de transmissor de RF na imagem abaixo. 


Esses transmissores são do tipo de modulação ASK (Amplitude Shift-Keying), é a técnica de modulação mais simples entre as utilizadas para modular sinais discretos (digitais). Consiste na alteração da amplitude da onda portadora em função do sinal digital a ser transmitido. A modulação em amplitude translada o espectro de frequência baixa do sinal binário, para uma frequência alta como é a da onda portadora.

A amplitude da portadora é comutada entre dois valores, usualmente ligado e desligado ( na modulação em amplitude multinível podem ser utilizados mais valores). A onda resultante consiste então em pulsos de rádio frequência ( RF ), que representam o sinal binário "1" e espaços representando o dígito binário "0" (supressão da portadora).

Esta técnica é equivalente a modulação AM para sinais contínuos com um sinal modulante na forma de um pulso retangular. O preço desta simplicidade é a excessiva largura de faixa da transmissão. A técnica de modulação ASK também representa perda de potência relativa a onda portadora.

A largura de faixa da transmissão pode ser reduzida se os pulsos empregados forem formatados (limitados em banda) antes da modulação.


Pacote de endereço e dados do HT6P20


Como havíamos conversado, o HT6P20 envia um trem de pulsos de 24 bits que deveremos identificar em nosso código no Microcontrolador STM8S. Veja na imagem abaixo este sinal do circuito integrado. 


Este trem de pulso pode ser dividido em 3 partes:

  • Periodo Piloto - Fica em nível lógico baixo por 23 periodos de clock do chip
  • Perido de endereçamento e dados - Serão 24 bits no total
  • Periodo de anti-code - Serão 4 bits de finalização do trem de pulso

Os níveis lógicos aplicados neste trem de pulso são diferentes e estão relacionados com a relação dos tempos que o sinal fica em alto e baixo. Veja na imagem abaixo os níveis alto e baixo. O sinal Fosc é um sinal interno ao circuito integrado e com 3 periodos deste sinal se forma um sinal de saída que vai para o circuito transmissor de RF. Quando temos 2 periodos em zeros volts para 1 periodo em 5 volts, temos um nível lógico alto. E quando temos um periodo em zero volts para 2 periodos em 5 volts, temos um nível lógico zero.

Bom agora que já demos uma pequena explicação sobre o sinal do HT6P20, vamos ver como iremos captar este sinal no microcontrolador. Iremos utilizar um receptor muito conhecido na eletrônica e no mundo do Arduino. Eu estou falando do receptor ASK de 433Mhz, imagem abaixo. Existem diversos concorrentes e fabricantes mas todos são muito parecidos e funcionam de forma semelhante.



Na imagem acima temos dois modelo muito conhecidos mas muito parecidos. Todos são alimentados com 5 volts e GND, tem um PAD para soldar uma antena externa e saída de dados, a qual vamos conectar nosso microcontrolador. A antena pode ser um pedaço de fio com comprimento de 1/4 do comprimento da onde de RF. O comprimento de onda de uma determinado sinal é dada pela formula abaixo. Onde "v" é a valocidade da onde no espaço e "f" é a frequência da onda.


  • Velocidade da Luz: 300.000.000 m/s
  • Frequência da Onda: 433Mhz
  • Comprimento de Onda: 0,69 metros
Portanto como o comprimento da antena deve ser 1/4 do comprimento da onda, teremos que uma fio de 17,3 cm é o ideal.

Kit de Microcontrolador STM8


Vamos neste projeto usar um kit de microcontrolador STM8S003K3T6 para facilitar nossa montagem, uma vez que neste kit temos todos os circuitos para acionar saídas como leds, relés, Buzzer e etc. Apenas teremos que acrescentar o circuito receptor de RF, oque pode ser facilmente conectado em uma das portas de expansão do kit. Para aqueles que desejam comprar ou adquirir este kit em nossa loja parceira, acesse o link da RoboMakers


Vamos utilizar o círcuito abaixo como referência para criarmos nosso código de acordo com a pinagem utilizada do projeto. Este circuito é facilmente montado no KIT acima, colocando jumpers entre os terminais. Temos basicamente os seguintes componentes usados:

  • Microcontrolador STM8S003K3T6
  • Receptor de RF de 433Mhz com antena de 17 cm
  • Um buzzer para sinalização da gravação do código
  • 8 leds para indicar a saída acionada
  • 1 chave para habilitar a gravação no modo "Code Learning"
  • 1 Conector de gravação In-Circuit

O gravador usado para gravar o arquivo hexadecimal será o STLINK V2 da ST Microelectronics. Esse gravador pode ser usado para gravar microcontroladores de 32 bits (STM32) via JTAG ou SWD e os de 8 bits (STM8) via SWIN. Existem dois conectores disponíveis. O conector menos na parte central dele é destinado para os microcontroladores de 8 bits e segue uma sequência de pinagem.



Este conector deve ser ligado no conector CN4 do Kit de microcontrolador STM8 respeitando a pinagem VDD, Data, GND e Reset. Veja a tavela abaixo:


Programação:

A programação do código no microcontrolador foi feita em linguagem C utilizando o compilador IAR. Foi criado um projeto na IDE para que possamos escrever nosso código. Para aqueles que queiram aprender mais sobre este compilador, vou deixar abaixo um vídeo onde eu ensino passo a passo a criar um projeto utilizando esta ferramenta. É fundamental que se saiba como usar oa arquivos e a biblioteca da ST que chamamos de SPL (Standard Peripheral Libraries).


O ambiente de programação como havia falado é o IAR e podemos visualizar na imagem abaixo. Caso queira fazer um download da versão DEMO do fabricante, estou deixando o link do fabricante IAR System.



Vídeo de demostração:




Código fonte do microcontrolador STM8S003


Você pode achar o código fonte desta aplicação na nossa loja Robomakers procurando por softwares e depois em firmware, ou clicando diretamente aqui

Conclusão:


Pessoal neste artigo podemos ver como é possível utilizar um microcontrolador barato como o STM8S para receber e identificar códigos de um CHIP HT6P20 para projetarmos centrais de alarme, portões automaticos e qualquer equipamento que precise de acesso remoto. Obrigado por ler este artigo, grande abraço

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