使用XBee无线电进行数字和模拟采样 

XBee无线电具有多条I / O线,可用于收集数字或模拟数据,然后将该数据传输到另一个XBee进行解释。 由于样本数据始终以API格式提供,因此即使了解其他XBee API帧,尝试理解接收的样本帧也会令人生畏。 本文应有助于理解如何生成样本数据并正确解释结果。

一、通用信息 

ADC电压

XBee无线电上的ADC为10位,提供0到1023(0x03FF)的分辨率。 每个XBee对可接受的ADC电压范围有不同的要求。 有关您在设计中使用的XBee,请参阅下面的产品手册或下表。 无论您选择哪种XBee,任何引脚上的电压都不得超过3.3V,否则会损坏无线电模块。

可编程XBees有自己独特的要求,并且不受本文全文的约束。 此XBee上的辅助微控制器连接到ADC引脚而不是RF处理器。 如果您使用此版本,请参阅产品手册中的引脚说明和信息。* 1系列XBee(802.15.4和DigiMesh 2.4),XBee-Pro 900和XBee-Pro 868具有必须按顺序连接的VREF引脚 使用ADC样本。 通常,它连接到VCC,因此ADC范围介于0和3.3V之间。 即使您没有使用需要VREF的XBee,也建议将VREF连接到VCC以提供与其他XBees的兼容性。 

上拉和下拉电阻

所有XBee无线电都在I / O和其他线路上都有上拉电阻。 默认情况下,每个引脚都使能上拉电阻,但可以使用PR参数禁用或启用上拉电阻。 有些XBees可以选择使用下拉电阻,PD参数用于确定电阻的方向,无论是上拉电阻还是下拉电阻。 PR和PD命令都是位域掩码。 由于每个无线电对PR和PD都有不同的可接受值范围,请参考各产品手册以了解这些位域掩码的布局。

以下是上拉和下拉电阻值:

 

警告:PR参数不仅影响I / O线。 即使您希望禁用无线电上的所有上拉电阻,也必须保留PR = 0x80。 这将使DIN引脚上的上拉电阻保持有效。 如果您将DIN悬空,则模块将在启动时以及使用循环睡眠时的每个唤醒期间进入命令模式。 这将极大地影响电池寿命和无线电稳定性。


二、如何采样数据

有两种方法可以采样数据:自动采样或查询。 通过自动采样,无线电可以定期(基于采样率)或在一个或多个数字引脚上检测到变化时采样。 这将对XBee的I / O线进行采样,并将该样本传输到您使用目标地址参数指定的另一个XBee。 通过查询采样,一个无线电使用远程AT命令从另一个XBee请求采样数据。 

使用采样率(IR)自动采样

通过IR参数设置,无线电将周期性地采样所有设置为输入的I / O线,并将采样数据发送到DH和DL指定的目标XBee。 可以设置最大采样率,尽管IR参数允许每个样本低至1ms的值,低于无线电处理器的能力将导致不正确的值和丢失的样本。

最高采样率:

 

示例:采样率非常适用于循环睡眠模式,因为无线电将在每个唤醒周期采样一次并立即返回睡眠状态。 如果每个唤醒周期需要多个样本,则需要修改SO(睡眠选项)和ST(睡眠前的时间)参数。 

配置示例:

我想每分钟对ADC1,DIO2和DIO3进行一次采样,并将样本发送到特定的无线电。 为了延长电池寿命,无线电应该每个唤醒周期只采样一次。

配置如下:

DH=0x0013A200

DL = 0x12345678(收集器节点的地址)

D1 = 0x02(ADC)

D2 = 0x03(数字输入)

D3 = 0x03(数字输入)

IR = 0x200(512ms)

SM = 0x04(循环睡眠)

SP = 0x1770(60秒)

通过这种配置,无线电将每分钟唤醒一次,采样D1作为ADC,采样D2和采样D3作为数字输入,并且在返回睡眠之前用地址0013A200 12345678将单个采样发送到无线电。IR参数不会超过无线电的唤醒周期(这取决于无线电,但是根据默认设置,它只会是几毫秒),所以将只取一个样本,并且按照睡眠周期而不是采样率间隔的定义,每分钟在空中传送一次。 

利用变化检测(IC)自动采样

IC(数字IO变化检测)参数是位域掩码,允许无线电监视指定的数字I / O线。 当在这些引脚上检测到更改(边沿触发)时,无线电将对设置为输入的所有I / O线进行采样,并将采样数据发送到DH和DL指定的目标XBee。

更改检测不适用于睡眠模式,应与非睡眠配置中的无线电一起使用。 这背后的原因是受监控引脚上的边沿转换必须在无线电唤醒时发生。 例如,如果DIO5用作变化检测,并且在唤醒期间引脚为高电平,但在无线电处于休眠状态时转换为低电平,则未检测到边沿且不会生成样本。 在采样频率方面,变化检测与IR具有相同的限制。

IC的位域掩码是从0x0到0xFFFF的2字节值,定义如下:
 

配置:例如:

我想监视DIO3和DIO5是否有任何变化,如果检测到更改,则将ADC1,ADC2,DIO3,DIO4和DIO5的样本传输到特定的无线电。

DH=0x0013A200

DL = 0x12345678(收集器节点的地址)

D1 = 0x02(ADC)

D2 = 0x02(ADC)

D3 = 0x03(数字输入)

D4 = 0x03(数字输入)

D5 = 0x03(数字输入)

IC = 0x40(二进制:0010 1000)

SM = 0x00(始终开启)

无线电将持续监控DIO3和DIO5的状态,当在这些引脚上看到从高电平变为低电平或从低电平变为高电平时,无线电将对所有设置为输入的I / O线进行采样并传输单个 采样到地址为0013A200 12345678的收音机。

请注意,您可以结合采样率和更改检测。 这在定期采样需要较长间隔的情况下可能很有用,但如果在特定引脚上检测到更改,您希望能够采用瞬时采样。 

远程查询采样(IS)

要远程请求样本,我们需要向远程无线电发出IS命令。 为了做到这一点,请求样本的XBee必须启用API,因为请求是作为“远程AT命令”发送的。 实际采样I / O线的无线电不必处于API模式。

  

l  远程AT命令(帧类型0x17)被发送到本地无线电,远程无线电作为预期接收者。 发送的命令是IS,用于请求样本。

l  远程无线电接收命令并触发设置为输入的I / O线样本。

l  生成AT命令响应帧(0x97)并通过空中发送回本地无线电,其包含所有样本数据。

          这是需要传递到本地无线电的远程AT命令帧的格式:

 

示例:可以使用最新版本的XCTU生成此帧。

如何使用最新版本的XCTU从远程XBee请求样本:

1.   打开连接了API XBee的X-CTU。 远程XBee必须至少定义一个输入才能获取样本。 例如,D1 = 2,D2 = 2,D3 = 3将为您提供两个模拟值和一个数字值。

 

2.   打开终端选项卡,然后打开串行连接。

3.   单击“发送帧”部分中的+图标以添加新帧。

4.   在“帧名称”字段中键入名称,然后单击“使用帧生成器”工具创建帧。

5.   在“帧类型”列表中,选择“0x17  - 远程AT命令”。

6.   对于64位dest。 地址,键入远程节点的地址。

7.   对于AT命令,在Hex字段中键入49 53。 或者,单击“ASCII”选项并键入IS。

8.   单击“确定”将API框架输入“添加API”窗口。

 
   

9.   单击添加帧。

10.  选择远程AT命令帧后,单击“发送所选帧”。

11.  您现在应该在Frames日志中有两个项目,一个用于传出远程AT命令请求,另一个用于传入远程命令响应。

12.  通过单击Response框架,您可以看到框架详细信息,其中包含我们的示例数据:

Remote Command Response
7E 00 17 97 01 00 13 A2 00 40 33 1C F9 FF 0B 49 53 00 01 00 00 06 02 10 02 0D 5C
    - 
Start delimiter: 7E
    - 
Length: 00 17 (23)
    - 
Frame type: 97 (Remote Command Response)
    - 
Frame ID: 01 (1)
    - 
64-bit source address: 00 13 A2 00 40 33 1C F9
    - 
16-bit source address: FF 0B
    - 
AT Command: 49 53 (IS)
    - 
Status: 00 (Status OK)
    - 
Response: 01 00 00 06 02 10 02 0D (This is our sample data)
    - 
Checksum: 5C

在下一节中,我们将介绍如何解释此响应帧并解密样本数据。


     三、理解收到的采样数据 

      接收到自动采样帧

使用采样率(IR)或更改检测(IC)自动采集的样本将作为API帧到达。 帧类型为0x92(IO数据采样Rx指示符)。 此单帧中包含数字和模拟掩码,指示哪些I / O线配置为输入,以及我们的实际样本数据。 有很多信息,解析有用信息可能会令人生畏,因此我们将在这里解密一个示例框架。

这是一个示例帧:

7E 00 16 92 00 13 A2 00 40 4C 0E BE 61 59 01 01 00 18 03 00 10 02 2F 01 FE 49

我们将解析帧并识别每个字段以及实际样本数据所在的位置:

 

*数字通道掩码和数字样本字段是位域掩码,表示哪些I / O线设置为数字输入:

 

在上面的示例帧中,数字通道掩码是0x0018 = 00011000b。 因此,DIO3和DIO4在采样XBee上设置为数字输入。 数字样本字段为0x0010 = 00010000b。 因此DIO4为高电平,DIO3为低电平。

**模拟通道掩码是位域掩码,表示哪些I / O线被设置为ADC:

在上面的示例帧中,模拟通道掩码是0x03 = 0011b。 因此,AD0和AD1在采样XBee上设置为ADC。 因此,我们知道帧中包含两个2字节模拟样本。 AD0是第一个样本,为0x022F,第二个样本为AD2,为0x01FE。 

查询采样

当使用来自远程AT命令(0x17)帧的IS命令查询样本时,将生成响应帧。 此响应与自动样本的响应非常相似,但它作为远程命令响应帧(0x97)接收。

示例API帧:

7E 00 1B 97 01 00 13 A2 00 40 33 1C F9 79 05 49 53 00 01 18 10 0E 08 00 00 5A 01 AE 02 0C BB

我们将解析框架并识别每个字段以及实际样本数据所在的位置:

 

*数字通道掩码和数字样本字段是位域掩码,表示哪些I / O线设置为数字输入: 

**模拟通道掩码是位域掩码,指示哪些I / O线设置为ADC:在上面的示例帧中,数字通道掩码为0x1810 = 1100000010000b。 因此,DIO4,DIO11和DIO12在采样XBee上设置为数字输入。 数字样本字段为0x0800 = 100000000000b。 因此DI11为高电平,DIO4和DIo12为低电平。

 

在上面的示例帧中,模拟通道掩码是0x0E = 1110b。 因此,AD1,AD2和AD3在采样XBee上设置为ADC。 结果,我们知道帧中包含三个2字节模拟样本。 AD1是第一个样本,是0x005A,第二个样本是AD2,它是0x01AE,第三个样本是AD3,它是0x020C。 

将采样数据转换为有用的测量

对于模拟样本,您将收到十六进制格式的2字节值。 所有XBe都有一个10位ADC,因此可接受的范围将从0x0000到0x03FF。 为了将此值转换为有用的电压电平,我们需要应用以下公式:

ADC/1023 (VREF) = Voltage

例:使用ZigBee XBee,我们收到的ADC值为0x1AE。 首先,我们将十六进制值转换为十进制(0x1AE = 430)。 ZigBee使用1.2V参考,因此我们可以按如下方式应用公式:

430/1023(1.2V)= 504.4mV 

解释传感器适配器中的数据

Digi有多种适配器,可用于取样或内置传感器以实现其他功能。 带适配器的API帧结构与我们所涵盖的相同,但是将采样模拟值转换为有用测量的公式是不同的。 由于所有这些适配器都使用ZigBee XBees,因此公式中的VREF为1200(1.2V)。

LTH传感器

光:ADC1

温度:ADC2

湿度:ADC3

公式:

光:Lux =(ADC1 / 1023)* 1200

温度:Temp_C =((ADC2 / 1023)* 1200) -  500)/ 10

湿度:(((ADC3 / 1023)* 1200)* 108.2 / 33.2)/ 5000  -  0.16)/0.0062)

例:如果我们收到具有以下值的样本:ADC1 = 0x002D,ADC2 = 0x0269,ADC3 = 0x01CE,结果将为:

光= 52.7859勒克斯

温度= 22.3754摄氏度

湿度= 31.1673 RH 

墙插路由器

光:ADC1

温度:ADC2

公式:

光:Lux =(ADC1 / 1023)* 1200

温度:Temp_C =((ADC2 / 1023)* 1200) -  500)/ 10

例:如果我们收到具有以下值的样本:ADC1 = 0x002E,ADC2 = 0x02A1,结果将为:

光= 53.9063勒克斯

温度= 24.8672摄氏度 

智能插头

光:ADC1

温度:ADC2

电流:ADC3

公式:

光:Lux =(ADC1 / 1023)* 1200

温度:Temp_C =((ADC2 / 1023)* 1200) -  500)/ 10

当前:((((ADC3 / 1023)* 1200)*(156/47) -  520)/ 180 * 0.7071)

示例:如果我们收到具有以下值的样本:ADC1 = 0x0010,ADC2 = 0x02B9,ADC3 = 0x01FE,结果将为:

光= 18.79勒克斯

温度= 31.6797摄氏度

电流= 5.74994 A. 

模拟适配器(0  -  10V配置)

终端1:ADC0

终端2:ADC1

终端3:ADC2

终端4:ADC3

式:电压=((ADC * 1.2)/ 1023 /(3.3 / 28.2))

示例:如果我们收到具有以下值的样本:ADC0 = 0x0096,ADC1 = 0x011,ADC2 = 0x000B,ADC3 = 0x01F6,结果将为:

终端1:1.5V

终端2:170mV

