为 Nordic Thingy:91 蜂窝式原型构建开发平台编写自定义功能

我真的很喜欢Nordic thingy系列产品。它们为制作原型机提供平台,内置了一堆传感器,外加一块电池。在我以前作为硬件顾问的生活中,我已经能够为客户制作整个用例的原型。Thingy91 蜂窝式开发平台,包括nRF9160 SIP, Cat-M1和NB-IOT功能调制解调器+微控制器。有大量的传感器,如BoschBME680Rohm BH1749用于天气/气体传感,用于光和颜色检测,以及ADIADXL362加速度计用于传感方向和运动/跌倒检测。

来自 Nordic 的入门图像很棒,尤其是 Asset Tracker V2,它预装在 Thingy91上。这是一个超级复杂的演示,可以让你使用这个现成的设备创建一个设备跟踪器。仅供参考,它不是一个超级离散的设备跟踪器,因为它有一个亮橙色的外壳…你应该不会在短时间内使用它进行间谍活动! :grinning:

准备好第二个演示了吗?

一旦你想要移动到第一个演示之外,通常由用户开始从nRF Connect SDK中包含的zephyrnrf 文件夹中拼凑示例。我已经做过几次了,但我想有另一个类似于资产跟踪器V2的“一体化”演示,但主要利用传感器和其他有趣的东西。这个东西(y)我们还能做什么呢?

我最喜欢的未使用功能

偷看了一下原理图后,我注意到主板上有一个蜂鸣器。但我能找到的样品都没有利用 Thingy91 上的压电传感器(又名蜂鸣器)。这是一个由PWM直接驱动的相当通用的组件,所以我想一定是有人把它做成了一个小小的音乐设备……对吧?结果是没有,还没有人做过。这就是我的第一个任务!

在我的同事 Mike 的帮助下,我们能够创建一个将歌曲输入代码的框架,这样我们就可以轻松地将乐谱翻译成一系列近似歌曲的哔哔声。看看下面的演示视频,看看它的实际效果

将其全部连接到一个数据平台上

所有这些传感器数据和有趣的音乐制作都很棒,但我们应该怎么做呢?我们决定使用我们的Golioth SDK(它与Nordic nRF Connect SDK一起工作),以便在现场轻松地从该蜂窝设备中推送和提取数据。下面显示的演示和代码概述了我们如何构建程序以与Golioth提供的各种服务进行交互。

收集传感器数据

对于Thingy91来说,这是最明显的一个,因为它上面有很多很棒的传感器。所有的传感器都在Zephyr DeviceTree中,所以这意味着我们只需要在代码中启用它们,就可以利用它们产生的数据。我们能够在设备上的传感器读取循环期间从传感器中提取数据,然后格式化该数据以发送到云端:

它使用Golioth的LightDB流服务,这是一个时间序列数据库。一旦将数据推送到LightDB流,它就会以格式化数字的形式显示在云上,你可以在Golioth控制台上显示该数字,也可以通过可视化平台的REST API进行查询。

设备上的控制功能

我们现在的设备上都有这些歌曲,我们如何触发它们响起呢?远程过程调用允许用户从云端向下发送命令到特定的设备,并告诉它在设备上运行一个功能。在这种情况下,我们告诉它播放一首歌曲,但我们也可以传递我们希望它播放的歌曲。

改变设置

Thingy91上的led灯是与设备交互的关键方式,因为它没有屏幕,也没有标准输出,让用户拿着设备了解里面发生了什么。所以我们使用led灯!这是资产追踪器V2的一个关键特性。如果我想具体控制led呢?Golioth设置服务允许你在云中设置任意变量,并将它们推送到现场的设备上。在这种情况下,我们设置了红色,绿色和蓝色的颜色强度,以及led灯褪色的速度。LED淡出发生在一个线程内,和风做得很好,因为它是一个实时操作系统。

试用二进制

我们可以做很多其他的事情,但为什么不自己尝试一下呢?我们不仅编写并发布了下面视频中显示的代码,而且还创建了一个二进制文件,这样你就可以在Thingy91上尝试这些函数,而无需编写任何代码。就像资产追踪器V2一样,我们认为这让你有机会了解Thingy91可以做什么,同时也可以尝试Golioth这样的设备管理平台。