COMUNICAÇÃO XBEE

De MediaWiki do Campus São José
Revisão de 13h25min de 5 de março de 2015 por Fernando.m01 (discussão | contribs) (→‎Códigos Arduino)
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar


ZIGBEE E XBEE

As Redes de Sensores Sem Fio constituem uma tecnologia emergente, que vêm proporcionando um crescimento significativo das perspectivas industriais e científicas em todo o mundo. A capacidade de monitorar e controlar o ambiente, aliada a um baixo consumo de energia, permite a aplicação da tecnologia em diversos setores da sociedade. Assim, o uso de sensores sem fio com o objetivo de monitorar e controlar um determinado ambiente é uma forte tendência para os próximos anos.

Topologias de rede

Dependendo dos requisitos pretendidos para a rede, existem várias topologias com o fim de acomodarem as exigências impostas. As redes podem utilizar topologias em estrela, malha, árvore, ou mesmo uma topologia combinada.

TopologiasDeRede.PNG

Na topologia em estrela existe um dispositivo central que controla toda a rede. Numa rede em malha todos os dispositivos podem ajudar a gerir a rede. Na topologia em arvore utiliza-se uma estratégia de encaminhamento hierárquico, comunicando o coordenador com os módulos de encaminhamento (routers) e estes com os dispositivos finais. Com a utilização dos routers que encaminham a informação é possível expandir a rede.

Padrões de Redes sem fio

Norma IEEE 802

A norma IEEE 802 tem como objetivo fornecer as especificações para a camada física e de controle de acesso ao meio de uma rede sem fios. A norma é aplicada aos mais variados tipos de rede dos quais se destacam as seguintes:

802.3- Ethernet 
802.11- Redes locais sem fios (WLAN).
802.15- Redes de área pessoal sem fios (WPAN).

Redes WPAN 802.15

A norma WPAN 802.15 define o padrão de rede de área pessoal sem fios, onde se prevê a ligação entre dispositivos distanciados até 300 metros. O padrão 802.15 existe para garantir as especificações de redes pessoais com baixa potência e custo reduzido. A norma 802.15.4 define uma rede de complexidade muito reduzida que funciona com baixa taxa de transmissão. Esta característica permite um consumo reduzido permitindo que a bateria dure meses ou anos.

O padrão IEEE 802.15.4 é a base para as especificações do protocolo ZigBee, estendendo ainda mais o padrão através do desenvolvimento de camadas superiores que não são definidas pelo 802.15.4.

Protocolo ZigBee

O termo ZigBee designa um conjunto de especificações para a comunicação sem-fio entre dispositivos eletrônicos, com ênfase na baixa potência de operação, na baixa taxa de transmissão de dados e no baixo custo de implantação.

O protocolo ZigBee foi concebido para interligar pequenas unidades de coleta de dados e controle recorrendo a sinais de radiofreqüência. A tecnologia utilizada é comparável às redes Wi-Fi e Bluetooth e diferencia-se destas por desenvolver menor consumo, com um alcance reduzido. A comunicação entre dois pontos pode ser feita repetindo sucessivamente a mensagem pelas unidades existentes na rede até atingir o destino final. Todos os pontos da rede podem funcionar como retransmissores de informação.

A arquitetura do protocolo ZigBee é composta por camadas, havendo uma estrutura hierárquica. Cada entidade de serviço fornece uma interface para a camada superior. Apesar de o protocolo ZigBee se basear no modelo OSI (Open Systems Interconnection)que tem sete camadas, a arquitetura do protocolo ZigBee define apenas as camadas necessárias para atingir um conjunto de funcionalidades desejadas.

CamadasZigBee.PNG

As duas camadas inferiores, a camada física (PHY) e a camada de controle de acesso ao meio (MAC), foram definidas pelas normas do protocolo IEEE 802.15.4. As restantes camadas de rede foram concebidas especificamente para o protocolo ZigBee. Tais camadas são a camada de rede (NWK) e o Framework para a camada de aplicação (AP). Nesta camada estão incluídas a subcamada de suporte aplicacional (APS), o objeto de dispositivo ZigBee (ZDO - ZigBee Device Object) e os objetos de aplicação (Aplication Objects).

Camada Física

A camada física segue o protocolo 802.15.4 sendo responsável por permitir a transmissão das unidades de dados. Esta transmissão é feita com base em ondas rádio.

O padrão 802.15.4 especifica as seguintes características para a camada física:

*Existência de 3 bandas de frequência contidas em 27 canais.
*Define as modulações distribuídas nas 3 bandas de frequência.
*Possibilidade de configurar diversos níveis de segurança.
*Permite o endereçamento automático dos dispositivos.
*Possibilidade de confirmação de mensagens.

A camada física (PHY) provê uma interface entre a subcamada MAC e o canal do rádio, e oferece uma série de serviços e mecanismos de controle de nível físico essenciais para as camadas superiores da arquitetura. O serviço mais fundamental da camada física é a transmissão e a recepção de bits – os quais compõem uma PPDU (PHY Protocol Data Unit) – sobre um meio físico específico. . A camada física implementa também a troca de dados com a sub-camada MAC.

Camada MAC

Essa camada tem a principal função de controlar o acesso aos canais RF. A camada MAC é responsável por todo o acesso à camada física para a transmissão e recepção de dados. Seus serviços permitem controlar o acesso ao meio utilizando mecanismos de prevenção, colisão onde serão estabelecidas comunicações com a camada física. Alem disso é efetuado o sincronismo enviando periodicamente tramas Beacon, criando uma relação de vizinhança com os dispositivos adjacentes. Também possibilita a associação e dissociação de dispositivos.

Camada NWK

Quanto à camada NWK (ZigBee), que é, hierarquicamente, a primeira camada definida pela norma ZigBee, tem como responsabilidade a descoberta de novos dispositivos que possam passar a integrar a rede, armazenando as informações relativas aos mesmos, a atribuição dos endereços aos dispositivos membros da rede (apenas dos ZigBee Coordinators) e a monitoração das entradas e saídas de dispositivos da rede. É através desta camada que é feita a configuração de novos dispositivos e nela estão também definidos os mecanismos de descoberta de rotas e encaminhamento de informação (routing). Esta camada de rede é necessária para fornecer funcionalidades que garantam o correto funcionamento do MAC do IEEE 802.15.4 e também para fornecer um serviço adequado para fazer a interface com a camada de aplicação.

Camada de Aplicação

A camada de aplicação ZigBee contém a sub-camada Application Support Sublayer (APS), o ZigBee Device Object (ZDO) e a Application Framework (AF). Esta camada tem a função de garantir uma gestão correta e um suporte fiável para as diversas aplicações. A Application Framework é responsável pela formatação das mensagens, multiplexação dos ZigBee Endpoint, e também pela segurança das aplicações. O ZigBee Device Object é responsável pela gestão e manutenção das especificações do perfil de funcionamento do dispositivo. Dentro destas especificações temos os tipos de dispositivos, as mensagens de aplicação e também a fragmentação de mensagens.

Usos do Protocolo ZigBee

O Protocolo ZigBee é destinado a aplicações embarcadas que exigem baixas taxas de dados e baixo consumo de energia. Onde os dispositivos devem ter alta autonomia, funcionando por meses sem renovação da fonte de energia.

As áreas de aplicação típicas incluem: Entretenimento doméstico e controle - Domótica, iluminação inteligente, controle de temperatura avançada, segurança, filmes e músicas. Redes de Sensores Sem Fio - Controle industrial, sensoriamento, coleta de dados médicos, alerta de eventos, automação predial.


Módulos XBee

Os módulos XBee são compostos, basicamente, por um microcontrolador e um transceptor. O microcontrolador contém o firmware com a implementação do protocolo ZigBee e a especificação do comportamento do dispositivo (Coordenador, Roteador ou Dispositivo Final).


Configurações do módulo XBee

Dentre os parâmetros configuráveis, destacam-se: nome do nó, endereço de destino, velocidade de comunicação (baud rate), comportamento dos pinos de entrada e saída, ID da rede, entre outros.

Cada dispositivo possui dois endereços, o MY (16 bits) e o Número Serial (64 bits). O MY é o endereço de rede, variável, e é distribuído automaticamente pelo coordenador assim que o nó entra na rede. Uma analogia interessante é associar o endereço MY com o endereço IP nas redes TCP/IP com DHCP, em que cada máquina recebe um endereço automaticamente. Já o Número Serial é único e invariável para cada dispositivo fabricado (semelhante ao endereço MAC das placas de rede Ethernet).

No parâmetro Channel ID, podemos escolher o canal de comunicação utilizado. Os parâmetros XBee Retries (RR) e o Node Discover Time (NT), correspondem, respectivamente, ao número de tentativas máximo que o módulo faz para enviar um dado e ao tempo máximo que o módulo procura por outros nós na rede em que se insere.

Os parâmetros na pasta Sleep Modes referen-se a opções de consumo energético. Nestes parâmetros são definidos os modos de Sleep do XBee de modo a minimizar o consumo energético. Além disso, pode-se ainda configurar o tempo durante o qual o módulo fica ativo antes de entrar no modo de Sleep selecionado.


XBee Shield

Após configurado o comportamento do módulo XBee é necessário conectá-lo ao Arduino. Para isso pode ser usado shields que conectam os pinos necessários para o funcionamento e comunicação do XBee e Arduino.

Para gravar o código no microcontrolador com o shield XBee é necessário observar as orientações seguintes.

Configurações de Jumper:

O Xbee Shield tem dois jumpers (as pequena capinhas de plástico removível que se encaixam em dois dos três pinos rotulados Xbee/USB). Eles determinam como a comunicação serial do Xbee se conecta à comunicação serial entre o microcontrolador (ATmega8 ou ATmega168) e o chip FTDI USB-to-serial na placa Arduino.

Com os jumpers na posição Xbee (isto é, encaixados nos dois pinos no lado interior da placa), o pino DOUT do módulo Xbee está ligado ao pino RX do microcontrolador; e DIN está ligado a TX. Note que os pinos RX e TX do microcontrolador estão ainda ligados aos pinos TX e RX (respectivamente) do chip FTDI – os dados enviados a partir do microcontrolador serão transmitidos ao computador via USB, bem como estão sendo enviado sem fio pelo módulo Xbee. O microcontrolador, no entanto, só será capaz de receber dados a partir do módulo Xbee não, através da USB do computador.

Com os jumpers na posição USB (isto é, encaixados nos dois pinos mais próximos da borda da placa), o pino DOUT do módulo Xbee está ligado ao pino RX do chip FTDI, e o DIN no módulo Xbee está ligado ao pino TX do chip FTDI. Isto significa que o módulo Xbee podem se comunicar diretamente com o computador – no entanto, isso só funciona se o microcontrolador foi removido da placa Arduino. Se o microcontrolador é deixado na placa Arduino, será capaz de falar com o computador normalmente via USB, mas nem o computador nem o microcontrolador serão capazes de falar com o módulo de Xbee.

Arquitetura do Sistema e Topologia da Rede

O APP, o Coordenador e os Dispositivos Finais constituem as três partes do sistema e sua arquitetura foi definida de forma centralizada, ou seja, o Coordenador gerencia toda a rede, sendo capaz de comunicar-se tanto com o APP quanto com os dispositivos finais.

O APP atua como interface de controle e se comunica com o Coordenador usando tecnologia Bluetooth. O Coordenador, que pode comunicar-se nas duas redes (Bluetooth e ZigBee) faz a ponte entre o APP e os dispositivos finais, recebendo e encaminhando as mensagens nas duas redes.


FiguraBanner.png


