Índice:

LEDs controlados pelo Google Home: 8 etapas
LEDs controlados pelo Google Home: 8 etapas

Vídeo: LEDs controlados pelo Google Home: 8 etapas

Vídeo: LEDs controlados pelo Google Home: 8 etapas
Vídeo: Gledopto GL-C-103P - Zigbee контроллер для адресных LED светильников, первое знакомство 2024, Novembro
Anonim
LEDs controlados pelo Google Home
LEDs controlados pelo Google Home
LEDs controlados pelo Google Home
LEDs controlados pelo Google Home

Ultimamente, tenho tido muito tempo livre em minhas mãos, então tenho trabalhado em vários projetos.

Este projeto permitirá que você controle LEDs RGB via Google Home usando um Raspberry Pi. Agora, existem 3 partes do projeto, configurar um Raspberry Pi, configurar o Google Home com um comando personalizado usando IFTTT e, em seguida, criar um circuito para as luzes. Eu mesmo fiz o circuito, mas aposto que você poderia conseguir algo de Adafruit que faça o que for necessário.

Materiais para Raspberry Pi Part

  • Raspberry Pi - qualquer um vai funcionar, mas estou usando um Zero
  • Dongle sem fio - se o Pi não tiver Wi-Fi integrado
  • Google Home - Opcional se você tiver o Google Assistente em seu telefone

Materiais para a parte do circuito - Não deixe que isso o impeça … É bastante simples

  • Protoboard
  • Arame
  • Tira LED
  • Fonte de alimentação de 12 V - Qualquer coisa acima de 2 amperes deve servir
  • Jack Barrel DC - Mesmo tamanho da fonte de alimentação
  • Transistores de potência NPN BJT (x3) - Estou usando o TIP31C
  • Cabeçalhos de alfinetes masculinos e femininos - opcionais, mas altamente recomendados

Etapa 1: Baixando Express for the Pi

Baixando Express para o Pi
Baixando Express para o Pi

Não vou entrar em muitos detalhes sobre a configuração do Pi porque existem muitos tutoriais para configurá-los.

O que você precisa fazer que não estou cobrindo …

  • Raspberry Pi piscando com o mais novo Raspbian
  • Configure a placa de rede para que você possa acessar a internet do Pi
  • Defina um IP estático no Raspberry Pi

Agora é aqui que a diversão começa! Precisamos instalar nodeJS, npm, express e express-generator.

sudo apt-get update

sudo apt-get install nodejs npm

Depois de instalados, execute o seguinte

npm instalar express express-generator

O Express permite que você crie um servidor da web muito básico para o seu Raspberry Pi usar. Express-generator apenas gera arquivos automaticamente para um servidor expresso.

Faça um diretório e faça cd nele. Chamei meu piWebpage. Agora execute o seguinte (visto na imagem também)

mkdir piWebpage

cd piWebpage express --view = ejs webApp

Isso irá gerar uma pasta chamada webApp com todos os arquivos express nela. Se você planeja fazer mais com esta página da web posteriormente e gosta do PUG, substitua --view = ejs por --view = pug. Não tocaremos na página da web, portanto, para este aplicativo, não importa o que usarmos.

Etapa 2: Configuração do servidor Pi

Mova para o novo diretório webApp.

cd webApp

npm install

O npm install levará algum tempo porque está instalando todas as dependências do express.

Cole setColor.py na pasta webApp. Este arquivo contém algumas predefinições para cores básicas. Sinta-se à vontade para adicionar mais conforme desejar. O intervalo é de 0 a 255, onde 255 é totalmente colorido. Em algum momento, provavelmente adicionarei a capacidade de diminuir as luzes, mas, por enquanto, elas estão com brilho total.

Mover-se para as rotas

rotas de cd

Agora substitua index.js pelo arquivo anexado. Isso adicionará algumas linhas para receber um comando POST que é o que o Google Home enviará. A partir desse POST, obteremos a cor selecionada e diremos ao Pi para executar o script setColor python para ajustar as luzes.

Uma última coisa … Volte para a pasta webApp.

cd ~ / piWebpage / webApp

Usando seu editor favorito, cole e salve o código abaixo em seu webApp.js. Qualquer lugar está bem, desde que esteja antes de "module.exports = app;"

// Configurar driverconst de hardware LED {exec} = require ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Erro ao carregar o driver do LED'); return;} else console.log ('Driver do LED carregado com sucesso'); });

Como diz o comentário, pigpiod é o driver de hardware para sinais PWM que usaremos para ajustar as cores do LED. Acredito que já venha instalado no Raspbian, mas senão…

sudo apt-get install pigpiod

Agora, para o teste real! Iniciando o servidor!

DEBUG = webapp: * npm start

Etapa 3: configuração do IFTTT (gatilho)

Configuração IFTTT (gatilho)
Configuração IFTTT (gatilho)
Configuração IFTTT (gatilho)
Configuração IFTTT (gatilho)

O IFTTT pode fazer muito, e eu recomendo fortemente que você dê uma olhada em alguns dos aplicativos.

Primeiro, você precisa fazer uma conta. Use a mesma conta do Google associada ao seu Google Home, caso contrário, eles não serão sincronizados. Depois de concluído e conectado, clique no canto superior direito da página IFTTT, onde mostra seu nome e avatar. Em seguida, clique em Novo miniaplicativo no menu suspenso.

Se você está curioso, IFTTT significa IF This Then That se você não percebeu na tela que aparece. Então, o que queremos é se o Google Assistant, Webhook como nossas opções.

Prossiga clicando em + isto que irá carregar uma barra de pesquisa. Na pesquisa, digite Google Assistant e clique no ícone abaixo da pesquisa.

Em Escolher um Gatilho, selecione a terceira opção chamada Diga uma frase com um ingrediente de texto. Agora, isso permite que você tenha 3 comandos que farão a mesma ação. Você adiciona o $ na frase onde você mencionaria a cor. Por exemplo, se eu naturalmente dissesse Ei Google, defina LEDs azuis (tão natural quanto gritar com um dispositivo pode ser), eu digitaria no campo Definir LEDs $. Faça isso para todos os 3 campos com diferentes versões do comando.

Os 3 que usei eram

LEDs $

Definir LEDs $

Definir a cor do LED $

O último campo é o que você gostaria que seu Google Home respondesse depois de dizer seu comando. Pode ser o que você quiser, mas usei Setting color to $. O $ significa que ela repetirá a cor de volta.

Clique em Criar acionador

Etapa 4: configuração do IFTTT (ação)

Configuração IFTTT (ação)
Configuração IFTTT (ação)
Configuração IFTTT (ação)
Configuração IFTTT (ação)

Depois de clicar em Criar acionador, você carregará de volta para se esta então aquela visualização, mas foi substituído pelo logotipo do Google Assistente. Continue clicando em + isso

A mesma coisa de antes, quando você acessa a barra de pesquisa. Digite Webhooks e clique no ícone do webhook abaixo da barra de pesquisa. Em Escolher ação para webhooks, há apenas uma opção, então clique em Fazer uma solicitação da web.

É aqui que as coisas ficam um pouco complicadas. Como o Google não é outro computador da sua casa, você precisará do seu endereço IP externo. Isso exigirá algum encaminhamento de porta, mas falaremos disso mais tarde. Para obter o seu endereço IP externo, vá para

No campo URL, digite https://xxx.xxx.xxx.xxx:3000/{{TextField}} (com o x sendo seu endereço IP externo). Caso você esteja curioso, TextField terá a cor que você selecionou ao fazer um comando. A razão de usarmos 3000 é porque essa é a porta em que o servidor Raspberry Pi Express está sendo executado. (Você pode alterar a porta no código, mas estamos apenas usando as configurações padrão para Express)

Para Método, selecione POST.

Para Tipo de conteúdo, selecione texto / simples.

Para Corpo, digite {{TextField}}

Aqueles de vocês que sabem como um comando POST funciona, vocês pensariam que se você analisasse a propriedade do corpo da solicitação, obteria a cor. Por algum motivo, nada é colocado no campo do corpo da solicitação, então estou analisando o URL para a cor. Espero que isso seja corrigido em breve, pois isso simplificaria meu código na rota index.js. Mas estou divagando.

Por último, clique em Criar ação e em Concluir na próxima página. (Eu desativei as notificações, mas isso é preferência)

Etapa 5: Encaminhamento de porta

Encaminhamento de porta
Encaminhamento de porta
Encaminhamento de porta
Encaminhamento de porta

É aqui que as coisas ficam difíceis de explicar porque todos os roteadores são diferentes …

Agora temos o Google enviando um comando para nossa casa usando a porta 3000, mas não sabe para qual dispositivo da LAN ele precisa ir. Para remediar isso, precisamos encaminhar a porta 3000 para o endereço IP local do seu Raspberry Pi.

Vá para o seu roteador usando 10.0.0.1 ou 192.168.1.1 (também vi onde o último dígito é 254) e encontre o encaminhamento de porta. No encaminhamento de porta, semelhante à imagem, você nomeará um novo dispositivo (IFTTT) e encaminhará a porta (3000) para o endereço IP do Pi (no meu caso 10.0.0.11).

Salve sua nova configuração, reinicie o roteador e verifique se o servidor Raspberry Pi ainda está em execução. Se não estiver funcionando, inicie-o novamente.

Volte para aquele site útil https://canyouseeme.org/. Abaixo do seu endereço IP, há um verificador de porta. Assumindo que o encaminhamento de porta está correto, digite 3000 e clique em verificar porta. Deve voltar com um sucesso.

Etapa 6: Verificando seu trabalho até agora

Verificando seu trabalho até agora
Verificando seu trabalho até agora
Verificando seu trabalho até agora
Verificando seu trabalho até agora

Agora … o momento que você estava esperando … Diga ao Google um comando como LEDs azuis (se você seguiu meu exemplo).

Supondo que tudo tenha ocorrido corretamente, você obterá a saída vista na imagem. Ainda não temos um circuito, então tudo o que você verá é um texto em uma tela. Geralmente, há um atraso de um ou 2 segundos antes de ser processado no Google e aparecer no Pi.

(Pule para a próxima etapa se ficar parecido com a imagem)

Agora, há algumas coisas a serem observadas se não funcionou …

Na foto, há uma linha que diz

POST / cor / azul 200 250,458 ms - 2

Os 200 são a parte importante. Se você não estiver vendo um 200, significa que houve um POST incorreto, o que significa que seu servidor não sabia o que fazer com os dados. Volte para a Etapa 2 e verifique seu arquivo index.js.

Também na foto

stdout: blue

stderr:

Esta é a saída do arquivo python que executa os LEDs. Se você vir um erro aí, pode ser que você não tenha o driver instalado na Etapa 2.

Por último, se nada apareceu … seu IFTTT pode não ter sido configurado corretamente ou não conseguiu se conectar ao servidor. Volte para a página IFTTT e, na barra de navegação superior, clique em Atividade. Lá, você pode ver todas as vezes que seu aplicativo foi executado e, se ocorreu um erro, você pode ver o que foi. Fiz um comando do Google com o servidor Pi desligado e obtive o erro na imagem.

Etapa 7: Construindo o Circuito

Construindo o Circuito
Construindo o Circuito
Construindo o Circuito
Construindo o Circuito
Construindo o Circuito
Construindo o Circuito

A razão pela qual precisamos fazer isso é porque o Raspberry Pi não tem energia suficiente … Então a solução é … MAIS PODER (Tim, o homem da ferramenta, Taylor grunhe ao longe). Também conhecido como outra fonte de alimentação (12V 2A)

Materiais para peça de circuito

  • Protoboard
  • Arame
  • Tira LED RGB
  • Fonte de alimentação de 12 V - Qualquer coisa acima de 2 amperes deve servir
  • DC Barrel Jack - Mesmo tamanho da fonte de alimentação
  • Transistores de potência NPN BJT (x3) - Estou usando o TIP31C
  • Cabeçalhos de alfinetes masculinos e femininos

Usando a imagem útil que roubei da interwebs com o GPIO do Pi Zero, você pode ver GPIO17, GPIO18 e GPIO 27 estão todos próximos um do outro com um GND. Estaremos usando aquele quadrado de 4 pinos (pinos 11, 12, 13, 14).

Em primeiro lugar, eu recomendaria soldar conectores machos em sua faixa de LED, como visto na imagem (não é o meu melhor trabalho). Isso permite uma desconexão fácil, se necessário. Usei conectores femininos para a conexão da faixa de LED ao meu protoboard e conectores masculinos do protoboard ao Raspberry Pi. (Sempre use conexões fêmeas para fonte de alimentação / sinal). Você não precisa mover todos os pinos do Pi próximos uns dos outros como eu fiz … Eu só queria que parecesse limpo, mas deu muito trabalho.

Explicação do circuito

Para aqueles que não estão familiarizados com transistores, eles são basicamente uma chave digital. Os pinos GPIO do Pi acionam os três interruptores (vermelho, verde e azul). Olhando especificamente para VERMELHO no diagrama de circuito, quando GPIO_17 está ligado, a chave "fecha" conectando VERMELHO ao GND fazendo com que as luzes vermelhas se acendam. Quando o GPIO_17 é desligado, a chave está aberta e as luzes apagadas.

Base - GPIOs

Colecionador - Cores (VERMELHO, VERDE, AZUL)

Emissor - Terra (da fonte de alimentação e do Pi)

Certifique-se de conectar o aterramento do Pi ao aterramento da fonte de alimentação. As luzes ainda funcionarão, mas parecerão muito fracas até que o aterramento seja conectado.

Eu tenho um 4º transistor que parece um dispositivo no meu protoboard. É um L7805CV que é usado para converter 12V em 5V para que eu pudesse alimentar o Pi no mesmo circuito. Funcionou, mas continuou aquecendo, então removi suas conexões.

Etapa 8: Teste

Depois de concluir o circuito, reinicie seu Pi antes de fazer qualquer conexão. Isso ocorre porque os pinos provavelmente ainda estão ativos no teste do servidor. Alternativamente, você pode matar o servidor e o serviço pigpiod.

Conecte os LEDs e os jumpers do protoboard para o Pi. Verifique todas as conexões antes de fornecer energia. Se você conectou errado, você pode fritar seu Pi (sem pressão).

Lista de controle

  • Verifique os fios
  • Power Pi
  • Circuito elétrico
  • Inicie o servidor (DEBUG = webapp: * npm start enquanto estiver no diretório ~ / piWebpage / webApp)
  • Diga ao Google para fazer o seu lance!

PARABÉNS, você não explodiu nada e agora você pode controlar seus LEDs a partir do Google Home.

Deixe comentários se estiver tendo problemas e farei o possível para entrar em contato com você!

Recomendado: