Como trabalhar com a biblioteca Xbee-arduino ? (XBEE API)

Olá amigos,

Procurando pela net, encontrei diversos tutoriais ensinando a configurar e comunicar os Xbee em modo AT, inclusive os tutoriais aqui do Lad de garagem, o que permite apenas a comunicação modulo a modulo.


Para a comunicação envolvendo varios modulos, tipo, você ter um modulo ligado a um painel ao lado de sua cama como coordenador, e ter vários modulos espalhados pela casa em lampadas, ar condicionados, bombas d´agua, etc. os Xbee tem que ser configurados e utilizados em modo API.
Porem, para comunicação em modo API envolvendo o arduino tenho achado pouca coisa.
O que encontrei de mais concreto foi a biblioteca XBEE-ARDUINO ( https://code.google.com/p/xbee-arduino/ ), mas como sou leigo nesse tipo de comunicação, não consigo compreender nem mesmo os exemplos da biblioteca, tipo, onde entram as variáveis captadas em um ponto a serem transmitidas para outro ponto ? como seria um exemplo de dois arduinos cada um com um potenciometro, se comunicando com um terceiro xbee que tem dois leds de saida, e que quando mexemos no potenciometro do arduino1, o led vermelho no arduino 3 aumenta, já se mexemos no potenciometro no arduino 2, o led verde no arduino 3 acende, como seria isso ?

Gostaria muito de ajuda para entender a utilizar os xbee em modo API e se possível utilizando a biblioteca citada.

Exibições: 3127

Responder esta

Respostas a este tópico

Companheiros moises silva e Weider Duarte 

eu entendo um pouco do Assembly pois sou eng de computacao, na facu programei muito micro controlador 8085 em assembly, entao ja tenho uma certa noção do que fazer pra comunicar via api, pois envia pacotes, no X-TCU do xbee (versao mais recente) tem um "montador de pacotes" que auxilia montar o pacote de comunicacao do XBEE, e por la mesmo vc envia o pacote para o xbee slave, ja configurei tudo, esta comunicando pois quando envio o pacote (pacote com informações erradas ainda) eu percebo que as luzes do xbee slave que esta plugado em uma placa para xbee piscam, então falta pouco (eu diria um empurraozinhao para eu conseguir setar um pino do xbee), conseguindo isso consigo comandar um relé, entao percebi que o pacote do xbee vai funcionar da seguinte maneira:

****start (inicio do pacote) = 7E

****tamanho do pacote com 16bits (envia o tamanho deste pacote iniciando apos este item):

exemplo: 00 0C (onde C = 12 em decimal ou seja a partir deste item do pacote vai ter 12 bytes de informações sem contar com o checksum no final do pacote) vamos contar a partir de agora:

**** frame type: (ainda nao descobri o que eh isso) mas padrão é 00 (entao tem 1 byte (vá somando))

****  frame id (tb, nao sei) mas padrão é 01 ((entao tem 1 byte (vá somando))

**** dest address 64bits ou 8 bytes: são os 8 bytes encontrados no fundo do xbee o meu por exemplo tem o codigo -> 00 13 A2 00 40 A1 06 08 (este é o endereço do meu xbee e tem 8 bytes va somando)

**** opções: 00 (para nenhum) ou 04 (para broadcast, ou seja enviar o pacote para todos os xbees conectados) (esta informação tem 1 byte va somando)

****RF data: AIIII QUE O BIXO PEGA... é o bendito comando que vc queira mandar para o arduino

eu entendo da seguinte maneira (não tenho certeza) o xbee tem 8 portas que podem ser digitais, ou seja.. podem ser setadas com 0 ou 1 são elas (DIO 0 ate DIO 7)... entao para setar a porta  DIO 0 por exemplo eu tenho que mandar o comando 80 em HEXA, ou seja 80 em binário significa 1 0 0 0 0 0 0 0 , o que isso quer dizer.... note que no binario existe somente um numero 1 no começo, que eh justamente dizendo para setar para 1 a porta DIO 0, e o restante das portas se mantem em nivel logico 0 (complicado neh) mais um exemplo pra facilitar o entendimento, se eu quizer setar as portas DIO 0 e DIO 2 do xbee eu mando o comando A0 em hexa, ou em binário significa 1 0 1 0 0 0 0 0

ou seja, agora temos 2 pinos  em nivel logico 1 o restante esta setado como 0. (entao esta informação tem 1 byte, somou todas? deu 12? entao o pacote tem tamanho 00 0C = 12) 

*checksum: nada mais é que uma verificacao se o pacote veio com todos os 12 bytes ou se ele chegou errado. este checksum nao sei montar mas tem 1 byte e nao conta mais na soma.

então o pacote todo completo seria:

7E - 00 0C - 00 - 01 - 00 13 A2 00 40 A1 06 08 - 00 - 80 - FA

TEORICAMENTE ENVIANDO ESTE PACOTE EM MODO API SETARIA O MEU XBEE DESTE ENDERECO ( 00 13 A2 00 40 A1 06 08 ) PARA 80, OU SEJA PORTA DIO 0 EM NIVEL LOGICO 1 E O RESTANET EM 0.

UFA.. RSRSRS 

compartilhei esta informação pois pode ser útil ja que vcs assim como eu querem aprender, mas porem, não sei completamente, isso é só o principio de uma longa jornada, não tenho certeza de tudo isso mas sei que o caminho é por ai....

ja no arduino seria tipo enviar este pacote fazendo um serial.print byte a byte... acho que é isso.

ABRAÇOS AMIGOS!

sim, weider, quer me vender o livro? eu compro e vc envia por sedex. meu email é daniellsamorim@gmail.com

Na empresa onde trabalho implantamos um sistema de comunicação entre equipamentos que tem como base o XBEE, NÃO ENTENDO DA PROGRAMAÇÃO....

Mas vou colocar uma parte dos comandos que aparecem no serial, quem sabe t dá uma luz:

"

ZIGB6,13A200,40974BFA,1,0,07
ZIG19,2130,13A200,40B169A1,2238.56013,04823.68058,,46,2,0,1,0C
ZIG10,2126,13A200,40B1693D,2238.83094,04824.08014,263.14,165625,280814,816262,2,98,01,0.60,2D
ZIG26,9006,13A200,40AD980A,2238.77341,04823.57891,2,1,6E
ZIG14,2130,13A200,40B169A1,2238.56005,04823.68045,,46,2,0,5,0E
ZIG14,2122,13A200,40AA4464,2238.55291,04823.74382,334.95,103,2,0,5,2C
ZIGB6,13A200,40BCF1C6,1,0,7B
ZIGB6,13A200,40BAE629,1,0,03
ZIG26,8804,13A200,40B1693A,2245.75826,04831.79116,1,1,16
ZIG2N,4572,2130,13A200,40BAB803,0,13
ZIG14,2131,13A200,40BA6104,2245.79216,04831.37412,,96,1,0,5,05
ZIG2N,9016,2130,13A200,40974B52,1,1D
ZIGB6,13A200,40BCF1BC,1,0,0F
ZIGB6,13A200,40BAE6C1,1,0,7A

"

sendo:

ZIG14,2131,13A200,40BA6104,2245.79216,04831.37412,,96,1,0,5,05

zigxx = operação que esse equipamento está

2131 = numero de frota do equipamento

13A200 = endereço alto do modulo XBEE ( todos tem o mesmo endereço alto)

40BA6104 = endereço baixo ( unico e que permite a comunicação via API)

2245.79216 = Latitude do equipamento

04831.37412 = Longitude do equipamento

,, = no caso nessa situação não veio mas é o RE do operador

... o restante faz parte do sistema como informação calculada.... ( Estratégico)

Espero que Ajude , e novamente frisando não programei ( no caso é programação em um PIC) e nem tenho acesso ao código, apenas cuidei da implantação do sistema

Alias tenho muito interesse em aprender sobre API.

Gustavo Sanchez,  cara,  independente de ter te ajudado, já gostaria de tu só pelo sobrenome, que é o do meu idolo Andrez Sanchez, o cara que revolucionou meu timão.

Mas vamos lá:

Vai ser util sim as informações,  tudo que contribuir é bem vindo.

Obvio que não sei bem como utilizar no momento,  mas vou estudar e buscar entender.

valeu obrigado.

prezados amigos do LBG ,o luis farias tem toda razao.pois ja busquei tudo e nao consegui nsada

veja oque eu queria ,era ligar 1 led via web na rede sem fio usando 

TinySine WiFi Shield

nao dei conta.veja  foto

Olá senhores, preciso configurar a comunicação de módulos xbee em modo API, preciso finalizar meu projeto final da faculdade( se conseguir resolver esse problema rs) tenho pesquisado sobre exemplos, códigos, já li o livro do JADEILSON, mas não tive sucesso, alguém poderia me ajudar? o meu projeto é um sistema eletrônico que faz o controle de velocidade de 2 motores CC de uma embarcação teleoperada utilizando PWM, um modulo( master) envia um pacote a um modulo (SLAVE) especifico dizendo o valor da velocidade,e a direção desejada, este modulo (SLAVE) esta acoplado a um ARDUINO que recebe a informação via serial e executa, depois retorna com algum status de recebimento desta mensagem e a leitura de alguns sensores( corrente, tensão, temperatura), se alguem souber uma forma mais facil de fazer isso sem ZIGBEE/XBEE por favor me ajudem!!!!

Olá Lenielson (putz que nome grande ),

   Cara, vou lhe ser 100% sincero,  ainda estou apanhando dos xbee,  mas em grande parte é por culpa minha, pois resolvi me aprofundar nos NRF24L01 e estou aguardando os ESP8266 pra começar a estuda-los,  mas vamos ao que eu possa te ajudar.

  Usar Xbee em modo AT é água com açucar, basta ligar e eles já saem se comunicando pois vem de fabrica pré-configurados,  mas quando o assunto é modo API,  caramba ai ao menos pra mim a coisa fica feia,  tem que identificar o tipo de pacote, tem que criar o frame,  tem que fazer conta pra bater checksun, etc.  em resumo ainda tô apanhando.

  Tambem li o livro do Jadeilson INSTRUMENTAÇÃO ELETRONICA SEM FIO e mais fui alem traduzi para o portugues o livro Building Wireless Sensor Networks: with ZigBee, XBee, Arduino do Rob faludi, fora dezenas de textos e ainda assim apanhei.

  Pooooooorem,  eis que se realmente seu problema é utilizar os XBEE em modo API e você não se importa de gastar um pouco,  aqui vai a dica,  o rogerio da Rogercom esta ministrando um curso online de xbee ( visite www.rogercom.com )  o curso é super incrivel, completo e online,  essa semana saiu a 13ª Aula,   eu ainda tô na 5ª pois como disse estudo muita coisa ao mesmo tempo,  se realmente você quer pra valer,  é a unica saida.

  Agora vamos a algumas questões,  vi que você quer apenas fazer dois radios conversarem entre si,  pergunto:  porque o modo API ?     modo API é para quando se precisa criar redes de vários modulos de sensores,  pra fazer uma comunicação ponto a ponto é só  usar o modo AT.

  Se o seu problema é passar os dados de vários sensores ao mesmo tempo,  é só criar matrizes.

   Bem, tá dado o caminho,  vai lá na rogercom e se inscreve, o rogerio vai te mandar todas as video aulas atrasadas e vocÊ vai matar a pau.

Pessoal, boa noite. Ainda precisa de suporte para trabalhar com Api utilizando um xbee com arduino. Caso precise, favor informar o que precisa.

Ney

Comunicação Xbee arduino modo API

https://www.youtube.com/watch?v=Z9AvznDa_wg    Parte 1

https://www.youtube.com/watch?v=bMPklyu_ZeA     Parte 2

Email para contato: neycms@gmail.com

Ney Cesar,

   Muito, muito obrigado amigo,  vi os videos, são bem legais.

   Bem, não sei o quanto você acompanha o lab e vê as postagens da turma,  mas tenho tido um foco de estudos em temas variados,  e sempre que obtenho resultados repasso e compartilho com a galera.

   Meus ultimos esforços foram sobre DACs de multiplos canais,  o qual com ajuda da galera matei a charada de um de 4 channels e postei como fiz,  e hoje fui pra os TFT LCDs e postei tambem compartilhando informações sobre novidades em bibliotecas.

    Bem,  quando o tema é radio comunicação, não tenho vergonha de dizer que os Xbee são meu calcanhar de aquiles,  mas hoje só posso dizer isso porque dei uma pausa no estudo deles, mas pretendia retomar o quanto antes.

    A duvida sempre foram a seguintes:

1-Como fazer toda a configuração dos radios na xctu para uma comunicação simples, onde os xbee sejam apenas radios mesmos, e quem controle as coisa seja o arduino,  como configurar os radios para um sistema padrão residencial onde haverão varios emissores e só um receptor final?    ou no maximo,  quando em casas grandes como sitios, como configurar pra todos os radios de uma área terem um mestre local, que recebe os dados dos outros dali e repasssa a um ponto central geral ?

2- Sei que dá pra fazer o codigo arduino na unha,  mas existem bibliotecas que facilitam, como a xbee-arduino library,  a duvida é como usa-la?

3- Que tipo de dados posso transistar atraves dos xbee,  int?  byte?   arrays?   de que tipo?

4- A comunicação dos xbee é toda usando comandos seriais correto?  então como identificar e organizar multiplos dados recebidos ?  tipo tem dados vindos de 10 sensores pra um mestre de area que precisa concentrar e repassar a um modulo central geral como fazer?

   

mais uma vez obrigado pela disposição em ajudar.

RSS

© 2024   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço