Integración Arduino IoT Cloud Amazon Alexa


En este post vamos integrar Arduino con Alexa para lo cual vamos a utilizar Arduino IoT Cloud, es decir usaremos el Editor web Arduino , Arduino IoT Cloud asi como Alexa Skills para Arduino .

En cuanto al hardware se usaran los siguientes componentes:

  • Arduino MKR WiFi 1010 × 1
  • Escudo Arduino MKR ENV × 1
  • Protoboard (genérico) × 1
  • LED de alto brillo, blanco × 1
  • Cables de puente (genéricos) × 1
  • Cátodo común LED RGB × 1
  • Resistencia 220 ohmios

1: Arduino IoT Cloud y montaje inicial

El esquema que se va a usar es bastante simple, como se puede ver en la imagen de abajo, pues se basa en dos simples leds ( uno tricolor) con sus correspondientes resistencias limitadoras todo ello conectado a un arduino MKR

Desde la página principal de IoT Cloud , crearemos algo nuevo y le asignaremos un nombre significativo Luego seleccionaremos el tablero que vamos a usar. Si no puede ver su tablero, es posible que haya omitido agregar un nuevo dispositivo siguiendo el procedimiento que comienza después de hacer clic en el botón AGREGAR DISPOSITIVO , en la sección Dispositivos .

Una vez hecho esto, añadiremos tres propiedades a nuestra «Thing» (cosa) . Los dos primeros representarán las lámparas , el último la temperatura.

El tipo ColouredLight nos permite controlar una Luz RGB , permitiéndonos controlar su brillo y color. Configúrelo como ReadandWrite porque necesitaremos controlar su comportamiento usando Alexa.

El tipo DimmedLight es similar al anterior, pero solo nos permite controlar el brillo de una luz.

La última propiedad a agregar es la temperatura . Agreguemos este como ReadOnly, ya que solo queremos saber su valor, no establecerlo. Como tipo podemos usar el sensor de temperatura (Celsius), pero siéntase libre de configurarlo como Fº si le conviene más.

Así es como debería verse la vista del Panel de control de su cosa en este punto:

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

La sección Smart Home

Ahora vaya al Editor web haciendo clic en el botón Editar boceto en la vista de edición de su cosa .

2: Editor web Arduino

En el Editor web necesitamos agregar algún código al Sketch generado automáticamente para nosotros.

Debido a que queremos leer algunos datos ambientales (es decir, la temperatura, pero no dude en agregar luz, humedad y presión si lo desea), importaremos la biblioteca Arduino_MKRENV en la parte superior de nuestro Sketch.

#include <Arduino_MKRENV.h>

Luego definimos algunas constantes para los pines de la placa que se usarán para R, G, Bandwhitelight , de esta 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 forma si el escudo no está instalado se bloqueará la ejecución del Sketch .

No necesitamos especificar que pinMode debe ser OUTPUT (saldia ) porque lusaremos analogWrite() para establecer la intensidad de nuestro LED blanco o los colores individuales del RGB.

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

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

Finalmente, es hora 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 propiedad de IoT Cloud.

Tenemos que implementar 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 de arriba primero leemos el valor de brillo de la nube y lo asignamos a un valor utilizable, luego verificamos si el interruptor de la luz está encendido, si lo está podemos encender la luz, usando el brightnessr ojo antes. De lo contrario apagamos la luz

El principio de funcionamiento 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 solo, 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, por lo que no tendremos que decir manualmente qué cantidades de rojo, verde o azul queremos configurar.

Este es el código al completo:

/* 
  Sketch generated by the Arduino IoT Cloud Thing "Office"
  https://create.arduino.cc/cloud/things/f2c77d46-5abb-41e2-a8bb-3990155f342c 

  Arduino IoT Cloud Properties description

  The following variables are automatically generated and updated when changes are made to the Thing properties

  CloudTemperature temperature;
  CloudDimmedLight meetingRoom;
  CloudColoredLight loungeArea;

  Properties which are marked as READ/WRITE in the Cloud Thing will also have functions
  which are called when their values are changed from the Dashboard.
  These functions are generated with the Thing and added at the end of this sketch.
*/

#include "thingProperties.h"
#include <Arduino_MKRENV.h>

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

void setup() {
  // Initialize serial and wait for port to open:
  Serial.begin(9600);
  // This delay gives the chance to wait for a Serial Monitor without blocking if none is found
  delay(1500);
  
  if (!ENV.begin()) {
    Serial.println("Failed to initialize MKR ENV shield!");
    while (1);
  }

  // Defined in thingProperties.h
  initProperties();

  // Connect to Arduino IoT Cloud
  ArduinoCloud.begin(ArduinoIoTPreferredConnection);
  
  /*
     The following function allows you to obtain more information
     related to the state of network and IoT Cloud connection and errors
     the higher number the more granular information you’ll get.
     The default is 0 (only errors).
     Maximum is 4
 */
  setDebugMessageLevel(2);
  ArduinoCloud.printDebugInfo();
}

void loop() {
  ArduinoCloud.update();
  // Your code here 
  temperature = ENV.readTemperature();
  delay(1000);
}


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);
  }
}


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_LOUGE_AREA_G, 0);
  }
}

3: Configuración de habilidades de Amazon Alexa

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

Repasemos los pasos necesarios para instalar Arduino Alexa Skill. Seguiremos la secuencia de imágenes a continuación para ver todos los pasos requeridos.

1/9: toca "Dispositivos"
Toque «Dispositivos»
2/9: Ahora habilitemos nuestras habilidades para el hogar inteligente
Ahora habilitemos nuestras habilidades para el hogar inteligente (smart Home Skills)

Tecleando «Arduino» y tocando «buscar» obtendremos una lista. ¡Ese es el que necesitamos!

Una vez seleccionado, tendremos que habilitarlo

Inicie sesión con nuestras credenciales de cuenta Arduino Create

Nuestra Alexa y Arduino IoT Cloud ahora pueden hablar entre sí

Es hora de descubrir nuestros dispositivos

Un poco de paciencia no hará daño, así que habrá que esperar hasta que Alexa reconozca los nuevos dispositivos que nos hemos montado.

4: Configuración de dispositivos Amazon Alexa

Después de esperar un poco, debería ver que se han encontrado algunos dispositivos.

Después de tocar en Elegir dispositivo, se le presentará la página de configuración que enumera todos los dispositivos disponibles (se nombrarán de acuerdo con el nombre de nuestras propiedades en Arduino IoT Cloud).

Vamos a elegir un dispositivo y toque Set Hasta dispositivo . Si lo desea, también puede agregarlo a un grupo (de esta manera puede controlar y organizar sus dispositivos más fácilmente), de lo contrario, omita esta parte.

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

Finalmente, la vista del dispositivo debería verse así:

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

Más información en https://create.arduino.cc/projecthub/303628/arduino-iot-cloud-amazon-alexa-integration-4e6078

Reciclaje de papel gracias a la impresión 3D


Sólo hay unos pocos materiales de ingeniería verdaderamente antiguos, y entre los más antiguos está el papel. Tradicionalmente, el papel es plano y se puede doblar en formas. Sin embargo, el papel se puede moldear en, por ejemplo como lo vemos en material de embalaje o en el ejemplo mas tipico : las cajas de huevos.

La mayoría de los lectores conocerán la obra del artista neerlandés Theo Jansen, cuyas esculturas mecánicas de andar impulsadas por el viento Strandbeest (animal de playa) merodean por las playas de los Países Bajos. La conexión de Jansen permite fabricar máquinas con una marcha curiosa pero eficaz a partir de una entrada rotacional, y ha sido copiada con entusiasmo en todo tipo de productos, desde juguetes de sobremesa hasta bicicletas.

Uno podría pensar que un acoplamiento Jansen estaría más allá de algunos materiales, y podría sorprenderse al ver uno de papel. Pues adelante [Luis Craft], con un «Strandbeest» (animal de playa) de papel andante. Diseñado en Blender, cortado en una cortadora de papel CNC de sobremesa y accionado por un par de pequeños robots conectados a un Arduino y controlados por un enlace Bluetooth, tiene cuatro juegos de patas y puede empujar objetos de escritorio. No lo habríamos creído posible, pero ahí está.

Afirma que es un Strandbeest de origami, pero el origami debe estar hecho de papel doblado al estilo japonés y no de papel cortado y pegado como aquí. Sin embargo, esto no resta calidad al trabajo

