76
Sérgio Aurélio Ferreira Soares Bruno Sampaio Pinho da Silva Graduandos em Engenharia de Computação Universidade Federal do Vale do São Francisco – UNIVASF 15 e 16 de agosto de 2012 [email protected], [email protected] www.soaressergio.com, www.brunopinho.com Minicurso – Introdução ao XBee 1 Apresentação vinculada ao projeto: “Desenvolvimento e Avaliação da Performance de uma Rede de Sensores Sem Fio para fins de Manejo da Irrigação em Plantios do Pólo de Desenvolvimento Petrolina-Juazeiro”, financiado pela FAPESB, termo de outorga nº APP0023/2011.

Minicurso XBee Ago 2012

Embed Size (px)

Citation preview

Page 1: Minicurso XBee Ago 2012

Sérgio Aurélio Ferreira Soares Bruno Sampaio Pinho da Silva

Graduandos em Engenharia de Computação

Universidade Federal do Vale do São Francisco – UNIVASF

15 e 16 de agosto de 2012

[email protected], [email protected] www.soaressergio.com, www.brunopinho.com

Minicurso – Introdução ao XBee 1

Apresentação vinculada ao projeto: “Desenvolvimento e Avaliação da Performance de uma Rede de Sensores Sem Fio para fins de Manejo da Irrigação em Plantios do Pólo de Desenvolvimento Petrolina-Juazeiro”, financiado pela FAPESB, termo de outorga nº APP0023/2011.

Page 2: Minicurso XBee Ago 2012

1. Introdução 1. Conceitos de RSSF, XBee, ZigBee, transceptor RF. 2. Especificações do XBee (Encapsulamentos, diagrama de pinos e

características técnicas) 3. Circuitos e adaptadores utilizados 4. Modo de operação AT vs. API

2. Configuração dos módulos XBee 1. Download e instalação da ferramenta X-CTU 2. Interface do X-CTU e atualizações manuais de firmware 3. Principais Comandos AT 4. Exemplos de comandos AT em softwares terminais seriais (Modo

Transparente AT)

3. Comunicação serial (RS232) em JAVA (API RX/TX) 1. Instalação da biblioteca RX/TX 2. Classe JAVA de comunicação Serial desenvolvida 3. Exemplos: construção de programas em JAVA para comunicação serial no

modo Transparente (AT)

2 Minicurso – Introdução ao XBee

Page 3: Minicurso XBee Ago 2012

4. Modo de operação API 1. Introdução

1. Revisão de representação hexadecimal, binário, ASCII. 2. Conversão Byte-decimal/hexa-decimal. Tipos de dados byte, char, int em JAVA. 3. Gravação de Firmware API com o X-CTU 4. Estrutura de um frame API genérico

1. Cáculo de Checksum

2. Transmissão de Dados 1. Pacote de Requisição de transmissão (Frame type 0x10,0x11) 2. Pacote de Status da transmissão (Frame Type 0x8B) 3. Pacote de Recebimento de Dados (Frame Type 0x90,0x91)

3. Comandos AT no modo API 1. Comandos AT locais (Frame Type = 0x08, 0x09) 2. Resposta de Comando AT local (Frame Type = 0x88) 3. Comandos AT remotos (Frame Type = 0x17) 4. Resposta de Comando AT remoto (Frame Type = 0x97) 5. Exemplos

4. Amostragem canais analógicos e digitais 1. Estrutura de uma amostra 2. Exemplos

3 Minicurso – Introdução ao XBee

Page 4: Minicurso XBee Ago 2012

5. JBee - Biblioteca JAVA para gerenciamento de Módulos XBee no modo de operação API

1. Introdução 2. Exemplos:

1. Transmissão de dados 2. Comandos AT locais 3. Comandos AT remotos 4. Amostragem de canais analógicos e digitais

3. Tarefas pendentes

4 Minicurso – Introdução ao XBee

Page 5: Minicurso XBee Ago 2012

5 Minicurso – Introdução ao XBee

Page 6: Minicurso XBee Ago 2012

• Rede de Sensores Sem Fio (RSSF ou WSN) – Permitem o controle e monitoramento de um ambiente a partir de nós sensores

– Ampliação das perspectivas científicas e industriais

– Brasil, EUA e Reino Unido identificaram as RSSFs como tecnologia importante

6

Introdução

Minicurso – Introdução ao XBee

Page 7: Minicurso XBee Ago 2012

XBee ≠ ZigBee ≠ Transceptor RF

