Sensor 3D Inteligente: Controle de Lâmpada por Voz para Amazon Echo com Walabot
Componentes e Materiais
| Amazon Alexa Echo | 1 |
| Walabot Creator | 1 |
| Arduino Leonardo | 1 |
| Relé (genérico) | 2 |
| LattePanda 2G/32GB (Ativado) | 1 |
| Display LattePanda 7" 1024x600 IPS | 1 |
| Lâmpada | 2 |
Sobre o Projeto
Introdução
Se você possui um Alexa ou qualquer alto-falante inteligente e tem integração de Casa Inteligente, já experimentou este problema: precisa lembrar o nome do dispositivo para controlá-lo. Tenho muitos dispositivos de casa inteligente e às vezes lembrar os nomes de cada um é complicado.
Às vezes eu dizia:
Três coisas podem acontecer:
- Acabo confundindo a Alexa, ligando um dispositivo diferente.
- Xingando a Alexa (você sabe do que estou falando, admita).
- Ou desistindo, frustrado, dizendo: "Esquece Alexa, eu faço eu mesmo"... caminhando relutante até o interruptor.
Meus filhos geralmente gostam deste comando: "Alexa, ligue TODAS as luzes". E claro, a casa toda acende como uma árvore de Natal. Não é divertido quando alguém faz isso no meio da noite!
Como Fazer
E se eu pudesse apenas dizer: "Alexa, ligue esta lâmpada"?
Que a Alexa detecte onde estou em proximidade ao dispositivo. E ela sabe do que estou falando... não seria uma ótima ideia?
Bem, uma solução possível é montar uma câmera no meu quarto e monitorar movimentos. Mas isso seria MUITO INVASIVO. Não quero câmeras dentro de casa fazendo reconhecimento de imagem.
É Aí que o Walabot Entra
Walabot
O que é um Walabot?
Walabot é um sensor 3D programável perfeito para projetos eletrônicos DIY. É um novo tipo de sensor de imagem 3D. Usa radiofrequência (RF) e revela todo tipo de coisa oculta no mundo ao seu redor. É portátil, programável e nosso SDK (kit de desenvolvimento de software) contém uma variedade de recursos de imagem e nossa API permite construir suas próprias aplicações personalizadas.
Ele pode rastrear movimentos usando RF.
LattePanda
LattePanda é um SBC x86/x64 com processador quad-core Intel Atom x8300 "Cherrytrail" que roda Windows 10. Inclui 2GB ou 4GB de RAM com Bluetooth 4.0 e WiFi 802.11n integrados, 1x USB 3.0, 2x USB 2.0, saída HDMI e um co-processador ATMega32u4 integrado - como você encontraria em um Arduino Leonardo - com GPIO acompanhante - tudo em uma placa do tamanho da palma da mão!
Esta configuração torna o LattePanda ideal para vários cenários. Neste tutorial, focaremos nas vantagens do microcontrolador integrado do LattePanda. Quando este microcontrolador é usado em conjunto com o processador Intel Atom, você pode conectar o Walabot e o Arduino juntos.
Node-RED
Node-RED é uma ferramenta baseada em navegador para construir rapidamente sua própria lógica de manipulação de vários dispositivos IoT, incluindo assinatura de mensagens TCP, escuta de requisições Alexa, leitura/escrita em bancos de dados, publicação em brokers MQTT e resposta a requisições HTTP. Também permite definir funções específicas em JavaScript para operações lógicas complexas, enquanto usa uma interface visual, fácil de usar, de arrastar e soltar para vincular diferentes componentes e lógicas.
Node-RED é um runtime muito leve construído sobre Node.js, aproveitando totalmente seu modelo de operação orientado a eventos e não bloqueante.
Se podemos conectar dados do Walabot ao Node-RED, abre muitas possibilidades, especialmente em Automação Residencial. Alguns pacotes usei para conectar Alexa e Arduino:
- node-red-contrib-alexa-local: um nó simples para adicionar capacidade Alexa ao seu fluxo Node-RED.
- node-red-node-arduino: Um nó Node-RED para comunicar com Arduino.
Documentação para configurar Firmata: nodered.org/docs/hardware/arduino.html
Como Funciona
Hardware
- LattePanda
- Display 7" 1024x600 IPS para LattePanda
- Teclado e mouse sem fio USB
- Walabot
- Hub USB alimentado
- Relés
- Lâmpadas
Instalação
Passo 1. SDK Walabot
Baixe o SDK e instale: walabot.com/getting-started
Passo 2. Configurar Arduino no Walabot
docs.lattepanda.com/content/hardware/accessPinoutsFromVS/
- Ative o modo desenvolvedor no seu sistema operacional
Passo 3. Configurar o Arduino
- Abra o Arduino. Selecione "StandardFirmata"
- Selecione "Arduino Leonardo"
- Selecione sua porta COM
- Carregue o sketch
- Upload Concluído!
Conecte os relés ao LattePanda.
Passo 4. Instalar e Baixar NodeJS e Node-RED
Se não está familiarizado com NodeJS e Node-RED, aqui estão alguns links:
- nodejs.org/en/
- docs.lattepanda.com/content/projects/NodeRED/
- nodered.org/docs/getting-started/installation
Passo 5. Baixar Python3 e Instalar
Passo 6. Repositório do Projeto
Repositório: github.com/rondagdag/smart3DSensorForAlexa
Baixe e extraia o arquivo zip:
> npm install
> npm start
Passo 7. Configuração Final
Certifique-se de que está na mesma WiFi e habilitou as Skills de Casa Inteligente no app Alexa. Diga: "Alexa, descubra dispositivos". A Alexa encontraria a Lâmpada. Se quiser ver os fluxos Node-RED e modificá-los: https://localhost:8080/red/
Agora você pode conectar a diferentes pinos do Arduino no LattePanda. Ou conectar com MQTT ou outros módulos Node-RED.
O fluxo completo parece assim...
3 Passos:
- Gerenciar Serviço Walabot: um programa Python que lê dados do sensor Walabot e transmite dados para a porta TCP 1890
- Obter e Salvar Dados de Objeto Walabot: lê dados do serviço Walabot via porta 1890 e armazena a última localização conhecida do objeto detectado
- Gerenciar Comandos Alexa: executa quando um comando é recebido da Alexa, e baseado na última posição conhecida, determina o pino do Arduino para comutar conectado a um relé.
Código Python do Walabot. Lê dados do Walabot e transmite string 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()
- Obter e Salvar Dados de Objeto Walabot
Isto receberá dados da porta 1890, fará parse do JSON para definir variáveis globais.
Código para converter em array 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];
- Gerenciar Comandos Alexa
Para gerenciar comandos Alexa, usamos o node-red-contrib-alexa-local. Então detectamos nesta lógica qual rotear comando baseado na última posição conhecida da pessoa.
Se este projeto te interessou em aprender mais sobre Amazon Echo, Walabot, LattePanda, Node-RED, Python, ou você está apenas tendo um dia incrível, clique no botão 'Respeitar projeto' e me siga. Se isso ajudou você a construir um projeto, deixe uma mensagem e dê feedback. Quero ouvir como este projeto te ajudou.
Nota: não há Skill personalizada Alexa sendo usada, usa a funcionalidade nativa de Casa Inteligente do Amazon Echo que controla lâmpadas Philips Hue. O nó node-red-contrib-alexa-local no Node-RED apenas simula quaisquer "Lâmpadas" personalizadas que você queira controlar com Alexa!
Código
Smart 3D Sensor for Alexa
https://github.com/rondagdag/smart3DSensorForAlexa
Processo de manufatura
- Sensor de Movimento SmartThings com Visão Computacional no Raspberry Pi 3
- Construa um Sensor de Movimento Infravermelho DIY para Raspberry Pi – Guia Passo a Passo
- Lixeira Inteligente: Solução IoT Celular para Gestão Automatizada de Resíduos
- Controle seu Chromecast com Amazon Alexa usando Raspberry Pi e Python
- Semáforo Inteligente: Iluminação Pública Adaptativa com IoT
- Construa um Robô Evita-Obstáculos com Raspberry Pi – Guia para Iniciantes
- Caneta Inteligente: Rastreamento de Escrita e Movimento em Tempo Real com Raspberry Pi e IMU
- Roupa Aquecida: A Principal Inovação em Tecidos Inteligentes, Revelam Especialistas
- Sensor de Deformação Ultra-Sensível e Durável Revoluciona Têxteis Inteligentes
- Sensor Ultra-Fino Revolucionário Melhora Funcionalidade de Lentes de Contato Inteligentes