Integración con Arduino IoT Cloud Amazon Alexa


En la página principal de IoT Cloud,crearemos una nueva cosa y le asignaremos un nombre significativo. A continuación, seleccionaremos el tablero que vamos a usar. Si no puede ver su tablero, es posible que se haya saltado el procedimiento de introducción (consulte la sección anterior).

Una vez hecho esto, agregaremos tres propiedades a nuestra cosa. Los dos primeros representarán las lámparas,la última de la temperatura.

Aquí es lo que la vista de panel de su cosa debe verse como en este punto:

Al agregar propiedades, asegúrese de que solo utiliza los tipos enumerados en la sección Inicio inteligente, de lo contrario no funcionarán con Alexa.

The Smart Home section

La sección Smart Home

Ahora ve al Editor Web haciendo clic en el botón Editar boceto en la vista de edición de tu cosa.

 

En el Editor Web necesitamos añadir algo de código al Sketch generado automáticamente para nosotros.

Debido a que queremos leer algunos datos ambientales (a saber, la temperatura, pero no dude en agregar luz, humedad y presión si lo desea), vamos a importar la biblioteca de Arduino_MKRENV en la parte superior de nuestro boceto

#include <Arduino_MKRENV.h>

A continuación, definimos algunas constantes para los pines de placa que se utilizarán para R,G,Bandwhitelight, deesta manera el código es más legible:

#define PIN_MEETING_ROOM 5
#define PIN_LOUNGE_AREA_R 2
#define PIN_LOUNGE_AREA_B 3
#define PIN_LOUNGE_AREA_G 4

Ahora en la función de configuración podemos inicializar el Arduino MKR ENV Shield con:

if (!ENV.begin()) {  
 Serial.println("Failed to initialize MKR ENV shield!");  
 while (1);
}

De esta manera, si el escudo no está instalado, se bloqueará la ejecución de Sketch.

No es necesario especificar que tiene que ser porque vamos a utilizar para establecer la intensidad de nuestro LED blanco o los colores individuales del RGB.pinModeOUTPUTanalogWrite()

En la función loopfunction vamos a leer la temperatura cada segundo:

temperature = ENV.readTemperature();delay(1000);

Por último, es el momento de implementar nuestras funciones de devolución de llamada: las que se ejecutarán cada vez que se extraiga un cambio en el valor de una propiedadde IoT Cloud.

Tenemos que implementar y :onMeetingRoomChangeonLoungeAreaChange

void onMeetingRoomChange()
 { uint8_t brightness = map(meetingRoom.getBrightness(), 0, 100, 0, 255); 
if (meetingRoom.getSwitch())
 {   Serial.println(brightness); 
  analogWrite(PIN_MEETING_ROOM, brightness);   
  } else{ 
  analogWrite(PIN_MEETING_ROOM, LOW); 
}}

con el código anterior primero leemos el valor de brillo de la nube y lo mapeamos a un valor utilizable, luego verificamos si el interruptor de luz está encendido, si es que podemos encender la luz, usando el rojo antes. De lo contrario, apagamos la luzbrightness

El principio de trabajo es el mismo para la otra devolución de llamada:

void onLoungeAreaChange() 
{ uint8_t r, g, b;
 loungeArea.getValue().getRGB(r, g, b);
 if (loungeArea.getSwitch()) { 
  Serial.println("R:"+String(r)+" G:"+String(g)+ " B:"+String(b));   analogWrite(PIN_LOUNGE_AREA_R, r);  
 analogWrite(PIN_LOUNGE_AREA_B, b);  
 analogWrite(PIN_LOUNGE_AREA_G, g); }
 else{    
Serial.println("Lamp Off");   
 analogWrite(PIN_LOUNGE_AREA_R, 0);   
 analogWrite(PIN_LOUNGE_AREA_B, 0);    
analogWrite(PIN_LOUNGE_AREA_G, 0);
 }}

La única diferencia notable es el hecho de que en lugar del brillo justo, tenemos tres componentes diferentes: son la representación del color RGB de la luz. Por supuesto, podemos definir colores personalizados por nombre en la aplicación Alexa para que no tengamos que decir manualmente qué cantidades de rojo, verde o azul queremos establecer.

Amazon Alexa

Ahora necesitaremos la aplicación Amazon Alexa que se puede descargar desde apple App Store o Google Play Store. Una vez instalado, inicie sesión con su cuenta existente o cree una nueva.

Importante:Cuando se le pida que inicie sesión, asegúrese de utilizar las mismas credenciales utilizadas para crear su Arduino IoT Cloud Thing, de lo contrario no funcionará.

Además, tenemos que instalar la habilidad de hogar inteligente necesaria para interactuar con nuestro MKR1010. Para ello, vaya a Dispositivos (icono inferior derecho) y haga clic en YourSmartHomeSkillsy, a continuación, en EnableYourSmartHomeSkill.

Devices view

Vista de dispositivos

Ahora busca la habilidad llamada Arduino y agréguela. En el mismo momento de esta escritura, esa habilidad no está disponible en todo el mundo, pero estamos trabajando en ello y la aprobación para otros países está en curso.

Arduino Smart Home skill

Habilidad Arduino Smart Home

La pantalla debería tener este aspecto:

Devices with Arduino skill installed

Dispositivos con habilidad Arduino instalada

Ahora que la habilidad está configurada, finalmente podemos añadir nuestros dispositivos. Para hacerlo, vuelva a la pantalla Dispositivos y toque el signo + en la parte superior.

Add a new device

Añadir un nuevo dispositivo

Pulse en AddDevice, luego En otros y DiscoverDevices. El proceso de búsqueda puede tomar un poco, pero al final se le debe presentar esta pantalla:

Después de pulsar en Elegir dispositivo se le presentará la página de configuración que enumera todos los dispositivos disponibles (Se nombrarán de acuerdo con cómo nombramos nuestras propiedades en Arduino IoT Cloud).

Vamos a elegir un dispositivo y puntee SetUpDevice. Si te gusta también puedes añadirlo a un grupo (De esta manera puedes controlar y organizar tus dispositivos más fácilmente), de lo contrario omite esta parte.

Repita el proceso de configuración para cada dispositivo que desee controlar.

Por último, la vista del dispositivo debe tener este aspecto:

Finalmente podemos empezar a preguntar cosas como «Alexa, ¿cuál es la temperatura en la oficina?» o «Alexa enciende la luz en la sala de reuniones».

!Diviértase jugando con Alexa y IoT Cloud.!

 

 

Regleta IoT para ahorro de energía



En este proyecto el autor utlizaba interruptores de alimentación de red en su lugar de trabajo para encender / apagar / apagar y encender de forma remota hosts y otros equipos. Estos son equipos bastante caros que generalmente tienen una interfaz basada en web o de línea de comando para administrar el equipo remoto. En su casa, tiene dos tomas de corriente a las que están conectados varios dispositivos. Pensó que sería genial si tuviera algo como el interruptor de alimentación de red en sui casa por las siguientes razones:

1. Contaba con dos Raspberry Pis que a veces cuelgan y tienen que encenderlas y apagarlas. Hacerlo a la antigua usanza es bastante tedioso.

2. Hay algunos dispositivos, como el televisor, el decodificador de cable, la barra de sonido, etc., que se ponen en modo de espera cuando no se usan activamente. Aunque están en modo de espera, todavía obtienen algo de energía. el autor necesitaba una forma de apagarlos cuando no se usa para ahorrar energía.

3. Hay otros dispositivos que no tienen un modo de espera y necesitan ser encendidos para usarlos y apagarlos más tarde.

Componentes

  • Chip microcontrolador: ATMEGA1284P-PU
  • Módulo ESP8266 ESP-01
  • Pantalla LCD ILI9341 TFT Touch SPI
  • Registro de desplazamiento 74HC595 x 3
  • Módulo de relé de 8 canales x 2
  • Módulo de relé de 4 canales o dos módulos de relé de 2 canales
  • Tira de LED WS2812B
  • Oscilador de cristal de 8 MHz
  • Resistencias
  • Condensadores
  • Breakaway encabezados macho y hembra
  • Tomas dc hembra
  • PCB
  • Módulo de fuente de alimentación de 220 V CA a 5 V CC 2 amperios
  • LM1117 3.3v LDO regulador de voltaje
  • Regletas de enchufes
  • Recintos
  • Fuente de alimentación de 220v a 5v 40 amperios

El circuito

El circuito no es complicado. El ATMEGA1284P (con el cargador de arranque Arduino) se utiliza para enviar datos a los tres registros de desplazamiento 595 conectados en serie. Las salidas de los registros de desplazamiento están conectadas a los relés. Dependiendo de los datos enviados a los registros de desplazamiento, los relés individuales se pueden activar o desactivar. Los relés se utilizan para encender o apagar los enchufes de las tomas de corriente.

Un módulo ESP8266 está conectado al Arduino a través del puerto serie. El módulo ESP8266 recibe comandos a través de WiFi y los envía al Arduino. También hay disponible una pantalla táctil LCD que muestra los estados de los enchufes individuales y a través de los cuales también se pueden controlar los enchufes.

Los archivos Kicad del circuito se pueden encontrar en la carpeta power_strip_kicad

Preparar las tiras de alimentación

Modificar las tiras de potencia es bastante sencillo. Como se puede ver, ambas regletas tienen interruptores para cada toma.

Generalmente, el cable de línea se conectará a un extremo de los interruptores y el otro extremo de cada interruptor se conectará al orificio de línea de cada toma. Esta conexión entre el cable de línea y los interruptores debe eliminarse. Los cables deben soldarse a cada uno de los interruptores. También es necesario soldar un cable al cable de línea que proviene de la red eléctrica.

La idea es que el cable de línea se conectará al terminal central (COM) del relé. Los terminales COM de todos los relés también estarán conectados entre sí. Y los cables de cada uno de los interruptores se conectarán al terminal NO (normalmente abierto) de cada relé. Por lo tanto, cuando el relé se apaga, el circuito se abrirá y el zócalo se apagará. Cuando se enciende el relé, el circuito se cerrará y el zócalo se encenderá

Código

El boceto de Arduino para el chip ATMEGA1284 y el código fuente para el firmware del módulo ESP8266 se pueden encontrar en: https://github.com/tangophi/IoT-Power-Strip

El firmware de los módulos ESP8266 se basa en el sdk abierto ESP8266. En lugar del SDK, Arduino IDE también se puede utilizar.

La idea general es que el módulo ESP8266 se suscribe a los siguientes temas de MQTT:

/ board3 / OnCommand

/ board3 / OffCommand

/ board3 / ResetCommand

La aplicación de teléfono inteligente NetIO envía mensajes de socket a la instancia de nodo rojo en la frambuesa pi. Lo que a su vez envía mensajes apropiados a los temas MQTT. Cuando el ESP8266 recibe estos mensajes, envía cadenas JSON al Arduino a través del puerto serie UART. Y cuando el Arduino recibe estas cadenas, enviará los datos apropiados a los registros de desplazamiento para encender / apagar los relés. Cuando se recibe un comando de reinicio, apagará el relé y lo volverá a encender después de 5 segundos. El Arduino también actualizará la pantalla LCD con los estados de los enchufes.

Cuando la pantalla LCD se usa para controlar los zócalos, el Arduino enviará el estado modificado del zócalo al módulo ESP8266. El módulo wifi enviará esta información al agente MQTT y la instancia de nodo rojo se actualizará. Y la aplicación NetIO consultará periódicamente la instancia de nodo rojo para conocer los últimos estados de los sockets y actualizará la aplicación en consecuencia. El Arduino también enviará periódicamente los estados de todos los sockets.Añadir consejo Hacer pregunta Comentario Descargar

