所有关于电路
项目

如何使用Microchip的RN487x蓝牙模块构建模拟传感器和模拟输出

2019年10月21日通过亚伦汉森

学习如何使用微芯片BLE模块连接模拟输入(电位器)和输出(LED)。

这是我为演示如何使用而创建的项目系列中的第三部分Microchip的RN487x蓝牙模块

我们正在为这四个任务中的每一个创建功能强大的蓝牙连接外设;一种数字传感器、数字控制、模拟传感器和模拟控制。每个示例都包括一个标称电路和RN487x上必需的配置。还提供了一个用于运行外围设备的简单应用程序脚本。

在第一部分中,我给出了一个重要的所有外设的设计概述。我们已经在第2部分中覆盖了示例外设,这是处理两个的第2部分一个数字输入和数字控制的项目

这里,在第3部分中,我们将直接进入第三和第四示例,模拟传感器和模拟控制。

项目三:模拟传感器

我们的模拟传感器将由电位计代表。

模拟输入电位器

我们的设计模式有三个组成部分需要提供:

  • 硬件:提供模拟输入信号的特定任务硬件
  • 配置:RN487x模块命令在数据库中分配一个变量,并将信号映射到该变量
  • 应用程序:脚本在工作站上,请求传感器值并显示数字化值

以下是组件细分。

模拟输入硬件

“模拟输入”的作用仅由电位器提供;RV1。RN487x模块数据表指出完整的A/D范围是从VCC到GND,因此我们据此来接线电位器。

模拟输入项目的原理图

模拟输入外设项目的原理图。点击放大。

因为我们只管理一个信号,而且我们没有使用PWM,所以我们选择了RN4871。电路可以由一对AAA电池甚至一个投币电池供电。

其余电路元件为:

  • C1:旁路电容稳定功率
  • R1 C2:上电时处理器复位的延迟
  • j - 1:用于配置的串口

模拟输入配置

在为这个示例创建配置之前,请确保模块处于已知状态。这在附录关于常用初始化的部分不要跳过这一步!

我们只需要数据库中的一个特征来表示我们的数字化值。所以我们在服务中创建了一个服务和一个特征。

两个相应的命令是:

PS, 59 c88760536411e7b114b2f933d5fe66 PC, 59 c889e0536411e7b114b2f933d5fe66, 02年02

第一个命令PS创建服务。第二个命令PC创建了这个特性。

在这两个命令中,第一个参数是标识符,它允许我们的外设存在于其他蓝牙外设的世界中,并且仍然被唯一地访问。该参数必须符合UUID标准。您可以使用所示的示例值。它也很容易创建任意数量的标准uuid

在PC命令中,第二个参数告诉蓝牙层数据库中的变化将如何到达客户端。在本例中,参数(02)表示应用程序将根据需要读取该值。

最后,在PC命令中,第三个参数以字节为单位定义值的大小;本例中的“02”是因为A/D端口提供16位结果(全范围是0x0000-0x0E10)。

我们配置的脚本部分如下所示:

@ tmr2 $VAR1=@,2 SHW,0072,$VAR1 SM, 200000 @ tmr2 $VAR1=@,2 SHW,0072,$VAR1 SM, 200000

这个脚本使A/D转换器每10ms对信号引脚进行采样,并将数字化值存入数据库。我们使用的脚本特性在这个例子中是唯一的,那就是定时器。

的方法:

  • @conn:当客户端连接时运行。它开始定时器。
  • @DISCON:当客户端断开连接时运行。它会停止计时器。
  • @ tmr2:当计时器到期时运行。它将样本传输到数据库。RN487x计时器是“一次性”计时器,所以我们还需要重新启动计时器。

只要客户端连接,这个脚本就会使模块保持忙碌状态,并且电源要求很高。最好在客户端设计中考虑这一点。客户端只在需要采集样品时才连接外设。

模拟输入应用程序

Python脚本是meter.py,可以找到在这里。编辑脚本并将示例MAC地址替换为设备的MAC地址。然后,为了练习这个示例,只需将power应用到外设,然后在具有适当蓝牙功能的系统上运行脚本。(正如我上面提到的那样,您可以在Linux中引用此设置的帮助。)

当连接到外围设备时,脚本将发出消息来指示进度。连接外设后,脚本将读取并显示每隔半秒的新样本。

这个脚本很短,包含了所有函数块和GATT API调用的注释。

接下来,我们将遵循相同的设计模式来创建模拟控件。

项目4:模拟控制

与上一篇文章中的项目2一样,输出将由一个LED表示。

我们的设计模式有三个组成部分需要提供:

  • 硬件:特定于任务的硬件来表达模拟信号
  • 配置:RN487x模块命令在数据库中分配一个变量,并将该变量映射到模拟信号
  • 应用程序:在工作站的脚本,以提供一个变化的16位值,指定所需的模拟信号水平

以下是组件细分。

模拟控制硬件

“模拟输出”的作用由一个LED提供;D1。RN4870模块将在这个引脚上产生PWM(脉宽调制)方波输出。这是一种常用的单线表示模拟值的方法,也可以用一个简单的低通滤波器转换成模拟电压。

模拟输出外设项目的原理图

模拟输出外设项目的原理图。点击放大。

RN4871没有模拟输出选项,这就是我们在本例中使用4870的原因。将PWM信号直接连接到LED上,我们就可以看到模拟范围;一个昏暗的LED用于低值,一个明亮的LED用于高值,以此类推。像其他三个项目一样,这个电路也可以由一对简单的投币电池的AAA电池供电。

其余电路元件为:

  • C1:旁路电容稳定功率
  • R1 C2:上电时处理器复位的延迟
  • j - 1:用于配置的串口

模拟控制配置

