Este documento fornece um resumo de um sistema de comunicação sem fio ponto a ponto usando o protocolo MiWi P2P da Microchip. Ele descreve o hardware FBee Kit, o protocolo MiWi P2P, e fornece um exemplo de código para implementar comunicação serial sem fio entre dois dispositivos.
2. ____________________________________________________________________________
____________________________________________________________________________________________________________________
- 2 - Rev01
1. INTRODUÇÃO
Aplicações com redes sem fio vêm se tornando bastante comuns. De aplicações
industriais a projetos específicos, criou-se enorme expectativa quanto à capacidade dos
dispositivos se comunicarem wireless, ou seja, sem fio. O maior desafio é conseguir atender a
estas expectativas e apresentar um baixo custo para o desenvolvimento e implementação dos
projetos. Com o FBee Kit e os protocolos de comunicação sem fio disponíveis pela Microchip, é
possível alcançar estes objetivos de uma forma simples e rápida.
Os protocolos MiWi™ Wireless Networking Protocol e MiWi™ P2P Wireless Protocol são
uma variação do padrão IEEE 802.15.4™ e utilizam o transceptor MRF24J40 da Microchip,
para qualquer microcontrolador da Microchip de 8, 16 ou 32 bits com SPI (Serial Peripheral
Interface). Os protocolos são gratuitos e foram desenvolvidos para promover comunicação com
baixa taxa de dados, pequena distância, e redes de baixo custo. Baseada no IEEE 802.15.4™
para redes sem fio pessoal (WPANs), a pilha MiWi fornece um modo alternativo de
comunicação sem fio de fácil uso. É possível realizar aplicações de redes de pequeno porte
com transferência de informações entre os dispositivos da rede com alguns hops (pulos).
Esta aplicação consiste em demonstrar um sistema de comunicação serial sem fio em
tempo real focado no protocolo de comunicação MiWi P2P da Microchip juntamente com o
FBee Kit. Neste exemplo haverá dois dispositivos formando uma rede P2P. Eles se
comunicarão através do programa HyperTerminal utilizando o módulo serial RS232. O
funcionamento é parecido com o do programa Messenger, onde cada usuário digita uma
mensagem e a envia à outra pessoa que está comunicando.
Este documento tem o objetivo de demonstrar a eficiência do FBee Kit trabalhando com
protocolos de comunicação wireless e mostrar um exemplo de aplicação wireless através de
um simples protocolo P2P.
3. ____________________________________________________________________________
____________________________________________________________________________________________________________________
- 3 - Rev01
2. FBEE KIT
O FBee Kit permite que sejam desenvolvidas aplicações para soluções sem fio (wireless).
O kit contém duas placas de aplicação e dois módulos FBee com o transceptor MRF24J40 de
2.4GHz que podem ser usados para formar uma simples rede wireless com dois nós. É
possível ter uma rede com maior número de dispositivos adquirindo outros FBee kit ou outros
módulos FBee.
Figura 1: FBee Kit
3. PROTOCOLO MiWi P2P™
O protocolo MiWi™ P2P Wireless Protocol permite que sejam feitas aplicações sem fio
para redes PAN (Personal Area Network) com topologias estrela (star) ou ponto a ponto (Peer-
to-peer). Além das capacidades básicas de comunicação, o protocolo MiWi™ P2P dispõem
funcionalidades como Active Scan, Energy Scan, Frequency Agility e Sleeping Device. A
versão em que esta aplicação se baseia é a primeira pilha que suporta as interfaces MiMAC e
MiApp da Microchip.
A interface MiMAC permite a troca de transceptores RF da Microchip com simples
definições na camada de aplicação. Para esta versão, tanto o transceptor MRF24J40 de
2.4GHz padrão IEE 802.15.4 da Microchip, e o MRF49XA que trabalha abaixo de faixas de
GHz, também fornecido pela Microchip, são aceitos pela pilha. Nesta aplicação, trabalharemos
com o MRF24J40, que é o transceptor do módulo FBee.
A interface MiApp permite a troca de protocolos de comunicação wireless da Microchip com
simples definições na camada de aplicação. Para esta versão, o protocolo MiWi™ P2P
Wireless Protocol é aceito. O protocolo MiWi™ mesh networking protocol também poderá ser
aceito nas próximas versões, já que é um dos próximos protocolos que a Microchip
disponibilizará. Para fazer um estudo e entender o funcionamento mais detalhado da pilha Miwi
P2P, é necessário que o leitor estude o documento “AN1204 Microchip MiWi P2P Wireless
Protocol” que pode ser encontrado no site da Microchip (www.microchip.com). Para usar o
4. ____________________________________________________________________________
____________________________________________________________________________________________________________________
- 4 - Rev01
MiWi Wireless Networking Protocol Stack P2P é necessário que o usuário instale uma versão
do MPLAB da Microchip (www.microchip.com), o compilador C18 (www.microchip.com), o
arquivo do protocolo MiWi e os arquivos de definições no computador.
4. PROGRAMA
Para esta aplicação, serão necessários dois dispositivos de rede wireless (nós). Como o
FBee Kit já está configurado para esta aplicação, não será necessário qualquer alteração no
hardware. É necessário instalar a pilha MiWi™ P2P em seu computador. O arquivo executável
chama-se MiWi P2P-v2.1.1 e pode ser baixado gratuitamente no site da Microchip
(www.microchip.com). Após executar o arquivo, será criado todo o diretório necessário para a
pilha, que estará dentro da pasta Microchip SolutionsP2P. Será preciso, também, que o
compilador C18 seja da versão 3.31 ou outra que suporte o extended mode. O arquivo
executável para este compilador também se encontra no cd de documentação.
A configuração peer-to-peer é a forma de comunicação mais simples, com apenas um
dispositivo conversando diretamente com outro dispositivo. Para esta aplicação, utilizaremos o
código Simple Example que foca na simplicidade da pilha MiWi™ P2P. Com menos de 30
linhas de código em linguagem C para rodar a camada de aplicação, é possível criar uma
conexão wireless estável entre dois dispositivos.
Abra o firmware Simple Example que se encontra no diretório criado na instalação e que se
encontra na pasta Microchip SolutionsP2PP2P Node (1 ou 2).
Figura 2: Programa Simple Example Node 1
Abra o arquivo SimpleExampleNode1. A primeira alteração necessária é configurar o
programa para trabalhar com o PIC18F4620. No workspace do programa se encontra a pasta
Linker Script contendo o arquivo linker para o PIC18F87J11. Remova este arquivo e adicione o
arquivo 18f4620_e.lkr assim como a figura abaixo:
6. ____________________________________________________________________________
____________________________________________________________________________________________________________________
- 6 - Rev01
Figura 5: Definição do Hardware para o FBEE KIT
Seguindo com o programa, temos todas as configurações iniciais feitas, declaração de
variáveis e constantes, inclusão de arquivos, assim como qualquer outro programa.
Na função void main (void) temos a iniciação do sistema e do protocolo e em seguida
um loop infinito (while(1){...}). Esta parte do programa é a que nos interessa. É onde faremos o
processamento das informações recebidas e onde faremos a transferência de mensagens.
Primeiramente temos o processamento das informações recebidas. É feito um o teste
if( MiApp_MessageAvailable( ) ) para saber se houve alguma nova mensagem disponível. Os
dados recebidos são guardados no Buffer de recepção MesageRcvd[ ] até que o buffer atinja o
máximo de 100 Bytes ou que seja recebida a tecla ENTER. Após ter recebido todos os bytes
da mensagem, podemos então imprimi-la na tela do Hyper Terminal.
Para a recepção, faremos:
if(MiApp_MessageAvailable())
{
//sim, dados recebidos
LED_2 ^= 1;
//se recebeu um ENTER ou a mensagem contém 100 Bytes, habilita
escrita da mensagem na tela
if((rxMessage.Payload[0]=='r')||(j==100))skpMsg=1;
//se não, apenas guarda a informação no vetor de recepção
else {
MesageRcvd[j]=rxMessage.Payload[0];
//incrementa ponteiro do vetor de recepção
j++;
}
//descarta mensagem do buffer de recepção
MiApp_DiscardMessage();
}
7. ____________________________________________________________________________
____________________________________________________________________________________________________________________
- 7 - Rev01
Na transmissão, as teclas recebidas do HyperTerminal são simplesmente transmitidas
ao outro módulo. Para a transmissão faremos:
//mensagem a transmitir?!
else if(DataRdyUSART())
{
//SIM, TxMsg recebe dígito teclado
TxMsg=getcUSART();
//se primeiro dígito, imprime Dispositivo 1 diz...
if(printOK==1){
Printf("rx1b[34mDispositivo 1 diz:x1b[36mnr");
//desabilita impressao de "Dispositivo 1 diz" da proxima vez
printOK=0;
}
//escreve na tela dígito do teclado
WriteUSART(TxMsg);
//transmite informação ao outro dispositivo
MiApp_FlushTx();
MiApp_WriteData(TxMsg);
MiApp_BroadcastPacket(FALSE);
//se apertei ENTER, habilita impressao de "Dispositivo 1 diz"
if(TxMsg=='r'){
printOK=1;
//nova linha
Printf("rn");
}
}
A impressão na tela das mensagens recebidas é feito d seguinte forma:
//imprime mensagem vinda do dispositivo 2
else if(skpMsg==1)
{
//habilita impressão Dispositivo 1 diz...
printOK=1;
skpMsg=0;
Printf("rx1b[33mDispositivo 2 diz:x1b[36mnr");
//imprime dados
for(i=0;i<j;i++){
for(x=0;x<200;x++)for(y=0;y<5;y++); //delay 1000 ciclos
WriteUSART(MesageRcvd[i]);
}
Printf("rn");
j=0;
}
Neste exemplo, deve ser configurado um endereço MAC para cada um dos
dispositivos. Este endereço é configurado no arquivo ConfigApp.h: