Pular para o conteúdo principal

Mesh Bee

Bem-vindo ao Wiki do MeshBee​


Este é um recurso da comunidade, destinado a reunir documentação, demonstrações e links para boas fontes de informação sobre:

  1. Arquitetura de firmware do MeshBee;
  2. Guia inicial do MeshBee;
  3. Casos de uso e exemplos do MeshBee;

Mesh Bee é um transceptor sem fio de 2,4GHz da seeed studio. Ele é baseado na nova série de microcontroladores sem fio JN516x da NXP e oferece suporte à pilha de rede ZigBee Pro. O firmware de fábrica encapsula a complicada operação da pilha ZigBee em alguns comandos seriais fáceis de usar e transforma o Mesh Bee em um nó de comunicação serial transparente que pode fazer parte de uma simples conexão ponto a ponto ou de uma complexa rede em malha. Além disso, Mesh Bee é totalmente open hardware e open source, o que significa que você pode personalizar o firmware conforme suas necessidades. Você pode usar o núcleo ARM do JN516x para controlar dispositivos e o JenOS para simplificar seu desenvolvimento. O ambiente de desenvolvimento e as ferramentas da NXP são todas gratuitas. Mesh Bee vai lhe proporcionar muita diversão.

2. Características​


  • Alcance: Interno/Urbano: até 30m; Externo linha de visada: até 100m;
  • Sensibilidade do Receptor: -95dBm
  • Taxa de Transmissão de Dados: 4800, 9600, 19200, 38400, 57600, 115200 (bps)
  • Frequência de Operação: faixa de 2,4GHz não licenciada
  • Tipo de comunicação: Ponto a Ponto ou Rede Estrela ou Rede em Malha
  • Suporte a OTA: atualizar o firmware do nó pelo ar
  • Interface Serial Fácil de Usar e portas de expansão ricas
  • Comando AT Fácil de Usar: Configurar rede ZigBee, Definir Taxa de Baud Serial, etc.
  • Hardware e Firmware de código aberto
  • CPU RISC programável de 32 bits: clock de 32M, 256KB Flash, 32KB RAM, 4KB EEPROM
  • Soquete compatível com o Xbee, assim você pode conectá-lo em qualquer soquete Xbee como uma substituição rápida.

Nota: Mesh Bee não se comunicará com Xbee, pois as versões da pilha ZigBee que eles utilizam são diferentes.

3. Especificações​


EspecificaçãoValor
MicroprocessadorJN5168 (CPU RISC de 32 bits, velocidade de clock de 32MHz)
Recursos256kB/32kB/4kB (Flash/RAM/EEPROM)
Tamanho da PCB24,5mmx30,5mmx0,8mm
Dimensão Externa24,5mmx30,5mmx9,77mm
IndicadoresNão
Fonte de alimentação3,3V
Contagem de IO12
Entrada ADC3(2 multiplexando com IO)
InterfacesUARTx2, SPI, I2C
Interface de programaçãoUART+MISO
ConectividadeSoquete compatível com XBee
Protocolo de ComunicaçãoUart(TTL)
Faixa de Frequência de Operação2,4GHz
Pilha/SoftwareRF4CE, JenNet-IP , ZigBee Pro

3.1 Características Elétricas​

EspecificaçãoMínTípMáxUnidade
Tensão Máxima de Entrada-0,33,6V
Tensão de Entrada de Trabalho2,03,33,6V
Corrente de Transmissão15mA
Corrente de Recepção17mA
Corrente em Deep Sleep0,12uA
Temperatura de Operação-40

4. Definição dos pinos​

Nome do PinoFunções AlternativasTipoDescrição
3V3-Entrada de alimentaçãoVCC, +3,3V
TX1D14SaídaPorta Uart1 Tx; IO Digital 14
RX1D15EntradaPorta Uart Rx; IO Digital 15
DO1SPIMISOEntrada/SaídaSaída Digital 1; Entrada SPI Master In Slave Out
!RST-EntradaPorta de reset
D11PWM1Entrada/SaídaIO Digital 11 (uso padrão: Indicador RSSI); Saída PWM1
DO0SPICLKSaídaSaída Digital 0; Saída de Clock SPI Master
D18SPIMOSIEntrada/SaídaIO Digital 18; Saída SPI Master Out Slave In
VRefADC2EntradaTensão de referência do periférico analógico; entrada ADC 2
GND-GNDGND
TX0D6Entrada/SaídaPorta Uart0 Tx; IO Digital 6
D12CTS0Entrada/SaídaIO Digital 12; Entrada UART 0 Clear To Send
D9-Entrada/SaídaIO Digital 9 (uso padrão: Indicador de Ligado/Sono do Mesh Bee)
RX0D7Entrada/SaídaPorta Uart0 Rx; IO Digital 7
D10-Entrada/SaídaIO Digital 10 (uso padrão: Indicador de Associação de Rede)
D13RTS0Entrada/SaídaIO Digital 13; Saída UART 0 Request To Send
D1SPISEL2; ADC4Entrada/SaídaIO Digital 1; Saída SPI Master Select 2; entrada ADC 4
D0SPISEL1; ADC3Entrada/SaídaIO Digital 0; Saída SPI Master Select 1; entrada ADC 3
D16SCLEntrada/SaídaIO Digital 16; clock I2C
D17SDAEntrada/SaídaIO Digital 17; dados I2C

Nota: Apenas as funções alternativas importantes estão listadas, podem existir mais, por favor consulte o data sheet do JN516x.

Nota2: Pinos relacionados a SPI podem ser usados como IO digital somente se você souber como desabilitar a unidade de flash externa.

5. Uso​


5.1 Instalação de Hardware​

O Mesh Bee possui um soquete Bee geral. Assim, você pode usá-lo exatamente como XBee ou RFBee etc. Uma coisa a notar é que os pinos não são 100% compatíveis entre si, exceto por parte deles. Se você é iniciante na série Bee, siga este link para aprender sobre a Série Bee e este link para saber como instalar o Bee com outro hardware.

5.2 Como atualizar o firmware​

O firmware padrão pré-gravado no Mesh Bee é um firmware de coordenador devido à conveniência de fabricação e venda. Você deve gravar o firmware de roteador / dispositivo final por conta própria. E é simples o bastante para makers como você.

JN516x possui uma interface específica de download de firmware com uma UART e alguns outros pinos, então você precisa de um programador para gravá-lo. Nós fornecemos isso com o UartSBee v5. O UartSBee v5 possui a maior parte dos recursos da versão v4 e, além disso, um programador para o Mesh Bee.

Para atualizar o firmware, siga os passos:

  • Passo 3: Mude o SW1 para a posição "3V3" e o SW3 para a posição "Prog";

  • Passo 4: Conecte o módulo Mesh Bee no UartSBee v5 ;

-Passo 5: Grave o firmware com o "Jennic Flash Programmer";

Baixe o Jennic Flash Programmer: File:Jennic flash programmer.zip e descompacte. (Apenas Windows)

Abra "FlashGUI.exe" -> navegue até o arquivo bin do firmware

-> selecione a porta COM do UartSBee v5 (se não existir, clique no botão Refresh)

-> as outras seleções como na imagem a seguir -> marque "Connect"

-> as informações do dispositivo e o endereço MAC serão detectados

-> clique no botão "Program"

-> Uma pequena janela de ferramenta aparecerá e o progresso do download será exibido

-> fim.

5.3 Comandos AT & Configuração​

5.3.1 Comandos AT​

O Mesh Bee pode ser configurado com comandos AT por enquanto. O método de configuração via API binária pode ser fornecido conforme suas necessidades. Portanto, por favor, poste seus requisitos no grupo de discussão se você precisar deste recurso. Tomaremos a decisão de desenvolvimento com base nas suas opiniões.

Baixe o manual de comandos AT: File:AT command manual for Mesh Bee V1.0.pdf

5.3.2 Configuração​

O Mesh Bee suporta o padrão ZigBee Pro, que pode construir uma rede em malha com um grande número de nós. Você pode precisar de alguns conceitos básicos de ZigBee para configurá-lo de forma mais eficaz. Mas aqui está um guia de como formar uma simples rede ponto a ponto. Qualquer pessoa pode fazer isso sem qualquer conhecimento básico de ZigBee.

Passo 1: Prepare dois módulos Mesh Bee e um UartSBee v5; Passo 2: Grave o firmware de Dispositivo Final em um dos dois Mesh Bee, consulte 5.2 Como atualizar o firmware; Passo 3: Configure o nó coordenador;

Para configurar um nó Mesh Bee, você deve primeiro conectá-lo ao PC. Há muitas maneiras de fazer isso. Se você tiver um UartSBee v5, isso fica muito fácil. Basta conectar o coordenador ao UartSBee v5 e mudar o SW3 para o lado "Uart".

Além disso, você pode usar qualquer dispositivo USB-para-TTL. O ponto básico é que o Mesh Bee se comunica com o exterior através da UART1(TX1&RX1) e o nível de tensão da UART1 é 3,3V. Tensões mais altas podem queimar o IO.

Após a conexão dos fios, abra uma ferramenta serial, selecione a porta COM e defina a taxa de baud para 115200(padrão).

Envie "+++" para colocar o Mesh Bee no modo de comando AT. Observe que você deve configurar sua ferramenta serial para enviar o caractere CR.

Envie o comando "ATPA1".

Pressione o botão de reset do UartSBee v5 para reiniciar o Mesh Bee.

Aguarde até que o LED "ASSOC" do UartSBee v5 acenda. Pronto, o coordenador concluiu a formação da rede ZigBee. Você pode enviar o comando "ATIF" para visualizar as informações da rede.

Envie o comando "ATEX" para sair do modo AT e entrar no modo de transmissão de dados. Agora o nó coordenador está configurado.

Passo 4: Configure o nó de dispositivo final;

Primeiro, conecte à UART1 do dispositivo final com baud rate 115200. Observe que, se você tiver apenas 1 UartSBee v5 e quiser configurar o dispositivo final com o mesmo, você deve ligar o coordenador novamente depois de desconectá-lo do UartSBee v5. O coordenador deve estar sempre ligado porque ele mantém a rede ZigBee criada. Se ele desligar, a rede se perde.

Envie "+++" para o dispositivo final.

-> Em seguida, envie o comando "ATAJ1".

-> Envie o comando "ATRS"

-> Aguarde alguns segundos

-> O LED "ASSOC" do UartSBee v5 acende (configurar com UartSBee v5).

-> Envie o comando "ATIF", verifique o "PANID" da seção "3. belonging to"; se o "PANID" não for 0x0000, então o dispositivo final ingressou na rede ZigBee.

Agora envie o comando "ATEX" para sair do modo AT.

Pronto, o dispositivo final está bem configurado.

Passo 5: Testar a conexão;

Conecte os dois nós (coordenador & dispositivo final) com uma ferramenta serial. Envie dados de um lado e verifique se os mesmos dados são recebidos do outro lado.

As informações da conexão serão salvas de forma persistente mesmo após desligar a alimentação.

5.4 Guia de OTA​

Mesh Bee suporta atualização de firmware over-the-air. Ou seja, depois que você terminar a configuração da rede, o firmware do roteador/dispositivo final pode ser atualizado por OTA.

Passo 1: Gravar um novo firmware na flash externa do coordenador.

Para realizar este passo tudo o que você deve fazer é muito parecido com 5.2 How to update firmware, a única diferença é escolher "External" para "Flash Select".

Passo 2: Certifique-se de que a rede está corretamente configurada e que os nós podem se comunicar entre si.

Configure os nós da rede conforme descrito em 5.3.2_Configuration. Envie o comando "ATLA" para ver os nós na rede.

Passo 3: Disparar o processo de OTA.

Envie o comando "ATDAxxxx" para definir o endereço de destino (xxxx é o endereço curto do nó cujo firmware será atualizado)

-> Envie "ATOR200" para definir o intervalo dos pacotes OTA para 200ms/pacote. Mais lento será melhor.

-> Envie "ATOT" para disparar o processo de download OTA

-> Envie "ATOS" para monitorar o andamento do download ou envie "ATOA" para abortar o download, se desejar.

Quando o download terminar, o nó de destino será reiniciado e o novo firmware passará a valer. Você pode enviar o comando "ATLA" para confirmar a versão de FW do destino.

5.5 Exemplo​

Este exemplo é compatível apenas com o firmware v1.0; para versões posteriores de firmware, consulte o Cook Book, que pode ser baixado na seção Resources.

Este é um exemplo simples de controle remoto com 2 nós Mesh Bee.

Passo 1: Preparar os materiais

São eles:

Passo 2: Configurar os nós Mesh Bee

Consulte 5.3.2_Configuration para configurar uma conexão p2p.

Passo 3: Montar o lado do Servo (controlado)

Conecte o fio de sinal (amarelo) do servo ao Digital 10, o fio vermelho ao VCC e o fio preto/marrom ao GND

-> Conecte "XB_TX" ao D0 e conecte "XB_RX" ao D1 (significa usar a UART de hardware do seeeduino)

-> Conecte o Mesh Bee (coordenador) no soquete Bee do XBee shield

-> Não se esqueça de conectar o XBee shield ao Seeeduino D:

Passo 4: Montar o lado de controle

Conecte o fio de sinal (amarelo) do Rotary Angle ao A0, o fio vermelho ao VCC e o fio preto ao GND

-> Mova o switch "USB_UART_M..8" do XBee Shield v1 para o lado direito (M..8) e o switch "D11/12_XBEE_UART" para o lado direito (X_RX_X_TX)

-> Conecte o Mesh Bee (dispositivo final) no soquete Bee do XBee shield

-> Conecte o XBee Shield ao Seeeduino

Passo 5: Programar

MeshBeeDemo_servo:

#include <Servo.h>
#include <SoftwareSerial.h>

#define CMD_POS 1

#define COMM_SER Serial

//SoftwareSerial mySerial(11, 12); // RX, TX

Servo myservo; // create servo object to control a servo
// a maximum of eight servo objects can be created

int pos = 0; // variable to store the servo position
unsigned int sensorValue = 0; // variable to store the value coming from the sensor
unsigned char cmd;
unsigned int lastSensorValue = 0;

void setup()
{
Serial.begin(115200);
//mySerial.begin(9600);
myservo.attach(10); // attaches the servo on pin 9 to the servo object

//config Mesh Bee
Serial.println("atex");

}


void loop()
{
if (read_msg(&cmd, &sensorValue))
{
if (cmd == CMD_POS)
{

if (lastSensorValue != sensorValue)
{
lastSensorValue = sensorValue;
//Serial.println(sensorValue);
pos = map(sensorValue, 0, 1023, 0, 180);
myservo.write(pos);
}
}
}
//delay(10);
}

void send_msg(unsigned char cmd, unsigned int msg)
{
unsigned char buff[4];
buff[0] = cmd;
buff[1] = (unsigned char)(msg & 0xff);
buff[2] = (unsigned char)((msg >> 8) & 0xff);
buff[3] = buff[0]+buff[1]+buff[2];
COMM_SER.write("SS");
COMM_SER.write(buff, 4);
}

boolean read_msg(unsigned char *cmd, unsigned int *msg)
{
unsigned char buff[4];

if (COMM_SER.find("SS"))
{
while (COMM_SER.available() < 4);
if (COMM_SER.available() >= 4)
{
COMM_SER.readBytes((char *)buff, 4);
if (buff[0] + buff[1] + buff[2] == buff[3])
{
//available packet
*cmd = buff[0];
*msg = (unsigned int)((buff[1]) | (buff[2] << 8));
return true;
}
}
}
return false;
}

MeshBeeDemo_analogInput:

#include <SoftwareSerial.h>

#define CMD_POS 1

#define COMM_SER Serial

//SoftwareSerial mySerial(10, 11); // RX, TX

int sensorPin = A0; // select the input pin for the potentiometer
int sensorValue = 0; // variable to store the value coming from the sensor
int lastSensorValue = 0;

void send_msg(unsigned char cmd, unsigned int msg);
boolean read_msg(unsigned char *cmd, unsigned int *msg);

void setup()
{
// Open serial communications and wait for port to open:
Serial.begin(115200);

Serial.println("+++");
Serial.println("ATTM1"); //set Mesh Bee into unicast tx mode
Serial.println("ATDA0000"); //set the unicast address to COO
Serial.println("ATEX"); //exit the AT command mode

// set the data rate for the SoftwareSerial port
//mySerial.begin(9600);
//mySerial.println("Hello, world?");
}

void loop() // run over and over
{
// read the value from the sensor:
sensorValue = analogRead(sensorPin);
if (sensorValue != lastSensorValue || 1)
{
//Serial.println(sensorValue);
send_msg(CMD_POS, (unsigned int)sensorValue);
lastSensorValue = sensorValue;
delay(50);
}
}

void send_msg(unsigned char cmd, unsigned int msg)
{
unsigned char buff[4];
buff[0] = cmd;
buff[1] = (unsigned char)(msg & 0xff);
buff[2] = (unsigned char)((msg >> 8) & 0xff);
buff[3] = buff[0]+buff[1]+buff[2];
COMM_SER.write("SS");
COMM_SER.write(buff, 4);
}

boolean read_msg(unsigned char *cmd, unsigned int *msg)
{
unsigned char buff[4];

if (COMM_SER.find("SS"))
{
while (COMM_SER.available() < 4);
if (COMM_SER.available() >= 4)
{
COMM_SER.readBytes((char *)buff, 4);
if (buff[0] + buff[1] + buff[2] == buff[3])
{
//available packet
*cmd = buff[0];
*msg = (unsigned int)((buff[1]) | (buff[2] << 8));
return true;
}
}
}
return false;
}

5.6 Nota de uso​

ZigBee é um protocolo de transmissão em rede de baixa potência & baixa velocidade. Portanto, ele não é projetado para situações de alta velocidade.

A especificação de taxa de dados da rede Mesh Bee com 2~3 nós:

Direção de TransmissãoMétodo de TransmissãoPeríodo do Pacote (ms)Tamanho Máx. do Pacote (bytes)
COO/ROUBroadcast25050
COO/ROU -> ENDUnicast4050
ENDBroadcast15050
END -> COO/ROUUnicast2025
END -> COO/ROUUnicast4050

A taxa de dados será menor para uma rede maior.

6. Desenvolvimento​

O maior recurso que queremos apresentar é que o Mesh Bee suporta reprogramação. É muito empolgante ter um módulo ZigBee programável com um preço tão razoável.

Mesh Bee usa o chip chamado JN5168 com um núcleo RISC de 32 bits e recursos abundantes:

  • Flash/RAM/EEPROM: 256kB/32kB/4kB

  • Porta SPI mestre com três saídas de seleção

  • Porta SPI escrava

  • 2x UART's

  • 5x PWM (4x timer & 1x contador)

  • I2C

  • ADC de 4 canais e 10 bits

  • Comparador

  • Sensor de bateria & temperatura

Com o nosso UartSBee v5 você pode reprogramar o Mesh Bee facilmente. Há apenas um pequeno passo de aprender alguns documentos da NXP antes de começar a usar bem.

7.1 Arquitetura de software​

Esta é a arquitetura de software do Mesh Bee.

Você pode desenvolver uma aplicação stand-alone em AUPS. A aplicação do usuário consiste em duas funções ao estilo arduino no nível superior: setup & loop, que funcionam exatamente como as do arduino.

Também apresentamos o Suli. Suli significa Seeed Unified Library Interface. Passaremos a usar o Suli para nossos futuros lançamentos de drivers/bibliotecas de módulos. Isso significa que nossa biblioteca/driver compatível com Suli se adaptará a todas as plataformas que o Suli suporta. Dê uma olhada em https://github.com/Seeed-Studio/Suli para mais informações.

7.2 Ambiente de Desenvolvimento​

A NXP fornece um ambiente de desenvolvimento em escala completa, ferramentas e documentos. O ambiente de desenvolvimento consiste no SDK toolchain e no SDK da pilha ZigBee.

Acesse o site da NXP para obter todos esses recursos com uma página de descrição detalhada: http://www.nxp.com/techzones/wireless-connectivity/smart-energy.html

Nota: O firmware de fábrica do Mesh Bee é desenvolvido sobre o perfil Smart Energy.

Para criar o ambiente de desenvolvimento, você deve baixar:

  • JN-SW-4041 SDK Toolchain

  • JN-SW-4064 ZigBee Smart Energy SDK

  • JN-SW-4067-JN516x ZigBee Home Automation SDK

e então instalá-los em um PC com Windows (instale o JN-SW-4064 após o JN-SW-4041).

Para editar o arquivo .oscfgdiag e o arquivo .zpscfg, você deve instalar os plugins do eclipse de acordo com o guia na seção 6.2.2 em <SDK Installation and User Guide.pdf>.

Nota2: Infelizmente, apenas a toolchain para Windows está disponível agora. Para usuários de Linux e Mac, uma VM com Windows pode ser a sua escolha.

7.3 Guia de Programação​

Programar o JN5168 exige algum conhecimento básico, então é difícil explicar em poucas palavras. Explorar a fundo os documentos oficiais talvez seja indispensável.

Recursos oficiais da NXP:

Guias do Usuário

  • JN-UG-3048 <ZigBee PRO Stack User Guide> Apresenta conceitos essenciais do ZigBee PRO e detalha as APIs ZigBee PRO para desenvolver aplicações.

  • JN-UG-3059 <ZigBee PRO Smart Energy API User Guide> Apresenta ZigBee Smart Energy (SE) e detalha a API SE para desenvolver aplicações.

  • JN-UG-3075 <JenOS User Guide> Detalha as APIs JenOS usadas no código de aplicação ZigBee PRO para gerenciar recursos do SO.

  • JN-UG-3077 <ZigBee Cluster Library User Guide> Descreve a implementação da NXP da ZigBee Cluster Library (ZCL).

Application Notes

  • JN-AN-1135 <Smart Energy HAN Solutions Application Note> Fornece e descreve exemplos de soluções Smart Energy Home Area Network

Documentação Relacionada

  • JN-DS-JN516x <JN516x Datasheet> Detalha a série de microcontroladores JN516x.

  • JN-UG-3087 <JN516x Integrated Peripherals API User Guide> Detalha a JN516x Integrated Peripherals API, usada no código de aplicação para interagir com os periféricos integrados no chip JN516x.

Página de download: http://www.nxp.com/techzones/wireless-connectivity/smart-energy.html

7.4 Contribuição​

8. Grupo de Discussão​

Criamos um grupo do Google para discussões gerais sobre o Mesh Bee e tópicos relacionados ao desenvolvimento. Acesse este link para ver o que está acontecendo por lá: https://groups.google.com/forum/#!forum/seeedstudio-mesh-bee-discussion-group

Visualizador Online do Esquemático​

9. Recursos​

9.1 Downloads de Firmware​

v1001 (firmware de fábrica, a versão mais estável até agora):

Firmware do coordenador: https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.01/Build/COO_JN5168.bin

Firmware do roteador: https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.01/Build/ROU_JN5168.bin

Firmware do dispositivo final: https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.01/Build/END_JN5168.bin

v1004

Firmware do coordenador: https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.4/build/output/COO_JN5168.bin

Firmware do roteador: https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.4/build/output/ROU_JN5168.bin

Firmware do dispositivo final: https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.4/build/output/END_JN5168.bin

Sincronize com nosso desenvolvimento e lançamentos:

https://github.com/Seeed-Studio/Mesh_Bee/releases

Mais informações sobre o firmware do Mesh Bee:

Suporte Técnico & Discussão sobre o Produto​

Obrigado por escolher nossos produtos! Estamos aqui para fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...