Skip to content

Trabajo en grupo de Software para Internet de las Cosas, Máster en Ingeniería Informática UC3M.

License

Notifications You must be signed in to change notification settings

Juanbanpar/Sw4IoT

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sw4IoT

Trabajo en grupo de Software para Internet de las Cosas, Máster en Ingeniería Informática UC3M.

Introducción

Este repositorio Git es material complementario del trabajo en grupo de la asignatura Software para Internet de las Cosas (Sw4IoT) del Máster en Ingeniería Informática de la Universidad Carlos III de Madrid. En él, se detallan principalmente aspectos de hardware y del software analizado, junto con los estudios y modificaciones realizados.

El trabajo consiste en analizar la arquitectura IoT del sensor de calidad de aire DIY de AirGradient, desde el hardware hasta como mostrar los datos obtenidos en una interfaz de usuario.

Lista de la compra

Do it Yourself implica también Buy it Yourself, sin las piezas por separado dificilmente se podrá contruir el sensor. AirGradient proporciona gratuitamente 3 PCBs de su sensor (pagando gastos de envío) para quien lo solicite en la página web. Es un precio muy económico y la mejor forma de obtenerlos, salvo que te lo dé tu profesor.

En cuanto a los sensores, los enlaces proporcionados por AirGradient son los más baratos que hay en AliExpress sumando gastos de envío, esto puede variar en función de ofertas y cupones, pero mi consejo es no ahorrarse unos pocos euros por comprar en un vendedor de dudosa reputación. Si tienes reparo a comprar por AliExpress, va a ser muy complicado encontrar los componentes que necesitas y si lo haces será con un sobreprecio bastante elevado.

A mayores de dichos componentes vas a necesitar:

  • Un soldador.
  • Estaño.
  • Flux.
  • Tiras de pines macho y hembra, si bien algunas de las piezas que se compran por AliExpress vienen con ellos, algunas no lo traen, así que es necesario comprar más por separado, son baratas y también nos sirven de repuesto en caso de desgracia. Recomendable aprovechar el pedido en AliExpress para pedirlas por ahí.

Modificaciones planteadas sobre este hardware

AirGradient propone y ha diseñado su PCB para ser usado con una placa Wemos D1 mini, basada en el ESP8266. Es un microcontrolador muy solvente y que para la fucionalidad planteada por la propia empresa es suficiente. Sin embargo, si buscamos expandir las posibilidades de nuestro equipo es necesario utilizar un microcontrolador más potente, algunos de estas ampliaciones pueden ser:

  • Emplear cifrado extremo a extremo. El ESP8266 tiene potencia limitada, si se realizan algunos cálculos localmente que consuman CPU sumado a sus limitadas capacidades criptográficas el resultado no es el deseado.
  • Ampliar la funcionalidad del dispositivos. Si bien es cierto que el dispositivo cumple a la perfección su labor, ser un sensor de calidad del aire, eso no significa que no pueda ser ampliado. Mucha gente es reacia al IoT porque "son más trastos en casa", es por ello que sería interesante explorar integrar funcionalidad de dispositivos que suelen estas en las casa de la gente: un reloj, una estación metereológica... De esta manera el dispositivo ya no sería "un trasto más", sino que quedaría integrado dentro de algo que ya se tenía previamente.

Todos estas ampliaciones requieren de un microcontrolador más potente, el elegido en este caso fue el ESP32-WROOM-32D en su forma de kit de desarrollo, es económico, potente como para implementar lo anteriormente visto y, sobre todo, parecido al ESP8266.

Sin embargo, el PCB diseñado por AirGradient no es compatible, se pueden emplear jumper wires para conectar un ESP32 pero el resultado no será tan limpio como uno desearía ni lo más seguro o práctico. Es por ello que se ha modificado el esquemático para que cualquiera pueda encargar un PCB adaptado al ESP32.

PCB DIY de AirGradient modificado para el ESP32

Como se puede apreciar se ha modificado sobre la segunda versión del PCB, AirGradient está trabajando en una revisión con cambios significativos que pueden facilitar la adaptación de un ESP32 sin modificar el factor de forma o emplear incluso un ESP32 mini. En este trabajo en grupo hemos modificado y trabajado sobre la versión v2 al ser la más reciente en su momento, a futuro es posible que continueos el trabajo con el nuevo PCB en función de nuestro interés personal.

Modificaciones en el software

Cifrado con TLS

El ESP8266 no es capaz de ejecutar las últimas versiones de TLS, pero un mínimo encriptado es mejor que nada, se debe cambiar la libreía empleada para usar HTTP por WiFiNINA y usar el siguiente bloque de código:

Serial.println("\nStarting connection to server...");
  // if you get a connection, report back via serial:
  if (client.connectSSL(server, 443)) {
    Serial.println("Connected to server");
    // Make a HTTP request:
    client.println("POST /sensors/airgradient/ID/measures HTTP/1.1");
    client.println("content-type:application/json");
    client.println(payload);
    client.println();
    Serial.println("Request sent");
  }

MQTT

Un protocolo alternativo a HTTP, más orientado a IoT, ideal para este tipo de dispositivos es MQTT este ofrece una serie de ventajas a la hora de contar con múltiples dispositivos gracias a su modelo publicador/subscriptor. Para implementarlo se puede emplear la librería de Arduino, la modificación del código sería substituir las líneas dedicadas a la conexión HTTP por:

const char broker[] = "test.mosquitto.org";
int port = 1883;
const char topic[] = "air";

...

void setup() {
  if (!mqttClient.connect(broker, port)) {
      Serial.print("MQTT connection failed! Error code = ");
      Serial.println(mqttClient.connectError());
      while (1);
  }
}

...

Serial.print("Sending message to topic: ");
Serial.println(topic);
Serial.println(Rvalue);

Si se quisiera usar cifrado con tokens JWT no sería recomendable emplear código Ardunio debido a la limitada disponibilidad de liberías y documentación. De igual manera, el ESP8266 no sería suficientemente potente para ejecutarlo, sería necesario recurrir al ESP32.

Portar el código a MicroPython

Portar el código a MicroPython sería interesante pues permitiría ampliar la funcionalidad de forma más simple y empleando librerías mucho más potentes de alto nivel. También sería más fácil usar distintos microcontroladores sin apenas modificar el software del dispositivo, permitiendo mantenerse al día con los grances avances que se realizan en este ámbito.

About

Trabajo en grupo de Software para Internet de las Cosas, Máster en Ingeniería Informática UC3M.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published