Alexa,打开这盏灯:Amazon Echo 的智能 3D 传感器
组件和用品
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 |
关于这个项目
简介
如果您拥有 Alexa 或任何智能扬声器并集成了智能家居,您就会遇到这个问题,您必须记住要控制的设备的名称。我有很多智能家居设备,有时记住每个设备的名称很棘手。
有时我会说:
3 件事要么会发生:
- 最终让 Alexa 感到困惑,打开了不同的智能设备。
- 诅咒 Alexa(你知道我在说什么,承认吧)
- 或者放弃,感到沮丧并对她说:“算了 Alexa,我自己来做吧”……不情愿地走向开关。
我的孩子们通常喜欢这个命令:“Alexa,打开所有的灯”。当然,整个房子都会像圣诞树一样被点亮。半夜有人这样做可不好玩!
怎么做
如果我只能说:Alexa,打开这盏灯怎么办?
让 Alexa 检测我在设备附近的位置。它知道我在说什么……这不是个好主意吗?
嗯,一种可能的解决方案是在我的房间里安装一个摄像头并监控运动等等。但这太令人毛骨悚然了。我不想在家里装摄像头并进行图像识别。
这就是 Walabot 的用武之地:
瓦拉博特
什么是 Walabot?
Walabot 是一款可编程 3D 传感器,非常适合 DIY 电子项目。 Walabot 是一种新型的 3D 成像传感器。它使用无线电频率 (RFID) 并会揭示隐藏在您周围世界中的各种事物。它是手持式、可编程的,我们的 SDK(软件开发工具包)包含各种成像功能,我们的 API 将使您能够为其构建自己的自定义应用程序。
它可以使用RFID跟踪运动。
拿铁熊猫
LattePanda 是一款 x86/x64 SBC,配备四核 Intel Atom x8300“Cherrytrail”处理器,可以运行 Windows 10。它包括 2GB 或 4GB RAM,集成蓝牙 4.0 和 802.11 n WiFi,1 个 USB 3.0,2 个 USB 2.0、HDMI 输出和集成的 ATMega32u4 协处理器 - 就像您在 Arduino Leonardo 中发现的那样 - 带有随附的 GPIO - 全部在一个手掌大小的板上!
这种设置使 LattePanda 成为许多场景的理想选择。在本教程中,将重点介绍 LattePanda 集成微控制器的优势。当此微控制器与 Intel Atom 处理器配合使用时,您可以将 walabot 和 arduino 连接在一起。
节点-红色
Node-Red 是一个基于浏览器的工具,可让您快速轻松地构建自己的处理各种 IoT 设备的逻辑,包括订阅 TCP 消息、侦听 Alexa 请求、读取和写入数据库、发布到 MQTT 代理和响应 HTTP 请求.它还允许您定义用 JavaScript 编写的特定函数以提供复杂的逻辑操作,同时使用可视化、易于使用、拖放式用户界面将不同的组件和逻辑链接在一起。
Node-Red 是一个构建在 Node.js 之上的轻量级运行时,充分利用了其事件驱动的非阻塞操作模型。
如果我们可以将 Walabot 数据插入 Node-Red,那么我们可以做很多事情,尤其是在家庭自动化方面。我用来连接 Alexa 和 Arduino 的软件包很少:
- node-red-contrib-alexa-local:一个非常简单的节点,用于将 Alexa 功能添加到您的 NodeRED 流程中。
- node-red-node-arduino:与 Arduino 通信的 Node-RED 节点
以下是一些可用于设置 Firmata 的文档:https://nodered.org/docs/hardware/arduino.html
工作原理
硬件
- 拿铁熊猫
- 适用于 LattePanda 的 7 英寸 1024x600 IPS 显示屏
- USB 无线键盘和鼠标
- 瓦拉博特
- USB 供电集线器
- 中继
- 灯
安装
步骤 1. Walabot SDK
下载SDK并安装:https://walabot.com/getting-started
步骤 2. 在 Walabot 上设置 Arduino
http://docs.lattepanda.com/content/hardware/accessPinoutsFromVS/
1.在您的操作系统上启用开发者模式
第 3 步。设置 Arduino
1.打开阿杜诺。并选择“StandardFirmata”
2.选择“Arduino Leonardo”
3.选择您的 COM 端口
4.上传草图
5.上传完成!
将继电器连接到 LattePanda。
第 4 步 .安装并下载 NodeJS 和 Node-Red
如果您不熟悉 NodeJS 和 node-red,这里有一些链接:
- https://nodejs.org/en/
- http://docs.lattepanda.com/content/projects/NodeRED/
- https://nodered.org/docs/getting-started/installation
第 5 步。 下载Python3并安装
第 6 步 .这是该项目的存储库:https://github.com/rondagdag/smart3DSensorForAlexa
下载并解压 zip 文件:
> npm install> npm start
第 7 步 .确保您使用同一个 wifi 并在您的 Alexa 应用程序上启用智能家居技能。说:“Alexa,发现设备”。 Alexa 会找到灯。如果您想查看 Node-Red 流程并对其进行修改:http://localhost:8080/red/
您现在可以将它连接到 LattePanda 中 Arduino Pins 的不同引脚。或者与 MQTT 或其他 Node-Red 模块连接。
整个流程是这样的...
3 个步骤:
- 处理 Walabot 服务 :一个python程序,它从walabot传感器读取数据并将数据流式传输到tcp端口1890
- 获取并保存 Walabot 对象数据 :通过端口 1890 从 walabot 服务读取数据并存储最后已知的检测到的对象位置
- 处理 Alexa 命令 :当收到来自 Alexa 的命令时运行,并根据最后一个已知位置,确定要切换到继电器的 Arduino 引脚。
- 处理 Walabot 服务
这是 Walabot Python 代码。它从 Walabot 读取数据并通过 TCP 传输 JSON 字符串。
from __future__ import print_functionfrom sys import platformfrom os import systemfrom imp import load_sourceWalabotAPI =load_source('WalabotAPI', 'C:\\Program Files\\Walabot\\WalabotSDK\\python\\WalabotAPI.py')import socket, sysif __name__ =='__main__':WalabotAPI.Init() # 将 WalabotSDK 加载到 Python 包装器 WalabotAPI.SetSettingsFolder() # 设置基本数据库文件的路径 WalabotAPI.ConnectAny() # 建立与 Walabot WalabotAPI 的通信。 SetProfile(WalabotAPI.PROF_SENSOR) # 设置扫描配置文件的可能性 WalabotAPI.SetThreshold(35) WalabotAPI.SetArenaR(50,400,4) WalabotAPI.SetArenaPhi(-45,45,2) WalabotAPI.SetArenaTheta(-20,20,10) WalabotAPI.SetDynamicImageFilter(WalabotAPI.FILTER_TYPE_MTI) # 指定过滤器使用 WalabotAPI.Start() # 启动 Walabot 准备扫描 system('cls' if platform =='win32' else 'clear') # 清除终端 numOfTargetsToDisplay =1 if len(sys.argv) ==2:TCP_IP ='127.0.0.1' TCP_PORT =int( sys.argv[1]) s =socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((TCP_IP, TCP_PORT)) s.listen(1) conn, addr =s.accept() while True:WalabotAPI .Trigger() # 启动扫描并记录信号 targets =WalabotAPI.GetSensorTargets() # 提供已识别目标的列表 finds ='{"targets":[' index =0 for i, t in enumerate(targets):if i
- 获取并保存 Walabot 对象数据
这将从端口 1890 接收数据,解析 json 数据以相应地设置全局变量。
这里是转换为json数组的代码
raw =msg.payload.toString('UTF-8') j =JSON.parse(raw); var msg1 ={ 有效载荷:原始 }; var msg2 ={ 有效载荷:j }; if (raw.length> 20) { X =msg2.payload.targets[0].x; Y =msg2.payload.targets[0].y; Z =msg2.payload.targets[0].z; global.set("X", X); global.set("Y", Y); global.set("Z", Z); var msg3 ={ 有效载荷:X }; var msg4 ={ 有效载荷:Y }; var msg5 ={ 有效载荷:Z }; } return [ msg1, msg2, msg3, msg4, msg5];
- 处理 Alexa 命令
为了处理 Alexa 命令,我们使用了 节点-红色-contrib-alexa-local。然后我们将根据此逻辑检测根据该人的最后一个已知位置路由命令的路由。
如果这个项目让您有兴趣了解有关 Amazon Echo、Walabot、LattePanda、Node-Red、Python 的更多信息,或者您只是度过了美好的一天,只需单击“尊重项目”按钮并关注我。如果这有助于您构建项目,请留言并给我们反馈。我想听听这个项目如何帮助你。
请注意,该项目没有使用实际的自定义 Alexa Skill,它使用内置的 Amazon Echo 智能家居功能,开箱即用地控制 Phillips Hue 灯泡。 Node-Red 中的 node-red-contrib-alexa-local 节点只是欺骗你想用 Alexa 控制的任何自定义“灯泡”!
代码
Alexa 的智能 3D 传感器
https://github.com/rondagdag/smart3DSensorForAlexa制造工艺