Skip to main content

Mesh Bee

欢迎来到 MeshBee Wiki


这是一个社区资源,旨在汇集关于以下内容的文档、演示和优质信息链接:

  1. MeshBee 固件架构;
  2. MeshBee 入门指南;
  3. MeshBee 使用案例和示例;

Mesh Bee 是来自 Seeed Studio 的一款 2.4GHz 无线收发器。它基于 NXP 最新的 JN516x 系列无线微控制器芯片,并支持 ZigBee Pro 网络协议栈。工厂固件将复杂的 ZigBee 协议栈操作封装成几个易于使用的串行命令,使 Mesh Bee 成为一个透明的串行通信节点,可以组成简单的点对点连接或复杂的网状网络。此外,Mesh Bee 是完全开放硬件和开源的,这意味着您可以根据需求定制固件。您可以使用 JN516x 的 ARM 核心来控制设备,并使用 JenOS 简化开发。NXP 提供的开发环境和工具都是免费的。Mesh Bee 将为您带来许多乐趣。

2. 特性


  • 范围:室内/城市:最高可达 30m;室外视距:最高可达 100m;
  • 接收灵敏度:-95dBm
  • 数据传输速率:4800、9600、19200、38400、57600、115200 (bps)
  • 工作频率:免许可的 2.4GHz 频段
  • 通信类型:点对点、启动网络或网状网络
  • OTA 支持:通过空中更新节点固件
  • 易于使用的串行接口和丰富的可扩展端口
  • 易于使用的 AT 命令:设置 ZigBee 网络,设置串行波特率等
  • 开源硬件和固件
  • 可编程 32 位 RISC CPU:32M 时钟,256KB Flash,32KB RAM,4KB EEPROM
  • 与 Xbee 插座兼容,因此您可以将其插入任何 Xbee 插座作为快速替代品

注意:由于使用的 ZigBee 协议栈版本不同,Mesh Bee 无法与 Xbee 通信。

3. 规格


规格
微处理器JN5168 (32 位 RISC CPU,32MHz 时钟速度)
资源256kB/32kB/4kB (Flash/RAM/EEPROM)
PCB 尺寸24.5mmx30.5mmx0.8mm
外形尺寸24.5mmx30.5mmx9.77mm
指示器
电源3.3V
IO 数量12
ADC 输入3(2 与 IO 复用)
接口UARTx2, SPI, I2C
程序接口UART+MISO
连接性与 XBee 插座兼容
通信协议Uart(TTL)
工作频段2.4GHz
协议栈/软件RF4CE, JenNet-IP , ZigBee Pro

3.1 电气特性

规格最小值典型值最大值单位
最大输入电压-0.33.6V
工作输入电压2.03.33.6V
发射电流15mA
接收电流17mA
深度睡眠电流0.12uA
工作温度-40

4. 引脚定义

引脚名称备用功能类型描述
3V3-电源输入VCC, +3.3V
TX1D14输出Uart1 Tx端口;数字IO 14
RX1D15输入Uart Rx端口;数字IO 15
DO1SPIMISO输入/输出数字输出1;SPI 主输入从输出
!RST-输入复位端口
D11PWM1输入/输出数字IO 11(默认用途:RSSI指示器);PWM1输出
DO0SPICLK输出数字输出0;SPI 主时钟输出
D18SPIMOSI输入/输出数字IO 18;SPI 主输出从输入
VRefADC2输入模拟外设参考电压;ADC输入2
GND-GND接地
TX0D6输入/输出Uart0 Tx端口;数字IO 6
D12CTS0输入/输出数字IO 12;UART 0清除发送输入
D9-输入/输出数字IO 9(默认用途:Mesh Bee开/睡眠指示器)
RX0D7输入/输出Uart0 Rx端口;数字IO 7
D10-输入/输出数字IO 10(默认用途:网络关联指示器)
D13RTS0输入/输出数字IO 13;UART 0请求发送输出
D1SPISEL2; ADC4输入/输出数字IO 1;SPI 主选择输出2;ADC输入4
D0SPISEL1; ADC3输入/输出数字IO 0;SPI 主选择输出1;ADC输入3
D16SCL输入/输出数字IO 16;I2C时钟
D17SDA输入/输出数字IO 17;I2C数据

注意:仅列出了重要的备用功能,可能还有更多,请参考JN516x数据手册。

注意2:SPI相关引脚仅在您知道如何禁用外部闪存驱动时才能用作数字IO。

5. 使用方法


5.1 硬件安装

Mesh Bee具有通用的Bee插座。因此,您可以像使用XBee或RFBee等一样使用它。需要注意的是,除了部分引脚外,它们的引脚并不是100%兼容。 如果您是Bee系列的新手,请访问此链接了解Bee系列,并访问此链接了解如何将Bee与其他硬件安装。

5.2 如何更新固件

Mesh Bee默认预装了协调器固件,这是由于制造和销售的便利性。您需要自行刷入路由器/终端设备固件。这对像您这样的创客来说非常简单。

JN516x具有一个特定的固件下载接口,包括UART和一些其他引脚,因此您需要一个编程器来刷固件。我们提供了UartSBee v5。UartSBee v5具有v4的大部分功能,并额外支持Mesh Bee的编程。

更新固件的步骤如下:

  • 第三步:将SW1切换到“3V3”,SW3切换到“Prog”位置;

  • 第四步:将Mesh Bee模块插入UartSBee v5;

  • 第五步:使用“Jennic Flash Programmer”刷固件;

下载Jennic Flash Programmer:File:Jennic flash programmer.zip并解压。(仅支持Windows)

打开“FlashGUI.exe” -> 浏览到固件bin文件

-> 选择UartSBee v5的COM端口(如果不存在,请点击刷新按钮)

-> 其他选择项如以下图片所示 -> 勾选“Connect”

-> 设备信息和MAC地址将被检测到

-> 点击“Program”按钮

-> 一个小工具窗口将弹出并显示下载进度

-> 完成。

5.3 AT命令与配置

5.3.1 AT命令

Mesh Bee目前可以通过AT命令进行配置。二进制API配置方法可能会根据您的需求提供。因此,如果您需要此功能,请将您的需求发布到讨论组。我们将根据您的反馈决定开发方向。

下载AT命令手册: File:AT command manual for Mesh Bee V1.0.pdf

5.3.2 配置

Mesh Bee支持ZigBee Pro标准,可以构建具有大量节点的网状网络。您可能需要一些ZigBee基础知识以更有效地配置它。但以下是如何构建一个简单点对点网络的指南。任何人都可以在没有任何ZigBee基础知识的情况下完成。

步骤1:准备两个Mesh Bee模块和一个UartSBee v5; 步骤2:将终端设备固件刷入其中一个Mesh Bee模块,请参考5.2如何更新固件; 步骤3:配置协调器节点;

要配置Mesh Bee节点,首先需要将其连接到PC。有很多方法可以做到这一点。如果您有一个UartSBee v5,这将变得非常简单。只需将协调器插入UartSBee v5并将SW3切换到“Uart”侧。

此外,您可以使用任何USB到TTL设备。基本要求是Mesh Bee通过UART1(TX1和RX1)与外部通信,UART1的电压等级为3.3V。更高的电压可能会损坏IO。

连接线后,打开一个串口工具,选择COM端口并将波特率设置为115200(默认)。

将 Mesh Bee 切换到 AT 命令模式,发送 "+++"。注意,您需要将串口工具配置为发送 CR 字符。

发送 "ATPA1" 命令。

按下 UartSBee v5 的复位按钮以重置 Mesh Bee。

等待 UartSBee v5 的 "ASSOC" 指示灯亮起。好的,协调器已经完成了 ZigBee 网络的创建。您可以发送 "ATIF" 命令查看网络信息。

发送 "ATEX" 命令退出 AT 模式并进入数据传输模式。现在协调器节点已设置完成。

步骤 4:配置终端设备节点

首先,将终端设备的 UART1 连接到波特率为 115200 的串口工具。注意,如果您只有一个 UartSBee v5 并希望使用同一个设备配置终端设备,则需要在从 UartSBee v5 上拔下协调器后重新为其供电。协调器必须始终保持供电,因为它保存了创建的 ZigBee 网络。如果协调器关闭,网络将消失。

发送 "+++" 到终端设备。

-> 然后发送 "ATAJ1" 命令。

-> 发送 "ATRS" 命令。

-> 等待几秒钟。

-> UartSBee v5 的 "ASSOC" 指示灯亮起(使用 UartSBee v5 配置)。

-> 发送 "ATIF" 命令,检查 "3. belonging to" 部分的 "PANID",如果 "PANID" 不是 0x0000,则终端设备已加入 ZigBee 网络。

现在发送 "ATEX" 命令退出 AT 模式。

好的,终端设备已配置完成。

步骤 5:测试连接

使用串口工具连接两个节点(协调器和终端设备)。在一侧发送数据,并检查另一侧是否接收到相同的数据。

连接信息将在断电后保持持久性。

5.4 OTA 指南

Mesh Bee 支持通过空中更新固件。一旦完成网络配置,路由器/终端设备的固件可以通过 OTA 更新。

步骤 1:将新固件刷入协调器的外部闪存

完成此步骤的方法与 5.2 如何更新固件 非常相似,唯一的区别是选择 "External" 作为 "Flash Select"。

步骤 2:确保网络已正确配置且节点可以相互通信

按照 5.3.2_Configuration 描述配置网络节点。发送 "ATLA" 命令查看网络上的节点。

步骤 3:触发 OTA 过程

发送 "ATDAxxxx" 命令设置目标地址(xxxx 是固件将被更新的节点的短地址)。

-> 发送 "ATOR200" 设置 OTA 数据包间隔为 200ms/包。较慢的速度会更好。

-> 发送 "ATOT" 触发 OTA 下载过程。

-> 发送 "ATOS" 监控下载进程,或者如果需要,可以发送 "ATOA" 中止下载。

下载完成后,目标节点将重新启动,新固件将替代旧固件。您可以发送 "ATLA" 命令确认目标节点的固件版本。

5.5 示例

此示例仅兼容固件 v1.0,对于后续版本的固件,请参考可以在资源部分下载的 Cook Book。

这是一个关于使用两个 Mesh Bee 节点进行远程控制的简单示例。

步骤 1:准备材料

材料包括:

步骤 2:配置 Mesh Bee 节点

参考 5.3.2_Configuration 配置点对点连接。

步骤 3:组装舵机端(被控制)

将舵机的信号线(黄色)连接到数字 10,红线连接到 VCC,黑/棕线连接到 GND。

-> 将 "XB_TX" 连接到 D0,将 "XB_RX" 连接到 D1(意味着使用 Seeeduino 的硬件 UART)。

-> 将 Mesh Bee(协调器)插入 XBee shield 的 Bee 插槽。

-> 别忘了将 XBee shield 插到 Seeeduino 上。

步骤 4:组装控制端

将旋转角度传感器的信号线(黄色)连接到 A0,红线连接到 VCC,黑线连接到 GND。

-> 将 XBee Shield v1 的 "USB_UART_M..8" 开关切换到右侧(M..8),将 "D11/12_XBEE_UART" 开关切换到右侧(X_RX_X_TX)。

-> 将 Mesh Bee(终端设备)插入 XBee shield 的 Bee 插槽。

-> 将 XBee Shield 插到 Seeeduino 上。

步骤 5:编程

MeshBeeDemo_servo:

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

#define CMD_POS 1

#define COMM_SER Serial

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

Servo myservo; // 创建舵机对象以控制舵机
// 最多可以创建八个舵机对象

int pos = 0; // 用于存储舵机位置的变量
unsigned int sensorValue = 0; // 用于存储传感器值的变量
unsigned char cmd;
unsigned int lastSensorValue = 0;

void setup()
{
Serial.begin(115200);
//mySerial.begin(9600);
myservo.attach(10); // 将舵机连接到引脚 10

// 配置 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])
{
// 可用数据包
*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; // 选择电位器的输入引脚
int sensorValue = 0; // 用于存储传感器读取值的变量
int lastSensorValue = 0;

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

void setup()
{
// 打开串口通信并等待端口打开:
Serial.begin(115200);

Serial.println("+++");
Serial.println("ATTM1"); // 将 Mesh Bee 设置为单播发送模式
Serial.println("ATDA0000"); // 将单播地址设置为 COO
Serial.println("ATEX"); // 退出 AT 命令模式

// 设置 SoftwareSerial 端口的数据速率
//mySerial.begin(9600);
//mySerial.println("Hello, world?");
}

void loop() // 不断运行
{
// 从传感器读取值:
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])
{
// 有效数据包
*cmd = buff[0];
*msg = (unsigned int)((buff[1]) | (buff[2] << 8));
return true;
}
}
}
return false;
}

5.6 使用注意事项

ZigBee 是一种低功耗和低速的网络传输协议,因此它并不适用于高速场景。

Mesh Bee 网络在 2~3 个节点情况下的数据速率规格如下:

传输方向传输方式数据包周期 (ms)最大数据包长度 (字节)
COO/ROU广播25050
COO/ROU -> END单播4050
END广播15050
END -> COO/ROU单播2025
END -> COO/ROU单播4050

对于更大的网络,数据速率会更低。

6. 开发

我们想介绍的最大特点是 Mesh Bee 支持重新编程。拥有一个可编程的 ZigBee 模块并且价格如此合理,真是令人兴奋。

