Este post visa exemplificar os primeiros passos com Arduino e Xbee.
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.
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.
Configuração dos pinos do shield Xbee
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”
Estabelecendo conexão com o 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.
Recebendo 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.
consegui uma vez fazer esse teste, porem nao tinha esses numeros em ascendencia.
ResponderExcluirDepois fiz outros projetinhos, e quando tentei voltar essa configuraçao, os numeros ascendentes vieram, porem, nao liga mais o led qndo aperto "x"
Porque fica essa contagem no terminal?
iobrugado
Cara voce sabe se Shield que voce usou com o Xbee funciona com o o Xbee Pro XSC de 900Mhz?
ResponderExcluirhttp://www.sparkfun.com/products/9087
Cara eu tenho esses itens, onde eu encontro o jumper wifi http://www.dfrobot.com/index.php?route=product/product&product_id=264
ResponderExcluirhttp://www.dfrobot.com/index.php?route=product/product&product_id=184 x2
http://www.dfrobot.com/index.php?route=product/product&product_id=72
http://www.dfrobot.com/index.php?route=product/product&product_id=56
?
Fiz tudo certinho, chequei milhões de vezes e nada
Legal, tutorial simples e claro! Obrigado!
ResponderExcluirPessoal,
ResponderExcluirAcesse o site da EMPRETECNET, eles fabricam um KIT com uma placa compatível com arduino duemilanove, uma placa de rele, de potenciômetro, de sensor de luz, de sensor de luminosidade, de buzzer, de botão e demais componentes que podem ser realizados vários experimentos sem a necessidade de solda. Qualidade excelente!!