×

辅助通讯器和智能夜灯

消耗积分:0 | 格式:zip | 大小:2.74 MB | 2022-10-28

362163

分享资料个

描述

注意:由于#cloudgames2022 提交截止日期,我没有时间添加我设计的所有功能。待定功能标记TBR (待发布),一些视觉效果的“装扮”也将被标记。在我的日常工作和我的激情之间无休止的战斗中,将继续重温这篇文章

#CLOUDGAMES2022

非常感谢 Arduino 让我参与这些 cloudgames2022。通过 Opla IoT Kit 和始终在线的 Arduino 社区,我了解了音频再现、数模转换、与云服务的集成、PIR 传感器、光元素中的颜色、TFT 屏幕、UNIX 时间戳等等。在这篇文章中,我分享了我对这些以及我在过去一年中学到的其他主题的研究和发现(以及许多链接)(自从我开始研究这个微电子兔子洞以来),希望为其他人提供同样的礼物:在生产有用的东西的同时学习的机会。

背景

该项目是使用技术为自闭症患者提供替代通信选项的另一项努力(请参阅我的电容式触摸和蓝牙信板)。认识到他们在发起互动时面临的挑战(“自闭症惯性”,一种影响他们意图的经常使人衰弱的困难),我将 Opla IoT 套件用作远程互动的预定义消息促进者(文本和语音)。

预定义消息通过多感官(即语音、文本和 RGB LED 序列)为自闭症个体提供可重复的体验,以尝试加速其熟悉、重复并因此加速其使用。发送给 Opla 运营商的消息可以针对特定事件或白天的时刻(例如“晚安儿子”、“我学校的努力感到自豪”、“你”等) 和那些使用 Opla 运营商作为来自主题的常规或重复消息发送到仪表板(即“我想要寿司”、“我高兴”、 ETC。)。

为了进一步提高对 Opla 载体的熟悉度并帮助自闭症患者将其变成自己的,我们添加了一些应用程序,例如智能夜灯。

和大多数与自闭症有关的事情一样,这是反复试验......

OPLA IOT 套件的增强功能

Opla IoT 套件基于 MKR IoT Carrier (备忘单)和 Arduino IoT Cloud (备忘单),并具有许多开箱即用的功能。但与每个微电子项目一样,每个用例都可以/将需要一些增强功能,因此我添加了两个新功能:

1. 手机定向通知当IoT Cloud 仪表板中的某些变量发生变化时, Arduino IoT 远程应用程序(iOS/Android) 不会产生通知,从而使您错过重要的阈值,或者在这种情况下,错过消息。

我开始研究 IFTTTClickSend的SMS 集成,以便在我的手机中接收 SMS 消息。虽然简单且实用,但问题在于在美国和加拿大以外(我在墨西哥),每条消息都涉及成本。

然后我测试了IoT Cloud 与 Telegram 的集成,这很容易实现,但由于它暗示了一个额外的应用程序,我为了更简单而放弃了它。

最后,我意识到 IFTTT 移动应用程序 (iOS) 确实会产生通知,因此通过IoT Cloud Webhook将 Arduino 仪表板与 IFTTT 小程序绑定是可行的方法。

这种方法有一个警告:物联网云仪表板上的 webhook会在任何变量上发生任何更改时被调用。无法进行过滤或选择,即如果事物有 10 个变量,则 webhook 将在启动时被调用10 次。解决方案 #1 是获得 IFTTT Pro 订阅,并在 IFTTT 小程序中添加带有 JavaScript 的过滤器。解决方案 #2 是在 MKR1010 的代码中对 IFTTT 服务器使用有针对性的 GET HTTP 语句(只需确保使用安全的 https 连接)。我想将其卸载到云端,但选项 2 更简单。

pYYBAGNYwXSANosNAACnDNsiaJk91.jpeg
手机上的 IFTTT 通知
 

因此,要创建您的 IFTTT 小程序,请从Maker Webhook开始,然后在文档下(仅在您免费创建 IFTTT 帐户后才会出现),您将获得您的密钥和 JSON 详细信息以添加到您的代码中。请务必访问他们的Connect API 文档以获取完整的详细信息。

2.运营商中播放预先录制的消息IoT Cloud 仪表板提供向运营商发送开放或预定义的文本消息。我添加了此音频功能,以在发生特定触发时播放存储在 SD 卡(库)中的预先录制的消息。

我将D 类单声道放大器连接到 DAC0 以发送 WAV 数据。但由于 DAC0 也用作载体的其中一个触摸传感器中的 A0,因此在检查传感器中的触摸事件时,载体代码的每个循环都会产生咔哒声。禁用 A0 上的触摸会限制运营商的功能,因此使用连接到 MKR1010 板的数字引脚 14 的放大器的关闭引脚(我没有使用分配给 D14 的运营商继电器)允许仅在播放时打开放大器信息。

对于这个用例,我发现了几个具有不同限制的音频库:

  • TMRpcm是最好的,但仅适用于 AVR MCU(即 UNO、MEGA、Nano Classic 等)
  • AudioZero可与我的模拟放大器和 SAMD MCU(即 MKR 系列、Nano 33 IoT 等)配合使用,但采样率仅为 8kHz,产生较差的语音声音。

