Alexa, enciende ESTA lámpara:Sensor 3D inteligente para Amazon Echo
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 |
Acerca de este proyecto
Introducción
Si ha tenido una Alexa o cualquier altavoz inteligente y tiene la integración de Smart Home, ha experimentado este problema en el que debe recordar el nombre del dispositivo para controlar. Tengo muchos dispositivos domésticos inteligentes y, a veces, recordar los nombres de cada uno es complicado.
A veces diría:
Ocurrirán 3 cosas:
- Terminó confundiendo a Alexa, encendiendo un dispositivo inteligente diferente.
- Maldecir a Alexa (ya sabes de lo que estoy hablando, admítelo)
- O darse por vencido, frustrarse y decirle:'Olvídalo Alexa, lo haré yo misma' ... caminando de mala gana hacia el interruptor.
A mis hijos normalmente les gusta este comando:"Alexa, enciende TODAS las luces". Y, por supuesto, toda la casa estará iluminada como un árbol de Navidad. ¡No es divertido cuando alguien hace eso en medio de la noche!
Cómo hacerlo
¿Qué pasa si solo puedo decir:Alexa, enciende esta lámpara?
Haz que Alexa detecte dónde estoy cerca del dispositivo. Y sabe de lo que estoy hablando ... ¿no sería una gran idea?
Bueno, una posible solución es montar una cámara en mi habitación y monitorear los movimientos y demás. Pero eso sería DEMASIADO INCREÍBLE. No quiero cámaras dentro de mi casa y reconocimiento de imágenes.
Ahí es donde entra Walabot:
Walabot
¿Qué es un Walabot?
Walabot es un sensor 3d programable perfecto para proyectos de electrónica de bricolaje. Walabot es un nuevo tipo de sensor de imágenes 3D. Utiliza radiofrecuencia (RFID) y revelará todo tipo de cosas ocultas en el mundo que te rodea. Es portátil, programable y nuestro SDK (kit de desarrollo de software) Contiene una variedad de capacidades de imágenes y nuestra API le permitirá crear sus propias aplicaciones personalizadas para él.
Puede realizar un seguimiento de los movimientos mediante RFID.
LattePanda
LattePanda es un SBC x86 / x64 con un procesador Intel Atom x8300 "Cherrytrail" de cuatro núcleos que puede ejecutar Windows 10. Incluye 2 GB o 4 GB de RAM con Bluetooth 4.0 integrado y WiFi 802.11 n, 1 x USB 3.0, 2 x USB 2.0, salida HDMI y un coprocesador ATMega32u4 integrado, como lo encontraría en un Arduino Leonardo, con GPIO adjunto, ¡todo en una placa del tamaño de la palma de la mano!
Esta configuración hace que LattePanda sea ideal para varios escenarios. En este tutorial se centrará en las ventajas del microcontrolador integrado de LattePanda. Cuando este microcontrolador se utiliza junto con el procesador Intel Atom, puede conectar el walabot y el arduino juntos.
Nodo rojo
Node-Red es una herramienta basada en navegador que le permite construir rápida y fácilmente su propia lógica para manejar varios dispositivos de IoT, incluida la suscripción de mensajes TCP, escuchar las solicitudes de Alexa, leer y escribir en bases de datos, publicar en agentes MQTT y responder a solicitudes HTTP. . También le permite definir funciones específicas escritas en JavaScript para proporcionar operaciones lógicas complejas, mientras usa una interfaz de usuario visual, fácil de usar, de arrastrar y soltar para vincular diferentes componentes y lógica.
Node-Red es un tiempo de ejecución muy liviano creado sobre Node.js, que aprovecha al máximo su modelo de operación sin bloqueos y controlado por eventos.
Si podemos hacer que los datos de Walabot se conecten a Node-Red, se abren muchas cosas que podemos hacer, especialmente en domótica. Hay algunos paquetes que utilicé para conectar Alexa y Arduino:
- node-red-contrib-alexa-local:un nodo completamente simple para agregar la capacidad de Alexa a su flujo de NodeRED.
- node-red-node-arduino:un nodo Node-RED para hablar con un Arduino
Aquí hay documentación que puede utilizar para configurar firmata:https://nodered.org/docs/hardware/arduino.html
Cómo funciona
Hardware
- LattePanda
- Pantalla IPS de 7 pulgadas 1024x600 para LattePanda
- Teclado y mouse inalámbricos USB
- Walabot
- Concentrador alimentado por USB
- Relés
- Lámpara
Instalación
Paso 1. SDK de Walabot
Descargue el SDK e instálelo:https://walabot.com/getting-started
Paso 2. Configura Arduino en Walabot
http://docs.lattepanda.com/content/hardware/accessPinoutsFromVS/
1. Habilite el modo de desarrollador en su sistema operativo
Paso 3. Configura el Arduino
1. Abra Arduino. Y seleccione "StandardFirmata"
2. Seleccione "Arduino Leonardo"
3. Seleccione su puerto COM
4. Sube el boceto
5. Carga completa.
Conecte los relés al LattePanda.
Paso 4 . Instale y descargue NodeJS y Node-Red
Si no está familiarizado con NodeJS y node-red, aquí hay algunos enlaces:
- https://nodejs.org/en/
- http://docs.lattepanda.com/content/projects/NodeRED/
- https://nodered.org/docs/getting-started/installation
Paso 5. Descarga Python3 e instálalo
Paso 6 . Aquí está el repositorio del proyecto:https://github.com/rondagdag/smart3DSensorForAlexa
Descargue y extraiga el archivo zip:
> npm install> npm start
Paso 7 . Asegúrate de estar en el mismo wifi y de haber habilitado Smart Home Skills en tu aplicación Alexa. Diga:'Alexa, descubre dispositivos'. Alexa encontraría la lámpara. Si desea ver los flujos de Node-Red y modificarlos:http:// localhost:8080 / red /
Ahora puede conectarlo a diferentes pines en los pines Arduino en LattePanda. O conéctelo con MQTT u otros módulos Node-Red.
Todo el flujo se ve así ...
3 pasos:
- Manejar el servicio de Walabot :un programa de Python que lee datos del sensor walabot y transmite datos a un puerto tcp 1890
- Obtener y guardar datos de objetos de Walabot :lee datos del servicio walabot a través del puerto 1890 y almacena la última ubicación conocida del objeto detectado
- Manejar los comandos de Alexa :se ejecuta cuando se recibe un comando de Alexa y, en función de la última ubicación conocida, determina el pin de Arduino para cambiar conectado a un relé.
- Gestionar el servicio de Walabot
Aquí está el código Python de Walabot. Lee los datos de Walabot y transmite una cadena JSON a través de TCP.
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 () # carga el WalabotSDK al contenedor de Python WalabotAPI.SetSettingsFolder () # establece la ruta a los archivos de base de datos esenciales WalabotAPI.ConnectAny () # establece comunicación con Walabot WalabotAPI. SetProfile (WalabotAPI.PROF_SENSOR) # establece el perfil de escaneo fuera de las posibilidades WalabotAPI.SetThreshold (35) WalabotAPI.SetArenaR (50,400,4) WalabotAPI.SetArenaPhi (-45,45,2) WalabotAPI.SetArenaTheta (-20,20,10) WalabotAPI.SetDynamicImageFilter (WalabotAPI.FILTER_TYPE_MTI) # especifica el filtro para usar WalabotAPI.Start () # inicia Walabot en preparación para el sistema de escaneo ('cls' if platform =='win32' else 'clear') # clear the terminal 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 () # inicia un escaneo y registra señales de objetivos =WalabotAPI.GetSensorTargets () # proporciona una lista de objetivos identificados encuentra ='{"objetivos":[' índice =0 para i, t en enumerar (objetivos):si i
- Obtener y guardar datos de objetos de Walabot
Esto recibirá datos del puerto 1890, analizará los datos json para establecer las variables globales en consecuencia.
Aquí está el código para convertir a una matriz json
raw =msg.payload.toString ('UTF-8') j =JSON.parse (raw); var msg1 ={payload:raw}; var msg2 ={carga útil: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 ={carga útil:X}; var msg4 ={carga útil:Y}; var msg5 ={carga útil:Z}; } return [msg1, msg2, msg3, msg4, msg5];
- Manejar los comandos de Alexa
Para manejar los comandos de Alexa, usamos el nodo-rojo-contrib-alexa-local. Entonces detectaríamos en esta lógica cuál dirigir el comando basado en la última posición conocida de la persona.
Si este proyecto hizo que se interesara en aprender más sobre Amazon Echo, Walabot, LattePanda, Node-Red, Python, o simplemente está teniendo un día increíble, simplemente haga clic en el botón 'Respetar proyecto' y sígame. Si esto le ayudó a construir un proyecto, deje un mensaje y envíenos sus comentarios. Quiero saber cómo te ayudó este proyecto.
Tenga en cuenta que no se está utilizando una habilidad de Alexa personalizada real para este proyecto, utiliza la funcionalidad de hogar inteligente incorporada de Amazon Echo que controla las bombillas Phillips Hue. ¡El nodo node-red-contrib-alexa-local en Node-Red simplemente falsifica cualquier "Bulbo" personalizado que desee controlar con Alexa!
Código
Sensor 3D inteligente para Alexa
https://github.com/rondagdag/smart3DSensorForAlexaProceso de manufactura
- Visión por computadora como sensor de movimiento para SmartThings
- Sistema de sensor de movimiento por infrarrojos de bricolaje para Raspberry Pi
- IoT celular:cubo de basura inteligente
- Amazon Alexa Controlando un Chromecast
- Semáforo inteligente
- Construye robots Raspberry Pi:el mejor tutorial para principiantes
- Smart Pen:Proyecto final para ECE5725
- ¿Es esta la "aplicación asesina" para textiles inteligentes?
- Sensor ultrasensible y resistente para textiles inteligentes
- Sensor ultrafino para lentes de contacto inteligentes
- Película de sensores para la industria aeroespacial