Capteur 3D Intelligent : Contrôle Vocal de Lampe pour Amazon Echo
Composants et fournitures
| Amazon Echo (Alexa) | ×1 |
| Walabot Creator (capteur 3D RF) | ×1 |
| Arduino Leonardo | ×1 |
| Relais (genérique) | ×2 |
| LattePanda 2G/32GB (activé) | ×1 |
| Écran 7" 1024×600 IPS pour LattePanda | ×1 |
| Lampe | ×2 |
À propos de ce projet
Introduction
Si vous possédez Alexa ou un haut-parleur intelligent avec domotique, vous connaissez ce problème : il faut se souvenir du nom exact de chaque appareil pour le commander. J'ai beaucoup d'appareils connectés et retenir tous les noms est difficile.
Trois scénarios typiques :
- On confond Alexa, qui allume un autre appareil.
- On maudit Alexa (vous savez de quoi je parle, avouez-le).
- On abandonne, frustré : « Oublie Alexa, je le fais moi-même »... et on se lève actionner l'interrupteur.
Mes enfants adorent : « Alexa, allume TOUTES les lumières ». Toute la maison s'illumine comme un sapin de Noël. Pas drôle au milieu de la nuit !
Comment faire ?
Et si je disais simplement : « Alexa, allume cette lampe » ?
Alexa détecte ma position par rapport à l'appareil et sait de quoi je parle. Bonne idée, non ?
Une caméra dans la pièce pour suivre les mouvements ? Trop intrusif. Je ne veux pas de caméras ni de reconnaissance d'image chez moi.
C'est là qu'intervient Walabot :
Walabot
Qu'est-ce que Walabot ?
Walabot est un capteur 3D programmable idéal pour l'électronique DIY. C'est un nouveau type de capteur d'imagerie 3D utilisant la radiofréquence (RF) qui révèle ce qui est caché autour de vous. Il est portable, programmable, avec un SDK (kit de développement) offrant diverses capacités d'imagerie et une API pour créer vos applications personnalisées.
Il suit les mouvements par radiofréquence.
LattePanda
LattePanda est un SBC x86/x64 à quadruple cœur Intel Atom x8300 « Cherrytrail » sous Windows 10. Il intègre 2 ou 4 Go RAM, Bluetooth 4.0, WiFi 802.11n, 1×USB 3.0, 2×USB 2.0, HDMI, et un co-processeur ATMega32u4 (comme Arduino Leonardo) avec GPIO – le tout sur une carte de la taille d'une main !
Cette architecture rend LattePanda idéal pour plusieurs scénarios. Ici, on exploite le microcontrôleur intégré. Associé au processeur Intel Atom, il permet de connecter Walabot et Arduino ensemble.
Node-RED
Node-RED est un outil visuel dans le navigateur pour créer rapidement de la logique IoT : abonnement TCP, écoute requêtes Alexa, lecture/écriture bases de données, publication MQTT, réponses HTTP. Il permet de définir des fonctions JavaScript pour logique complexe, avec une interface glisser-déposer facile.
Node-RED est un runtime léger basé sur Node.js, profitant de son modèle événementiel non-bloquant.
Si on connecte les données Walabot à Node-RED, cela ouvre énormément de possibilités en domotique. Paquets utilisés :
node-red-contrib-alexa-local: nœud simple pour ajouter la capacité Alexa à votre flux Node-RED.node-red-node-arduino: nœud Node-RED pour communiquer avec Arduino.
Documentation Firmata : https://nodered.org/docs/hardware/arduino.html
Fonctionnement
Matériel
- LattePanda
- Écran 7" 1024×600 IPS pour LattePanda
- Clavier/souris USB sans fil
- Walabot
- Hub USB alimenté
- Relais
- Lampes
Installation
Étape 1. SDK Walabot
Téléchargez et installez le SDK : https://walabot.com/getting-started
Étape 2. Configurer Arduino sur Walabot
https://docs.lattepanda.com/content/hardware/accessPinoutsFromVS/
- Activez le mode développeur sur Windows.
Étape 3. Configurer l'Arduino
- Ouvrez Arduino, sélectionnez « StandardFirmata » :
- Sélectionnez « Arduino Leonardo » :
- Sélectionnez votre port COM :
- Téléversez le croquis :
- Terminé !
Connectez les relais au LattePanda.
Étape 4. Installez Node.js et Node-RED :
- https://nodejs.org/en/
- https://docs.lattepanda.com/content/projects/NodeRED/
- https://nodered.org/docs/getting-started/installation
Étape 5. Téléchargez et installez Python 3 :
Étape 6. Dépôt du projet : https://github.com/rondagdag/smart3DSensorForAlexa
Téléchargez et extrayez le ZIP :
> npm install
> npm start
Étape 7. Assurez-vous d'être sur le même Wi-Fi et d'avoir activé les « Smart Home Skills » dans l'app Alexa. Dites : « Alexa, découvre les appareils ». Alexa trouvera la lampe. Pour voir/modifier les flux Node-RED : https://localhost:8080/red/
Vous pouvez maintenant connecter d'autres broches Arduino sur LattePanda, ou utiliser MQTT et d'autres modules Node-RED.
Le flux complet se compose de 3 étapes :
- Gestion du service Walabot : programme Python lisant le capteur Walabot et diffusant les données sur port TCP 1890.
- Récupération et sauvegarde des données d'objet Walabot : lit les données via port 1890, stocke la dernière position connue de l'objet détecté.
- Gestion des commandes Alexa : se déclenche sur commande Alexa, détermine la broche Arduino à actionner (relais) selon la dernière position connue.
Gestion du service Walabot
Code Python Walabot : lit les données et envoie une chaîne JSON via TCP.
from __future__ import print_function
from sys import platform
from os import system
from imp import load_source
WalabotAPI = load_source('WalabotAPI', 'C:\\Program Files\\Walabot\\WalabotSDK\\python\\WalabotAPI.py')
import socket, sys
if __name__ == '__main__':
WalabotAPI.Init()
WalabotAPI.SetSettingsFolder()
WalabotAPI.ConnectAny()
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()
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 < numOfTargetsToDisplay:
index += 1
print('Target {}\nx = {}\ny = {}\nz = {}\n'.format(i+1, t.xPosCm, t.yPosCm, t.zPosCm))
finds += '{"x": "%s", "y": "%s", "z": "%s"}' % (t.xPosCm, t.yPosCm, t.zPosCm)
finds += ']}'
conn.sendall(str.encode(finds))
conn.close()
WalabotAPI.Stop()
WalabotAPI.Disconnect()
Récupération et sauvegarde des données d'objet Walabot
Reçoit les données du port 1890, parse le JSON pour définir des variables globales.
Code de conversion en tableau JSON :
raw = msg.payload.toString('UTF-8')
j = JSON.parse(raw);
var msg1 = { payload: raw };
var msg2 = { payload: 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 = { payload: X };
var msg4 = { payload: Y };
var msg5 = { payload: Z };
}
return [ msg1, msg2, msg3, msg4, msg5];
Gestion des commandes Alexa
Utilise node-red-contrib-alexa-local. Logique de routage de la commande vers la bonne broche selon la dernière position connue de la personne.
Si ce projet vous a intéressé pour Amazon Echo, Walabot, LattePanda, Node-RED, Python, ou si vous passez une excellente journée, cliquez « Respect project » et suivez-moi. Si cela vous a aidé, laissez un message !
Note : Aucune Skill Alexa personnalisée n'est utilisée. Le projet exploite la fonctionnalité Smart Home native d'Echo (contrôle ampoules Philips Hue). Le nœud node-red-contrib-alexa-local simule simplement des « Ampoules » personnalisées qu'Alexa peut commander !
Code
Smart 3D Sensor for Alexa
https://github.com/rondagdag/smart3DSensorForAlexa
Processus de fabrication
- Capteur de mouvement SmartThings par vision par ordinateur sur Raspberry Pi 3
- Construire un capteur de mouvement infrarouge DIY pour Raspberry Pi – Guide étape par étape
- Poubelle intelligente : Une solution IoT cellulaire pour la gestion automatisée des déchets
- Contrôler votre Chromecast avec Amazon Alexa via un Raspberry Pi et Python
- Feu de circulation intelligent : Éclairage public adaptatif alimenté par l'IoT
- Construire un robot évitant les obstacles avec Raspberry Pi – Guide débutant
- Stylo intelligent : Suivi temps réel de l'écriture et du mouvement avec Raspberry Pi et IMU
- Vêtements chauffants : l'innovation textile intelligent leader, selon les experts
- Capteur de déformation ultra-sensible et durable pour textiles intelligents