Os Dispositivos Finais atuam como controladores de eletroeletrônicos, tendo a função de executar os comandos enviados pelo APP, tais como acender lâmpadas, fechar persianas, ligar aparelhos de ar-condicionado. Os módulos XBee recebem as mensagens pela rede sem fio e as transferem para o microcontrolador Arduino, que executa os comandos acionando as portas onde são conectados os eletroeletrônicos e envia através do módulo XBee mensagens de confirmação e status para o Coordenador.

Os módulos XBee foram configurados no modo API, assim, as mensagens trafegam na rede em pacotes, com campos definidos por seu protocolo.


A escrita dos códigos do Arduino foi feita usando uma API, implementada em C/C++, essa API foi criada para facilitar o processo de montagem dos pacotes enviados e o mapeamento dos pacotes recebidos. Além disso, possibilita a obtenção de campos importantes do pacote.

A topologia de rede implementada foi topologia em estrela. Nesta topologia o Coordenador tem todo o controle da rede, assumindo um papel central e fazendo a comunicação direta com todos os dispositivos finais. O Coordenador tem a função de iniciar toda a rede e manter todos os dispositivos associados dentro da rede. Toda a informação transmitida tem que passar pelo Coordenador.

Interface do APP e Cenários de Uso

A interface do Aplicativo deve permitir ao usuário:

  • Procurar por dispositivos Bluetooth;
  • Selecionar um dispositivo Bluetooth detectado;
  • Conectar e desconectar com um dispositivo Bluetooth selecionado;
  • Selecionar um módulo XBee de destino;
  • Selecionar a porta (pino do Arduino) que será controlada;
  • Selecionar valores digitais (0 ou 1) para controle das portas digitais ou valores entre 0...255 para as portas digitais PWM.
  • Selecionar a porta (pino do Arduino) para leitura do status.
  • Mostrar retorno de valores referentes a leituras solicitadas ou comandos executados.


Através da seleção desses parâmetros o aplicativo (APP) monta o pacote com as informações necessárias e envia para o Coordenador via Bluetooth.

Nas imagens abaixo são apresentadas as telas do Aplicativo.

TelaInicial.PNG


Arquivo:TelaB.PNG


Tela3.PNG


Tela4.PNG

Recebimento e teste dos componentes

Foram recebidos (em 07/08/2014) para o desenvolvimento do projeto os seguintes componentes:

  • 4 Arduino Uno;
  • 3 cabos conexão Arduino/USB;
  • 4 Shields conexão Arduino/XBee;
  • 4 XBee S2;
  • 2 Adaptadores XBee/USB com cabo;
  • 2 Módulos Bluetooth.

Após o recebimento e marcação dos componentes foram realizados os seguintes testes:

  • 01 - Alimentação 5V por USB do computador;
  • 02 - Alimentação 12V por fonte 12Vcc 1A;
  • 03 - Gravação de código com instruções no micro-controlador;
  • 04 - Leitura do pino analógico A0; (Tensão variável provocada por um photo-resistor)
  • 05 - Escrita no pino D10; (Foi aceso um LED no pino)
  • 06 - Escrita no pino D13; (Verificação do LED do pino 13 da placa)
  • 07 - Comunicação com o módulo Bluetooth usando os pinos 8 e 9;
  • 08 - Alimentação do módulo Bluetooth no pino 3,3V;
  • 09 - Alimentação do circuito com photo-resistor usando o pino 5V;
  • 10,11,12 - Foram iniciados os primeiros testes de comunicação em diferentes modos. Os procedimentos e resultados são detalhados abaixo.


TestesMaterialRecebidoXbee.PNG



Configuração e testes dos módulos XBee em modo API

Testes de comunicação

Foram realizados testes de comunicação entre o Coordenador e os End Device em diferentes modos. AT-AT, API-AT E API-API. Os testes foram satisfatórios nos dois primeiros modos. Porém nos primeiros testes no modo API-API os End Device recebiam as mensagens apenas quando enviadas como BROADCAST.


O Coordenador foi configurado em modo API com os parâmetros mostrados na figura abaixo.