Se utilizan en este proyecto o dos Raspberry Pis, un concentrador USB con alimentación, un proyecto Ambilight y algunos otros proyectos de 5v. La alimentación de cada uno de ellos requería adaptadores de fuente de alimentación individuales de 220v a 5v. Para deshacese de estos adaptadores, se optó por una fuente de alimentación de 40Amps 5V. Y lo conecté a 8 tomas de corriente CC hembra en una caja de plástico. Cada una de estas tomas de CC está controlada por un relé

Montaje / Instalación

Como se puede ver en las imágenes, se utilizaron cuatro cajas de plástico para instalar la placa de circuito y los módulos de relé.

* Se utilizo un cortador de cartón para hacer un agujero en la tapa de un gabinete para que se ajuste a la pantalla LCD.

* Se utilizó un taladro para hacer 8 agujeros en otro recinto para que se ajusten a las tomas CC hembra.

Luego se trataba de conectar el cable de línea de cada regleta a los terminales COM de los relés y los cables de cada interruptor al terminal NO de cada dispositivo.

Para el primer módulo de relé, se conecta el terminal positivo de la fuente de alimentación de 5v 40A a los terminales COM del relé. Luego conectar el terminal NO de cada relé al terminal positivo de las tomas de CC. También se usan algunos condensadores entre los + y – de cada jack solo para suprimir / evitar cualquier ruido

Aplicación para teléfonos inteligentes

La aplicación para teléfonos inteligentes se creó con el Editor de diseño de NetIO en

http://netio.davideickhoff.de/editor

Una vez que la aplicación está diseñada, la aplicación NetIO debe descargarse a su teléfono inteligente. Tenga en cuenta que esta es una aplicación de pago, pero no cuesta mucho. Cada vez que se presiona un botón / interruptor / control deslizante en la aplicación, enviará un mensaje a través de los sockets al cuadro Rpi que se está ejecutando en el nodo rojo. La aplicación de nodo rojo procesará los mensajes y luego enviará mensajes MQTT a la placa de la regleta de alimentación de IoT.

Para que la aplicación del teléfono inteligente funcione, debe estar en la misma red que la placa de la tira de alimentación de IoT. Es posible usar la aplicación de teléfono inteligente desde fuera de la red local. Si el ISP permite conexiones entrantes, es solo cuestión de reenviar el puerto del zócalo en el enrutador. Si el ISP no permite conexiones entrantes, entonces se puede usar VPN como solución alternativa

Con la aplicación de teléfono inteligente, es posible encender / apagar / restablecer cualquiera de los enchufes. Con la pantalla táctil LCD, es posible encender / apagar cualquier enchufe. Además, el estado de cada una de las tomas se actualiza periódicamente tanto en la pantalla como en la pantalla LCD

Para obtener más detalles sobre cómo encajan las distintas piezas, puede visitar este segundo instructable en https: //www.instructables.com/id/IoT-Wall-Outlet-wi … Ese instructable es sobre otro proyecto de automatización del hogar y tiene descripciones detalladas sobre cómo otra placa IoT en una casa está controlada por node-red y la aplicación de teléfono inteligente. El proyecto de regleta IoT también utiliza las mismas instancias de nodo rojo y MQTT.

La razón por usar un chip ATMEGA1284 es por tener una pantalla LCD táctil. También era bastante posible hacerlo con un Arduino Pro Mini, pero la memoria no es suficiente para esas necesidades. Por lo tanto, utilizó el chip ATMEGA1284.Si no necesita la pantalla LCD, puede usar un Arduino y un módulo ESP8266 o simplemente un módulo ESP8266 ESP12.

Fuente https://www.instructables.com/id/IoT-Power-Strip/