Logo Studenta

PRESENTACIÓN DE TRABAJO DE INVESTIGACIÓN (1) - Diego Omar Matias Cruz (4)

¡Estudia con miles de materiales!

Vista previa del material en texto

INSTITUTO POLITÉCNICO
NACIONAL
Unidad Profesional Interdisciplinaria
de ingeniería campus coahuila
DISEÑO DE SISTEMAS DIGITALES
Tercer semestre de IIA grupo 01
Profesor: Jesus Alvares
Proyecto: Conectar Luces Led a un
Asistente virtual
Equipo 3:
● GLORIA ARISBETH ALVARADO GUZMAN
● ÁNGEL DEHESA NIEVES
● IBRAHIM ABRAHAM HERNANDEZ LUCIO
● DIEGO OMAR MATIAS CRUZ
● DANIELA MENDOZA BEDOLLA
● SABRINA MICHAUS GUTIERREZ
Introducción
Este proyecto tiene como objetivo conectar una placa Arduino a una Alexa Smart
Home.
Esto se hace usando una Alexa Smart Home y un Arduino registrado con IoT
Thing.
En el siguiente diagrama, puede ver todas las partes principales de este proyecto
involucradas en encender la luz.
Donde en este documento hablaremos de los elementos que usamos tanto físicos
como instrumentos web para la elaboración, del proyecto a recrear, justificando el
porqué de nuestro proyecto y analizando los materiales que ocupamos en ello,
desde lo más básico que cabe en un protoboard como leds, resistencias y
pulsadores, hasta elementos más complejos como la conexión NINA de nuestro
Arduino.
Nuestro desarrollo se basa en programar dentro de la nube Arduino IoT para lograr
la conexión con la Alexa Smart Home a el Editor Web Arduino donde se visualiza la
configuración que le hemos dado a nuestro arduino.
Pretendemos dar la serie de instrucciones que seguimos para dar este proceso y el
código con el que logramos este proceso.
Desarrollo
Hemos decidido dividirlo en varias partes
Haremos una habilitación de hogar inteligente, crea una función Lambda y vincula
estos dos juntos.
Tenemos que asegurarnos de seguir los pasos de LWA para que su ID y de que se
utilice la configuración de habilitación.
En esta etapa, si se puede iniciar sesión en el tablero de Alexa y descubrir su nuevo
dispositivo doméstico inteligente (solo una respuesta de la función Lambda), ha
tenido un buen comienzo.Usaremos Python o C
La siguiente parte crear una cosa de IoT
Usaremos la "Sombra de cosa" de lo que crea, que es una copia del estado de una
cosa, junto con los cambios deseados. El Arduino se tiene que suscribir a una
fuente de notificación que publica los cambios ("delta") a esta Thing Shadow.
Una vez creada Thing, tenemos que ir a la pestaña de seguridad en el panel web
de Thing IoT y descargar la clave pública, la clave privada y el certificado. Una vez
hecho esto, Tuvimos que hacer clic en (Activar), que le dará la clave de la autoridad
de certificación raíz que tiene que ser guardado igual. Estos serán utilizados por
Arduino para autenticarse en la sombra de IoT.
En esta parte vamos a hacer la conexión lambda a su cosa.
Ya teniendo en cuenta el caso, ahora se puede actualizar el código Lambda para
actualizar la sombra de la cosa.
También debe asegurar de que su rol de AWS IAM esté asociado con la función
Lambda tenga permisos de "AWSIoTFullAccess". Se puede ver la función en la
parte inferior del panel web de configuración de Lambda. Este permiso le permite
conectarse a AWS IoT Thing.
Una vez hecho esto, tiene que ir a la página de configuración de la función Lambda.
En la pestaña de prueba de la función, agregamos una directiva llamada "TurnOff"
con el siguiente JSON específico de v3. También se puede agregar una segunda
prueba llamada "Activar" donde simplemente cambia el nombre del encabezado a
"Activar".
Cuando se ejecute la prueba de TurnOn y TurnOff, Tiene que ver qué Thing Shadow
de información del estado deseado ya con eso sabemos que es correcto.
Configuración del Arduino.
Se tiene que configurar el hardware del Arduino. Hay unas notas que pueden servir,
si estas usando Windows, el de formatear la SD,asegúrese de usar FAT32 (el exFAT
no es compatible).Tampoco pude ver la página de "actualización" correctamente
hasta que me conecté con ethernet. Una vez configurado, wifi funcionó bien.
Marco Teórico
Nuestro trabajo se enfoca en la elaboración de un proyecto que nos ayude a
comprender y practicar el uso de nuestra tarjeta arduino usando los conocimientos
que previamente adquirimos, por ello nos damos a la tarea de investigar que con
esta tarjeta podemos conectar nuestras asistentes virtuales como Alexa o Ok google
a nuestros trabajos en protoboards, gracias al uso de NINA-W10 series que puede
desarrollar aplicaciones avanzadas que se ejecutan en la MCU de 32 bits de doble
núcleo y la radio proporciona compatibilidad con Wi-Fi.
También debe poder ingresar con éxito a su Arduino. Recomendaría ejecutar "df -h"
también y buscar un volumen que sugiera que se ha agregado su tarjeta SD.
Abrir el IDE de Arduino y verificar que puede ejecutar ya sería un avance de la
etapa.
Conectar con AWS loT.
Con el Arduino en funcionamiento, hagámoslo hablar con IoT Thing. Esto se hace
instalando AWS Arduino IoT SDK y ejecutando un boceto de ejemplo para
monitorear los deltas de Thing Shadow.
Recomiendo utilizar un tutorial que guíe a través del proceso de instalación del SDK.
Nota para los usuarios de Windows, si está usando cygwin, simplemente siga las
instrucciones de Mac/Linux.
Cuando el tutorial termina agregando AWS-IoT-SDK al IDE de Arduino. Cuando abra
el IDE de Arduino, debería encontrar el ejemplo de ShadowThing en
Archivo->Ejemplos->AWS-IoT-Arduino-Yun-Library.
Se tiene que editar el archivo aws_iot_config.h para que contenga los puntos finales
y certificados/nombres clave relevantes.
La ejecución de este trabajo debería mostrarle una salida en serie que indica que el
estado de la conexión fue exitoso. Si cambia la sombra de su cosa en el tablero de
IoT, debería recibir una notificación en el registrador en serie.
Si tiene problemas en esta etapa, asegúrese de que sus certificados estén en las
rutas correctas y verifique que haya editado correctamente el texto de la CA raíz en
un archivo.
Circuito con protoboard
LED
Un led es un diodo (permite el paso de la corriente en un solo sentido) que emite luz
cuando está polarizado directamente.
Las siglas LED significan Diodo Emisor de Luz, y cuentan con 2 patitas de conexión:
una larga y otra corta, la larga es positiva y la corta negativa.
Su símbolo dentro de los circuitos es:
RESISTENCIAS
Como mencionamos en el tutorial de arduino #1 anterior, la resistencia nos sirve
para limitar la corriente que llega un componente electrónico, en este caso el led.
Sabemos que el led rojo opaco que vamos a utilizar funciona con 15mA es decir:
0.015 amperios.
Por ejemplo si queremos utilizar un led rojo opaco en un circuito alimentado por 5V
entonces, según la ley de ohm tendriamos que utilizar una resistencia de 330 Ω:
PULSADORES
Los pulsadores son componentes electrónicos que permiten el paso de la corriente
mientras son accionados, si se deja de presionar deja de permitir el paso de los
electrones.
Un botón o pulsador puede ser normalmente abierto o normalmente cerrado.
Conección Wifi
NINA-W10 series
El módulo MCU (unidad de control principal) multiradio independiente de la serie
NINA-W10 que integra un potente microcontrolador (MCU) y una radio para
comunicación inalámbrica.
El módulo tiene una serie de características de seguridad importantes integradas,
incluido el arranque seguro, iniciando solo en presencia de software autenticado.
Se ocupa en:
● Internet de las Cosas (IoT)
● Redes WiFi
● Aplicaciones de Bluetooth y Bluetooth de bajo consumo
● Telemática
● Punto de venta
● Redes médicas e industriales
● Acceso a computadoras portátiles, teléfonos móviles y dispositivos de
consumo similares
● Automatización de viviendas/edificios
● Puerta de enlace Ethernet/inalámbrica
Nube Arduino IoT
Tenemos varias maneras de monitorizar los datos que captamos a través de los
sensores. La más básica y que requiere tener el dispositivo conectado a un
ordenador es a través del monitor serie. Si tenemos algún display como un LCD o
una pantalla TFT, ya podremos desconectar el Arduino del ordenador y llevarlo a
cualquier sitio. Pero existe una tercera opción, quizás la más idónea, para poder ver
los datos y la información, utilizar una plataforma para proyectosde IoT.
Editor web de Arduino
El editor web de Arduino es un sustituto online del IDE. Sirve para compilar sketches
y cargarlos a las placas compatibles con Arduino, sin instalar el IDE en la
computadora. Solamente debemos instalar un plugin que se hará cargo de la
conexión con la placa de Arduino.
Conectividad
Utilizando una versión anterior de la API se puede tomar como un gran punto de
partida y con el Arduino dirigido a IoT.
Con esto se le puede dar un sistema Linux y un microcontrolador para hacerlo más
práctico aunque no es el caso particular..
Con solo decir "palabra" las habilidades del hogar inteligente pueden activarse en
nuestros led.
Usando la voz podemos controlar el apagado y encendido de un LED.
Con una matriz de LED de 2x3, podemos decidir encenderla y apagarla por puntos
de estilo.
Crear una Skill de hogar inteligente y un Lambda conectado es prioritario para el
desarrollo del proyecto, después se necesita de hacer una “cosa” de IoT para poder
conectarla, Con su cosa en su lugar, ahora puede actualizar su código Lambda para
actualizar la sombra de la cosa.
Una vez realizado podemos configurar el arduino y conectarlo con la “cosa” de IoT
como se explicó con anterioridad.
Código Fuente
aws_iot_mqtt_client myClient;
char JSON_buf[100];
int cnt = 0;
int rc = 1;
bool success_connect = false;
const int NUM_PINS=10;
int ledPins[NUM_PINS] = {4,5,6,7,8,9,10,11,12,13};
int i = 0;
bool print_log(const char* src, int code) {
bool ret = true;
if(code == 0) {
#ifdef AWS_IOT_DEBUG
Serial.print(F("[LOG] command: "));
Serial.print(src);
Serial.println(F(" completed."));
#endif
ret = true;
}
else {
#ifdef AWS_IOT_DEBUG
Serial.print(F("[ERR] command: "));
Serial.print(src);
Serial.print(F(" code: "));
Serial.println(code);
#endif
ret = false;
}
Serial.flush();
return ret;
}
void toggle_light(uint8_t state)
{
int i = 0;
for (i = 0; i < NUM_PINS; i++)
{
digitalWrite(ledPins[i], state);
}
}
void msg_callback_delta(char* src, unsigned int len, Message_status_t flag) {
if(flag == STATUS_NORMAL) {
print_log("getDeltaKeyValue", myClient.getDeltaValueByKey(src, "light", JSON_buf, 100));
Serial.println(JSON_buf);
if (strcmp(JSON_buf, "on") == 0)
toggle_light(HIGH);
else
toggle_light(LOW);
String payload = "{\"state\":{\"reported\":";
payload += "{\"light\":\"";
payload += JSON_buf;
payload += "\"}}}";
payload.toCharArray(JSON_buf, 100);
Serial.println(JSON_buf);
print_log("update thing shadow",
myClient.shadow_update(AWS_IOT_MY_THING_NAME, JSON_buf, strlen(JSON_buf),
NULL, 5));
}
}
void setup() {
Serial.begin(115200);
pinMode(LED_BUILTIN, OUTPUT);
int i = 0;
for (i = 0; i < NUM_PINS; i++)
{
pinMode(ledPins[i], OUTPUT);
}
char curr_version[80];
snprintf_P(curr_version, 80, PSTR("AWS IoT SDK Version(dev) %d.%d.%d-%s\n"),
VERSION_MAJOR, VERSION_MINOR, VERSION_PATCH, VERSION_TAG);
Serial.println(curr_version);
if(print_log("setup...", myClient.setup(AWS_IOT_CLIENT_ID, true, MQTTv311, true))) {
if(print_log("config", myClient.config(AWS_IOT_MQTT_HOST, AWS_IOT_MQTT_PORT,
AWS_IOT_ROOT_CA_PATH, AWS_IOT_PRIVATE_KEY_PATH,
AWS_IOT_CERTIFICATE_PATH))) {
if(print_log("connect", myClient.connect())) {
success_connect = true;
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
delay(500);
digitalWrite(LED_BUILTIN, HIGH);
delay(500);
digitalWrite(LED_BUILTIN, LOW);
print_log("shadow init", myClient.shadow_init(AWS_IOT_MY_THING_NAME));
print_log("register thing shadow delta function",
myClient.shadow_register_delta_func(AWS_IOT_MY_THING_NAME, msg_callback_delta));
}
}
}
}
void loop() {
if(success_connect) {
if(myClient.yield()) {
Serial.println(F("Yield failed."));
}
delay(1000); // check for incoming delta per 100 ms
}
}
Bibliografía
https://secmotic.com/encender-bombilla-con-un-modulo-wifi-esp8266-arduino/#gref
https://www.u-blox.com/en/product/nina-w10-series-open-cpu
https://jonathanmelgoza.com/blog/primer-circuito-con-protoboard-arduino/
https://create.arduino.cc/projecthub/303628/arduino-iot-cloud-amazon-alexa-integrati
on-4e6078?ref=part&ref_id=115656&offset=0
https://secmotic.com/encender-bombilla-con-un-modulo-wifi-esp8266-arduino/#gref
https://www.u-blox.com/en/product/nina-w10-series-open-cpu
https://jonathanmelgoza.com/blog/primer-circuito-con-protoboard-arduino/
https://create.arduino.cc/projecthub/303628/arduino-iot-cloud-amazon-alexa-integration-4e6078?ref=part&ref_id=115656&offset=0
https://create.arduino.cc/projecthub/303628/arduino-iot-cloud-amazon-alexa-integration-4e6078?ref=part&ref_id=115656&offset=0

Continuar navegando