智巢嵌入式软件技术文档和一些杂七杂八的
具体内容见Zigbee驱动的详细要求。
传感器到货;传感器测试和底层功能实现
Zigbee 的网络组网测试,目前只做了一些简单的双机\三机组网 (推迟,等CC2530情况)
写个简单的的程序,输出ZigBee模块的信号强度,量化的测试信号质量。
Zigbee 模块的传输距离测试,国内的Zigbee频段是2.4GHz,可能还要做信号的绕射能力测试。
采集节点和主机的总线、传感器架构(已经基本确定,需要实现)
GUI绘制和对应的逻辑;可以是串口屏或者用LVGL;(是否要做待定。看时间情况)
用户交互问题,设备部署和维护问题;(先完成串口Debug和部署)
Register_Host的接收数据等待(串口中断触发,可设置超时时长)(√)
stm32 flash 启动流程、启动后取程序方式(直接随用随取(ART)还是取一段到sram)、sram中堆栈之外的空间
(2021年11月22日)
这里是Todo 和 Doing完成的,没来得及写文档项目
Q: 具体的组网方案要去鸡场实地考察下才能确定。
R: --实地看完后:
鸡场的养殖密度很大,10w只鸡只在一个鸡舍;
鸡舍大小为80m×15m×8m,不算特别大,地理位置偏僻,电磁环境良好,几乎没有同频段干扰;
鸡舍建筑主体材料为 塑钢外皮,保温材料夹心;对电磁屏蔽效果较好,可能会有公网通信问题
鸡舍内部主题为钢夹结构,上下两层,中间是钢栅格(此项是否会对信号传输造成影响待定),单层有四对机柜,单个机柜5层,会对信号横向造成影响,纵向80米几乎无遮挡。
鸡舍取电较为简单,考虑使用电源供电,或者长续航电池,安装位置不能干涉现有设备。
氨气、二氧化碳传感器可能存在寿命以及功耗问题。
鸡舍内有WiFi连接,但是似乎不能覆盖,联通4g信号没有。
综上,目前个人设想是在上下两层分别设置两个路由节点,分别负责同层的终端节点通信,协调器安置在主机。主机在监控室与生产车间只有一层建筑阻隔。公网通信设置WiFi和NBIOT两个模块。(NBIOT不要用联通卡)
供电方式个人希望做成有线供电,可预留电池供电设计。主要考虑到电池供电存在 (1 )功耗、续航问题 (2)电池寿命和安全性问题,电池长时间使用可能存在安全隐患,同时鸡场的养殖密度过大,消防设施不完善。在此基础上可以考虑增加火灾报警功能。
使用测试板的简单组网和参数配置【ZG120A增益0-20dBm(1km) ZG6907A增益-37-7dBm(120m) 发送方单包支持最大数据包长72字节】
使用设计的PCB转接板调试(目前有两块可用)
调试工具:智巢Zigbee测试版(1.0)、串口专USB模块、装好环境的电脑
测试流程 :
1)进入上位机,选择好对应串口,打开串口;
2)模块上电后默认进入传输模式,进行配置前要切换到配置模式;
Zigbee网络是由协调器建立的,节点类型默认为终端,进入配置模式后修改节点类型;注意 : 改变类型后 点击右侧的小按钮,再点击写入网络参数,完成后重启模块(只有修改节点类型后才需要重启模块)
3) 终端节点设置同理,如果要加入同一个网络,则需要PAN ID 和信道一致,其会自动加入网络。
4)协调器短地址默认0,终端的地址是自动分配,不可修改。再进行点对点通信时,可以通过短地址或者MAC地址。(注意修改网络参数要进入配置模式,修改后要点写入网络参数)
5)以上设置完成后,在(定点组网的选项卡下应该就能实现双向通信)
120A可以作为协调器和路由器,发射功率可以更大,可以安装在主机和路由节点上;6907作为终端,功耗更低,体积更小,于此同时传输距离也短。以上两个模块组成的网络节点数上限为256个,建议数量100个
休眠和非休眠两种方式
两个型号的模块发送时都可以串口唤醒,120A是休眠时接收到一帧≥25字节数据唤醒;6907是接收到≤10字节数据唤醒;唤醒时间将持续Uart_holdtime(默认1000ms),收到新的串口帧自动刷新超时寄存器。
除此外还可以使用Wake引脚控制,默认高电平,拉低则持续唤醒,释放恢复高电平恢复休眠。※计划使用这种方式,唤醒更方便和灵活。
休眠终端接收数据时,为周期唤醒,唤醒周期要小于30s。若只上传数据可以设置大于30s,默认5min,降低功耗。
120a可以作为路由节点,路由节点主要用来扩大网络覆盖范围,转发报文中继路由。同时具备终端的所有功能 路由器可以自建网络或者加入其他网络,若网络路径存在问题自动调整路径。
路由器要一直处于活动状态,因此必须要用主电源供电。
协调器
建立网络和管理网络,控制其他节点接入网络,存储根网络节点信息,并具有路由节点的所有功能(包括终端)。
主要为管理网络,记录节点信息,入网设备权限鉴别。要求主电源供电。
E180-120A | I/O类型 | 使用引脚 | E180-6907 | I/O类型 | 使用引脚 |
---|---|---|---|---|---|
PD14(WAKE) | I | 发送唤醒 | PC4(WAKE) | I | 发送唤醒 |
PD15(AUX) | O | 工作状态指示 | PA7(AUX) | O | 工作状态指示 |
PA0(Tx) | O | 串口发送 | TX | O | 串口发送 |
PA1(Rx) | I | 串口接收 | RX | I | 串口接收 |
PB13(ACK) | O | 指示发送状态 | PE0(ACK) | O | 指示发送状态 |
PF7(LINK) | O | 连接状态指示 | PA4(LINK) | O | 连接状态指示 |
PB14(GPIO0) | I/O | GPIO预留 | PE3(GPIO0) | I/O | GPIO预留 |
RESETN | I | 复位 | nRESET | I | 复位 |
这里的串口应该特定连接到单片机串口,AUX引脚接到可唤醒休眠单片机的外部中断。未作标注的可连接普通IO
工作模式&切换
传输模式
所有数据都将发送出去,可以单播、组播、广播
配置模式
认为所有数据为配置指令,退出记得保存数据,所有数据都认为是HEX格式。
模式切换
指令切换:模块收到2A 2D 2E 进入配置模式,返回7A 7D 7E;收到2F 2C 2B 切换到传输模式,返回7F 7C 7B
引脚切换:默认上拉,当低电平超过500ms切换到另一模式;
这里使用指令切换,不同模块切换通用、切换模式更准确。
AUX外部唤醒CPU
模块接收到数据后将AUX拉低AUX_delaytime之后串口才输出数据。用于唤醒CPU,AUX_delaytime默认4ms,可自己配置。配置为0则无延迟。
ACK
指示发送状态。只作用于非休眠终端,也无法指示协调器广播信息。
无线远程配置
前两个为无线配置ID,可以自定义,默认A8 8A。模块收到空中数据有这两个字节判断为远程配置命令,将不会做串口输出,执行对应操作。
在进行通信时要注意非远程配置 避免产生 这两个字节
父节点
父节点由协调器或者路由器担任,单个协调器或者路由器最大管理终端数量(child_count)上限为50个。
直流稳压电源供电,电源纹波系数尽量小,可靠接地。
供电电路推荐保留30%以上余量。
远离电源、高频走线、变压器等电磁干扰大的部分
高频数字、高频模拟走线、电源尽量避免在模块下方
原理物理层同为2.4g的协议,天线最好垂直向上。
模块天线上下以及左右1cm之内尽量将PCB挖空。
协调器
路由器
终端(非休眠模式)
终端(休眠模式)
数据帧头:0xAA 0xBB(避免特殊数据触发模块串口指令)
数据帧尾:0xBB 0xAA
数据内容:
正常工作状态:本节点功能(角色)、本节点状态、本节点编号(空间位置)、被主机记录状态查询(间隔)、采集到的数据、本机的状态(电量等)
初始化网络状态:本机MAC地址、短地址(短点播自带)、正常状态的一次完整数据;
同时主机存储各个节点的短地址和MAC地址,记录对应节点信息。
网络初始化最后:各个从机查询主机是否记录节点信息;正常工作间隔查询 (这个可不做)
数据输出模式:数据+短地址;
数据发送模式:短地址点播、广播(仅主机和路由器允许)、组播(按上下楼层分组节点)
主机唤醒从机:
全部唤醒:广播发出唤醒指令,接收到指令的节点保持非休眠状态并响应主机。直到主机发出唤醒解除指令,返回ACK信号。(接触考虑做两次握手)
唤醒过程中主机暂存从机唤醒状态。
部分唤醒:主机从记录的节点信息查找对应短地址,单独唤醒,步骤同上。
目前UI方面相对不紧张,数据排版等设置待定,优先解决底层功能。(2021年10月17日)
计划使用Jansson库(Keil的官方库)或者cJson库;推荐使用Jansson,因为GitHub辣鸡校园网上不去。
Keil官方Pack的下载地址:Third-Party Software Packs (keil.com)
进度:已经实现了对Json的打包和解包(基于Jansson),能实现对json的嵌套、递归解析,测试代码已经push。
注意:
重要:
四个引脚:5V,GND,TX,RX
自然环境中CO2浓度是400ppm,传感器测量范围0-5000ppm,分辨率1ppm,工作电压5V,串口收发数据,波特率9600,数据位8,停止位1,无校验位。我们应该只需要用到问询模式,单片机发送一次测量指令,模块发回一次测量结果。格式是XXXX+PPM,返回的数据直接使用。
四个引脚:TX,RX,GND,VCC
养鸡场中的氨气浓度最好不超过20ppm,传感器测量范围0-100ppm,分辨率0.01ppm,工作电压5V和3.3V都可以,串口收发数据,波特率9600,数据位8,停止位1,无校验位。只用问询模式,单片机发送一次测量指令,模块发回一次测量结果。返回的一帧数据需要解析,解析后的格式是XXXX+PPM。
五个引脚:VCC,SCL,SDA,GND,ADDR (使用时ADDR要接地)
IIC通信,得到传感器发来的数据处理后就是光照度。
四个引脚:VCC,SDA,NA(悬空),GND
数据传输只用到SDA一根线,得到传感器的数据需要处理,精度不是很高,温度3℃以内误差,湿度似乎只能精确到整数位
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。