支持二次开发的Zigbee模块(SNAP技术)
2013-05-03 12:01
295 查看
最近参与规划的一个项目,需要大量的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网络简介如下:
![](http://images.cnitblog.com/blog/11611/201305/03115727-2dd3d7ae53c64f228a647f4627a5b83c.jpg)
直接从周立功公司购买的Zigbee套件,默认部署的是点对点的固件,通过ZigbeeCfg工具可以升级该固件,或更换为对等网固件。如果需要部署支持SNAP的固件需要用Synapse公司公司的Portal软件进行部署(如下图)。
![](http://images.cnitblog.com/blog/11611/201305/03115717-04cbb63858804630b415273ae6f7750f.jpg)
警告:做这一步需要慎重考虑,因为部署后,周立功公司提供的ZigbeeCfg的工具上的SNAP选项也无法访问该模块,这个时候如果恢复为原先的固件需要返厂处理。
SNAP当前最新版本的Python脚本支持72个系统函数,可以操作AD、GPIO、串口、SPI、I2C等相关接口,也可以执行休眠,重启等相关指令。
下面代码是一个控制LED灯闪烁的脚本示例,内容如下:
部署运行后,你会发现RXD/TXD和ERR灯会依次闪烁。
![](http://images.cnitblog.com/blog/11611/201305/03115704-fcf55a654ae548d2a986650cc686eec1.jpg)
不过由于该固件为国外公司所开发,如要求底层进行定制开发,比如支持单总线的温湿度采集,就很难实现了。想到这里,倒是有一个建议,国内如用STM32W Zigbee芯片做zigbee模块的公司,可以考虑集成一个简单的.NET MF框架,这样用户就可以用C#或VB.net进行Zigbee二次开发了,感觉要比Python编写容易,且功能也强大的多。
最初的方案考虑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网络简介如下:
![](http://images.cnitblog.com/blog/11611/201305/03115727-2dd3d7ae53c64f228a647f4627a5b83c.jpg)
直接从周立功公司购买的Zigbee套件,默认部署的是点对点的固件,通过ZigbeeCfg工具可以升级该固件,或更换为对等网固件。如果需要部署支持SNAP的固件需要用Synapse公司公司的Portal软件进行部署(如下图)。
![](http://images.cnitblog.com/blog/11611/201305/03115717-04cbb63858804630b415273ae6f7750f.jpg)
警告:做这一步需要慎重考虑,因为部署后,周立功公司提供的ZigbeeCfg的工具上的SNAP选项也无法访问该模块,这个时候如果恢复为原先的固件需要返厂处理。
SNAP当前最新版本的Python脚本支持72个系统函数,可以操作AD、GPIO、串口、SPI、I2C等相关接口,也可以执行休眠,重启等相关指令。
下面代码是一个控制LED灯闪烁的脚本示例,内容如下:
"""Cycle the LEDs on the ZIC2410 eval board""" led = 0 def start(): # Initialize LED pins as outputs 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 the 100ms tick, increment led count and pulse next LED""" global led led = (led + 1) % 4 pulsePin(led, 75, True) def remoteLQ(): """As an added 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灯会依次闪烁。
![](http://images.cnitblog.com/blog/11611/201305/03115704-fcf55a654ae548d2a986650cc686eec1.jpg)
不过由于该固件为国外公司所开发,如要求底层进行定制开发,比如支持单总线的温湿度采集,就很难实现了。想到这里,倒是有一个建议,国内如用STM32W Zigbee芯片做zigbee模块的公司,可以考虑集成一个简单的.NET MF框架,这样用户就可以用C#或VB.net进行Zigbee二次开发了,感觉要比Python编写容易,且功能也强大的多。
相关文章推荐
- 支持二次开发的Zigbee模块(SNAP技术)
- 支持二次开发的Zigbee模块(SNAP技术)
- C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)
- 基于DotNet构件技术的企业级敏捷软件开发平台 - AgileEAS.NET - Linq 2 EAS.NET,Orm支持Linq
- Intermac打印机VB下IPL语言开发技术支持
- 音视频二次开发 IP组播技术
- C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)
- 基于嵌入式微处理器EP9315的二次开发技术
- Android 视频二次开发技术
- ArcGIS 二次开发牛人技术博客
- 安卓GIS 安卓地理信息系统 Android GIS Android 地理信息系统技术服务 二次开发 项目承接
- 技术支持与项目开发分离 推荐
- (免费)Autodesk 产品二次开发技术研讨会(含Revit)以及DevLab 三个城市:上海(结束),广州(结束),北京 (7月16日)
- AutoCAD二次开发技术在工程图纸绘制中的应用
- sdk与开放API协议支持二次开发的摄像头
- C#版OPOS打印(基于北洋OPOS SDK二次开发包,支持EPSON和北洋、佳博、商祺等支持标准ESC/POS指令的POS打印机)
- SVN二次开发——让SVN、TSVN(TortoiseSVN)支持windows的访问控制模型、NTFS ADS(可选数据流、NTFS的安全属性)
- SOA技术架构如何支持敏捷开发方法
- 支持短信猫长短信二次开发应用的两款短信猫接口程序介绍
- PART1:基于WOSA的跨平台监控技术--支持XFS的SNMP Agent(Gapser代理端)开发