Tabla de contenido:

LED controlados por Google Home: 8 pasos
LED controlados por Google Home: 8 pasos

Video: LED controlados por Google Home: 8 pasos

Video: LED controlados por Google Home: 8 pasos
Video: Cómo Configurar Luces Inteligentes con GOOGLE HOME y BRILLIANT SMART 2024, Noviembre
Anonim
LED controlados por Google Home
LED controlados por Google Home
LED controlados por Google Home
LED controlados por Google Home

Últimamente, he tenido mucho tiempo libre en mis manos, así que he estado trabajando en un montón de proyectos.

Este proyecto le permitirá controlar los LED RGB a través de Google Home usando una Raspberry Pi. Ahora hay 3 partes del proyecto, configurar una Raspberry Pi, configurar Google Home con un comando personalizado usando IFTTT y luego crear un circuito para las luces. Hice el circuito yo mismo, pero apuesto a que podrías conseguir algo de Adafruit que haga lo que se necesita.

Materiales para Raspberry Pi Part

  • Raspberry Pi: cualquiera funcionará, pero estoy usando una Zero
  • Dongle inalámbrico: si el Pi no tiene Wifi integrado
  • Google Home: opcional si tiene el Asistente de Google en su teléfono

Materiales para la parte del circuito: no dejes que esto te detenga … Es bastante simple

  • Protoboard
  • Cable
  • Tira llevada
  • Fuente de alimentación de 12 V: cualquier valor superior a 2 amperios debería estar bien
  • Conector de barril de CC: el mismo tamaño que el de su fuente de alimentación
  • Transistores de potencia NPN BJT (x3) - Estoy usando TIP31C
  • Encabezados de clavija macho y hembra: opcionales, pero muy recomendados

Paso 1: descarga de Express para Pi

Descargando Express para Pi
Descargando Express para Pi

No voy a entrar en demasiados detalles sobre la configuración del Pi porque hay muchos tutoriales para configurarlos.

Qué tendrás que hacer que no estoy cubriendo …

  • Raspberry Pi intermitente con la Raspbian más nueva
  • Configure la tarjeta de red para que pueda acceder a Internet desde el Pi
  • Establecer una IP estática en la Raspberry Pi

¡Aquí es donde comienza la diversión! Necesitamos instalar nodeJS, npm, express y express-generator.

sudo apt-get update

sudo apt-get install nodejs npm

Una vez que estén instalados, ejecute lo siguiente

npm instalar express express-generator

Express le permite crear un servidor web muy básico para su Raspberry Pi. Express-generator solo genera archivos automáticamente para un servidor express.

Cree un directorio y cd en el directorio. Llamé al mío piWebpage. Ahora ejecute lo siguiente (también se ve en la imagen)

mkdir pi

cd piWebpage express --view = ejs aplicación web

Esto generará una carpeta llamada webApp con todos los archivos express en ella. Si planea hacer más con esta página web más adelante y le gusta PUG, reemplace --view = ejs con --view = pug. No tocaremos la página web, por lo que para esta aplicación, no importa lo que usemos.

Paso 2: Configuración del servidor Pi

Muévase al nuevo directorio de la aplicación web.

cd webApp

npm install

La instalación de npm llevará algún tiempo porque está instalando todas las dependencias para express.

Pegue setColor.py en la carpeta de la aplicación web. Este archivo tiene algunos ajustes preestablecidos para colores básicos. Siéntase libre de agregar más a su gusto. El rango es de 0 a 255, donde 255 es a todo color. En algún momento, probablemente agregaré la capacidad de atenuar las luces, pero por ahora, son de brillo completo.

Moverse en rutas

rutas de cd

Ahora reemplace index.js con el archivo adjunto. Esto agregará algunas líneas para recibir un comando POST que es lo que enviará Google Home. Desde ese POST, obtendremos el color seleccionado y le diremos al Pi que ejecute el script de python setColor para ajustar las luces.

Una última cosa … Vuelve a la carpeta de la aplicación web.

cd ~ / piWebpage / webApp

Usando su editor favorito, pegue y guarde el código a continuación en su webApp.js. Cualquier lugar está bien siempre que esté antes de "module.exports = app;"

// Configurar controlador de hardware LEDconst {exec} = require ('child_process'); exec ('sudo pigpiod', (err, stdout, stderr) => {if (err) {console.log ('Error al cargar el controlador LED'); return;} else console.log ('Controlador LED cargado correctamente'); });

Como dice el comentario, pigpiod es el controlador de hardware para señales PWM que usaremos para ajustar los colores de los LED. Creo que ya viene instalado en Raspbian, pero si no …

sudo apt-get install pigpiod

¡Ahora para la prueba real! ¡Iniciando el servidor!

DEBUG = webapp: * npm start

Paso 3: Configuración de IFTTT (disparador)

Configuración de IFTTT (disparador)
Configuración de IFTTT (disparador)
Configuración de IFTTT (disparador)
Configuración de IFTTT (disparador)

IFTTT puede hacer mucho, y recomiendo encarecidamente mirar algunas de las aplicaciones.

Primero, deberá crear una cuenta. Utilice la misma cuenta de Google asociada a su Google Home; de lo contrario, no se sincronizarán entre sí. Una vez completado e iniciado sesión, haga clic en la parte superior derecha de la página IFTTT donde se muestra su nombre y avatar. Luego, haga clic en Nuevo subprograma en el menú desplegable.

Si tiene curiosidad, IFTTT significa IF This Then That si no se dio cuenta en la pantalla que aparece. Entonces, lo que queremos es Si Google Assistant, entonces Webhook como nuestras opciones.

Continúe haciendo clic en + esto que cargará una barra de búsqueda. En la búsqueda, escriba Asistente de Google y haga clic en el icono debajo de la búsqueda.

En Choose a Trigger, seleccione la tercera opción llamada Decir una frase con un ingrediente de texto. Ahora esto le permite tener 3 comandos que harán la misma acción. Agrega el $ en la frase donde mencionaría el color. Por ejemplo, si naturalmente diría Hola Google, establece los LED en azul (tan natural como puede ser gritarle a un dispositivo), entonces escribiría en el campo Establecer LED $. Haga eso para los 3 campos con diferentes versiones del comando.

Los 3 que usé fueron

LED $

Establecer LED $

Establecer color de LED $

El último campo es lo que le gustaría que respondiera su Google Home después de decir su comando. Puede ser lo que quieras, pero utilicé Establecer el color en $. El $ significa que volverá a repetir el color.

Haga clic en Crear activador

Paso 4: Configuración de IFTTT (acción)

Configuración de IFTTT (acción)
Configuración de IFTTT (acción)
Configuración de IFTTT (acción)
Configuración de IFTTT (acción)

Después de hacer clic en Crear activador, volverá a cargar en la vista si esto y luego esa, pero esto ha sido reemplazado con el logotipo del Asistente de Google. Continúe haciendo clic en + que

Lo mismo que antes, donde te lleva a la barra de búsqueda. Escriba Webhooks y haga clic en el icono de webhook debajo de la barra de búsqueda. En Elegir acción para webhooks, solo hay una opción, así que haga clic en Realizar una solicitud web.

Aquí es donde las cosas se ponen un poco complicadas. Debido a que Google no es otra computadora en su casa, necesitará su dirección IP externa. Esto requerirá un reenvío de puertos, pero lo abordaremos más adelante. Para obtener su dirección IP externa, vaya a

En el campo de la URL, escriba https://xxx.xxx.xxx.xxx:3000/{{TextField}} (siendo la x su dirección IP externa). En caso de que sienta curiosidad, TextField tendrá el color que seleccionó al realizar un comando. La razón por la que usamos 3000 es porque ese es el puerto en el que se ejecuta el servidor Raspberry Pi Express. (Puede cambiar el puerto en el código, pero solo estamos usando la configuración predeterminada para Express)

En Método, seleccione POST.

En Tipo de contenido, seleccione texto / sin formato.

En Cuerpo, escriba {{TextField}}

Aquellos de ustedes que saben cómo funciona un comando POST, pensarían que si analizan la propiedad del cuerpo de la solicitud obtendrán el color. Por alguna razón, nunca se pone nada en el campo del cuerpo de la solicitud, por lo que en realidad estoy analizando la URL para el color. Espero que se solucione pronto, ya que eso simplificaría mi código en la ruta index.js. Pero yo divago.

Por último, haga clic en Crear acción y luego en Finalizar en la página siguiente. (Apagué las notificaciones, pero eso es preferencia)

Paso 5: reenvío de puertos

Reenvío de puertos
Reenvío de puertos
Reenvío de puertos
Reenvío de puertos

Aquí es donde las cosas se vuelven difíciles de explicar porque todos los enrutadores son diferentes …

Ahora tenemos a Google enviando un comando a nuestra casa usando el puerto 3000, pero no sabe a qué dispositivo de la LAN necesita ir. Para remediar esto, necesitamos reenviar el puerto 3000 a la dirección IP local de su Raspberry Pi.

Vaya a su enrutador usando 10.0.0.1 o 192.168.1.1 (también lo he visto donde el último dígito es 254) y busque el reenvío de puertos. En el reenvío de puertos, similar a la imagen, nombrará un nuevo dispositivo (IFTTT) y reenviará el puerto (3000) a la dirección IP de Pi (en mi caso 10.0.0.11).

Guarde su nueva configuración, reinicie su enrutador y verifique que su servidor Raspberry Pi aún se esté ejecutando. Si no se está ejecutando, inícielo de nuevo.

Vuelve a ese útil sitio web https://canyouseeme.org/. Debajo de su dirección IP, tiene un verificador de puerto. Suponiendo que el reenvío de su puerto es correcto, escriba 3000 y presione verificar puerto. Debería volver con un éxito.

Paso 6: Comprobación de su trabajo hasta ahora

Comprobación de su trabajo hasta ahora
Comprobación de su trabajo hasta ahora
Comprobación de su trabajo hasta ahora
Comprobación de su trabajo hasta ahora

Ahora … el momento que ha estado esperando … Dígale a Google un comando como LED azul (si siguió mi ejemplo).

