O módulo rádio wireless APC220 é um excelente módulo RF que já tem alguns anos de estrada e ainda não tinha aparecido aqui no blog. Tive a oportunidade de usá-lo algumas vezes e recentemente percebi a dificuldade de algumas pessoas em configurar esse módulo usando o RF-Magic, um programa que não é atualizado a um bom tempo e (até onde eu sei) só existe para Windows. Resolvi então escrever este tutorial mostrando como programar o módulo wireless APC220 com Arduino.
O procedimento abaixo será bastante útil se você tem problemas com a instalação e/ou configuração do RF-Magic.
O módulo rádio wireless APC220
O módulo rádio wireless APC220 é geralmente encontrado em um kit que contém dois módulos e um adaptador USB para que você possa configurar a placa usando o RF-Magic, que já comentamos anteriormente
O APC220 tem um alcance máximo de 1KM em área aberta, e suporta frequências entre 418 e 455MHz. Isso permite que você configure o módulo de acordo com as suas necessidades sem interferir na comunicação de outros equipamentos. A comunicação com o computador e/ou microcontrolador é feita pela interface serial (pinos RX e TX) e a alimentação vai de 3.5 à 5.5VDC.
O módulo vem com antena e, uma vez configurada a velocidade da porta serial, frequência de comunicação e demais parâmetros, já pode ser utilizado para conectar os mais variados dispositivos.
Não vou me estender aqui na configuração do RF-Magic (download), mas basicamente ele é um software para Windows que você usa para configurar o módulo usando uma interface gráfica, mostrada abaixo:
Assim, se você não consegue usar o RF-Magic no seu equipamento, seja porque o software não roda, você não usa Windows ou simplesmente não gosta do RF-Magic, confira o procedimento abaixo que mostra em poucos passos como configurar o APC220 usando Arduino.
Conexão do módulo wireless APC220 no Arduino
Use o circuito abaixo para conectar o APC220 no seu Arduino Uno (como sempre, podem ser utilizadas outras placas da linha Arduino). Vamos utilizar a biblioteca SoftwareSerial para comunicação, deixando os pinos da serial por hardware livres para acompanharmos o processo pelo serial monitor da IDE do Arduino:
O circuito não tem muito segredo. Usamos os pinos 6 e 7 do Arduino para comunicação RX/TX com o módulo e o pino 5 para trabalhar com o pino SET, responsável por colocar o APC220 em modo de configuração ou modo de operação.
Configurando o módulo usando IDE Arduino
No programa abaixo, vamos usar apenas a biblioteca SoftwareSerial, já presente na IDE do Arduino.
A linha 18 é a parte do programa que realiza a gravação dos parâmetros que desejamos para o nosso módulo. Observe que temos cinco valores nessa linha, após o “WR”. São eles:
- 435000 – Esta é a frequência na qual o módulo vai se comunicar. Colocamos a frequência em KHz. Logo, se desejamos a frequência de 435MHz, colocamos como parâmetro 435000
- 3 – Define a velocidade de comunicação do módulo (não confundir com a velocidade da serial). Aceita os valores 1 (para 2400 bps), 2 (4800 bps), 3 (9600 bps) e 4 (19200 bps)
- 9 – Define a potência de transmissão e tem o valor entre 0 e 9, sendo que o 9 representa a potência máxima: 13dBm (20mW)
- 3 – Essa sim é a velocidade de comunicação serial. Aceita os valores 0 (1200 bps), 1 (2400 bps), 2 (4800 bps), 3 (9600 bps), 4 (19200 bps), 5 (38400 bps) e 6 (57600 bps)
- 0 – Paridade da serial, aceitando valores 0 (sem paridade), 1 (paridade par) ou 2 (paridade impar)
O programa escreve então esses parâmetros no módulo e em seguida realiza uma leitura para que você confira no Serial Monitor se a gravação foi feita corretamente.
//Programa: Configuracao modulo wireless APC220 com Arduino //Autor: Arduino e Cia #include <SoftwareSerial.h> const int pinoRX = 6; const int pinoTX = 7; const int pinoSET = 5; SoftwareSerial apc220(pinoRX, pinoTX); void setSettings(void) { //Coloca o pino SET em low e habilita o modo config do APC220 digitalWrite(pinoSET, LOW); delay(10); //Escreve os parametro no modulo apc220.println("WR 435000 3 9 3 0"); delay(10); } void getSettings(void) { //Rotina de leitura dos parametros digitalWrite(pinoSET, LOW); delay(10); apc220.println("RD"); delay(10); while (apc220.available()) { Serial.write(apc220.read()); } digitalWrite(pinoSET, HIGH); delay(200); } void setup() { Serial.begin(9600); pinMode(pinoSET, HIGH); apc220.begin(9600); } void loop() { Serial.println("Gravando as configuracoes no modulo APC220..."); setSettings(); delay(1000); Serial.println("nConfiguracao finalizada. Lendo os parametros..."); getSettings(); Serial.println("nModulo configurado!"); delay(100000); }
Use o programa acima para configurar os dois módulos da mesma maneira, pois agora chegou a hora de testar a comunicação e verificar se tudo está funcionando corretamente.
Testando a comunicação com módulo APC220
Vamos testar a comunicação dos dois módulos APC220 que configuramos com um deles ligado ao computador usando o adaptador USB e o outro conectado no Arduino Uno conforme o esquema abaixo, que é o mesmo usado anteriormente e onde adicionamos um led conectado na porta 3.
Carregue o programa abaixo:
//Programa: Comunicação modulo APC220 com Arduino //Autor: Arduino e Cia #include <SoftwareSerial.h> int porta_led = 3; int pino_set = 5; int pino_rx = 6; int pino_tx = 7; //Armazena o caracter recebido char buf; SoftwareSerial apc220(pino_rx, pino_tx); //Variaveis para controle do estado dos leds int estado_led = 0; void setup() { //Inicializa a serial Serial.begin(9600); //Inicializa a serial do modulo APC220 pinMode(pino_set, HIGH); apc220.begin(9600); delay(10); pinMode(pino_set, LOW); delay(100); //Define porta do led como saida pinMode(porta_led, OUTPUT); //Informacoes iniciais apc220.println("Envie o numero 1 para ligar/desligar o led!"); apc220.println(); } void loop() { //Aguarda os dados na serial while (apc220.available() > 0) { buf = apc220.read(); //Caso seja recebido o numero 1, altera o estado do led if (buf == '1') { estado_led = !estado_led; digitalWrite(porta_led, estado_led); apc220.print("Recebido! Led "); if (estado_led == 1) { apc220.println(" ligado"); } else { apc220.println(" desligado"); } } } }
O led conectado na placa vai acender ou apagar quando enviarmos o número 1 à partir do computador. Para isso, use um programa de comunicação serial como o Termite (download).
Com ele acesse a porta serial configurada para o adaptador USB (no nosso caso, porta COM8):
Reinicie o Arduino para que as primeiras informações sejam enviadas pelo módulo e mostradas no Termite. Em seguida, digite 1 na parte de baixo do programa e pressione ENTER para controlar a porta 3 do Arduino remotamente. Repare que assim que o dado é recebido pelo Arduino, uma resposta é enviada mostrando se o led está ligado ou desligado.
Gostou de programar o módulo wireless APC220 com arduino? Então confira outros posts envolvendo wireless aqui mesmo no Arduino e Cia!