Isso não aparece no vídeo, mas a intenção na verdade era testar o alcance do sinal do Xbee em um espaço mais aberto, sem muitas interferências. Percebi que o sinal não tem um alcance tão longo quanto eu imaginava (conseguimos uns 5 metros, sem paredes?). Movendo um dos Arduinos pela sala de modo a aumentar a distância entre os dois módulos XBee, muitas vezes o sinal se perdia, e mesmo voltando a aproximar os módulos XBee, a comunicação entre eles só era reestabelecida quando apertava o botão de ‘reset’ no Arduino.
Por outro lado, a despeito do alcance ser menor do que eu imaginava, considerando que o módulo é minúsculo e opera sem qualquer antena, até que ele fez um bom trabalho.
Recentemente adquiri um kit XBee, para fazer a comunicação sem fio entre o Arduino e o computador, ou entre dois Arduinos. Desde então, não havia sequer tirado o kit da embalagem.
Claro, o experimento é bem simples. Queria era ver se o kit estava funcionando – especialmente porque ele vem com alguns componentes soltos que eu precisei montar e soldar, o que não é muito a minha especialidade. Mas deu tudo certo.
A programação usada em ambos os Arduinos é a mesma.
#define RED 12 // Pino Digital 12, chamar de 'RED', controla o LED vermelho
#define BLUE 11 // Pino Digital 11, chamar de 'BLUE', controla o LED azul
#define BUTTON 7 // Pino Digital 7, chamar de 'BUTTON', controla o botão
int pressureReading; // variável ‘pressureReading’ vai guardar o valor do botão
int incomingByte; // variável ‘incomingByte’ vai carregar o valor S ou N, S=botao ligado, N=botao desligado
void setup ()
{
Serial.begin(9600);
// define a taxa de transferência de dados da porta serial.
// 9600 e’ o padrão default do Xbee
pinMode (RED, OUTPUT); // RED é um dispositivo de saída de dados
pinMode (BLUE, OUTPUT); // BLUE é um dispositivo de saída de dados
pinMode (BUTTON, INPUT); // BUTTON é um dispositivo de entrada de dados
}
void loop ()
{
pressureReading = digitalRead(BUTTON);
// Verifica se o botao esta ativado
// e armazena o resultado em
// ‘pressureReading’
// Se botao estiver ligado, envia sinal ‘S’ pela porta serial.
// Caso contrario, envia sinal ‘N’.
// O XBee envia e recebe dados pela porta serial.
if (pressureReading == HIGH) // HIGH significa que o botão está ativado.
{
Serial.println(‘S’);
digitalWrite(BLUE, HIGH); // acende o LED azul
}
else
{
Serial.println(‘N’);
digitalWrite(BLUE, LOW); // apaga o LED azul
}
// Verifica se chegaram dados pela porta serial.
// Se receber o sinal ‘S’ acende a LED, sinal ‘N’ apaga o LED.
if (Serial.available())
{
incomingByte = Serial.read();
if (incomingByte == ‘S’)
{
digitalWrite(RED, HIGH); // acende o LED vermelho
}
if (incomingByte == ‘N’ )
{
digitalWrite(RED, LOW); // apaga o LED vermelho
}
delay (10);
}
}