Comunicação IoT entre dois dispositivos através do protocolo Zigbee: IoT Parte 37

Comunicação IoT entre dois dispositivos através do protocolo Zigbee: IoT Parte 37

No tutorial anterior, a comunicação entre dois PCs foi configurada através do protocolo Zigbee usando módulos Xbee e software XCTU. Neste tutorial, dois dispositivos IoT baseados em módulo Xbee serão projetados e configurados para se comunicarem entre si através do protocolo Zigbee. Um desses dispositivos na rede Zigbee será um dispositivo Coordenador e o outro será um dispositivo Roteador. O dispositivo coordenador controlará o LED conectado ao dispositivo roteador.
O protocolo Zigbee é um dos padrões mais populares para redes de sensores sem fio. O Zigbee é comumente usado em aplicações industriais de IoT.
Os dispositivos Xbee se comunicam entre si sem fio pelo ar. Eles não possuem nenhum microcontrolador ou processador próprio, portanto não podem gerenciar os dados recebidos ou enviados. Eles podem simplesmente transferir as informações que recebem. Mas eles podem ser interligados com outros microcontroladores e processadores como Arduino, Raspberry Pi ou PC via interface serial.
Então, basicamente, os módulos Xbee são capazes de dois tipos de comunicação – comunicação sem fio e comunicação serial. A comunicação sem fio ocorre entre dispositivos Xbee para que os dispositivos atuem como dispositivos de radiofrequência (RF). Para que os dados sejam transmitidos e recebidos de um módulo Xbee para outro, ambos os dispositivos devem estar na mesma rede. Os dados entre dois dispositivos são transmitidos sem fio. Por comunicação serial (UART), os módulos Xbee podem se comunicar com microcontroladores e processadores.
Um microcontrolador, processador ou PC pode enviar dados através da interface serial para o módulo Xbee (transmissor) e o módulo Xbee transmite os dados sem fio para outro módulo Xbee (receptor). O módulo receptor Xbee transmite os dados através da interface serial para o controlador, processador ou PC ao qual está conectado. O controlador interligado ao módulo Xbee processa as informações recebidas pelos dispositivos Xbee. Desta forma, os controladores podem monitorar e controlar dispositivos remotos enviando mensagens através dos módulos Xbee locais.
Os módulos Xbee se comunicam entre si em dois modos – modo Transparente e modo API (Application Peripheral Interface). Este projeto é baseado no modo Transparente. No modo transparente, os módulos Xbee atuam como substitutos da linha serial. Todos os dados recebidos através da entrada serial são imediatamente transmitidos pelo ar. Quando outro módulo Xbee recebe dados sem fio, ele os envia exatamente como os recebe através da interface serial e vice-versa. Ao contrário disso, no modo API, os dados são transmitidos com algumas informações adicionais.
Neste projeto, dois módulos Xbee serão interligados com placas Arduino. Eles serão configurados para comunicar dados entre si em modo transparente. Um dos dispositivos Arduino terá interface com um LED e será configurado como roteador Zigbee. O outro dispositivo Arduino será configurado como Zigbee Coordinator. O dispositivo Coordenador controlará o LED conectado ao dispositivo Roteador, passando mensagens pelo protocolo Zigbee. Os módulos Xbee interligados em ambos os dispositivos serão configurados como coordenador ou roteador usando o software XCTU.
Componente necessário –
Lista de componentes necessários para comunicação IoT de dispositivo para dispositivo baseada em Zigbee
Fig. 1: Lista de componentes necessários para comunicação IoT de dispositivo para dispositivo baseada em Zigbee
Software necessário –
• XCTU (6.3.1 ou posterior) ou XCTU legado
• IDE do Arduino
Diagrama de bloco –
Diagrama de blocos de comunicação IoT de dispositivo para dispositivo baseado em Zigbee
Fig. 2: Diagrama de blocos da comunicação IoT de dispositivo para dispositivo baseado em Zigbee
Conexões de Circuito –
Os módulos Xbee Série 2 serão utilizados neste projeto. O módulo X-Bee é um módulo de 20 pinos com a seguinte configuração de pinos –
Tabela de listagem de configuração de pinos do módulo Xbee Série 2
Tabela de listagem de conexões de circuito entre Arduino e módulo Xbee Série 2

Fig. 3: Tabela listando a configuração dos pinos do módulo Xbee Series 2

Para conectar o módulo ao PC para configuração, primeiro coloque o Xbee no Xbee Shield e conecte o módulo a um Arduino. O Arduino UNO ou Arduino Mega atua como um conversor USB para módulos Xbee. Antes de usar o Arduino UNO com módulos Xbee, um esboço mínimo deve ser carregado nele ou o microcontrolador Atmega deve ser removido da placa. O módulo Xbee pode ser alimentado por uma fonte de alimentação externa ou pelo Arduino. O módulo Xbee e a placa Arduino devem se comunicar serialmente. O módulo Xbee deve ser conectado ao Arduino conforme tabela a seguir –
Tabela de listagem de parâmetros de configuração do módulo Xbee
Fig. 4: Tabela listando conexões de circuito entre Arduino e Módulo Xbee Série 2
Agora o Arduino pode ser conectado ao PC usando um cabo USB.
Após conectar o módulo ao computador, execute as seguintes etapas –
1) Abra o software XCTU. Certifique-se de que o software esteja no modo de trabalho de configuração.
2) Clique em “Descobrir Módulos de Rádio”.
3) Clique na porta COM desejada na qual o módulo está conectado.
4) Clique em próximo, na janela ‘Definir parâmetros de porta’, altere os valores de acordo com os requisitos e clique em finalizar.
5) Como o XCTU localiza os módulos de rádio após a varredura completa, selecione os módulos de rádio clicando em 'Adicionar dispositivos selecionados'. Agora, os módulos de rádio selecionados devem aparecer na janela do módulo de rádio.
Para transmitir ou receber dados nos módulos Xbee, eles precisam estar devidamente configurados na mesma rede. De acordo com o protocolo Zigbee, um dispositivo precisa estar no modo coordenador e os demais podem ser roteadores ou dispositivos finais. Neste caso, um dispositivo é o coordenador e o outro é o roteador.
Agora, restaure a configuração padrão de todos os módulos Xbee com o botão 'Carregar configuração de firmware padrão' na parte superior da seção de configuração de rádio e use XCTU para configurar o seguinte parâmetro –
Fig. 5: Tabela listando os parâmetros de configuração do Módulo Xbee
Mantenha o restante dos valores como padrão e escreva as configurações de todos os módulos Xbee com o botão 'escrever módulos de rádio' na parte superior da configuração do rádio. Assim que a configuração for concluída, clique no botão descobrir módulos de rádio na mesma rede de qualquer módulo de rádio. Agora podem ser encontrados os módulos de rádio para a mesma rede.
Agora os módulos Xbee podem ser conectados nos dispositivos IoT baseados em Arduino.
Um desses dispositivos funcionará como Zigbee Coordinator. Conecte o módulo Xbee configurado como coordenador em seu circuito. O módulo Xbee pode se comunicar com o Arduino através de comunicação serial. A serial do software Arduino é usada para ler os dados do Xbee e a serial do hardware para ler os dados seriais do controlador. Como o Xbee opera em nível lógico CMOS e o Arduino opera em nível lógico TTL, há necessidade de um conversor de nível lógico. Um módulo conversor de nível de interface de nível lógico IIC I2C de 5 V a 3,3 V para Arduino é usado como conversor de nível lógico. O módulo Xbee pode ser alimentado por uma fonte externa ou pelo Arduino. Para comunicação serial entre a placa Arduino e o módulo Xbee, o pino RX do Xbee é conectado ao TX do Arduino e o pino TX do Xbee é conectado ao RX do Arduino. O pino de aterramento está conectado ao aterramento comum.
O outro dispositivo funciona como roteador Zigbee. Conecte o módulo Xbee configurado como roteador em seu circuito. O módulo Xbee é conectado ao Arduino de maneira semelhante. Um LED faz interface com o Arduino em seu pino PD2 (pino 4) por meio de um resistor pull up de 220 ohms.
As seguintes precauções devem ser tomadas durante a interface dos módulos Xbee –
1) Os módulos Xbee operam em 3V3 com corrente de 40 mA para transmitir e receber os dados. Não forneça 5V do Arduino.
2) Os módulos Xbee possuem nível de sinal tolerante 3V3. Para fornecer comunicação entre arduino e Xbee, use o conversor de nível lógico CMOS para TTL (bidirecional).
3) Às vezes, ao tentar descobrir o Xbee, pode ocorrer um erro como – 'Não foi possível encontrar nenhum dispositivo na porta COM6 >Para string de entrada: “ERROR” ou erro ao inicializar o parâmetro do dispositivo = tempo limite de conexão ou não foi possível encontrar o parâmetro do dispositivo' então o O erro pode ser devido à taxa de transmissão incorreta.
Para isso, conecte o modem usando o cabo FTDI ao PC, abra o XCTU, selecione a porta COM e várias taxas de transmissão como 9600, 115200, 57600 e procure o módulo de rádio e possivelmente lá o módulo de rádio poderá ser encontrado. Mas se não for encontrado, abra o XCTU legado (versão antiga), selecione a taxa de transmissão possível e na janela de configuração do modem selecione o firmware/conjunto de funções do modem correto, ative 'sempre atualizar firmware' e selecione gravar. Depois disso, quando a caixa de informações (ação necessária) aparecer, reinicie o Xbee conectando RST ao GND ou simplesmente retire o Xbee e coloque-o novamente no assento. Agora a caixa de informações desaparecerá. Em seguida, os módulos de rádio piscarão novamente automaticamente.
4) Se ocorrer o erro de diferença de taxa de transmissão, o erro pode ser que o PC e o módulo de rádio não estejam funcionando na mesma taxa de transmissão. Nesse caso, tente trocar o PC e atualizar o firmware com outro PC. O módulo Xbee também pode ser recuperado dessa forma.
5) Emita os comandos corretamente ao trabalhar no modo AT.
Protótipo de coordenador e roteador Zigbee baseado em Xbee e Arduino
Fig. 6: Protótipo de coordenador e roteador Zigbee baseado em Xbee e Arduino

Como funciona o circuito –

O coordenador Xbee controla o LED do roteador Xbee. Os módulos Xbee fazem interface com as placas Arduino que são programadas para comunicar mensagens específicas. Primeiro, a abelha coordenadora escuta continuamente qualquer mensagem serial. A placa Arduino no Coordenador Xbee emite os comandos 0 ou 1 através do monitor serial para o coordenador Xbee. O roteador Xbee escuta continuamente qualquer mensagem de rádio sem fio. O coordenador Xbee passa a mesma informação (0 ou 1) para o roteador Xbee em modo wireless. Agora, o roteador Xbee passa serialmente as mesmas informações, sem dados adicionais, para a placa Arduino conectada a ele.
A serial do Arduino verifica se a informação recebida é 0 ou 1. Se for 1, significa que o LED conectado à placa deve acender, configurando o pino conectado do LED em ALTO. Se for 0, significa que o LED conectado à placa deve parar de brilhar, definindo o pino conectado do LED como LOW.
O código a seguir no receptor Arduino controla o LED de acordo com a mensagem recebida pelo protocolo Zigbee.
if(xbee_s2c.available >0) //o Xbee recebeu alguma coisa?
{
entrada = Serial.write(xbee_s2c.read ); //envia para serial do Arduino
se (entrada == '0')
{digitalWrite(2, ALTO);}
se (entrada == '1')
{digitalWrite(2, BAIXO); }
}
Confira os esboços do Arduino para saber como eles se comunicam com os módulos Xbee usando software serial, transmitem e recebem mensagens específicas (codificadas no firmware) e controlam o LED na comunicação de mensagens específicas entre si. Esta é uma demonstração simples da comunicação IoT entre dois dispositivos através do protocolo Zigbee.
No próximo tutorial, aprenda a projetar um controlador de luz LED sobre Zigbee usando módulos Xbee.

Código-fonte do projeto

###



//Program to 


/*

 @Application: Arduino_sends_data_to_xbee


 @Hardware used:

 Arduino UNO

 Xbee sereies 2 module

 External Power supply


 @Connection:

 Xbee VCC- External power supply 3v3

 Xbee GND- EXternal power supply GND

 Xbee TX- Arduino digital pin 11

 Xbee RX- Arduino digital pin 10

 External power supply GND - Arduino GND


  @Brief Introduction: 

  Transmitter side:

  The arduino serial sends the data to Xbee serial. 

  And if xbee receives some data wirelessly from other xbee 

  then it sends to arduino serial

  For more detail, Refer our Article! 

 */


//include software serial to communicate with Xbee

#include


//Create an instance for software serial

SoftwareSerial xbee(10,11);   //Digital pin 10- Xbee RX, Digital pin 11- Xbee TX


void setup  {

 // Initialize serial communicate,

 //we configured our XBEE devices for 9600 bps.

 Serial.begin(9600);

 xbee.begin(9600);

}


void loop  {

  //Check whether serial has something to send or not

  if(Serial.available >0)

  {

  //If serial has data to write, then pass that data to Xbee 

  xbee.write(Serial.read );

  }


    //Check whether Xbee received something or not on software serial port.

    else if (xbee.available >0)

    {

    //If it received something, pass it to Arduino serial

    Serial.write(xbee.read );

    }


}


###

Diagramas de circuito

Diagrama de circuito-IoT-Comunicação-entre-dois-dispositivos-Zigbee-Protocolo-IOT-Parte-37

Vídeo do projeto

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.