Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Onderdelen en benodigdheden

Onderdeel Aantal
Amazon Alexa Amazon Echo 1
Walabot Creator 1
Arduino Leonardo 1
Relais (generiek) 2
LattePanda 2G/32GB (Geactiveerd) 1
LattePanda 7-inch 1024x600 IPS Display 1
Lamp 2

Over dit project

Inleiding

Als je een Alexa of een andere slimme speaker hebt met Smart Home-integratie, heb je waarschijnlijk al ervaren dat je de naam van het apparaat moet onthouden om het te besturen. Ik heb veel slimme apparaten en soms is het lastig om de namen van elk te onthouden.

Soms zeg ik:

Er gebeuren dan 3 dingen:

  • Alexa raakt in de war en zet een ander apparaat aan.
  • Vloeken tegen Alexa (je weet wat ik bedoel, geef het toe).
  • Opgeven, gefrustreerd zeggen: "Vergat het Alexa, ik doe het zelf" ... en terughankerend naar de schakelaar lopen.

Mijn kinderen vinden het leuk om te zeggen: "Alexa, zet ALLE lichten aan". En natuurlijk brandt het hele huis als een kerstboom. Geen plezier als iemand dat midden in de nacht doet!

Hoe het kan

Wat als ik gewoon kan zeggen: "Alexa, zet deze lamp aan"?

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Laat Alexa detecteren waar ik ben in de buurt van het apparaat. En het weet wat ik bedoel... zou dat niet geweldig zijn?

Een mogelijke oplossing is een camera in de kamer monteren en bewegingen monitoren. Maar dat is TE GRISGRIM. Ik wil geen camera's in mijn huis met beeldherkenning.

Daar komt Walabot om de hoek kijken

Wat is een Walabot?

Walabot is een programmeerbare 3D-sensor perfect voor DIY-elektronicaprojecten. Het is een nieuwe soort 3D-imagingsensor. Het gebruikt radiofrequentie (RF) en onthult allerlei dingen die verborgen zijn in de omgeving. Het is handheld, programmeerbaar en onze SDK (software development kit) bevat diverse imaginemogelijkheden. Onze API stelt je in staat om je eigen applicaties te bouwen.

Het kan bewegingen bijhouden met RF.

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

LattePanda

LattePanda is een x86/x64 SBC met een quad-core Intel Atom x8300 "Cherrytrail" processor die Windows 10 kan draaien. Het bevat 2GB of 4GB RAM met geïntegreerde Bluetooth 4.0 en 802.11n WiFi, 1x USB 3.0, 2x USB 2.0, HDMI-uitgang en een geïntegreerde ATmega32u4 co-processor – zoals je in een Arduino Leonardo vindt – met bijbehorende GPIO, allemaal op een handzaam bord!

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Deze opstelling maakt LattePanda ideaal voor diverse scenario's. In deze tutorial richten we ons op het voordeel van de geïntegreerde microcontroller. Wanneer deze microcontroller samen met de Intel Atom-processor gebruikt wordt, kun je de Walabot en Arduino samen verbinden.

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Node-RED

Node-RED is een browser-gebaseerd hulpmiddel om snel en gemakkelijk je eigen logica te bouwen voor het hanteren van diverse IoT-apparaten, inclusief het abonneren op TCP-berichten, luisteren naar Alexa-verzoeken, lezen/schrijven naar databases, publiceren naar MQTT-brokers en reageren op HTTP-verzoeken. Het stelt je ook in staat om specifieke functies in JavaScript te definiëren voor complexe logica, terwijl je een visuele, makkelijk te gebruiken drag-and-drop-interface gebruikt om verschillende componenten en logica te koppelen.

Node-RED is een lichtgewicht runtime gebouwd op Node.js, die volledig gebruikmaakt van het event-driven, non-blockerende model.

Als we Walabot-data in Node-RED kunnen pluggen, opent dat veel mogelijkheden, vooral in Home Automation. Hier zijn een paar pakketten die ik gebruikte voor Alexa en Arduino:

  • node-red-contrib-alexa-local: een dood-eenvoudige node voor het toevoegen van Alexa-mogelijkheden aan je Node-RED flow.
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo
  • node-red-node-arduino: een Node-RED node om met een Arduino te communiceren.

Documentatie voor Firmata setup: https://nodered.org/docs/hardware/arduino.html

Hoe het werkt

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Hardware

  • LattePanda
  • 7-inch 1024x600 IPS Display voor LattePanda
  • USB draadloos toetsenbord en muis
  • Walabot
  • USB-gevoede hub
  • Relais
  • Lamp

Installatie

Stap 1. Walabot SDK

Download de SDK en installeer: https://walabot.com/getting-started

