支持二次开发的Zigbee模块(SNAP技术)

简介: 最近参与规划的一个项目,需要大量的Zigbee进行数据采集。由于是大面积布点,采用的是Mesh网络架构,所以很多节点都是所谓的路由节点,这就引发一个问题,路由节点一般情况下需要持续供电,现场条件只能采用电池供电,这和电池使用1到2年的要求产生了很大的冲突,所以需要zigbee支持一种同步休眠的技术。

最近参与规划的一个项目,需要大量的Zigbee(约5000个)进行数据采集。由于是大面积布点,采用的是Mesh网络架构,所以很多节点都是所谓的路由节点,这就引发一个问题,路由节点一般情况下需要持续供电,由于现场条件只能采用电池供电,这和电池使用1到2年的要求产生了很大的冲突,所以需要zigbee支持一种同步休眠的技术。

最初的方案考虑zigbee芯片+STM8l芯片,通过在单片中编程,用程序逻辑实现同步休眠,思路相对简单,就是主节点广播一个休眠指令,单片机收到后,控制zigbee进入休眠状态,同时自己也进入休眠中,经过预设的一段时间后,由时钟唤醒芯片,然后芯片再唤醒Zigbee,进行相关数据发送。由于STM8l是低功耗芯片,其采集传感器数据比zigbee模块直接采集传感器数据功耗会低很多,并且只是发送数据的时候才开启zigbee,整体功耗会更低,但是电路的复杂性和成本会增加不少。

赫立讯公司的一个继承者在赫立讯Zigbee芯片技术的架构上实现了一种所谓的同步休眠的技术,在Zigbee模块中实现了上述的休眠逻辑,由于是在zigbee模块中直接实现,执行效率会更一些,外围电路也会更简单,不过其实现的可靠性和稳定性,还有外部开发和配置的能力需要进一步考验。

在研究周立功zigbee芯片的时候,发现周立功的zigbee芯片支持一种SNAP的技术,其最大的特色就是支持用户二次开发,这也是我第一次发现支持用户二次开发的Zigbee模块。该技术在Zigbee模块中实现了一个Python虚拟机,用户通过编写Python脚本程序进行二次开发(这算是第二次研究Python相关语言了,第一次是多年前实现LED大屏显示特效的时候用过Python脚本,请参见相关博文《IronPython脚本应用之LED影像系统》)。

SNAP是Synapse公司开发的无线mesh网络协议,提供脚本开发工具和相关固件,其使用是需要授权费用的(可以免费使用6个,一个授权大概30元左右)。SNAP网络简介如下:
image.png
直接从周立功公司购买的Zigbee套件,默认部署的是点对点的固件,通过ZigbeeCfg工具可以升级该固件,或更换为对等网固件。如果需要部署支持SNAP的固件需要用Synapse公司公司的Portal软件进行部署(如下图)。
image.png
警告:做这一步需要慎重考虑,因为部署后,周立功公司提供的ZigbeeCfg的工具上的SNAP选项也无法访问该模块,这个时候如果恢复为原先的固件需要返厂处理。

SNAP当前最新版本的Python脚本支持72个系统函数,可以操作AD、GPIO、串口、SPI、I2C等相关接口,也可以执行休眠,重启等相关指令。

下面代码是一个控制LED灯闪烁的脚本示例,内容如下:

"""Cycle the LEDs on the ZIC2410 evalboard"""

led = 0

def start():

    # Initialize LED pins asoutputs

    setPinDir(0, True)

    writePin(0, False)

    setPinDir(1, True)

    writePin(1, False)

    setPinDir(2, True)

    writePin(2, False)

    setPinDir(3, True)

    writePin(3, False)

 

def timer100msEvent(currentMs):

    """On the100ms tick, increment led count and pulse next LED"""

    global led

    led = (led + 1) % 4

    pulsePin(led, 75, True)

 

def remoteLQ():

    """As anadded bonus, respond to Link Quality Ranger requests too"""

    rpc(rpcSourceAddr(),'remoteLQ')

 

# Here's where we specify any "Event Handlers" we need.

snappyGen.setHook(SnapConstants.HOOK_STARTUP, start)

