Habilita el control de Alexa en tu ventilador de techo
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Herramientas y máquinas necesarias
|
Aplicaciones y servicios en línea
| ||||
| ||||
|
Acerca de este proyecto
Detallaré aquí cómo hice que mi ventilador de techo regular fuera inteligente al integrar Amazon Alexa para el control de velocidad del mismo. Usaremos el conjunto de habilidades de amazon alexa para iniciar el cambio de velocidad, y seremos ngrok servicio de tunelización para enrutar la solicitud a nuestro servidor RPi alojado localmente, que le dirá a nuestro Arduino uno que encienda el relé relacionado.
Configuración de nuestro servidor Raspberry Pi local
necesitamos los siguientes servicios para hacer uso de nuestro servidor.
- Python PIP:para instalar paquetes de Python, si está utilizando python 2.7 o 3 pip se instalarán de forma predeterminada, por lo tanto, puede evitar este paso
sudo apt-get install python-pip
- Flask:Flask es un paquete de servidor para Python que le ayudará a implementar servidores Python fácilmente.
matraz de instalación de pip
- flask ask:una extensión de matraz que se utiliza para crear fácilmente programas de alexa frendly.
pip install flask-ask
- pyserial:módulo de comunicación en serie para python
sudo apt-get install pyserial
- libpython2.7-dev
sudo apt-get intall libpython2.7-dev
todos los módulos necesarios están instalados, es hora de que el servidor se ejecute. necesitamos ingresar el script de Python para el mismo
from flask import Flaskfrom flask_ask import Ask, statementimport ordersimport jsonimport serial ser =serial.Serial ("/ dev / ttyAMA0", 9600) app =Flask (__ name __) ask =Ask (app, '/') @ [email protected] ("FanOn") def on ():ser.write (b'1 ') return statement ("Ventilador de techo encendido") @ ask.intent ("FanOff") def off () :ser.write (b'0 ') return statement ("Ventilador de techo apagado.") @ ask.intent ("FanLevelUp") def up ():ser.write (b' + ') return statement ("Ventilador de techo acelerar. ") @ ask.intent (" FanLevelDown ") def down ():ser.write (b'- ') return statement (" Reducir la velocidad del ventilador de techo. ") if __name__ ==" __main__ ":app.run (debug =True)
Ejecute este script de Python e inscriba este script en la lista de inicio automático de su RPi.
3. Descarga Ngrok
Ngrok es una plataforma de tunelización segura para que su dispositivo esté en línea. Con esta plataforma puedes hacer que tu aplicación web o cualquier aplicación se conecte en línea de una manera muy sencilla. Para descargar, vaya al sitio oficial y descargue para ARM.
https://ngrok.com/
Descomprímalo y vaya al directorio donde lo extrae. Ejecútelo usando el comando
./ngrok http 5000
Habilidad de Alexa
Vaya a la página de desarrollador de Amazon y regístrese para obtener su cuenta de desarrollador
https://developer.amazon.com/
Ingrese a la consola del desarrollador después de iniciar sesión y ahora ingrese y seleccione "Kit de habilidades de Alexa"
ahora seleccione "Agregar nueva habilidad"
Ingrese el nombre de su habilidad e ingrese un nombre de invocación. asegúrese de que su nombre de invocación cumpla con las condiciones necesarias
guardar y continuar con el paso siguiente
aquí ingrese las intenciones para la invocación de la habilidad y los ejemplos de enunciados, es decir, las combinaciones de palabras para iniciar cada intención.
Las intenciones son las siguientes
{"intents":[{"intent":"FanOn"}, {"intent":"FanOff"}, {"intent":"FanLevelUp"}, {"intent":"FanLevelDown" }]}
expresiones de muestra
FanOn dice fan onFanOn dice onFanOff dice offFanOff dice ventilador apagadoFanLevelUp dice que sube el nivel del ventiladorFanLevelUp dice que aumenta la velocidad del ventiladorFanLevelDown dice que baja el nivel del ventiladorFanLevelDown dice que disminuye la velocidad del ventilador
Guarde y pase a la siguiente etapa. aquí deberá ingresar la ubicación a la que se espera que envíe los datos una vez que se invoca una intención.
ya que estamos usando ngrok , seleccione HTTPS, e ingrese el enlace seguro que se genera en ngrok serve, guárdelo y continúe con el siguiente paso
elija la segunda opción para el Certificado SSL y continúe
Para comprobar si nuestra configuración funciona o no. Asegúrese de que su servidor ngrok esté funcionando y la secuencia de comandos de Python también se esté ejecutando; de lo contrario, no funcionará.
podemos ver que los servidores están recibiendo solicitudes y actualizándolas.
Código Arduino
cargue el boceto adjunto de su arduino y conéctelo a raspberry pi como se explica en el esquema.
int Fan [] ={13,12,11,10,9,8}; int n =0; void reset (); void set (char); void setup () {// ponga su código de configuración aquí, para que se ejecute una vez:for (int i =0; i <6; i ++) {pinMode (Fan [i], SALIDA); } Serial.begin (9600); } bucle vacío () {char x; if (Serial.available ()) {x =Serial.read (); Reiniciar(); set (x);}} void reset () {for (int i =0; i <6; i ++) {digitalWrite (Fan [i], LOW); }} conjunto vacío (char x) {interruptor (x) {caso '1':n =1; descanso; caso '+':n ++; descanso; caso '-':n--; descanso; caso '0':n =0; descanso; } digitalWrite (Fan [n], HIGH);}
Hardware
conecte el hardware como se muestra en el esquema
Hacer feliz. hacer que cualquier otro dispositivo se active por voz de manera similar :)
Código
- bosquejo de arduino
- Código del servidor Python
arduino sketch Arduino
sube este código a tu arduino y conéctalo a tu servidor raspberry piint Fan [] ={13,12,11,10,9,8}; int n =0; void reset (); void set (char); void setup () {// ponga su código de configuración aquí, para que se ejecute una vez:for (int i =0; i <6; i ++) {pinMode (Fan [i], SALIDA); } Serial.begin (9600); } bucle vacío () {char x; if (Serial.available ()) {x =Serial.read (); Reiniciar(); set (x);}} void reset () {for (int i =0; i <6; i ++) {digitalWrite (Fan [i], LOW); }} conjunto vacío (char x) {interruptor (x) {caso '1':n =1; descanso; caso '+':n ++; descanso; caso '-':n--; descanso; caso '0':n =0; descanso; } digitalWrite (Fan [n], HIGH);}
Código del servidor Python Python
Desbloquee este código en su spython después de que ngrok esté configurado para recibir datosde flask import Flaskfrom flask_ask import Pregunte, declaración de importación requestimport jsonimport serial ser =serial.Serial ("/ dev / ttyAMA0", 9600) app =Flask (__ name__ ) ask =Ask (app, '/')@[email protected]("FanOn")def on ():ser.write (b'1') return statement ("Ventilador de techo encendido") @ ask.intent ("FanOff") def off ():ser.write (b'0 ') return statement ("Ventilador de techo apagado.") @ ask.intent ("FanLevelUp") def up ():ser.write (b '+') return statement ("Aceleración del ventilador de techo.") @ ask.intent ("FanLevelDown") def down ():ser.write (b'- ') return statement ("Reducción de velocidad del ventilador de techo." ) si __name__ =="__main__":app.run (debug =True)
Esquemas
así es como se conectan los dispositivosProceso de manufactura
- Creación de una red de sensores inalámbricos en su hogar
- Controlar el aceptador de monedas con Arduino
- Centro de control de Arduino
- LED controlados por Alexa a través de Raspberry Pi
- ¡Arduino con Bluetooth para controlar un LED!
- Control del humidificador Arduino
- Arduino Nano:Controla 2 motores paso a paso con joystick
- Controla tu LED con Cortana
- Control total de su televisor con Alexa y Arduino IoT Cloud
- Conecte su calefacción central a Arduino
- Control de ventilador PWM de 4 pines y 25 kHz con Arduino Uno