Control de Arduino mediante API Rest (IoT)

En este laboratorio vamos a comprender la base de los sistemas IoT. Esto implica conceptos de Back-End, Front-End, API Rest y protocolos de comunicación.
El proyecto tiene como objetivo el control de Arduino mediante una app-web desde un dispositivo remoto a través de API Rest.
En la arquitectura propuesta colocamos una bombilla para su control por medio de un Relé como desafío adicional y completar de esta forma una propuesta IoT
Control Arduino

En esta etapa colocaremos a Arduino en modo escucha, listo para recibir por UART las instrucciones recibidas desde Python.
En el computador estará corriendo un Script en Python encargado de consultar la API Rest mediante GET y enviar los datos recibidos hacia Arduino mediante UART.
Recordemos que en Arduino Uno R3 solo contamos con un puerto UART, el cual está colocado sobre los pines 0 y 1, por este motivo no podremos usar dichos pines, ya que estarán ocupados en la comunicación con Python.
Controlaremos los pines 2 al 13 de Arduino desde una App-Web sencilla y, colocando un relé en cualquiera de los pines, podremos controlar cargas superiores (una bombilla)
Back-End

En un entorno más elaborado se recomienda un VPS; sin embargo, para un laboratorio local podemos montarlo en una Máquina Virtual con Linux. En Back-End lo construiremos en MVC y es allí donde publicaremos los endpoints de nuestra API Rest.
Front-End

Construido de manera sencilla, ya que trabajaremos mediante API Rest, podemos montar el front en un simple HTML, CSS y Java Script, permitiendo incluso ejecutar este front desde un navegador sin necesidad de publicarlo en un servidor y aun así poder consultar los endpoints.
Para fines prácticos de ejecución desde el dispositivo móvil colocaremos este front en nuestro servidor con el objetivo de poder acceder mediante url.
Empecemos…
PASO 1
Descargar los recursos desde GitHub e identificar elementos.
https://github.com/walthercurodelacruz/IoT_basado_en_Arduino_y_API_Rest/tree/principal

PASO 2
Levantar nuestro Back-End en la ruta de nuestro servidor virtual, para el caso de ubuntu Server suele ser en /var/www/html, para este laboratorio estamos apuntando la ruta de nuestro servidor web en /var/www/webserver/

PASO 3
Desplegar base de datos app_iot.sql

PASO 4
Verificar endpoints con Postman o directamente en el navegador


PASO 5
Subir código al Arduino para colocarlo en modo escucha por UART y ejecutar acciones.

PASO 6
Instalar librerías y ejecutar Script en Python, el cual está encargado de consultar la API y mandar estado de los pines al Arduino. No olvidar actualizar la IP por la ip de tu servidor.

PASO 7
Subir Front (app-web) al server y acceder desde el dispositivo móvil, recuerda que el front, al estar construirlo en html, css y js también se puede ejecutar directamente desde un navegador en tu PC, sin embargo, como deseamos acceder al él desde un dispositivo móvil, lo subiremos al servidor para apuntar a él desde su ip.

PASO 8
Montar los leds en un protoboard, siendo un led para cada pin digital del 2 al 13 y no olvidar la resistencia de protección (200 ohmios aprox.) a fin de no quemar los leds o el mismo pin digital.

PASO 9
Probar y disfrutar…..
