Comunicação com Xbee
Neste Artigo será realizado testes de comunicação com o Xbee, com o objetivo de implementa-lo no kit da texas TDC1000-TDC7200EVM para realizar o monitoramento da vazão de água em um computador distante do local onde se encontra o sensor de vazão.
Para chegar neste objetivo, é nescessário realizar a comunicação SPI (Serial Peripheral Interface) com o kit da texas instruments, desta forma, para que isto seja possível, será desenvolvida 4 etapas, conforme abaixo:
Etapa 1 : Comunicação simples com XBEE no modo Coordenador e Routeador: para verificar que as ligações e as configurações que estão senda realizadas no XBEE estão corretas.
Etapa 2: Comunicação entre 1 Coordenador e 2 Routeadores: depois cumprir etapa 1, o próximo passo, é testar a comunicação em rede.
Etapa 3: Comunicação SPI entre o Arduino e o XBee. (Em desenvolvimento)
Etapa 4: Comunicação SPI entre kit TDC1000-TDC7200EVM e o XBee (Em desenvolvimento)
- Explicação da ETAPA 1
Nesta primeira etapa, foram utilizados 2 xbee’s de modelos diferentes, sendo que 1 deles, foi configurado como coordenador, e o outro como roteador. Segue abaixo os modelos utilizados:
Coordenador: XBee Pro S2C
Roteador: XBee Pro S2
Como foi ligado o XBee:
O XBee coordenador foi ligado no Xbee Usb Explorer Adapter, que foi ligado no usb do computador.
O XBee roteador, foi ligado no Arduino UNO, ligado RX do Explorer na porta zero (RX) do Arduino. Além de ligar o 5V e o GND do explorer nas portas de 5V e GND do arduino, conforme a figura abaixo:
XBEE COORDENADOR | Modelo: XBP24-Z7WIT |
DH Destination Addres High | 13A200 |
DL destination Address Low | 4098D4CF |
Familia | Xbee PRO S2 |
XBEE ROOTER | Modelo: XBP24-Z7WIT |
DH Destination Addres High | 13A200 |
DL destination Address Low | 408DC794 |
Familia | Xbee PRO S2 |
Configuração do Coordenador
1 – Atualize o firmware para que ele seja coordenador.
Clique no Modulo => Update => ZigBee Coordinator AT
Obs.: Selecione a versão mais recente (Primera)
2 – Atualize o firmware para que ele seja coordenador.
Agora: Definir nome da Rede e Cadastrar o endereço do Router
- Nome da rede: ID PAN ID: FF
- Cadastrar endereço Router:
- DH Destination Address – 13A200
- DL Destination Address Low – 408DC794
- NI node identifier – Xbee-FF-Server
Configuração do Routeador (ZigBee Router AT)
Definir nome da Rede e Cadastrar o endereço do Router
- Nome da rede: ID PAN ID: FF
- Cadastrar endereço Coordenador:
- DH Destination Address – 13A200
- DL Destination Address Low – 4098D4CF
- NI node identifier – Xbee-FF-Server
Obs.:
- DH Destination Address – É a primeira parte do endereço do módulo Router/Coordinator
- DL Destination Address Low – É a segunda parte do endereço do módulo Router/Coordinator
- Xbee-FF-Server: nome de sua preferencia
Testando a Comunicação
O Roteador será ligado no Arduino fora do computador, alimentado por uma fonte.
O Coordenador vai no computador, que irá enviar a informação para o routeador receber e acender o led do Arduino.
Para isto:
1 – Transfira o programa para o Arduino no computador e depois retire ele fora do computador e deixe alimentado por fonte externa.
2 – Ligue o Roteador no Arduino
3 – Ligue o Coordenador no computador. Agora entre no XCTU e clique em:
- Console;
- Abra a porta;
- Agora na Tela do console, digite 1 para ligar o led e 0 para pagar, conforme o programa do Arduino.
Resultado:
Código do Arduino Uno:
//Armazena os valores recebidos da serial
int valores = 0;
//Armazena o estado do led
String estado;
void setup()
{
//Define o pino 13 – LED embutido no Arduino – como saida
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
//Aguarda dados na serial
if (Serial.available() > 0)
{
valores = Serial.read();
//Caso seja recebido 0, apaga o led
if(valores == ‘0’)
{
digitalWrite(13, LOW);
estado = “apagado”;
}
//Caso seja recebido 1, acende o led
else if(valores == ‘1’)
{
digitalWrite(13, HIGH);
estado = “aceso”;
}
//Envia mensagem de confirmacao
Serial.print(” Led “);
Serial.print(estado);
Serial.write(10);
}
}
- Explicação da ETAPA 2
Nesta segunda etapa, foram utilizados 3 xbee de modelos diferentes, sendo que 1 deles, foi configurado como coordenador, e os outros 2, como roteador. Segue abaixo os modelos utilizados:
Coordenador: XBee Pro S2C
Roteador-1: XBee Pro S2
Roteador-2: XBee Pro S2
Como foi ligado o XBee:
O XBee coordenador foi ligado no Xbee Usb Explorer Adapter, que foi ligado no usb do computador, igual a etapa 1.
O XBee roteador, foi ligado no Arduino UNO e no Arduino Mega, sendo agora 2 tipos de ligações:
1 Ligação xbee – Arduino Uno: Realizada igual a etapa 1, pelo xbee explorer. Desta forma, ligando o RX do Explorer na porta zero (RX) do Arduino. Além de ligar o 5V e o GND do explorer nas portas de 5V e GND do arduino.
2 Ligação xbee – Arduino Mega: Ligação direta do chip do xbee no arduino. Para isto, foi nescessário, verificar o datasheet do modelo do xbee, conforme a figura abaixo:
Desta forma, foram conectados os pinos: 1, 2 e 10 no arduino, sendo eles:
- Pino 1 – VCC [Ligar em 3.3V (Maximo)]
- Pino 10 – GND
- Pino 2 – Saída de Dados digitais (DOUT)
Obs.: O Pino 2 foi conectado na porta 0 (RX) do arduino mega
Segue abaixo a imagem destas ligações:
Configuração do Coordenador
Definir nome da Rede e Cadastrar o endereço do Router
- Nome da rede: ID PAN ID: FF
- CE coordator Enable: Enable1
- Cadastrar endereço Router:
- DH Destination Address – 0
- DL Destination Address Low – FFFF
- NI node identifier – Xbee-FF-Server ou Coordenador
Obs.: o endereço de destino: DL Destination Address Low – FFFF é configurado para FFFF que faz o rádio funcionar no modo de transmissão, para que ele possa se comunicar com todos os rádios da rede.
Configuração do Roteador
Definir nome da Rede e Cadastrar o endereço do Router
- Nome da rede: ID PAN ID: FF
- JV CHANNEL VERIFICATION: Enabled
- CE Coodinator: Disabled
- Cadastrar endereço Router:
- DH Destination Address – 0
- DL Destination Address Low – 0
- NI node identifier – Xbee-FF-Server ou rooter
Testando a Comunicação
Os Roteadores serão ligados no Arduino Uno e Mega, fora do computador, alimentado por uma fonte externa.
O Coordenador será ligado no computador, que irá enviar a informação para o roteador receber e acender o led de cada Arduino.
Para isto:
1 – Transfira o programa para o Arduino Uno (Código do Uno está divulgado na etapa 1)
2 – Transfira outro programa para o Arduino Mega
2 – Ligue os Roteadores nos Arduinos
3 – Ligue o Coordenador no computador. Agora entre no XCTU e clique em:
- Console;
- Abra a porta;
- Agora na Tela do console, digite 1 para ligar o led e 0 para pagar, conforme o programa do Arduino.
De acordo com o programa que foi transferido para cada Arduino, quando clicar em 1 irá acender o ledo do Arduino Uno, e em zero irá apagar.
A mesma coisa irá acontecer para o Arduino Mega, sendo a diferença que quando clicar em 4, acenderá o led do mega e em 3 apagará.
Código do Arduino Mega:
int valores = 0;
//Armazena o estado do led
String estado;
void setup()
{
//Define o pino 13 – LED embutido no Arduino – como saida
pinMode(13, OUTPUT);
Serial.begin(9600);
}
void loop()
{
//Aguarda dados na serial
if (Serial.available() > 0)
{
valores = Serial.read();
//Caso seja recebido 0, apaga o led
if(valores == ‘2’)
{
digitalWrite(13, LOW);
estado = “apagado”;
}
//Caso seja recebido 1, acende o led
else if(valores == ‘3’)
{
digitalWrite(13, HIGH);
estado = “aceso”;
}
//Envia mensagem de confirmacao
Serial.print(” Led “);
Serial.print(estado);
Serial.write(10);
}
}
-
- ETAPA Intermediária de TESTE
Esta etapa é uma etapa intermediária, pois ela não foi planejada. Com o desenvolvimento da comunicação do xbee, esta etapa é uma possível solução mais simples para a comunicação sem fio entre o kit TDC1000-7200 e o xbee.
Ela consiste em realizar a comunicação direto pelas portas tx e rx do kit da texas e o xbee.
Assim, esta ETAPA consiste em 2 fases sendo elas:
FASE 1: Esta fase, foi realizado o teste entre um sensor de distância ultrassônico ligado no arduino uno que foi ligado no xbee terminal. Esta ligação entre o o arduino uno e o xbee foi realizado através do explorer do xbee pelas porta tx e rx, onde:
- A porta rx do arduino foi ligado na porta rx do xbee terminal
- A porta tx do arduino foi ligado na porta tx do xbee terminal
Assim, foi compilado um código no Arduino uno de distância, relacionado diretamente ao sensor Ultrassônico junto com sua biblioteca, para que desta forma, o xbee terminal enviasse o sinal já processo pelo Arduino, para o xbee coordenador ligado no computador para receber o sinal de distância coletado pelo sensor ultrassônico, sendo esta comunicação, sem fio.
Segue abaixo a imagem destas ligações:
Vídeo do Experimento
Código do Arduino:
#include <Ultrasonic.h>
//Define os pinos para o trigger e echo
#define pino_trigger 4
#define pino_echo 5
//Inicializa o sensor nos pinos definidos acima
Ultrasonic ultrasonic(pino_trigger, pino_ech o);
void setup()
{
Serial.begin(9600);
Serial.println(“Lendo dados do sensor…”);
}
void loop()
{
//Le as informacoes do sensor, em cm e pol
float cmMsec, inMsec;
long microsec = ultrasonic.timing();
cmMsec = ultrasonic.convert(microsec, Ultrasonic::CM);
inMsec = ultrasonic.convert(microsec, Ultrasonic::IN);
//Exibe informacoes no serial monitor
Serial.print(“Distancia em cm: “);
Serial.print(cmMsec);
Serial.print(” – Distancia em polegadas: “);
Serial.println(inMsec);
delay(1000);
}
- Explicação da ETAPA 3 – Em desenvolvimento
- Explicação da ETAPA 4 – Em desenvolvimento