Suponiendo que todo salió correctamente, obtendrá la salida que se ve en la imagen. Todavía no tenemos un circuito, por lo que todo lo que verá es texto en una pantalla. Por lo general, hay una demora de uno o dos segundos antes de que Google lo procese y aparezca en la Pi.

(Salte al paso siguiente si esto salió de manera similar a la imagen)

Ahora, hay algunas cosas a tener en cuenta si no funcionó …

En la imagen, hay una línea que dice

POST / color / azul 200250.458 ms - 2

El 200 es la parte importante. Si no ve un 200, entonces hubo un POST incorrecto, lo que significa que su servidor no sabía qué hacer con los datos. Vuelva al paso 2 y verifique su archivo index.js.

También en la imagen

stdout: azul

stderr:

Esta es la salida del archivo Python que ejecuta los LED. Si ve un error allí, es posible que no tenga el controlador instalado en el Paso 2.

Por último, si no aparece nada en absoluto … es posible que su IFTTT no se haya configurado correctamente o no se haya podido conectar al servidor. Regrese a la página IFTTT y, en la barra de navegación superior, haga clic en Actividad. Allí, puede ver cada vez que se ha ejecutado su aplicación, y si hubo un error, puede ver cuál fue. Hice un comando de Google con el servidor Pi apagado y obtuve el error en la imagen.

Paso 7: construcción del circuito

Construyendo el circuito
Construyendo el circuito
Construyendo el circuito
Construyendo el circuito
Construyendo el circuito
Construyendo el circuito

La razón por la que necesitamos hacer esto es porque la Raspberry Pi no tiene suficiente energía… Entonces la solución es… MÁS POTENCIA (Tim, el hombre de herramientas Taylor, gruñe en la distancia). También conocido como otra fuente de alimentación (12V 2A)

Materiales para la parte del circuito

  • Protoboard
  • Cable
  • Tira de LED RGB
  • Fuente de alimentación de 12 V: cualquier valor superior a 2 amperios debería estar bien
  • Conector de barril de CC: el mismo tamaño que el de su fuente de alimentación
  • Transistores de potencia NPN BJT (x3) - Estoy usando TIP31C
  • Encabezados de pines macho y hembra

Usando la práctica imagen que robé de las redes con el GPIO del Pi Zero, puede ver que GPIO17, GPIO18 y GPIO 27 están todos uno al lado del otro con un GND. Usaremos ese cuadrado de 4 pines (Pines 11, 12, 13, 14).

En primer lugar, recomendaría soldar encabezados macho en su tira de LED como se ve en la imagen (no es mi mejor trabajo). Esto permite una fácil desconexión si alguna vez lo necesita. Usé encabezados hembra para la conexión de la tira de LED a mi protoboard y encabezados masculinos del protoboard a la Raspberry Pi. (Utilice siempre conexiones hembra para la fuente de alimentación / señal). No es necesario mover todos los pines del Pi uno al lado del otro como lo hice yo … Solo quería que se viera limpio, pero era mucho trabajo.

Explicación del circuito

Para aquellos de ustedes que no están familiarizados con los transistores, los transistores son básicamente un interruptor digital. Los pines GPIO del Pi activan los tres interruptores (rojo, verde y azul). Mirando específicamente a ROJO en el diagrama del circuito, cuando GPIO_17 está encendido, el interruptor "se cierra" conectando ROJO a GND haciendo que las luces rojas se enciendan. Cuando GPIO_17 se apaga, entonces el interruptor está abierto y, por lo tanto, las luces están apagadas.

Base - GPIO

Coleccionista - Colores (ROJO, VERDE, AZUL)

Emisor - Tierra (tanto de la fuente de alimentación como de Pi)

Asegúrese de conectar la tierra del Pi a la tierra de la fuente de alimentación. Las luces seguirán funcionando, pero parecerán muy tenues hasta que se conecte la tierra.

Tengo un cuarto dispositivo con apariencia de transistor en mi protoboard. Es un L7805CV que se usa para convertir 12V a 5V para poder alimentar el Pi en el mismo circuito. Funcionó pero se mantuvo sobrecalentado, así que quité sus conexiones.

Paso 8: ¡Pruébelo

Una vez que haya completado el circuito, reinicie su Pi antes de realizar cualquier conexión. Esto se debe a que los pines probablemente aún estén activos desde la prueba del servidor. Alternativamente, puede eliminar el servidor y el servicio pigpiod.

Conecte los LED y los puentes del protoboard al Pi. Verifique todas las conexiones antes de suministrar energía. Si lo conectó mal, podría freír su Pi (sin presión).

Lista de Verificación

  • Revise los cables
  • Power Pi
  • Circuito de potencia
  • Iniciar el servidor (DEBUG = webapp: * npm start mientras está en el directorio ~ / piWebpage / webApp)
  • ¡Dile a Google que haga tus ofertas!

FELICIDADES, no explotó nada y ahora puede controlar sus LED desde Google Home.

Deje comentarios si tiene problemas y haré todo lo posible para responderle.

Recomendado: