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...