Mesh Bee 使用了名为 JN5168 的芯片,具有 32 位 RISC 核心和丰富的资源:

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

  • 主 SPI 端口,带有三个选择输出

  • 从 SPI 端口

  • 2 个 UART

  • 5 个 PWM (4 个定时器 & 1 个计数器)

  • I2C

  • 4 通道 10 位 ADC

  • 比较器

  • 电池 & 温度传感器

使用我们的 UartSBee v5,您可以轻松重新编程 Mesh Bee。在开始玩转之前,只需学习一些 NXP 文档即可。

7.1 软件架构

以下是 Mesh Bee 的软件架构。

您可以在 AUPS 中开发独立应用程序。用户应用程序由顶层的两个 Arduino 风格函数组成:setup 和 loop,它们的作用与 Arduino 的完全相同。

我们还引入了 Suli。Suli 是 Seeed 统一库接口。我们将在未来的模块驱动/库发布中切换到 Suli。这意味着我们的 Suli 兼容库/驱动将适配所有支持 Suli 的平台。请浏览 https://github.com/Seeed-Studio/Suli 了解更多信息。

7.2 开发环境

NXP 提供了全面的开发环境、工具和文档。开发环境包括 SDK 工具链和 ZigBee 堆栈 SDK。

请访问 NXP 的网站以获取所有这些资源及详细描述页面:http://www.nxp.com/techzones/wireless-connectivity/smart-energy.html

注意:Mesh Bee 的出厂固件基于 Smart Energy 配置文件开发。

要创建开发环境,您需要下载:

  • JN-SW-4041 SDK 工具链

  • JN-SW-4064 ZigBee Smart Energy SDK

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

然后将它们安装在 Windows PC 上(先安装 JN-SW-4041 后安装 JN-SW-4064)。

要编辑 .oscfgdiag 文件和 .zpscfg 文件,您需要根据 <SDK Installation and User Guide.pdf> 中第 6.2.2 节的指南安装 Eclipse 插件。

注意2:不幸的是,目前只有 Windows 工具链可用。对于 Linux 和 Mac 用户,可能需要使用 Windows 虚拟机。

7.3 编程指南

编程 JN5168 需要一些基础知识,因此很难用几句话解释清楚。深入研究官方文档可能是必须的。

NXP 官方资源:

用户指南

  • JN-UG-3048 <ZigBee PRO Stack User Guide> 介绍了基本的 ZigBee PRO 概念,并详细说明了开发应用程序所需的 ZigBee PRO API。

  • JN-UG-3059 <ZigBee PRO Smart Energy API User Guide> 介绍了 ZigBee Smart Energy (SE),并详细说明了开发应用程序所需的 SE API。

  • JN-UG-3075 <JenOS User Guide> 详细说明了 ZigBee PRO 应用代码中用于管理操作系统资源的 JenOS API。

  • JN-UG-3077 <ZigBee Cluster Library User Guide> 描述了 NXP 对 ZigBee Cluster Library (ZCL) 的实现。

应用笔记

  • JN-AN-1135 <Smart Energy HAN Solutions Application Note> 提供并描述了 Smart Energy 家庭区域网络解决方案示例。

相关文档

  • JN-DS-JN516x <JN516x 数据手册> 详细介绍了 JN516x 系列微控制器。

  • JN-UG-3087 <JN516x 集成外设 API 用户指南> 详细介绍了 JN516x 集成外设 API,可用于应用代码与 JN516x 芯片上的外设交互。

下载页面:http://www.nxp.com/techzones/wireless-connectivity/smart-energy.html

7.4 贡献

8. 讨论组

我们创建了一个 Google 讨论组,用于 Mesh Bee 的一般讨论和开发相关主题。请点击以下链接查看最新动态:https://groups.google.com/forum/#!forum/seeedstudio-mesh-bee-discussion-group

在线原理图查看器

9. 资源

9.1 固件下载

v1001(出厂固件,目前最稳定的版本):

协调器固件:https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.01/Build/COO_JN5168.bin

路由器固件:https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.01/Build/ROU_JN5168.bin

终端设备固件:https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.01/Build/END_JN5168.bin

v1004

协调器固件:https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.4/build/output/COO_JN5168.bin

路由器固件:https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.4/build/output/ROU_JN5168.bin

终端设备固件:https://github.com/Seeed-Studio/Mesh_Bee/raw/v1.0.4/build/output/END_JN5168.bin

与我们的开发和发布保持同步:

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

关于 Mesh Bee 固件的更多信息:

技术支持与产品讨论

感谢您选择我们的产品!我们致力于为您提供各种支持,以确保您使用我们的产品时能够获得尽可能顺畅的体验。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...