COR DH00 DL00 XB1.png



Na imagem abaixo é possível visualizar o recebimento de pacotes pelos End Device em modo AT e em modo API. O Coordenador enviava pacotes para três diferentes XBee, em diferentes modos de operação e então enviava pacotes broadcast. Apenas os pacotes que eram enviados como broadcast foram recebidos.


Bat1.png


Em seguida foram ajustadas novamente as configurações e realizado o passo da figura abaixo.

É necessário escolher a opção Remote Configuration e após a abertura da janela a direita na figura abaixo (Network [Com8]), escolher a opção Open Com Port e em seguida Discover.

Após esses passos, o Coordenador configura a rede e distribui os endereços MY entre os dispositivos finais.


Remote config.PNG


Abaixo é possível verificar a mudança nos parâmetros dos dispositivos finais após formada a rede pelo Coordenador.

Parametros remotos.png


Após formada a rede, foi possível a transmissão de mensagens tanto para um determinado dispositivo final como broadcast.

O payload com os dados principais está destacado em verde na transmissão para um único destinatário XBee e destacado na cor preta quando enviado broadcast.


RXpackets.PNG


Códigos Arduino

O código do Coordenador permite que ele receba os pacotes enviados pelo APP e extraia os dados dos campos verificando a Id do módulo XBee de destino.

A Id enviada pelo APP está relacionada com um endereço SH e SL definido nas primeiras linhas do código. Esse endereço é único para cada módulo e deve ser configurado verificando a numeração serial de cada módulo usado, ou seja, deve ser editado o código para que contenha o endereço correto do módulo XBee.

Parte do código com as linhas que devem ser editadas pode ser observado na figura abaixo.

ArduinoServidor.png

Para saber o endereço dos módulos Xbee, verifique na parte inferior do módulo ou consulte a tabela abaixo.

TabelaAddrXbee.PNG

Após verificada a Id o código monta o pacote com os dados necessários e envia esse pacote para o XBee destinatário.

Enviado o pacote, o Coordenador aguarda dois pacotes. O primeiro tem relação direta com o padrão ZigBee, não contém payload com dados, mas confirma o recebimento da mensagem pelo dispositivo final(ACK). O processo de montagem e envio desse pacote é todo realizado pela biblioteca XBee. O segundo pacote tem relação com o protocolo do APP e contém um payload com dados de leitura ou confirmação de execução de comando solicitados pelo APP.

Os dados recebidos no payload do segundo pacote são extraídos e enviados para o APP via Bluetooth.

Para a montagem, envio e recepção dos pacotes do padrão ZigBee foi incluída uma biblioteca XBee que facilita esse processo.

Código do SERVIDOR: Arquivo:ArduinoServidor.rar



O código do Dispositivo Final permite receber as mensagens enviadas pelo Coordenador, extraír as informações do payload, executar um comando ou leitura nos pinos do microcontrolador e enviar mensagem de resposta com as informações solicitadas.


Arquivo:EndDeviceXbeeArduino.rar

Links Zigbee/XBee

http://lusorobotica.com/ficheiros/Introducao_ao_Zigbee_-_por_msaleiro.pdf http://www.univasf.edu.br/~ccomp/monografias/monografia_8.pdf


http://arduino.cc/en/Guide/ArduinoWirelessShield

http://arduino.cc/en/Main/ArduinoWirelessShield

http://labdegaragem.com/profiles/blogs/tutorial-como-utilizar-o-xbee

http://hangar.org/webnou/wp-content/uploads/2012/01/arduino-xbee-primeros-pasos.pdf

http://www.oarduino.com/arduino-xbee-shield/

Códigos do TCC Droidlar: http://wiki.sj.ifsc.edu.br/index.php/Automa%C3%A7%C3%A3o_residencial_atrav%C3%A9s_de_um_celular_android

Vídeo Tutorial:https://www.youtube.com/channel/UCMIqrmh2lMdzhlCPK5ahsAg