Neste tutorial abordando comunicação Xbee com Arduino vou mostrar como configurar dois Módulos Xbee Serie 1 1mW, ligar um deles no computador e outro ao Arduino, e enviar um texto para que seja mostrado em um display LCD 16×2. No final do post, há um vídeo mostrando o circuito em funcionamento.
Quem já montou uma rede wireless utilizando módulos Xbee sabe que o processo às vezes não é muito simples. Existem dezenas de parâmetros para serem configurados, além das particularidades de cada tipo de módulo, já que os da Serie 1 e Serie 2 não conversam entre si.
Com esse módulo é muito simples montar uma rede ponto-a-ponto ou mesmo uma rede com vários módulos se comunicando ao mesmo tempo. A comunicação é feita na frequência de 2.4 Ghz e o alcance do módulo pode chegar a 100 metros em campo aberto. Um modo “sleep” permite uma grande economia de energia quando o módulo não está sendo utilizado, e é ideal para configurações que usem algum tipo de bateria para alimentação do circuito.
Material Utilizado
Nesse tutorial vamos utilizar:
- 2 módulos Xbee Serie 1 1mW
- Xbee Explorer USB : Esta placa é ligada ao computador via cabo mini USB e serve tanto para programar os módulos Xbee S1 como também para testar a comunicação entre eles
- Xbee Shield – Shield que será conectado ao Arduino e receberá os comandos enviados pelo Xbee conectado ao computador
- Display LCD 16×2 – Ligado ao Arduino, mostra os caracteres recebidos pelo módulo Xbee
- Fonte de alimentação para o Arduino
Instalação do Xbee Explorer USB
Xbee Explorer USB é a placa conectada ao computador via cabo mini USB, que vamos utilizar para configurar os módulos Xbee. Simplesmente encaixamos o módulo na placa, e ligamos o cabo no computador:
No Windows (64 bits) o adaptador foi reconhecido automaticamente, e foram adicionados dois dispositivos. O USB Serial Converter, e o USB Serial Port, que no nosso caso, foi alocado na porta serial COM20:
Instalação do XCTU
XCTU é o software da Digi utilizado para fazer a programação dos módulos Xbee conectados ao computador. Além da programação, é possível atualizar o firmware dos módulos, enviar comandos de um módulo Xbee para o outro e até mesmo recuperar módulos com problema. Faça o download do XCTU acessando esse link, e depois acessando Diagnostics, Utilities anda MIBS:
Na tela seguinte, clique em XCTU Next Gen Installer, Windows x32/x64, se você estiver utilizando Windows.
Após o download, execute o instalador. Na tela inicial, clique em NEXT:
Em seguida, leia TODO o contrato de licença e caso concorde com o contrato, clique em I AGREE:
Na tela seguinte, há uma advertência de que o usuário deve ter direitos de administrador no Windows 7 e Windows Vista, para evitar problemas na hora de copiar os arquivos. Clique em NEXT:
Escolha uma pasta para instalação do programa e clique em NEXT:
Na tela de confirmação de instalação, revise os itens que serão instalados e também a pasta de instalação do programa, e clique em Install para iniciar a cópia de arquivos:
Aguarde o final do processo e o XCTU estará instalado no seu computador:
Configurando o módulo Xbee Serie 1 utilizando XCTU
Com o módulo Xbee encaixado no Xbee Explorer USB, entre no XCTU e clique em Discover Devices, conforme destacado na imagem. Esse comando vai fazer com que o XCTU efetue uma varredura no computador procurando por módulos Xbee:
Na próxima tela, selecionamos a porta serial que foi detectada na instalação do Xbee Explorer USB. No caso, a COM20:
Na próxima tela, mantenha os valores padrão para a serial e clique em Finish para iniciar a varredura:
Aguarde o módulo Xbee aparecer na lista de dispositivos detectados e clique em Add Selected Devices:
Após o dispositivo ser adicionado ao XCTU, ele irá aparecer no lado esquerdo da tela do programa. Clique sobre o dispositivo para que os parâmetros de configuração sejam lidos e apareçam no lado direito da tela:
No lado direito você encontra as informações de firmware do módulo Xbee e na seção Networking & Security os parâmetros que vamos utilizar para configurar a rede Xbee.
Parâmetros de configuração Xbee
Rolando a tela, podemos ver que existem muitas possibilidades de configuração dos módulos Xbee. Mas em uma configuração básica, para comunicação ponto-a-ponto, vamos modificar apenas quatro deles:
ID PAN ID – É o número de identificação da rede Xbee ao qual o módulo irá se conectar. PAN significa Personal Area Network. Para juntar dois ou mais módulos Xbee à mesma rede, basta que estejam com o mesmo PAN ID.
MY 16-bit Source Address – É um número único que identifica o módulo Xbee na rede.
DH Destination Address High – Determina a parte “alta” (32 bits), do endereço de 64 bits que podemos atribuir aos módulos Xbee. Como estamos utilizando apenas dois módulos, vamos setar esse valor para 0 e utilizar apenas a parte baixa do endereço, especificada no próximo comando.
DL Destination Address Low – Aqui vamos colocar o endereço do módulo de destino. Como setamos 0 para o parâmetro DH, vamos utilizar o endereço de 16 bits especificado em MY 16-bit Source Address.
Essa questão dos endereços parece um pouco complicada, mas na prática fica mais fácil de entender. Vamos configurar o primeiro módulo com os parâmetros abaixo:
E o segundo módulo vamos configurar assim:
Dessa maneira, estamos determinando que os dois módulos pertencem à mesma rede (PAN ID 1234), que o primeiro módulo tem endereço 1 e vai se comunicar com o módulo que tem endereço 2 e o segundo módulo tem endereço 2 e vai se comunicar com o módulo que tem endereço 1. Compliquei ? 🙂
Para gravar esses parâmetros nos módulos, primeiro coloque o Xbee que vai ser o número 1 no Xbee Explorer USB, faça a varredura conforme eu expliquei anteriormente e em seguida configure os valores conforme a Figura 1 acima. Não se esqueça de clicar no botão Write Radio Settings (abaixo), para que os valores que você alterou sejam gravados no módulo:
Faça a mesma coisa com o segundo módulo, utilizando os parâmetros mostrados na Figura 2.
Programando o Arduino e conectando o Xbee
Agora que já temos os módulos configurados, vamos carregar o seguinte programa no Arduino, ANTES de colocarmos o Xbee Shield. Assim evitamos conflitos de serial, já que tanto a IDE como o Xbee utilizam a serial para se comunicar com o Arduino:
// Programa : Envio de texto utilizando Xbee S1 // Autor : Arduino e Cia // Carrega a biblioteca LiquidCrystal #include <LiquidCrystal.h> // Define os pinos que serão utilizados para ligação ao display LiquidCrystal lcd(A0, A1, A2, A3, A4, A5); int incomingByte = 0; char buf[20]; //Tamanho da mensagem - 20 caracteres int num = 0; String dados; void setup() { // Inicializacao do display e mensagem inicial lcd.begin(16, 2); lcd.print("Aguardando..."); // Inicializacao da serial e mensagem inicial Serial.begin(9600); Serial.println("Aguardando envio de texto..."); Serial.println(); } void loop() { while(Serial.available() > 0) { // Armazena os caracteres no buffer buf[num] = Serial.read(); // Verifica se foi recebido o caracter de nova linha if (buf[num] == 'n') { lcd.clear(); String dados = buf; dados.trim(); int tamanho_string = dados.length(); // Imprime o texto recebido na serial Serial.print("Dados recebidos : "); Serial.println(dados); // Mostra no display o texto recebido lcd.print(dados); // Apaga o buffer para receber novo texto for (int ca =0; ca<20; ca++) { buf[ca]=0; } num=0; break; } num++; } }
Agora encaixe o segundo módulo Xbee no Xbee Shield, encaixe o shield no Arduino, e ligue o display LCD 16×2 ao conjunto conforme a imagem abaixo. Vamos utilizar as portas analógicas de A0 a A5 para controle do display, e um potenciômetro de 10 K (podem ser usados outros valores) para ajuste do contraste:
Utilize uma fonte externa (7 à 12 volts) para alimentação do Arduino.
Testando a comunicação Xbee com Arduino
Mantenha o primeiro módulo Xbee conectado ao computador usando o Xbee Explorer USB. O que vamos fazer agora é usar o próprio serial monitor da IDE do Arduino para enviar textos ao segundo módulo Xbee. Na IDE do Arduino, selecione Ferramentas -> Porta Serial e escolha a porta relacionada ao Xbee Explorer (relembrando que no nosso caso é a porta COM20).
Certifique-se que o caracter de NOVA LINHA esteja selecionado conforme destacado na imagem abaixo, pois o programa aguarda esse caracter ( n ) para determinar o tamanho da string e também para saber quando ela acabou de ser enviada.
Digite o texto na parte superior do serial monitor, conforme mostrado acima, e pressione ENVIAR ou aperte a tecla ENTER para que o texto seja enviado do computador para o Arduino e reproduzido no display LCD. Todo esse processo você pode conferir nesse vídeo:
Gostou? Confira outros posts usando módulos wireless aqui mesmo no Arduino e Cia!