7

Introdução

Nome de uma família de dispositivos de

hardware fabricados pela Digi International para comunicação sem

fio em rede. Implementam o

protocolo ZigBee/802.15.4.

Protocolo para a comunicação sem fio

entre dispositivos eletrônicos de baixa potência e taxas de

transmissão. ZigBee (+ Alto nível)

802.15.4 (+ Baixo nível)

Dispositivo de Hardware utilizado

para transmitir e receber dados (Bytes) via rádio frequência.

Não engloba um protocolo de rede.

Minicurso – Introdução ao XBee

Page 8: Minicurso XBee Ago 2012

8

Introdução

• Criado em 2002 (Hoje possui 300+ empresas na ZigBee Alliance)

• Em 1999 foi identificado um nicho de mercado ainda não abrangido por nenhuma tecnologia sem fio – Formação autônoma de redes com grande quantidade de nós

– Baixo consumo de energia

– Taxa de transmissão baixa

– Protocolo padronizado (interoperabilidade)

Minicurso – Introdução ao XBee

Page 9: Minicurso XBee Ago 2012

9

XBee Perfis Checagem pacotes, roteamento, broadcast, etc. Especifica e provê acesso ao hardware: - CSMA/CA - 2.4 GHz, 900 MHz

Introdução

Minicurso – Introdução ao XBee

Page 10: Minicurso XBee Ago 2012

10

Introdução

Minicurso – Introdução ao XBee

Page 11: Minicurso XBee Ago 2012

11

Introdução

Minicurso – Introdução ao XBee

Page 12: Minicurso XBee Ago 2012

12

Introdução

Alcance (Campo aberto) “Teórico” 3,2 Km

Alcance (Ambientes internos) 90 m

Potência de transmissão +17 dBm (50mW)

Sensibilidade do receptor -102 dBm

Frequência de operação ISM 2.4 GHz

Taxa de transmissão 250 Kbps

Tipo de modulação O-QPSK com DSSS

Tensão de Alimentação 3,3 V

GPIO: 11

Conversores AD (10 bits) Até 4 (VREF máximo 1,2 V)

Entradas e Saídas Digitais Até 11

Minicurso – Introdução ao XBee

Page 13: Minicurso XBee Ago 2012

13

Introdução

Minicurso – Introdução ao XBee

Page 14: Minicurso XBee Ago 2012

14

Introdução

Minicurso – Introdução ao XBee

Page 15: Minicurso XBee Ago 2012

15

Introdução

Minicurso – Introdução ao XBee

Page 16: Minicurso XBee Ago 2012

16

Introdução

Características do Modo de Operação Transparente (AT)

Interface simples Todos os dados recebidos pela serial são transmitidos diretamente via RF, exceto quando o módulo

está no modo comando

Facilmente gerenciável por uma

aplicação

A simplicidade na execução de comandos AT e transmissão de dados torna fácil a construção de uma

aplicação de gerenciamento

Características do Modo de Operação API

Facilidade no envio de dados

para múltiplos destinatários

A transmissão RF de dados para diferentes destinatários requer apenas que o endereço de destino

seja alterado no pacote API. Este processo é muito mais rápido do que no modo de operação

transparente, já que no último, é necessário enviar um comando AT para alterar o destinatário e só

assim continuar a transmissão de dados

Pacotes recebidos contém o

endereço do remetente Todos os pacotes API recebidos via RF possuem o endereço do remetente

Configuração remota Comandos AT podem ser executados em dispositivos remotos, o que permite a leitura e configuração

de todos os parâmetros dos XBee, proporcionando um maior nível de gerenciamento e potencial de

aplicação da rede

Diagnóstico de rede avançado Permite a descoberta de nós, resolução de endereços e o recebimento de mensagens de status que

indicam o sucesso ou falha na entrega de um pacote API

Transparente (AT): Substitui a linha serial.

Interface simples.

API: Todas as operações devem ser formatadas em Frames (pacotes). Oferece mais

funcionalidades, no entanto, a interface é um pouco mais complexa.

Minicurso – Introdução ao XBee

Page 17: Minicurso XBee Ago 2012

17 Minicurso – Introdução ao XBee

Page 18: Minicurso XBee Ago 2012

18

Configuração de Módulos XBee

1. www.digi.com

2. Selecione o menu: Support -> Diagnostic, Utilities and MIBs

3. Selecione XCTU e na página seguinte baixe e instale a última versão.

Minicurso – Introdução ao XBee

Page 19: Minicurso XBee Ago 2012

19

Configuração de Módulos XBee

Caso o X-CTU não consiga identificar o XBee e não

atualize automaticamente, siga o procedimento do

próximo slide!

Minicurso – Introdução ao XBee

Page 20: Minicurso XBee Ago 2012

20

Configuração de Módulos XBee

1. www.digi.com

2. Selecione o menu: Support -> Firmware Updates

3. Selecione o modelo “XBee PRO ZB (S2)” e na página seguinte baixe a última versão do Firmware

4. Clique em: Download new Versions -> File e selecione o arquivo baixado

1,2,3 4

Minicurso – Introdução ao XBee

Page 21: Minicurso XBee Ago 2012

21

Configuração de Módulos XBee

1. Utilizados para configurar parâmetros e executar operações nos módulos XBee

2. Exemplos:

– Alterar o comportamento dos pinos GPIO

– Amostragem (Ler o estado das entradas e saídas analógicas e digitais)

– Configurar endereços de destino (DH,DL), Nome (NI), PAN ID (ID);

– Consultar parâmetros (SH, SL, MY, DB)

Minicurso – Introdução ao XBee

Page 22: Minicurso XBee Ago 2012

22

Configuração de Módulos XBee

1. MY - Endereço de Rede de 16 bits (analogia: IP) : 1. Somente leitura

2. Distribuído automaticamente pelo coordenador (analogia DHCP)

3. Variável: a cada associação em uma rede ZigBee, o módulo XBee recebe um novo endereço MY

2. SH,SL – Serial Number High,Low - Endereço Físico de 64 bits (analogia: MAC) 1. Somente leitura

2. Serial Number (Endereço MAC) de cada módulo XBee

3. DH,DL - Destination Address High, Low - Endereço Físico (64 bits) de destino 1. Leitura e escrita

2. Deve ser configurado com o Serial Number (MAC) do dispositivo de destino

4. ID – PAN ID - ID da rede (64 bits) 1. Leitura e escrita

2. Range: 0 - 0xFFFFFFFFFFFFFFFF (ID = 0, coordenador escolhe um ID randomicamente)

Tabela completa de comandos AT (Arquivo: xbee_at_commands.pdf)

Minicurso – Introdução ao XBee

Page 23: Minicurso XBee Ago 2012

23

Configuração de Módulos XBee

5. BD – Baud Rate – Taxa de transmissão da RS232 – Padrão 9600 bauds 1. Leitura e escrita

2. Valor padrão: 0 (9600 bauds). Opções: 0 - 1200, 1 – 2400, 2 – 4800, 3 – 9600, 4 – 19200, 5 – 38400, 6 – 57600, 7 - 115200

6. DB – RSSI do último pacote (Intensidade do sinal em –dBm) 1. Range: XBee PRO: 0x1A – 0x58, XBee: 0x1A – 0x58

7. D0..D7, P0..P2 1. Leitura e escrita

2. Configuram o comportamento dos pinos

Tabela completa de comandos AT (Arquivo: xbee_at_commands.pdf)

Valor do Parâmetro Descrição

0 Desabilitado

1 Reservado para funções específicas de alguns pinos. (Led associativo, RSSI PWM, etc.)

2 Conversor analógico digital Single Ended de 10 bits. Disponível somente para os pinos 17 a 20.

3 Entrada digital

4 Saída digital em nível baixo

5 Saída digital em nível alto

6-9 Funções alternativas disponíveis em alguns pinos. (CTS, RTS, etc.)

Minicurso – Introdução ao XBee

Page 24: Minicurso XBee Ago 2012

24

Configuração de Módulos XBee

Minicurso – Introdução ao XBee

Page 25: Minicurso XBee Ago 2012

25 Minicurso – Introdução ao XBee

Page 26: Minicurso XBee Ago 2012

26

Comunicação RS232 em JAVA (API RX/TX)

• Biblioteca para comunicação serial e paralela em JAVA

• Site oficial: http://rxtx.qbang.org

• Free!!! Licença: http://users.frii.com/jarvi/rxtx/license.html

• Tutorial. Comunicação serial com RXTX utilizando “Eventos” para evitar polling: http://rxtx.qbang.org/wiki/index.php/Event_based_two_way_Communication

• Tutoriais API RXTX no DevMedia: – Parte 1 - http://www.devmedia.com.br/utilizando-a-api-rxtx-para-manipulacao-da-serial-parte-i/6722

