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:
- 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!
Consigo fazer comunicação entre 3 xbee? *1 servidor e 2 estação.
Cara poderia postar uma demonstração para ler uma porta analógica do xbee e transmitir essa informação para o arduino?
Boa sugestão, vou ver o que consigo. 🙂
Abraço!
Existe alguma forma de comunicação sem usar o shield?
Oi Jadir,
O shield facilita a comunicação, pq a pinagem do módulo Xbee não é "padrão"… uma outra opção é você usar um adaptador como esse:
http://www.filipeflop.com/pd-30427c-adaptador-xbee-para-protoboard.html
Apenas não esqueça que o Xbee trabalha com nível de sinal de 3.3V, assim você terá que converter a tensão de sinal se for usa-lo com Arduino Uno, por exemplo.
Abraço!
Bom Dia, Modo API…. daria pra fazer no modelo do Xbee s3B 900 mhz?!
Boa tarde.
como faria pra conectar um sensor de umidade no xbee e enviar dados lidos pelo sensor para o arduino remoto?vejo projetos com xbee no arduino e outro modulo no pc.caso eu queira fazer uma comunicção entre arduino e o xbee sem conexao usb com pc,como eu poderia fazer?
obrigado.
Olá, gostaria de saber se nesse estilo de rede que criou, o mesmo xbee que ta enviando os dados, pode receber? para criar por exemplo uma confirmação do arduino que ele recebeu o dado.
Nesse estilo de rede, ambos os xbees podem enviar e receber dados?
Boa tarde,
Sim, a comunicação é bidirecional.
Abraço!