Stap 2. Arduino op Walabot instellen

https://docs.lattepanda.com/content/hardware/accessPinoutsFromVS/

  1. Ontwikkelaarsmodus inschakelen op je besturingssysteem.
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Stap 3. Arduino instellen

  1. Open Arduino. Selecteer "StandardFirmata".
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo
  1. Selecteer "Arduino Leonardo".
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo
  1. Selecteer je COM-poort.
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo
  1. Upload de sketch.
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo
  1. Upload klaar!
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Sluit de relais aan op de LattePanda.

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Stap 4. Node.js en Node-RED installeren en downloaden.

Als je niet bekend bent met Node.js en Node-RED, hier zijn links:

Stap 5. Python 3 downloaden en installeren.

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Stap 6. Project-repository: https://github.com/rondagdag/smart3DSensorForAlexa

Download en pak het zip-bestand uit:

> npm install
> npm start

Stap 7. Zorg dat je op hetzelfde WiFi-netwerk zit en de Smart Home Skills in je Alexa-app ingeschakeld zijn. Zeg: "Alexa, discover devices". Alexa vindt de Lamp. Om de Node-RED flows te zien en aan te passen: https://localhost:8080/red/

Je kunt nu andere pinnen op de Arduino van de LattePanda aansluiten. Of verbinden met MQTT of andere Node-RED-modules.

De volledige flow ziet er zo uit...

3 Stappen:

  1. Handle Walabot Service: een Python-programma dat data leest van de Walabot-sensor en streamt naar TCP-poort 1890.
  2. Get and save Walabot object data: leest data van Walabot-service via poort 1890 en slaat de laatste bekende gedetecteerde objectlocatie op.
  3. Handle Alexa Commands: draait wanneer een commando van Alexa ontvangen wordt, en bepaalt op basis van de laatste bekende locatie welke Arduino-pin (verbonden met een relais) geschakeld moet worden.
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Handle Walabot Service

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo
Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Hier is de Walabot Python-code. Het leest data van de Walabot en streamt een JSON-string 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)
                    # if index < len(targets): finds += ','
            finds += ']}'
            conn.sendall(str.encode(finds))
            conn.close()
            WalabotAPI.Stop()
            WalabotAPI.Disconnect()

Get and save Walabot object data

Dit ontvangt data van poort 1890, parst de JSON-data om globale variabelen in te stellen.

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Code om naar JSON-array te converteren:

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];

Handle Alexa Commands

Om Alexa-commando's te verwerken, gebruiken we node-red-contrib-alexa-local. Dan detecteren we met deze logica welke commando door te sturen op basis van de laatste bekende positie van de persoon.

Slimme 3D-sensor: Stemgeactiveerde lampbesturing voor Amazon Echo

Als dit project je geïnteresseerd heeft in Amazon Echo, Walabot, LattePanda, Node-RED, Python, of je hebt gewoon een geweldige dag, klik dan op de 'Respect project'-knop en volg me. Als dit je geholpen heeft een project te bouwen, laat een bericht achter en geef feedback. Ik wil horen hoe dit project je geholpen heeft.

Let op: er wordt geen eigen Alexa Skill gebruikt, maar de ingebouwde Amazon Echo Smart Home-functionaliteit die out-of-the-box Philips Hue-lampen bestuurt. De node-red-contrib-alexa-local node in Node-RED doet alsof het een eigen "Bulb" is die je met Alexa kunt besturen!

Code

Smart 3D Sensor for Alexa

https://github.com/rondagdag/smart3DSensorForAlexa

Productieproces

  1. SmartThings-bewegingsensor met computer vision op Raspberry Pi 3
  2. Een DIY Infrarood Bewegingssensor Bouwen voor Raspberry Pi – Stapsgewijze Handleiding
  3. Slimme Vuilnisbak: Een Cellulaire IoT-oplossing voor Geautomatiseerd Afvalbeheer
  4. Je Chromecast Besturen met Amazon Alexa via Raspberry Pi en Python
  5. Slimme Verkeerslicht: Adaptieve Straatverlichting Aangedreven door IoT
  6. Bouw een Raspberry Pi Obstakel-vermijdende Robot – Een Beginnersgids
  7. Slimme Pen: Real-time Handgeschrift- & Bewegingstracking met Raspberry Pi en IMU
  8. Revolutionaire ultra-gevoelige, duurzame rek-sensor voor slimme textiel
  9. Revolutionaire ultra-dunne sensor verbetert slimme contactlensfunctionaliteit
  10. Geavanceerde TOMOPLEX sensorfilm voor real-time luchtvaartmonitoring
  11. Verwarmde kleding: De toonaangevende smart textile-innovatie, experts onthullen