Tutorial comunicação Xbee com Arduino

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:

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:

Figura 1 : Parâmetros do primeiro módulo Xbee

E o segundo módulo vamos configurar assim:

Figura 2 : Parâmetros do segundo módulo Xbee

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!

Avalie este post!

Related posts

Termômetro IoT com ESP8266 e DHT11

by Arduino e Cia
5 anos ago

Web Server com o módulo ESP8266 NodeMCU e DHT22

by Arduino e Cia
9 anos ago

Comunicação Arduino e Raspberry Pi com LoRa

by Arduino e Cia
4 anos ago
Sair da versão mobile