从 DAC0 发送音频仅限于 8 位单声道 PCM WAV 格式(未压缩和模拟)。SamdAudioSD 库允许在 WAV 文件中使用 44.1 kHz 的采样率,从而提供可接受的语音质量。使用Audacity轻松制作、增强和转换预先录制的消息,这是一个了不起的开源音频编辑器和录音机。您还可以从Freesound添​​加各种声音和特殊效果

pYYBAGNYwXaAP4_zAAFRW63Fjz8590.jpg
大胆的Windows
 

预录消息的回放还允许在本地产生事件的反馈或确认,即当通过移动或触摸检测到存在时或当从载体发出消息时。下面是播放的子程序。

poYBAGNYwXmAOvp6AACTRYGqPzQ652.jpg
播放功能(下面提供完整代码)
 

IoT Cloud Dashboard for his Use Case的其他限制

  • “Messenger”类型的小部件(处理字符串)不识别转义序列(即\n),也不包含长字符串。结果:长字符串将被截断。
  • 如果接收到的字符串值(即“检测到存在”)与前一个值相同,即使在不同的时间间隔,也不会创建其接收实例。解决方法:将一个简单的时间戳添加到发送到小部件的字符串中以使其唯一。

消息功能

从运营商到仪表板的消息传递

  • 通过抓住或触摸载体来检测存在,然后向接收者的移动设备和物联网云仪表板发送远程通知,表明个人可能已准备好接收消息。
  • 通过 5 个触摸传感器选择预定义消息之一。触摸 时,播放所选文本的预录语音,作为消息发送的确认。(TBR)

从仪表板到运营商的消息传递

  • 从物联网云仪表板(PC 或移动设备)中,按相应按钮发送 4 条预定义消息中的任何一条。消息以文本形式在屏幕上接收,带有蜂鸣器和 LED 通知,并播放其分配的预先录制的消息。
  • 开放文本消息也可以发送给运营商,尽管除了简单的通知之外没有分配的预先录制的消息。
  • 每条消息都有一个独特的 GIF 图像或屏幕上显示的特征Opla UI 。(TBR)
pYYBAGNYwXyALUiqAACXjRDrj7o206.jpg
消息仪表板
 

智能小夜灯

智能夜灯服务考虑使用单独的仪表板来管理应打开服务的时间表以及用作夜灯的灯光类型(颜色和亮度)。如果检测到的房间亮度低于定义的阈值,则夜灯会在时间表内自动打开。这也有助于在白天或房间灯打开时节省电池使用量。

此外,该服务将使用带有过滤器的PIR 运动传感器,根据定义的时间范围内的大量检测来确定检测到的运动是否应被视为相关。这将有助于消除误报,例如当对象上床时(与对象醒着时相反)。发生这种情况时,该服务会将夜灯变为绿色:有一些研究表明灯光颜色如何影响睡眠

还要考虑使用 PIR 传感器的其他一些注意事项。关于灵敏度和阻塞时间的一些细微差别不容忽视。

为了选择夜灯颜色和亮度,我首先尝试使用与Color 小部件关联的CloudColor 变量(简单而优雅),但这些元素使用 HSV(色相饱和度值)配色方案,而 LED 灯条上运营商使用 RGB(红-绿-蓝;嗯,实际上是 BGR。参见 MKRIoTCarrier.h 的第 128 行)。运营商 LED 灯条的DotStar 库具有 HSV 到 RGB 的转换功能,但因为它是针对 RGB(不是 BGR)的,所以我无法及时让它工作。所以我为每种 RGB 颜色使用了一个单独的变量和滑块小部件。

poYBAGNYwX-AFLeQAACSyo8PdTQ518.jpg
智能灯仪表板
 

附加夜灯功能 (TBR)

  • 通过检测到的运动增加流明输出。
  • 使用RTCZeroRTC库和一个简单的子程序将 GMT(从物联网云获得)转换为本地时间(参见代码中的 updateLocalTime() )。
  • 在检测到定义的移动阈值后,播放预定义的消息(即“返回睡眠”等)并将通知发送到云和/或移动设备。

下一步是什么

随着项目的进展要添加的其他功能:

  • 电池监控读取 MKR1010 上的 ADC_Battery(可能通过BatterySense ),并在需要充电时通过仪表板和运营商的 TFT 屏幕进行报告。
  • 动画 GIF。这将增强载体在几个功能上对主体的适口性。迄今为止最好的选择是使用 Larry Bank 的AnimatedGIF和他自己的图像转换工具。真正的问题将是 MKR 1010 上的总可用内存。
  • 3 呼吸应用程序可以在通过智能夜灯服务的某个移动阈值后调用,或由主体有意选择(或由于过度摇晃载体)或作为仪表板用户发送的消息。当对象向载体呼吸 3 次时,TFT 屏幕中的气球图像会膨胀和放气(参见动画 GIF),由湿度传感器检测到。呼吸顺序由预先录制的信息辅助(即“吸气”、“缓慢呼气”等)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !