Luz inteligente animada com Alexa e Arduino
Componentes e suprimentos
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Aplicativos e serviços online
| ||||
| ||||
| ||||
|
Sobre este projeto
Por que Light Strip
Sempre fui fascinado por fitas LED RGB endereçáveis. Os infinitos efeitos de cor e recursos de animação sempre capturaram minha criatividade, há alguns anos decidi desenvolver uma biblioteca para as placas Arduino chamada ALA (Arduino Light Animations). Alexa agora está me dando a possibilidade de controlar a iluminação da sala e os efeitos com minha voz e isso é legal!
Visão geral do projeto
Existem os componentes necessários para este projeto.
- Amazon Alexa: Uma habilidade Alexa customizada (Light Strip) define o modelo de interação de voz e traduz comandos (intents) que são emitidos para a função Lambda.
- Amazon Lambda :Um script Python que recebe mensagens do Alexa e envia atualizações para o serviço IoT.
- Amazon IoT :O serviço IoT armazena uma 'sombra de coisa' que é uma representação do estado da faixa RGB. Cada vez que a sombra é atualizada, os clientes MQTT assinados (Raspberry PI) são notificados.
- Framboesa PI :Este pequeno PC executa um cliente MQTT para receber mensagens do serviço Amazon IoT. Por outro lado, ele ligará e enviará comandos para a placa Arduino por meio da porta USB.
- Arduino :Este bom microcontrolador executará a biblioteca ALA para acionar a faixa de LED que recebe os comandos do Raspberry PI pela porta serial USB. Você pode usar a placa Arduino Uno, Nano ou Mega.
- WS8212 Fita LED RGB :Estas são faixas de LED endereçáveis para que cada LED possa ser controlado individualmente. Isso permite animações de luz bonitas e coloridas.
Nada no projeto é muito desafiador, mas há muitas peças interligadas. Eu sugiro que você siga a estrutura sugerida para construir seu projeto sobre uma base sólida antes de passar para a próxima etapa. Para tornar as coisas o mais simples possível, dividi o projeto em dois subprojetos.
A primeira parte do projeto é descrito em meu projeto Animações LED controladas pela Web com Raspberry Pi e Arduino Hackster.io e irá guiá-lo pelas etapas necessárias para conectar o Raspberry PI, a placa Arduino e a faixa de LED WS8212. No final desta fase, você será capaz de controlar as animações de LED de um smartphone ou PC usando o navegador da web.
A segunda parte do projeto descrito aqui irá adicionar controle de voz à implementação anterior usando o Amazon Alexa. Existem várias etapas a serem executadas para configurar toda a cadeia corretamente, então seja paciente e siga as instruções cuidadosamente.
Amazon IoT
Você concluiu a parte do hardware? Agora é hora de ir para a nuvem! Usaremos a plataforma AWS IoT para gerenciar nossa 'coisa' da Internet.
Estaremos usando um "Device Shadow", que é uma cópia do estado de uma coisa, junto com as alterações desejadas. O Raspberry PI irá se inscrever em um feed de notificação que publica as alterações ("delta") para esta sombra. Verifique este link para obter mais informações sobre a plataforma AWS IoT e APIs.
Crie uma coisa IoT
Faça login no console da AWS. Caso ainda não tenha feito isso, você precisará criar uma conta gratuita.
Certifique-se de estar conectado a US East (N. Virginia) ou EU (Irlanda) zona no canto superior direito.
Pesquise por ‘IoT’ e selecione AWS IoT serviço. Clique em Começar botão (se houver) para fechar o tutorial de introdução.
Primeiro precisamos criar uma política de segurança para nossa "coisa". Vá para Seguro> Políticas menu e clique em Criar uma política botão e insira as seguintes informações:
- Nome:LightStripPolicy
- Ação:*
- Recurso:*
- Efeito - Permitir:verificado
- Clique em ‘Criar’
Agora podemos criar a IoT Coisa .
- Selecione Gerenciar > Coisas menu e crie um novo AWS IoT Thing clicando em Register a Thing botão (ou Criar botão no canto superior direito) e, em seguida, em Criar uma única coisa .
- Digite ‘LS01’ no campo Nome. Deixe os padrões para outros campos e clique em Avançar .
- Clique em Criar certificado botão na Criação de certificado com um clique seção.
- Baixe os 3 certificados para o seu dispositivo e a CA raiz. Para a CA raiz, você pode precisar clicar com o botão direito e salvá-la.
- Depois de baixar os certificados, clique em Ativar botão.
- Clique em Anexar uma política botão e selecione a LightStripPolicy você criou antes e clique em Registrar coisa .
Antes de prosseguir, você precisa anotar o AWS IoT Endpoint. Clique em Configurações menu no canto inferior esquerdo da página da web AWS IoT, abra-o e anote o Endpoint.
Configure o Raspberry PI para ouvir 'Coisa'
Primeiro precisamos instalar o AWS IoT Device SDK para Python com o seguinte comando na linha de comando Raspberry PI:
sudo pip3 install AWSIoTPythonSDK
Agora baixe o repositório LightStrip do GitHub e descompacte-o.
mkdircd / home / pi / LightStripwget https://github.com/bportaluri/LightStrip/archive/master.zipunzip master.zip
Copie os quatro certificados que você baixou quando criou o IoT Thing no / home / pi / LightStrip / LightStrip-master / pi pasta.
Edite o lightstripcfg.py roteiro. Você pode usar qualquer editor de texto. Aqui estão os comandos para o nano editor.
cd / home / pi / LightStrip / LightStrip-master / pinano lightstripcfg.py
Agora edite as configurações para corresponder à sua configuração.
- AWSIOT:digite o AWS IoT Endpoint que você anotou anteriormente.
- ROOT_CA:nome do arquivo do certificado CA raiz
- CERTIFICADO:nome do arquivo do certificado
- PRIVATE_KEY:nome do arquivo da chave privada
- DEVICE_NAME:deixe-o inalterado para "LS01"
Feche o editor nano e salve o arquivo pressionando 'Ctrl + X' e depois 'Y'.
Inicie o script lightstrip.py da seguinte maneira.
sudo python3 lightstrip.py
O script listará as portas USB conectadas. O Arduino deve estar conectado a / dev / ttyACM0, então execute o script passando a porta assim.
sudo python3 lightstrip.py / dev / ttyACM0
O cliente de teste se conectará ao serviço Amazon Thing Shadow e assinará as alterações do LS01 dispositivo de sombra. Após a conexão bem-sucedida, o script do cliente atualizará seu status para a sombra do dispositivo LS01 e receberá uma mensagem de confirmação como esta.
Para verificar se tudo está funcionando corretamente, volte ao console AWS IoT e selecione Gerenciar> Coisas menu e, em seguida, abra o LS01 dispositivo. Selecione a Sombra menu e você verá o estado de sombra do dispositivo.
Clique em Editar link na seção Shadow Document e cole o seguinte documento JSON na caixa Shadow state.
{"desejado":{"animação":"101"}}
Aqui está o que você deve ver.
Ao clicar no link Salvar, uma mensagem ‘delta’ será enviada ao cliente MQTT no Raspberry PI que ligará a faixa de led.
O seguinte documento JSON mudará a cor para azul.
{"desejado":{"color":"0066CC"}}
Neste ponto, somos capazes de controlar nossa faixa de LED do serviço ASW IoT, então você deve estar orgulhoso de você.
Função AWS Lambda
O AWS Lambda permite executar código na nuvem sem provisionar ou gerenciar servidores. É a ponte perfeita entre o Alexa Skills Kit que habilitará o controle de voz na última etapa deste projeto.
Faça login no console da AWS. Na lista de serviços, selecione Lambda .
Verifique se você está conectado à mesma região usada na etapa anterior: Leste dos EUA (Norte da Virgínia) ou EU (Irlanda) zona no canto superior direito.
Clique em Criar Função botão. Clique em Autor do zero e configure da seguinte forma:
- Name =LightStrip
- Runtime =Python 3.6
- Role =Criar um papel personalizado. Isso abrirá uma nova guia. Basta clicar no botão “Permitir” para criar uma nova função chamada lambda_basic_execution.
- Função existente:lambda_basic_execution
- Clique em Criar função botão
Anote o Lambda ARN ID no canto superior direito.
Clique em LightStrip caixa para abrir a seção de código de função.
Tipo de entrada de código:Editar código embutido
- Tempo de execução:Python 3.6
- Manipulador:lambda_function.lambda_handler
A lambda_function.py o script já deve estar definido. Cole o código de LightStrip \ lambda \ lambda_function.py arquivo no editor de código.
Crie outro arquivo chamado ala_controller.py e cole o código de LightStrip \ lambda \ ala_controller.py arquivo no editor de código.
É assim que a coisa toda deveria ser.
Quando terminar, clique no botão laranja Salvar botão no canto superior direito.
Habilidade Alexa
Agora podemos criar a habilidade customizada Light Strip para Alexa.
Vá para o Amazon Developer Console e faça login conforme necessário. Você pode precisar registrar sua conta primeiro.
Vá para Alexa> Alexa Skills Kit (primeiros passos) .
Clique em Adicionar uma nova habilidade botão no canto superior direito e insira os seguintes dados em Informações de habilidade aba:
- Tipo de habilidade:modelo de interação personalizado
- Idioma:Inglês (EUA)
- Nome:LightStrip
- Nome de invocação:faixa de luz
- Clique em Salvar
Isso cria a habilidade. Observe o ID da habilidade.
Selecione o Modelo de interação menu e, em seguida, clique em Iniciar Skill Builder botão.
Clique no Editor de código botão e cole o conteúdo de LightStrip / alexaskill / lightstrip_skill.json arquivo na caixa de texto.
Clique em Salvar modelo e Construir Modelo botões. A construção do modelo levará alguns minutos, portanto, seja paciente. Clique em Informações sobre habilidades botão para voltar à página de configuração de habilidade.
Agora clique em Configuração cardápio.
Em Service Endpoint Type, selecione AWS Lambda ARN e cole a função Lambda ARN que você anotou acima.
Deixe todos os valores padrão e clique em Salvar botão abaixo.
Conecte a habilidade Alexa à função Lambda
Volte para a sua função Lambda. No lado direito, há uma lista de gatilhos predefinidos. Selecione Alexa Skills Kit e será adicionado à sua função.
Configure da seguinte forma:
- ID do aplicativo =o ID da habilidade que você anotou acima
- Clique em Adicionar
- Clique em Salvar
Você terminou
O projeto agora está concluído. Experimente os seguintes comandos de voz:
- Faixa de luz aberta
- Ligue
- Defina o brilho para 20 por cento
- Defina o brilho para 50 por cento
- Defina a cor para vermelho
- Defina a cor como turquesa
- Desligue
- Execute uma animação emocionante
- Execute uma animação relaxante
A habilidade LightStrip também permite interações de voz mais avançadas
- Eu:Alexa, abra a Light Strip
- Alexa:Bem-vindo ao LightStrip - A faixa de LED irá brilhar com uma luz azul
- Eu:inicie uma animação
- Alexa:você quer uma animação relaxante ou emocionante?
- Eu:relaxando
- Alexa:OK - A faixa de LED mostrará uma animação aleatória
- Eu:próxima animação
- Alexa:OK - Outra animação aleatória será exibida
Para entender melhor o modelo de interação, aqui está o diagrama VUI completo da habilidade.
Aprimoramentos e refinamentos
Iniciar automaticamente o AlaWeb na inicialização
Uma pequena melhoria no projeto é iniciar automaticamente o script lightstrip.py na inicialização, para que você não precise iniciá-lo manualmente toda vez que ligar o Raspberry PI ou algo der errado e você precisar reiniciar. Siga estas instruções.
Adicionar e ajustar animações
O cskill Light Strip já tem 20 variações de animação definidas. No entanto, a biblioteca ALA permite configurar facilmente suas próprias animações escolhendo a predefinição de animação, paleta de cores e velocidade. Você pode adicionar suas próprias animações ou ajustar as existentes no script ala_controller.py. Por volta da linha 80, você verá uma lista de configurações de animações que você pode modificar ou aprimorar com base em seus gostos.
Código
LightStrip
Todo o código de que você precisa para este projetohttps://github.com/bportaluri/LightStripEsquemas
Processo de manufatura
- Painel LCD com Arduino para o simulador de vôo
- Switch / Painel de LED com Arduino para FS2020
- Arduino com Bluetooth para controlar um LED!
- Sapatos inteligentes (com laço automático e geração de eletricidade)
- Arduino Quadruped
- Controle do Servo Motor com Arduino e MPU6050
- Controle de brilho do LED usando Bolt e Arduino
- u-blox LEA-6H 02 Módulo GPS com Arduino e Python
- Braço robótico simples e inteligente usando Arduino
- Reconhecimento de fala e síntese com Arduino