在为这个示例创建配置之前,请确保模块处于已知状态。这在关于通用初始化的附录部分中进行了描述。不要跳过这一步!

我们只需要一个特征在数据库中代表传感器状态。所以我们在服务中创建了一个服务和一个特征。两个相应的命令是:

PS, 59 c88760536411e7b114b2f933d5fe66 PC, 59 c889e0536411e7b114b2f933d5fe66, 08年,14

第一个命令PS创建服务。第二个命令PC创建了这个特性。在这两个命令中,第一个参数是标识符,它允许我们的外设存在于其他蓝牙外设的世界中,并且仍然被唯一地访问。该参数必须符合UUID标准。您可以使用所示的示例值。正如我上面提到的,你也可以创建您需要的任意多个标准uuid

在PC命令中,第二个参数告诉蓝牙层如何改变值应该到达客户端。在这种情况下,参数(08)表示当一个值被更改时,外围设备必须向客户端发送一个确认。

最后,在PC命令中,第三个参数以字节为单位定义值的大小;在本例中是' 14 '字节。尽管完整的PWM命令可以用4个字节来表示,但在本例中我们使用的是远程函数调用,这需要更多的空间。这将在应用程序脚本中进一步解释。

我们配置的脚本部分如下所示:

@pw_on 72 =?func1?func1 [,2,2,$ pm1,$ pm2

此脚本中有两种方法,第一个以'@'和2nd为'?'的第一个前缀。每种方法都在特定的系统事件上运行,并且只有一个命令:

  • @pw_on:在接通电源的运行。该方法将函数?FUNC1与数据库变量关联起来。相关的DB变量由特征句柄72指定。
  • ? FUNC1:只要客户端将值写入由句句话0072标识的DB变量时运行。方法由客户端写入DB变量的值来确定。该方法采用这两个变量$ PM1和$ PM2,并使用它们来控制PWM信号的频率和占空比。这是连接到LED的信号。

模拟控制应用程序

Python脚本是卷.py,可以找到在这里。编辑脚本并将示例MAC地址替换为设备的MAC地址。然后,为了练习这个示例,只需将power应用到外设,然后在具有适当蓝牙功能的系统上运行脚本。(请参阅第1部分的附录,了解如何在Linux中进行这种设置。)

当连接到外围设备时,脚本将发出消息来指示进度。连接外围设备后,脚本将向外围设备发送一个范围的值。数值将缓慢增加,然后减少。因此,LED会逐渐变亮,然后变暗。

这个脚本很短,包含了所有函数块和GATT API调用的注释。我们使用的BLE功能是此示例的唯一远程函数调用

项目的视频

现在我们已经组装了所有四个外围设备项目,您可以查看下面的视频,以便在行动中查看它们:

下一步

我们现在拥有所有四种外设类型的完整示例。如果您决定潜入并创建一个或多个这些系统,则以下考虑可能会有所帮助。

制造选项

的芯片RN487x发展局可以用于这些示例中的任何一个,但它也有许多我们正在创建的系统所不需要的特性。

手工焊接设备和测试电路到原型PCB上可能是最便宜的选择。这些模块用于表面安装,因此小部件技能和温度管理对这种方法至关重要。本系列中的所有示例都使用此表单的原型进行了验证。

公有特征与私有特征

我们用于识别本系列中的特征的128位UUID被称为蓝牙标准中的私有特性。私有特性通常仅在客户端应用程序的域中有用,并且由单个硬件/软件供应商开发的外围设备。替代方案是具有公开理解的定义的16位特征,并在蓝牙SIG中注册。

一个例子是风速:

名称:视分配风速编号:0x2A72

您可以看到更多已建立的公众特征定义在这里。还可以使用SIG注册新定义。在使用公共特性的情况下,可能的不同硬件和软件供应商之间的互操作性成为可能。RN487X模块支持公共特征。

同时控制和感觉信号

虽然这些例子都只涉及单个硬件信号,但这并不是该模块的限制。如前所述,两个RN487x模块都有多个GPIO引脚,它们可以同时使用。pin绑定脚本可以连接多个pin。NVRAM模块为多种服务和特性定义提供了空间。当然,客户机应用程序可以管理多个特征和相关事件,所有这些都在一个设备连接的范围内。


我关于RN487x蓝牙模块的系列文章到此结束。我希望您已经有了自己尝试这些外围设备所需的东西。请在下面的评论中分享你的经验和问题。

3评论
  • W
    Wedivetri 2019年11月22日

    嘿,你的工作对我来说非常复杂,但如果可能的话,你可以指导我,让我可以研究它,
    我住在公寓楼里,有一个系统,当客人来的时候,他们拨打我的公寓号码,然后我拿起电话,然后我按“回答”键,我的公寓的门就打开了
    我需要什么?
    我想建立一个董事会(或购买如果有的话)可以与我的WiFi联系,也可以用我的智能手机来控制并打开门,所以如果有任何想法可以帮助我或者可以帮助我的艾伦汉森我必须寻找那种部门的方式,请告诉我。
    由于西蒙

    喜欢。 回复
    • 亚伦汉森1 2019年12月1日
      你好,西蒙。我认为你的项目面临的主要挑战是了解如何正确有效地与你的建筑的安全系统相连接。我不清楚当有人打电话到你的公寓时,你接的是什么电话。公寓里有传统的有线电话吗?它可能与大楼的安全系统有额外的连接。对不起,我对这类安保系统的细节不熟悉。最好的运气。感谢您对这篇文章的兴趣。——亚伦
      喜欢。 回复
  • Jaytechng. 2021年3月04日

    好的,这是惊人的!
    我想自己做一个,但我不知道怎么开始。
    我对机电是新手,我只是想要一个导师来指导我的基本知识。
    你能帮我吗?

    喜欢。 回复