snappyGen.setHook(SnapConstants.HOOK_100MS, timer100msEvent)

部署运行后,你会发现RXD/TXD和ERR灯会依次闪烁。
image.png
不过由于该固件为国外公司所开发,如要求底层进行定制开发,比如支持单总线的温湿度采集,就很难实现了。想到这里,倒是有一个建议,国内如用STM32W Zigbee芯片做zigbee模块的公司,可以考虑集成一个简单的.NET MF框架,这样用户就可以用C#或VB.net进行Zigbee二次开发了,感觉要比Python编写容易,且功能也强大的多。

相关文章
|
人工智能 边缘计算 算法
CDGA|利用人工智能与边缘计算显著提升数据治理效率与效果的实践案例
​ 在当今数字化转型的浪潮中,数据已成为企业最宝贵的资产之一。然而,随着数据量的爆炸性增长,如何高效、安全地治理这些数据成为企业面临的重要挑战。人工智能(AI)与边缘计算技术的融合,为数据治理带来了前所未有的机遇。本文将通过实际案例,探讨如何利用AI与边缘计算显著提升数据治理的效率和效果。
|
程序员 API 开发者
【Python】贪吃蛇 —— 无聊必备的小项目
贪吃蛇是一款经典的单机游戏,最早于1976年问世,是由一位俄罗斯程序员创造的。游戏的主要设定是控制一条蛇在一个地图上移动,并不断吃食物。每吃到一颗食物,蛇的身体就会增长一节。游戏会随着时间的推移变得越来越难,需要玩家不断调整操作方式和思路,才能够在游戏中存活更久时间甚至创造高分记录。在游戏中,蛇可以通过键盘或手柄来控制移动方向。而地图上则会出现各种糖果或其他食物,蛇吃下这些食物的同时,也需要避免自己碰到自己的身体或碰到地图中的墙壁,否则就会导致游戏结束。
410 0
【Python】贪吃蛇 —— 无聊必备的小项目
阿里云国际香港服务器,入手到底行不行?
阿里云国际香港服务器,入手到底行不行?
|
缓存 前端开发 JavaScript
除了SSR、CSR、还有ISR、SSG?🚀🚀🚀五分钟搞懂它们的区别
除了SSR、CSR、还有ISR、SSG?🚀🚀🚀五分钟搞懂它们的区别
|
弹性计算 应用服务中间件 数据库
阿里云香港云服务器ECS、轻量应用服务器和云虚拟主机
阿里云香港云服务器可选云服务器ECS、轻量应用服务器和云虚拟主机
9703 0
阿里云香港云服务器ECS、轻量应用服务器和云虚拟主机
|
IDE 数据可视化 开发工具
Spyder
Spyder是一个用于数据科学和计算机视觉的Python集成开发环境(IDE)。它支持多个Python版本,并具有强大的交互式界面,可以帮助用户轻松地进行数据可视化、建模和分析。
640 1
|
消息中间件 存储
消息队列之RabbitMQ之主题(Topics)模式
RabbitMQ是一个消息中间件,它接受并转发消息。它有6中工作模式,而主题模式是它的核心。在主题模式中,主要是通配符的添加与使用。
545 0
|
存储 NoSQL Java
Win10上操作Docker,一样可以纵享丝滑!
Win10上操作Docker,一样可以纵享丝滑!
479 1
|
缓存 安全 搜索推荐
蓝科lankecms漏洞导致被黑客攻击篡改首页文件
近期受到很多用蓝科lankecms网站源码做的网站的客户反馈首页文件index.html和m.html被篡改增加了跳转代码,导致从百度点击进来的直接跳转到世界杯体育网站上去,而且百度快照收录的标题也被篡改了,通过客户的叙述,发现此源码是用tp架构二次开发的,其中源码文件LoginAction.class.php和TextAction.class.php被作者加密了,具体内容无法解密,用的是混淆加密,被篡改的客户基本都是在同一时间批量被篡改,跳转的网址也是一致的,了解情况后我们SINE安全立即安全技术对客户网站进行排查和溯源。
525 0
|
存储 编解码
ffmpeg CBR精准码流控制三个步骤
ffmpeg CBR精准码流控制三个步骤
795 0