O módulo wireless HC-12 é um módulo que promete comunicação em distâncias de até 1000m, e funciona por interface UART/serial na conexão com um microcontrolador, PC, sistemas embarcados, etc.
É mais uma boa opção para conexão wireless se você procura um módulo fácil de usar e que se conecta aos mais variados tipos de dispositivos.
O módulo wireless HC-12 usa radiofrequência para comunicação, trabalhando na faixa de 433.4 à 473MHz. Essa faixa de frequência você pode configurar utilizando comandos AT, e você também pode alterar outros parâmetros, como a potência de transmissão do módulo (máximo de 100mW).
O módulo wireless HC-12
O HC-12 lembra um pouco os módulos bluetooth HC-05 e HC-06, pois trabalha com comunicação serial com o microcontrolador, ou seja, você precisa de apenas 2 pinos para ligação do RX e TX do módulo.
Na imagem acima podemos ver que temos, a princípio, duas formas de ligar uma antena nesse módulo, já que ele não conta com antena embutida. A primeira é soldar uma antena tipo “mola” na placa (essa antena já vem com o módulo), e a outra é utilizar uma antena externa no conector U.FL.
No HC-12 também temos um pino para que o módulo entre em modo de comando AT (pino SET), que é ativado em nível baixo. Com isso, você configura os parâmetros do módulo por meio de comandos AT, como veremos a seguir.
Configurando o módulo wireless HC-12 por comandos AT
E pra que você precisa configurar o módulo HC-12? Bom, como eu falei anteriormente, o módulo HC-12 trabalha com frequências entre 433.4 e 473MHz, e se você quer fazer dois (ou mais) módulos se comunicarem, eles precisam estar na mesma frequência.
Para realizar a configuração do módulo, vamos utilizar um conversor USB-TTL FTDI RS232, mas você pode, se preferir, usar também um Arduino para fazer esse processo.
Na montagem do circuito abaixo eu não usei a alimentação de 5V do módulo FTDI porque a corrente não foi suficiente para alimentar o HC-12, então optei por alimentação externa.
Observe que o pino SET do módulo está ligado ao GND, o que indica que o HC-12 deve entrar em modo de comando AT:
Configurando o módulo com comandos AT
Após a montagem, abra um programa de terminal como por exemplo o Termite (download). Configure a velocidade padrão do módulo, que é 9600 bps, e teste a comunicação usando o comando AT.
O módulo deve responder com um “OK”, conforme imagem abaixo, onde eu também usei o comando AT+C100 para alterar a frequência de comunicação do módulo:
Agora você pode usar os outros comandos para alterar a velocidade de comunicação, frequência e outros parâmetros do módulo:
- AT – Instrução de teste. Retorna “OK”
- AT+Bxxxx – Altera a velocidade da porta serial, onde xxxx é a velocidade desejada: 1200bps, 2400bps, 4800bps, 9600bps, 19200bps, 38400bps, 57600bps e 115200bps. A velocidade padrão do módulo é 9600bps. Após o comando, o módulo retorna com a mensagem “OK+Bxxxx”
- AT+Cxxx – Altera o canal de comunicação wireless, onde xxx aceita valores entre 001 e 127. O valor padrão é 001, operando na frequência de 433.4MHz. Após o comando, o módulo retorna com a mensagem “OK+Cxxx”
- AT+Px – Altera a potência de transmissão do módulo, onde x pode assumir valores de 1 à 8: 1 (-1 dBm), 2 (2 dBm), 3 (5 dBm), 4 (8 dBm), 5 (11 dBm), 6 (14 dBm), 7 (17 dBm) e 8 (20 dBm). Após o comando, o módulo retorna com a mensagem “OK+Px”
Usamos então os comandos AT acima para configurar dois módulos na mesma frequência, e realizar um teste de comunicação entre o computador e o Arduino.
Comunicação PC x Arduino usando HC-12
Nesse teste vamos usar dois módulos wireless HC-12, configurados da mesma maneira (velocidade de 9600 e frequência de 433.4 MHz).
O primeiro módulo continuará ligado no computador, que será de onde vamos enviar os comandos para acionar as portas do Arduino. Não esqueça de desligar o GND do pino SET, para que o módulo saia do modo de comandos AT.
O segundo módulo será ligado ao Arduino, nos pinos 10 e 11, onde vamos criar uma serial (RX e TX) por software usando a biblioteca SoftwareSerial.
Nos pinos 5, 6 e 7 temos 3 leds que vão acender conforme os comandos enviados do computador.
Depois de montar o circuito, carregue o seguinte programa no Arduino:
//Programa : Modulo Wireless HC-12 e Arduino //Autor : Arduino e Cia //Armazena o caracter recebido char buf; #include <SoftwareSerial.h> //Define os pinos para conexao serial do modulo wireless HC-12 SoftwareSerial mySerial(10, 11); // RX, TX //Define os pinos dos leds int pinoled_verm = 5; int pinoled_verd = 6; int pinoled_azul = 7; //Armazena o estado dos pinos int estadoled_verm = 0; int estadoled_verd = 0; int estadoled_azul = 0; void setup() { mySerial.begin(9600); //Define os pinos dos leds como saida pinMode(pinoled_verm, OUTPUT); pinMode(pinoled_verd, OUTPUT); pinMode(pinoled_azul, OUTPUT); Serial.begin(9600); } void loop() { while (mySerial.available() > 0) { buf = mySerial.read(); //Led vermelho if (buf == '1') { //Inverte o estado do led (HIGH/LOW) estadoled_verm = !estadoled_verm; //Aciona a porta do led digitalWrite(pinoled_verm, estadoled_verm); //Responde com msg sobre o estado do led mySerial.println("Estado do led vermelho alterado!"); } //Led verde if (buf == '2') { estadoled_verd = !estadoled_verd; digitalWrite(pinoled_verd, estadoled_verd); mySerial.println("Estado do led verde alterado!"); } //Led azul if (buf == '3') { estadoled_azul = !estadoled_azul; digitalWrite(pinoled_azul, estadoled_azul); mySerial.println("Estado do led azul alterado!"); } } }
O programa usa a biblioteca SoftwareSerial para emular uma porta serial nos pinos 10 e 11 do Arduino, e aguarda os valores 1, 2 ou 3 para acender os leds dos pinos 5, 6 e 7 respectivamente.
Testando a comunicação com o HC-12
Para testar a comunicação, alimente o Arduino Uno com uma fonte externa para isolar completamente a placa do computador. Abra uma janela do Termite para realizar a comunicação com o módulo wireless HC-12 ligado ao módulo FTDI. Em seguida, envie os valores 1, 2 ou 3 para acender os leds:
Observe quer conforme os comandos são enviados para o Arduino, este envia uma resposta também pela serial, indicando que os comandos foram recebidos com sucesso.
E antes de finalizar este post, gostaria de compartilhar um programa interessante para configuração do módulo wireless HC-12. Com ele você pode ler as informações de configuração do módulo e também alterar os parâmetros que desejar. Tudo isso sem precisar digitar comandos AT:
O download do HC-12 Configuration Utility pode ser feito neste link.
Gostou? Confira também o post Contador Remoto com sensor indutivo e módulo wireless HC-12, onde eu mostro como enviar dados remotamente para um display LCD 20×4 usando esse módulo.