Creemos que éste es el primer Strandbeest de papel que vemos, pero en la web a lo largo de los años se pueden ver innumerables más. Aquí está una versión de [Jansen], con forma de ola.

XYZAidan tiene un proceso que permite reciclar papel usado en objetos similares desechados de papel en útiles nuevos objetos . Para ello se necesita una impresora 3D, pero en realidad no imprime el papel, pues en su lugar, se utiliza la impresora 3d para crear un molde que pueda formar pulpa de papel que hace con papel reciclado (también usa una licuadora y una trituradora) ofreciendo en su pagina de thinginverse siete moldes diferentes que van desde una bandeja de escritorio y un plato a cubos y posavasos simples.

En la imagen (tomada de su repositorio de thinginverse) podemos ver algunos ejemplos terminados de algunos productos fabricados con esta técnica:

Los moldes impresos en 3D tienen que ser muy fuertes porque usará un torno improvisado para exprimir el agua de la pulpa. Se puede utilizar casi cualquier tipo de papel a menos que sea brillante o tenga un recubrimiento de plástico. Asimismo puede rasgar las piezas a mano o usar una trituradora.

Una licuadora creará la pulpa, pero también tendrá que añadir agua y un aglutinante. Aidan muestra que puede usar pegamento PVA, pasta de arroz o almidón de maíz (se puede hacer pasta de arroz fácilmente a partir del arroz ordinario cocinándolo hasta que se convierta en pasta). También hemos visto telas usadas en papeles y nos preguntamos si agregar fibras de tela a la pulpa podría funcionar de alguna manera extraña.

Básicamente como vemos en la siguiente imagen cada molde esta compuesto de tres partes: una base, el molde hembra y el molde macho que hace de tapa.

Sobre el interior del molde hembra se vierte la mezcla, se coloca el molde macho y es vital apretar el conjunto para expulsar el agua por ejemplo usando un banco de trabajo y sargentos a modo de prensa casera.


El material resultante tiene la textura del papel, pero es tan duro y rígido como el plástico, moldeable en una infinita variedad de formas y completamente biodegradable.

Hay algunas desventajas porque al ser un proceso doméstico tenemos que dejar que el papel se seque durante horas o incluso un día o dos. Además, la pulpa se encoge a medida que se seca, por lo que obtener dimensiones exactas podría ser un problema. El material es casi tan duro como la madera, pero no lo hace bien cuando está mojado.

Hay 7 diseños de moldes diferentes disponibles para descargar desde thingiverse en la pagina del autor (https://www.thingiverse.com/thing:3912997) .

Estos son los diseños de los moldes disponibles:

  • Posavasos de 60 mm (coasterMold1/2.STL)
  • Cubo (cube_base/frame/press.STL)
  • Superficie triangulada (Mesh_base/frame/press.STL)
  • Superficie sinusoidal (Box_base/Box_frame/Box_Sine_press.STL)
  • Mapa topográfico del Monte San Antonio (Box_base/Box_frame/Box_terrain_press.STL)
  • Plato (Dish_Base/Wall/Press.STL)
  • Bandeja (Tray_Base/Wall/Press.STL)

Cada molde tiene tres partes (excepto el posavasos): una base, una pared/marco y la herramienta de prensado y se hancreado con Fusion 360

Ajustes de impresión :
Resolución: .1mm-.2mm
Notas:
Ajustes de la pieza base:
10-15% de relleno
2 capas
2-3 capas de suelo
3-4 capas de techo

Configuración de piezas de pared:
15-20% relleno
3 capas
2 capas de suelo
2 capas de techo

Ajustes de la herramienta de prensado:
10-15% de relleno
2 capas de techo
2-3 capas de suelo
2-3 capas de techo 

Esperemos que este proyecto inspire a las personas y a los fabricantes a explorar nuevos usos para nuestros materiales de desecho cotidianos y encontrar nuevos sustitutos para el plástico.

El autor ha publicado un video en ingles donde nos explica el proceso completo (https://www.youtube.com/watch?v=0ItPfhx3ulw&feature=youtu.be) viendo como se ha desarrollado un proceso para convertir el papel en un material tridimensional, utilizando tan poco como una impresora 3D, una licuadora, un tornillo de banco y una pizca de arroz.

Todos los moldes de pueden descargar de https://www.thingiverse.com/thing:3912997