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!