– Parte 2 - http://www.devmedia.com.br/utilizando-a-api-rxtx-para-manipulacao-da-serial-parte-ii/7169

– Parte 3 - http://www.devmedia.com.br/utilizando-a-api-rxtx-para-manipulacao-da-serial-parte-iii/7171

– Parte 4 - http://www.devmedia.com.br/utilizando-a-api-rxtx-para-manipulacao-da-serial-parte-iv/7316

Minicurso – Introdução ao XBee

Page 27: Minicurso XBee Ago 2012

27

Comunicação RS232 em JAVA (API RX/TX)

1. Faça o download dos binários: http://rxtx.qbang.org/wiki/index.php/Download – Versões x64: http://www.cloudhopper.com/opensource/rxtx/

2. Para desenvolver e executar programas: 1. Copie rxtxParallel.dll e rxtxSerial.dll para C:\Windows\System32

2. Copie rxtxParallel.dll para c:\Program Files\Java\jre1.6.0_01\bin\

3. Copie rxtxSerial.dll para c:\Program Files\Java\jre1.6.0_01\bin\

4. Copie RXTXcomm.jar para c:\Program Files\Java\jre1.6.0_01\lib\ext\

5. Copie rxtxParallel.dll para c:\Program Files\Java\jdk1.6.0_01\jre\bin\

6. Copie rxtxSerial.dll para c:\Program Files\Java\jdk1.6.0_01\jre\bin\

7. Copie RXTXcomm.jar para c:\Program Files\Java\jdk1.6.0_01\jre\lib\ext\

8. Importe o arquivo RXTXcomm.jar para o seu projeto no NetBeans ou Eclipse.

– Não funcionou? Tente este tutorial: http://www.devmedia.com.br/utilizando-a-api-rxtx-para-manipulacao-da-serial-parte-i/6722

Para executar programas

Para desenvolver programas

Minicurso – Introdução ao XBee

Page 28: Minicurso XBee Ago 2012

28

Comunicação RS232 em JAVA (API RX/TX)

1. Desenvolvida sobre a API RXTX

2. Principais funções: • public boolean openPort(String portName , int baudRate , int timeout);

– Abre a porta serial e habilita leitura

• public void closePort(); – Fecha a porta serial corrente

• public String readString(); – Retorna todos os bytes contidos no buffer em formato de string e limpa o buffer

• public byte[] readBytes(); – Esse método retorna um vetor de bytes contido no buffer e depois limpa o buffer

• public boolean sendBytes(byte bytes[]); – Envia bytes pela serial. Se o buffer de saída não estiver vazio, espera o buffer esvaziar primeiro para poder

enviar novos dados

• public boolean sendString(String data); – Envia uma string através da serial. Se o buffer de saída não estiver vazio, espera o buffer esvaziar primeiro para

poder enviar novos dados

• public boolean hasDataAvailable(); – Verifica se tem dado disponível no buffer

• public boolean isOutputBufferEmpty(); – Verifica se o bufffer de saída está vazio

Minicurso – Introdução ao XBee

Page 29: Minicurso XBee Ago 2012

29

Comunicação RS232 em JAVA (API RX/TX)

1. Passos:

1. Instanciar um objeto da classe Serial – new Serial()

2. Abrir porta serial – serial.openPort(“COM4”,9600,0)

3. Entrar no modo comando enviando a string “+++” – serial.sendString(“+++”)

4. Aguardar a resposta – verificar serial.hasDataAvailable() ou executar um delay

5. Ler a resposta “OK” – serial.readString()

6. Enviar comandos AT – Exemplo: serial.sendString(“ATNI”+’\r’)

7. Salvar alterações em memória não volátil: serial.sendString(“ATWR”+’\r’)

8. Sair do modo comando: serial.sendString(“ATCN”+’\r’)

9. Fecha porta serial

• Lembrar de sempre finalizar um comando AT com o caractere de retorno de carro ‘\r’. Código ASCII = 13.

Minicurso – Introdução ao XBee

Page 30: Minicurso XBee Ago 2012

30

Comunicação RS232 em JAVA (API RX/TX)

public static void main(String[] args)

{

Serial serial = new Serial(); //Passo 1

if(!serial.openPort("COM4", 9600, 0)) //Passo 2

System.exit(1);

serial.sendString("+++"); //Passo 3

while(!serial.hasDataAvailable()){} //Passo 4 – espera resposta

System.out.println("Resposta: "+serial.readString()); //Passo 5

Minicurso – Introdução ao XBee

Page 31: Minicurso XBee Ago 2012

31

Comunicação RS232 em JAVA (API RX/TX)

serial.sendString("atni"+'\r'); //Passo 6 – consulta nome

while(!serial.hasDataAvailable()){} //Espera resposta

System.out.println("Resposta: "+serial.readString());

serial.sendString("atni Sergio"+'\r'); //Altera

while(!serial.hasDataAvailable()){}

System.out.println("Resposta: "+serial.readString());

serial.sendString(“ATWR"+'\r'); //Passo 7 – Salva alterações

serial.sendString(“ATCN"+'\r'); //Passo 8 – Sai do modo comando

serial.closePort(); //Passo 9

} //Fim da main

'\r' representa o Carriage Return (Enter). Código ASCII = 13.

Minicurso – Introdução ao XBee

Page 32: Minicurso XBee Ago 2012

32

Comunicação RS232 em JAVA (API RX/TX)

1. Passos: 1. Gravar Firmware coordenador em um dos módulos

2. Gravar Firmware roteador ou end device no outro módulo

3. Configurar o mesmo PAN ID para ambos os módulos

4. Configurar o endereço de destino (DH,DL) do coordenador como o endereço Serial (SH,SL) do roteador ou end device

5. Configurar o endereço de destino (DH,DL) do roteador ou end device como o endereço Serial (SH,SL) do coordenador ou atribuir ZERO.

6. Utilizar a classe Serial.java para transmitir mensagens

• Endereço Serial do XBee coordenador: 13A200 406C529B

• Endereço Serial do XBee end device: 13A200 406C5482

SH SL

X-C

TU

Minicurso – Introdução ao XBee

Page 33: Minicurso XBee Ago 2012

33 Minicurso – Introdução ao XBee

Page 34: Minicurso XBee Ago 2012

34

Introdução ao Modo de Operação API

1. Hexadecimal – Ou de base 16, é um sistema numérico muito usado em Computação. É composto por um conjunto de 16 símbolos distintos: 0-9 para representar valores de 0 a 9 e A, B, C, D, E, F para valores de 10 a 15. Na programação é comum assumir o prefixo 0x para indicar um número na base hexadecimal. Por exemplo, 0x2F indica que trata-se de um número na base hexadecimal de valor igual a 47. Ou, similarmente:

Minicurso – Introdução ao XBee

Page 35: Minicurso XBee Ago 2012

35

Introdução ao Modo de Operação API

1. Binário – Os números na base hexadecimal são bastante úteis e melhores para representar os bits. Cada dígito de um número em hexadecimal representa um número binário (ou de base 2) com 4 dígitos e eles podem ser convertidos de uma base para outra facilmente, basta converter cada dígito separadamente para o seu representante em binário e depois juntar tudo:

Minicurso – Introdução ao XBee

Page 36: Minicurso XBee Ago 2012

36

Introdução ao Modo de Operação API

1. Estabelecida a relação existente entre as bases hexa e binário, podemos apresentar a unidade mais usada na computação, o byte. Ele é composto de 8 bits e é adotado como representação de dados em sistemas computacionais. Por exemplo, comunicação serial diz respeito ao envio/recepção de bytes.

2. Na linguagem Java o byte representa um número inteiro com sinal em complemento de 2. Possui o valor mínimo de -128 e máximo de 127. É preciso tomar cuidado quanto à representação do valor e atentar para o fato de o Java usar a representação com sinal.

3. Exemplo:

byte valor;

int x;

valor = (byte) 200;

x = valor;

Qual o valor de x ao lado?

Minicurso – Introdução ao XBee

Page 37: Minicurso XBee Ago 2012

37

Introdução ao Modo de Operação API

1. É preciso atentar bastante para o fato de os tipos de dados usarem representação com sinal. Dessa maneira, o valor máximo para o byte é 127.

2. O bit mais significativo é usado como sinal na representação de complemento de dois.

3. Conversão binário/decimal usando complemento de 2:

Em binário Em decimal

200 = 0xC8 = 1100 1000 -128 + 64 + 8 = -56

1100 1000 = −1 ∗ 27 + 1 ∗ 26 + (1 ∗ 23)

Resposta: -56

Minicurso – Introdução ao XBee

Page 38: Minicurso XBee Ago 2012

38

Introdução ao Modo de Operação API

1. Complemento de 2 - É um tipo de representação binária de números com sinal amplamente usada nas arquiteturas dos dispositivos computacionais modernos.

2. Macete para resolver o problema:

byte valor;

int x;

valor = (byte) 200;

x = valor & 0xFF; //0xFFFFFFFF & 0x000000FF

Minicurso – Introdução ao XBee

Page 39: Minicurso XBee Ago 2012

39

Introdução ao Modo de Operação API

Número: 61668 = 0xF0E4 = 1111 0000 1110 0100

byte high, low;

int num;

high=(byte)240;

low=(byte)228;

num=high; //Errado

num=num<<8

num=num|low; //Errado

num=(high&255)<<8; //Correto

num=num<<8

num=num|(low&255); //Correto

Minicurso – Introdução ao XBee

240 228

Fique esperto!!! O compilador JAVA converte para Int antes de realizar a operação

Page 40: Minicurso XBee Ago 2012

40

Introdução ao Modo de Operação API

Minicurso – Introdução ao XBee

Page 41: Minicurso XBee Ago 2012

41

Introdução ao Modo de Operação API

1. Abrir o X-CTU, aba PC Settings. Verificar o Baud rate da comunicação serial e selecionar a porta serial.

Minicurso – Introdução ao XBee

Page 42: Minicurso XBee Ago 2012

42

Introdução ao Modo de Operação API

2. Na aba “Modem Configuration”. Clicar em “Read”. Selecionar em “Function Set” a versão do firmware API clicar em “Write”.

Minicurso – Introdução ao XBee

Page 43: Minicurso XBee Ago 2012

43

Introdução ao Modo de Operação API

1. Cálculo do Checksum – O checksum contém a soma de verificação do quadro de dados do pacote e é dado pela equação abaixo, em que subtraímos o somatório do valor contido em cada byte do quadro de dados (bytes 4 a n), do valor prefixado 0xFF (255 em decimal):

𝐶ℎ𝑒𝑐𝑘𝑠𝑢𝑚 = 0𝑥𝐹𝐹 − 𝑏𝑦𝑡𝑒[𝑖]

𝑛

𝑖=4

Minicurso – Introdução ao XBee

Page 44: Minicurso XBee Ago 2012

44

Introdução ao Modo de Operação API

Minicurso – Introdução ao XBee

Pacote: 7E 00 03 A1 F0 50 1E

Checksum = 0xFF – (A1 + F0 + 50) = 0xFF – E1 = 1E

Page 45: Minicurso XBee Ago 2012

45

Introdução ao Modo de Operação API

public static byte checksum(byte[] data, int startIndex, int endIndex) { byte sum=0; for (int i = startIndex; i < endIndex; i++) sum += data[i]; return (byte)(255 - sum); }

Método que calcula o checksum de um vetor de bytes.

Minicurso – Introdução ao XBee

Page 46: Minicurso XBee Ago 2012

46 Minicurso – Introdução ao XBee

Page 47: Minicurso XBee Ago 2012

47

Transmissão de dados no modo de operação API

1. Envolve 5 tipos de pacotes:

– 0x10: Requisição de Transmissão

– 0x90: Dados recebidos

– 0x97: Status da Transmissão

– 0x11: Outro tipo de requisição de transmissão. Permite especificar parâmetros da camada de aplicação (Cluster ID e Endpoint)

– 0x91: Dados Recebidos de pacotes do tipo 0x11

Minicurso – Introdução ao XBee

Page 48: Minicurso XBee Ago 2012

48

Transmissão de dados no modo de operação API

Minicurso – Introdução ao XBee

Page 49: Minicurso XBee Ago 2012

49

Transmissão de dados no modo de operação API

Minicurso – Introdução ao XBee

Page 50: Minicurso XBee Ago 2012

50

Transmissão de dados no modo de operação API

Minicurso – Introdução ao XBee

Page 51: Minicurso XBee Ago 2012

51

Transmissão de dados no modo de operação API

Minicurso – Introdução ao XBee

Page 52: Minicurso XBee Ago 2012

52

Transmissão de dados no modo de operação API

Minicurso – Introdução ao XBee

Page 53: Minicurso XBee Ago 2012

53

Transmissão de dados no modo de operação API

Minicurso – Introdução ao XBee

Page 54: Minicurso XBee Ago 2012

Raio do Broadcast

54

Transmissão de dados no modo de operação API

7E 0011 10 01 0013A200 406C529B FFFE 00 00 4F4C41 C7

Minicurso – Introdução ao XBee

Delimitador de início

Tipo do pacote (Frame Type)

Endereço de destino de 64 bits (SH, SL)

SH SL MY

Opções

Dados (“OLA”)

Tamanho do pacote

ID do pacote (ACK)

Endereço de destino de 16 bits (MY)

Checksum

𝐶ℎ𝑒𝑐𝑘sum = 0xFF – (10+01+00+13+A2+00+40+6C+52+9B+FF+FE+00+00+4F+4C+41) = C7

Page 55: Minicurso XBee Ago 2012

55 Minicurso – Introdução ao XBee

Page 56: Minicurso XBee Ago 2012

56

Comandos AT no modo de operação API

1. Comando AT Local (Frame Type = 0x08, 0x09).

Minicurso – Introdução ao XBee

Page 57: Minicurso XBee Ago 2012

57

1. Exemplo: Comando “NI” (Node Identifier)

Minicurso – Introdução ao XBee

Comandos AT no modo de operação API

Page 58: Minicurso XBee Ago 2012

58 Minicurso – Introdução ao XBee

Comandos AT no modo de operação API

Page 59: Minicurso XBee Ago 2012

59

1. Comando AT Remoto – Vantagem é a capacidade de execução remota de comandos AT. É necessário montar um pacote de requisição de comando AT remoto (Frame Type = 0x17).

Minicurso – Introdução ao XBee

Comandos AT no modo de operação API

Page 60: Minicurso XBee Ago 2012

60 Minicurso – Introdução ao XBee

Comandos AT no modo de operação API

Page 61: Minicurso XBee Ago 2012

61 Minicurso – Introdução ao XBee

Comandos AT no modo de operação API

Page 62: Minicurso XBee Ago 2012

62

1. Reposta de Comando AT remoto – Pacote do tipo 0x97

Minicurso – Introdução ao XBee

Comandos AT no modo de operação API

Page 63: Minicurso XBee Ago 2012

63 Minicurso – Introdução ao XBee

Comandos AT no modo de operação API

Page 64: Minicurso XBee Ago 2012

64 Minicurso – Introdução ao XBee

Page 65: Minicurso XBee Ago 2012

65

• Requisição de amostra é realizada através pelo “IS”

• O módulo XBee responde ao solicitante com um pacote do tipo 0x88 ou 0x97 incluindo no campo “parâmetro do comando” a amostra de todos os seus canais digitais e analógicos habilitados.

• A amostra é organizada em um formato específico

Minicurso – Introdução ao XBee

Amostragem de Canais Analógico e Digitais

Page 66: Minicurso XBee Ago 2012

66

Quantidade de

Bytes Nome Descrição

1 Conjuntos de amostras Quantidade de conjuntos de amostras no pacote. Sempre igual a 1.

2 Máscara de canais digitais

Indica quais linhas digitais estão habilitadas. Cada bit corresponde a um pino:

bit 0 = AD0/DIO0

bit 1 = AD1/DIO1

bit 3 = AD3/DIO3

bit 4 = DIO4

bit 5 = ASSOC/DIO5

bit 6 = RTS/DIO6

bit 7 = CTS/GPIO7

bit 8 = Não utilizado

bit 9 = Não utilizado

bit 10 = RSSI/DIO10

bit 11 = PWM/DIO11

bit 12 = CD/DIO12

Exemplo: uma máscara com valor 0x0021 indica que as linhas digitais DIO 0 e 5

(Pinos 20 e 15, respectivamente) estão habilitadas

1 Máscara de canais analógicos

Indica quais pinos estão configurados como entradas analógicas. Cada bit

representa um canal analógico:

bit 0 = AD0/DIO0

bit 1 = AD1/DIO1

bit 2 = AD2/DIO2

bit 3 = AD3/DIO3

bit 7 = Tensão de Alimentação (Supply Voltage)

Variável Amostras dos canais digitais e

analógicos habilitados

Os primeiros 2 bytes indicam o estado de todas os canais digitais habilitados. Se

nenhum canal digital está habilitado, esses bytes são omitidos.

Em seguida, cada entrada analógica habilitada retornará 2 bytes representando o

valor de 10 bits do seu conversor AD. As amostras são ordenadas começando em

AN0 até AN3, seguido da tensão de alimentação (Supply Voltage), caso

habilitada.

Minicurso – Introdução ao XBee

Amostragem de Canais Analógico e Digitais

Page 67: Minicurso XBee Ago 2012

67 Minicurso – Introdução ao XBee

Exemplo Descrição

0x01 = 0000 0001b 1 conjunto de amostras

0x0C0C = 0000 1100 0000 1100b Máscara de canal digital.

Canais DIO 2,3,10 e 11 habilitados

0x03 = 0000 0011b Máscara de canais analógicos.

Canais analógicos AD0 e AD1 habilitados

0x0408 = 0000 0100 0000 1000b Estado das entradas digitais: DIO 3 e 10 em nível

alto. DIO 2 e 11 em nível baixo

0x03D0 = 976d Entrada analógica AD0 = 0x03D0 = 976d

0x0124 = 292d Entrada analógica AD1 = 0x124 = 292 d

Amostragem de Canais Analógico e Digitais

Page 68: Minicurso XBee Ago 2012

68 Minicurso – Introdução ao XBee

Page 69: Minicurso XBee Ago 2012

69

JBee – Biblioteca JAVA de Gerenciamento de Módulos XBee

Minicurso – Introdução ao XBee

• Biblioteca própria

• Desenvolvida em Linguagem JAVA (Orientada a Objetos)

• Objetivo – Automatizar a montagem e desmontagem de pacotes API

– Facilitar a construção de aplicações que utilizem XBee

• Ainda está em desenvolvimento – Não possui documentação

– Poucos testes realizados

– Necessita de refinamento (otimização do código)

• Biblioteca semelhante – XBee API: http://code.google.com/p/xbee-api/ Muito boa!

Page 70: Minicurso XBee Ago 2012

70

JBee – Biblioteca JAVA de Gerenciamento de Módulos XBee

Minicurso – Introdução ao XBee

Page 71: Minicurso XBee Ago 2012

71

JBee – Biblioteca JAVA de Gerenciamento de Módulos XBee

Minicurso – Introdução ao XBee

public static void main (String[] args) { Network net = new Network(); net.startSerial(“COM4”, 9600, 0); byte []addr64 = Util.hexToByte(“0013A200406C5482”); TransmitRequest packet = new TransmitRequest(“Ola”,addr64); net.sendPacket(packet); }

Page 72: Minicurso XBee Ago 2012

72

JBee – Biblioteca JAVA de Gerenciamento de Módulos XBee

Minicurso – Introdução ao XBee

• Este exemplo liga e desliga um Led conectado no pino 4 (DIO12) utilizando o comando AT “P2”:

public static void main(String[] args) { Scanner input = new Scanner(System.in); Network net = new Network(); net.startSerial(“COM4”, 9600, 0); while (true) { cmd = new RemoteAtCommandRequest("P2",(byte)4,addr64); net.sendPacket(cmd); input.nextLine(); //Aguarda “Enter” cmd = new RemoteAtCommandRequest("P2",(byte)5,addr64); net.sendPacket(cmd,3); input.nextLine(); //Aguarda “Enter” } }

Page 73: Minicurso XBee Ago 2012

73

JBee – Biblioteca JAVA de Gerenciamento de Módulos XBee

Minicurso – Introdução ao XBee

• Este exemplo faz uma amostragem dos canais analógicos e digitais:

public static void main(String[] args) { Network net = new Network(); net.startSerial(“COM4”, 9600, 0); byte[] addr64 = Util.hexToByte("0013A200406C5482"); Sample sample = net.getRemoteSample(addr64); //Exibe todas as amostras na tela System.out.println(sample); //Exibe o valor do pino D0 System.out.println(“Valor AD0: “,sample.getValue(“D0”)); }

Page 74: Minicurso XBee Ago 2012

74

• GISLASON, Drew. (2008). ZigBee Wireless Networking. Newnes; 1st edition. 448 p. ISBN-13: 978-0750685979.

• DIGI International. (2011). XBee®/XBee-PRO® ZB RF Modules - 90000976_H.

• 2012. SOARES, Sérgio A. F. Rede de Sensores Sem Fio Para Localização e Monitoramento de Caprinos. Trabalho de Conclusão de Curso.

Minicurso – Introdução ao XBee

Page 75: Minicurso XBee Ago 2012

75

• FAPESB pelo financiamento do projeto

• CNPq pelas bolsas de iniciação científica

• Professores orientadores Brauliro Leal e Fabrício Braga

• UNIVASF Pela Infraestrutura e apoio técnico

Minicurso – Introdução ao XBee

Page 76: Minicurso XBee Ago 2012

76

FIM

OBRIGADO!

Minicurso – Introdução ao XBee