Conectando Xbee ao Arduino

Xbee são módulos de rádio para efetuar comunicação serial entre dois pontos (ponto a ponto, ponto a multiponto e etc), conta com protocolo Zigbee e assim garante fidelidade na conexão. Estes são produzidos pela DIGI (antiga MaxStream) e possui duas versões a série 1 e 2. Série 1 e 2 não se comunicam entre si e ambas possuem modelos bem semelhantes:

Xbee 1mW, antena tipo fio, RSPMA ,UFL e chip. A distância de comunicação chega até 40m em ambientes fechados e 100m em ambientes abertos.

XbeePRO 50mW, antena tipo fio, RSPMA ,UFL e chip. A distância de comunicação chega até 300m em ambientes fechados e 1600m em ambientes abertos.
im1

Xbee 1mW

im2 
Xbee Shield para Arduino

O Xbee utiliza o protocolo ZigBee que este por sua vez utiliza como base o protocolo IEEE 802.15.4.

Utilizações:
Automação Residencial: Controle de Iluminação, Alarmes, Controle de Temperatura;
Automação Predial: Controle de Temperatura, Telemetria Elevadorista, Controle Elétrico;
Automação industrial: Telecontrole de Sensores, Terminais Inteligentes, Comunicação com Centrais.
Automação Comercial: Geradores de Senhas, Terminais Inteligentes, Software simultâneo;

Em nosso caso vamos criar uma conexão entre dois Xbee utilizando o Arduino e o PC.

Materiais Necessários:
2 Shield Xbee para Arduino;
2 Arduino (um deles sem o microcontrolador, cuidado ao retirar para não entortar os seus pinos);
2 Módulos Xbee;
1 Bateria 9V para alimentar o Arduino extra;
1 Caso USB (A-B) para conectar o Arduino ao PC;

Configuração Inicial
De fábrica cada módulo Xbee vem configurado com uma PANID (número que identifica a rede) de número 3332 e configurados com uma taxa de transmissão de 9600 baud, com dados de 8 bits sem paridade e 1 bit de parada.

Cada Xbee Shield tem um par de jumpers para definir se a comunicação serial se realiza pela porta USB ou pelao próprio Xbee. Como primeira tentativa vamos configura-lo para interagir com a porta USB, isso significa colocar os jumpers na posição externa dos pinos, na figura abaixo pode-se ver como ficaria.

im3 Configuração dos jumpers do shield

Podemos utilizar o programa HyperTerminal do Windows para começar a configurar o módulo Xbee. Outra alternativa seria usar o Serial Monitor que vem integrado com a IDE do Arduino ou o programa Bray++ Terminal.

O comando necessário para começar a programar o módulo é “+++”, ou seja três simbolos de soma consecutivos. Teclando-os devemos receber como resposta um “OK”.

im4Bray++ Terminal estabelecendo conexão com Xbee

Uma vez estabelecida a conexão só temos 5 segundos para interagir com o módulo. Depois deste tempo, o módulo regressa a seu estado nativo e para voltar a conexão deve redigitar “+++”.

Cada comando que mandamos ao Xbee deve ser precedido pelas letras AT (de AT Command = Comando AT)

A tabela de comandos mais usuais pode ser encontrado na página dedicada no site do Arduino.

Usaremos para conexão ao PC a placa Arduino sem o microcontrolador ATMEGA. A razão para isto é que desta maneira podemos diretamente interagir pelo USB com o módulo Xbee.

Para este exemplo proponho a seguinte configuração: uma PANID de 3332, um módulo com endereço ‘0’ e o outro com ‘1’. O módulo com endereço ‘0’ será o que  vai estar conectado ao PC e o módulo com endereço ‘1’ será o módulo remoto.

Para configurar o primeiro com a endereço ‘0’, 9600 baud, 8 bits, sem paridade, com 1 bit de parada e comunicação com o módulo de ID1 usamos os seguintes comandos:

ATID3332
DH0
DL1
MY0
BD3
WR
CN

As letras AT indicam ao Xbee que vamos lhe enviar comandos.
ID3332: Define PANID de 3332;
DH0: Define direção ‘1’, com quem o Xbee estará se comunicando;    
DL1: Define direção ‘1’, com quem o Xbee estará se comunicando; 
MY0: Define endereço ‘0’, próprio endereço;
BD3: Define velocidade em 9600 baud;
WR: Faz a gravação do módulo;
CN: Encerra conexão com o módulo;

Passo seguinte é conectar o segundo Xbee Shield ao Arduino sem microcontrolador. Configuramos da mesma maneira:
ID3332: Define PANID de 3332;
DH0: Define endereço ‘1’, com quem o Xbee estará se comunicando;    
DL1: Define endereço ‘1’, com quem o Xbee estará se comunicando; 
MY0: Define endereço ‘1’, próprio endereço;
BD3: Define velocidade em 9600 baud;
WR: Faz a gravação do módulo;
CN: Encerra conexão com o módulo;

Depois de terminada a configuração dos módulos estamos aptos de estabelecer uma conexão cpm os módulos.

Programando o Arduino remoto
Vamos colocar o módulo Xbee com endereço ‘1’ no Arduino que tem o microcontrolador e vamos programar nele um código que envia via Serial um número. Também vamos incluir uma leitura da porta serial para saber se foi recebido um caracter em particular e se caso for afirmativos iremos trocar o estado de um LED conectado ao pino digital 13.

É importante remover o módulo Xbee dete Arduino enquanto programamos, para que possamos estabelecer a comunicação serial.

int numero = 0;
char recepcao;
int estado = 1;

void setup() {
Serial.begin(9600);
}

void loop() {
Serial.print(numero);
Serial.println();
delay(1000);
numero++;
// ler da serial
recepcao = Serial.read();
if (recepcao == ‘x’)
{
estado = !estado;
digitalWrite(13,estado);
}
}

Depois de carregar este código podemos testa-lo abrindo uma conexão serial entre o Arduino. Devemos observar o numero ascendente e quando enviamos o caracter ‘x’ devemos observar uma troca do estado do LED conectado ao pino 13

Provando a comunicação sem fio
Uma vez programado o Arduino vamos desconectar o jumper USB e colocar no outro, aonde possamos alimenta-lo com uma bateira 9V. Também vamos conectar o Xbee para que possa começar a comunicação serial sem fio. Devemos nos assegurar que os jumpers do interior do Arduino estejam em ‘Xbee”’. No PC vamos conectar o Arduino sem microcontrolador com o Xbee shield de endereço ‘0’ e vamos abrir o Hyper Terminal, depois de alguns segundos devemos começar a observar o numero recebido do endereço ‘1’ em ascendencia e quando teclamos a tecla ‘x’ conferimos se o LED mudou de estado.

im5Recebendo os dados pelo Hyper Terminal do Windows

Espero que gostem do exemplo e o desenvolvam com sabedoria. Xbee é uma ferramenta implantada no Brasil em meados de 2007 e está em plena expansão.

Deixe um comentário