[1/3] Del hardware a la nube: Construir su propia solución IoT

¿Alguna vez has pensado en desarrollar tu propia aplicación IoT desde cero, pero no sabías por dónde empezar? Para ti y para todas esas almas maker que están ahí fuera y que quieren materializar sus proyectos, te voy a guiar a través de mi experiencia, porque yo también he pasado por eso.

Introducción

Este es el primero de una serie de artículos en los que describiré todo el proceso, desde el diseño del hardware hasta la aplicación en la nube, para dar vida a mi proyecto. Los retos, problemas, logros, e incluso algunos detalles técnicos y tutoriales relacionados con dispositivos específicos utilizados en diferentes etapas del proceso.

¿Cómo elegí mi proyecto?

Lo primero es lo primero, permítanme presentarme: Soy un estudiante de ingeniería eléctrica, a punto de terminar mi carrera. Para mi proyecto de graduación, quería tener la experiencia de diseñar y desarrollar mi propio dispositivo, y poder utilizarlo para desplegar una aplicación IoT que pudiera contribuir a resolver uno de los problemas de mi ciudad. Además, quería que esa solución fuera asequible y sencilla, para que pudiera utilizarla cualquier persona independientemente de su procedencia. Tras pensarlo unos días, me incliné por los problemas de movilidad: Desplegar mi propia aplicación de aparcamiento inteligente.

¿Por qué elegí este proyecto?

A medida que aumenta la población mundial, la movilidad en muchas ciudades tiende a colapsarse debido al gran número de vehículos que circulan por las calles. En los sectores comerciales, el problema se agrava debido al tiempo que tarda un conductor en encontrar un lugar donde aparcar su vehículo, lo que genera una congestión insostenible. Los sistemas de aparcamiento inteligente se han convertido en una herramienta muy útil para reducir los problemas de movilidad en aquellos lugares con alta concurrencia de vehículos.

Sin embargo, estos sistemas suelen ser complejos y caros. Su instalación debe ser realizada por personal especializado e incluso a menudo es necesario modificar la estructura del aparcamiento. Además, hay que dedicar mucho dinero y tiempo al mantenimiento. Por eso, este tipo de sistemas no se implantan en todas partes. Por eso decidí crear una solución más sencilla, práctica y barata para ayudar a los conductores a localizar plazas de aparcamiento vacías.

Me di cuenta de que para desarrollar este proyecto se podía dividir en dos grandes etapas: el diseño del hardware y la implementación de la aplicación de software.

Diseño de hardware

1. Definición de las características del dispositivo

Como punto de partida, era necesario definir qué características requeriría el proyecto para empezar a planificar cómo conseguirlas. Para mi dispositivo, elegí las siguientes características:

  • Bajo consumo de energía
  • Portátil
  • Inalámbrico
  • Batería de larga duración
  • Fácil de instalar
  • Alcance de señal largo
  • Fiabilidad

2. Selección de componentes modulares

Después, tuve que pensar en los componentes modulares que debería tener el dispositivo para cumplir su función: detectar la presencia de un vehículo en una plaza de aparcamiento y transmitir esa información a la aplicación de software de forma inalámbrica.

En primer lugar, necesitaría encontrar un sensor capaz de detectar la presencia de un vehículo. A continuación, sería necesario un microcontrolador para leer, procesar y organizar los datos recogidos por el sensor. Por último, pero no menos importante, sería necesario el uso de un módulo inalámbrico para enviar la información a un servidor, donde se almacenarían los datos para ser utilizados por la aplicación informática.

Teniendo todo esto en cuenta, el siguiente paso sería buscar y seleccionar todos los componentes y tecnologías necesarios para cumplir con los requisitos antes mencionados.

3. Selección de tecnologías

Para seleccionar la tecnología, estudié el estado del arte de los sistemas inteligentes de aparcamiento y detección de vehículos. Descubrí que las tecnologías de sensores más utilizadas para la detección de vehículos son: infrarrojos, ultrasonidos y magnética. Sin embargo, consideré que las detecciones que utilizan sensores ultrasónicos e infrarrojos podrían tener una mayor probabilidad de fallar, debido a que sus mediciones podrían verse afectadas por cosas como la forma de las superficies o incluso el polvo del ambiente. Así que decidí probar primero los sensores magnéticos.

Empecé a buscar sensores magnéticos, principalmente de bajo consumo y alta sensibilidad. Estudié las características de al menos 10 sensores diferentes y seleccioné los cinco que me parecieron mejores. Más tarde, creé una hoja de google donde registré esos cinco sensores con sus características principales: tensión de alimentación, consumo de energía, sensibilidad, resolución e interfaces de comunicación, para poder compararlos.

Además, debido a su pequeño tamaño, me aseguré de que los sensores elegidos dispusieran de una placa adaptadora para la rápida creación de prototipos de sistemas y la evaluación de dispositivos. Al final, elegí los de mayor sensibilidad pero con un bajo consumo de energía. Las referencias de esos sensores son MMC5883MA y LSM303AGR.

Para seleccionar el microcontrolador, limité mi búsqueda a arquitecturas de 8 bits, para reducir el coste y la complejidad de programación, ya que las tareas que debe realizar el microcontrolador son realmente sencillas. Necesitaba encontrar un microcontrolador de bajo consumo que incluyera un empaquetado que me permitiera hacer pruebas para el prototipado, es decir, apropiado para ser utilizado en una protoboard. Al final me decidí por probar microcontroladores PIC, empezando por el PIC18F2550.

Llegados a este punto, necesitaba seleccionar un módulo inalámbrico. La primera pregunta era: ¿qué tecnología inalámbrica debo utilizar? Bueno, después de unos días de intensa investigación y el consejo de mis compañeros de trabajo en Ubidots, decidí utilizar LoRaWAN. Debido a sus características como bajo consumo, largo alcance y alta inmunidad a las interferencias, LoRaWAN es una potente tecnología para aplicaciones de Internet de las Cosas (IoT). Aunque existe una limitación en cuanto al tamaño de los paquetes que se pueden enviar utilizando LoRaWAN, esto no es un problema para las aplicaciones IoT porque no se necesitan grandes cargas útiles para enviar los datos recogidos de los sensores.

Después, busqué un módulo LoRaWAN de bajo consumo, gran alcance e interfaces de comunicación serie. Era obligatorio asegurarse de que la frecuencia de trabajo del módulo LoRaWAN coincidiera con la banda ISM de mi país. Unas semanas antes había estado probando una placa de desarrollo llamada SODAQ ONE. Esa placa incluye un módulo LoRaWAN integrado llamado RN2903, que cumplía los requisitos de este proyecto. Así que me incliné por utilizar este módulo conocido, que mostró un muy buen comportamiento en las pruebas realizadas con la SODAQ ONE.

Si ya estás familiarizado con el SODAQ ONE V3 y quieres empezar con Ubidots, echa un vistazo a esta guía y ¡empieza hoy mismo!

Tras realizar todos los pasos mencionados, el siguiente hito es probar los componentes seleccionados y construir un prototipo. Los resultados de esas pruebas determinarán si esos componentes se han elegido adecuadamente para mi aplicación o si debo cambiar algo.

Para ser sincero, aunque todo el proceso puede ser complicado, lo más difícil para mí fue decidir por dónde empezar. Así que si te encuentras interesado en desarrollar tu propia aplicación IoT, lo que te recomiendo es que tengas claros los objetivos, las características y todo el alcance de tu proyecto, y el resto del camino aparecerá por sí solo ante tus ojos.

Si queréis saber cómo ha quedado todo, ¡estad atentos a los próximos posts!

Atentamente, Daniela.