终端3:110mV

终端4:5.03V

XBee模块数字和模拟采样详解相关推荐

  1. 【java】JDK安全模块JCE核心Cipher使用详解

    1.概述 转载:JDK安全模块JCE核心Cipher使用详解 2.前提 javax.crypto.Cipher,翻译为密码,其实叫做密码器更加合适.Cipher是JCA(Java Cryptograp ...

  2. 基于多相滤波器的数字信道化算法详解(Python, Verilog代码已开源)

    基于多相滤波器的数字信道化算法详解 推导过程 总结 仿真 本文详细介绍了基于多相滤波器的数字信道化算法的推导过程, 如果您在阅读的过程中发现算法推导过程中有任何错误, 请不吝指出. 此外, 进入我的G ...

  3. 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】

    卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...

  4. python的shutil模块是内置的_Python之shutil模块11个常用函数详解,python内置函数是什么...

    Python之shutil模块11个常用函数详解,python内置函数是什么 shutil 是 Python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建.删除.查 ...

  5. 蓝桥杯 Java B组 省赛决赛模拟赛 详解及小结汇总+题目下载【2013年(第4届)~2021年(第12届)】

    蓝桥杯 Java B组 省赛决赛模拟赛 详解及小结汇总+题目下载[2013年(第4届)~2021年(第12届)] 百度网盘-CSDN蓝桥杯资料(真题PDF+其它资料)   提取码:6666 2013年 ...

  6. ES6模块之export和import详解

    ES6模块之export和import详解 ES6中的模块即使一个包含JS代码的文件,在这个模块中所有的变量都是对其他模块不可见的,除非我们导出它.ES6的模块系统大致分为导出(export)和导入( ...

  7. 【 数据集加载 DatasetDataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10)】

    数据集加载 Dataset&DataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10) 模块介绍 在本节中没有关于数学原理的相关介绍,使用的数据集和类型 ...

  8. 【 线性回归 Linear-Regression torch模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人(4/10)】

    torch模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 深度学习 Pytorch笔记 B站刘二大人(4/10) 介绍 至此开始,深度学习模型构建的预备知识已经完全准备完毕. 从本章开 ...

  9. python调用包的路径_Python3 模块、包调用路径详解

    如下所示: ''' 以下代码均为讲解,不能实际操作 ''' ''' 博客园 Infi_chu ''' ''' 模块的优点: 1.高可维护性 2.可以大大减少编写的代码量 模块一共有三种: 1.Pyth ...

最新文章

  1. reboot 百度网盘资源
  2. 传感器的未来: 10年后我们将会生活在一个极端透明的世界
  3. js 判断变量是否有值返回bool_有没有办法可以获得javascript函数返回值里的bool值,代码如下:...
  4. 基于汇编语言的电子琴设计(1)
  5. 【ABAP】带Excel附件的邮件发送功能
  6. z.lua 1.7.0 发布,快速回到历史路径,支持 ranger / fz
  7. linux在芯片设计与实现,基于Linux的Atheros无线芯片网卡驱动的设计与实现
  8. 软件研发成本估算过程之估算软件规模概述
  9. git 命令commit_Git Commit命令解释
  10. 验证GaussDB T 闪回事务查询功能;闪回表功能强劲闪回TRUNCATE
  11. 批处理框架 Spring Batch,数据迁移量过大如何保证内存?
  12. gnome2 恢复默认 panel
  13. MySQL 效能监控工具--mysqlreport -转
  14. Java面试面经大合集(含答案),大厂越来越简单进了,建议收藏
  15. java json接口加密解密
  16. android 哈哈镜,Carnival Mirror App(哈哈镜模拟器)
  17. 《生物信息学》阅读笔记 (一):生物信息学的概念及发展历史
  18. 别再用QQ的破数字邮箱了,你其实还有注册姓名全拼微软邮箱的机会
  19. 多开助手完美版,APP一键多开,支持安卓10
  20. 快讯分类_如何掌握Google快讯

热门文章

  1. 搭搭云 新世代超级应用平台 JNPF快速开发平台框架
  2. python实现秒杀系统_双十一买买买,教你用Python实现秒杀系统
  3. H3Cs5500堆叠配置
  4. 全国计算机等级考试二级教程——c语言程序设计》,格式为doc.,全国计算机等级考试二级笔试样卷C语言程序设计样本.doc...
  5. 使用python实现EXCEL内容批量生成图片和批量拼接图片并按照指定目录存放
  6. 数学2600年,欧拉凭什么能当上“大王”?
  7. Vscode黑色主题很难看到鼠标
  8. 小家电开发工具元器件清单
  9. 中文乱码解决及中文编码成UTF8
  10. 详解应用图标、启动图片和iPhone屏幕分辨率