[2/3] Del hardware a la nube: Probando MMC5883MA
¿Alguna vez has pensado en desarrollar tu propia IoT desde cero, pero no sabías por dónde empezar? ¡Buenas noticias, aquí aprenderás cómo hacerlo! Manténgase informado sobre el progreso del proyecto [ aquí ].
Este es el segundo de una serie de artículos a través de los cuales describiré el proceso de desarrollo de mi propia IoT desde cero. Si aún no has leído la parte 1, te recomiendo que lo hagas primero , así podrás entender el contexto del proyecto y ponerte al día con las consideraciones que se tuvieron en cuenta para seleccionar las tecnologías y componentes necesarios para construir el primer prototipo.
Para poder construir un prototipo se hace necesario conocer los detalles de funcionamiento y especificaciones técnicas de cada componente. Desde mi experiencia, considero que el primer paso (y quizás el más importante) es comprender los aspectos principales de la hoja de datos de los módulos. Después recomiendo realizar pruebas individuales con cada uno de ellos para entender su comportamiento.
Teniendo todo esto en cuenta, decidí comenzar con la parte más crítica del prototipo: los sensores. La razón es simple: es necesario asegurarse de que los sensores seleccionados sean realmente capaces de detectar la presencia de un vehículo, además de compararlos para saber cuál es el más adecuado para cumplir con los requisitos y objetivos de la aplicación.
A lo largo de este artículo describiré el proceso que se lleva a cabo para evaluar el comportamiento del sensor magnético MMC5883MA y su capacidad para detectar la presencia de un vehículo en una plaza de aparcamiento. Al final, se mostrarán y analizarán los resultados de la prueba.
Sobre los componentes
El MMC5883MA es un sensor magnético de 3 ejes de baja potencia que puede comunicarse, a través de una interfaz I2C, con un microcontrolador externo. Al escribir y leer ciertos registros específicos del sensor, el microcontrolador puede configurar el modo de operación e iniciar el proceso de medición, además de obtener los datos de las mediciones.
Para esta prueba, estoy usando la versión de evaluación del sensor MMC5883MA, llamada MMC5883MA-B , porque los componentes superficiales no se pueden probar tan fácilmente. Como primero necesitaba construir un prototipo, la mayoría de los componentes debían conectarse a través de una placa de pruebas y el MMC5883MA-B, lo que me permite hacerlo sin requerir tiempo ni trabajo adicional.
Para poder realizar la prueba, el primer paso fue seleccionar un microcontrolador para recoger los datos generados por el sensor. Sin embargo, como el objetivo de la prueba radica en el análisis del comportamiento del sensor, no del comportamiento del microcontrolador, una buena opción puede ser elegir un microcontrolador fácil de programar, para reducir el tiempo y la complejidad del experimento. En resumen, necesitaba encontrar un microcontrolador (o placa de desarrollo) simple y práctico, con una interfaz I2C, que también tuviera la capacidad de enviar los datos del sensor a la plataforma Ubidots para ser almacenados y procesados allí.
Teniendo todo esto en cuenta, decidí utilizar un NodeMCU ESP8266 como microcontrolador. Esta placa de desarrollo compatible con Arduino se basa en el módulo WiFi ESP8266 y es muy popular entre las aplicaciones de Internet de las cosas debido a su practicidad. Este dispositivo tiene una variedad de interfaces de comunicación, incluido I2C. Todas estas características lo hacen apropiado para su uso en el experimento.
Descripción de la prueba
El experimento consistió en realizar mediciones periódicas del campo magnético en una plaza de aparcamiento simulando condiciones reales, es decir, con vehículos entrando y saliendo de ella. Los datos de los sensores deben enviarse en tiempo real a la plataforma Ubidots y luego analizarse para identificar si hubo algún cambio en el comportamiento de las mediciones que pudiera estar relacionado con la presencia del vehículo.
El MMC5883MA-B debe conectarse con el NodeMCU ESP8266 a través del puerto I2C. Estas conexiones se pueden realizar fácilmente con la ayuda de una placa de pruebas. El módulo NodeMCU tiene que estar correctamente configurado para poder acceder a una red WiFi y enviar datos a Ubidots . El último detalle antes de iniciar la prueba fue dotar de alimentación a los módulos, para hacerlos portátiles. Como el voltaje de trabajo de los módulos es de 3,3 voltios, debería ser suficiente utilizar dos pilas AA de 1,5 voltios cada una, conectadas en serie. Las conexiones resultantes se muestran en el siguiente diagrama.
Es hora de codificar
Dado que NodeMCU es una placa compatible con Arduino, se puede programar a través del IDE de Arduino. El código Arduino debe implementar dos tareas principales:
- Adquisición de datos de sensores.
- Publicación de datos en la plataforma Ubidots .
La parte del código encargada de leer los datos del sensor y decodificarlos para obtener la medición del campo magnético fue escrita en base a la hoja de datos del MMC5883MA, donde se explican detalladamente los registros del sensor. Aquí, la biblioteca Arduino Wire.h fue muy útil para lograr la comunicación I2C.
La parte del código encargada de configurar la conexión WiFi y enviar los datos a la Ubidots está basada en el tutorial Ubidots Conectar un NodeMCU ESP8266 a Ubidots a través de HTTP ". Para aprender a configurar el IDE de Arduino para programar la placa NodeMCU, recomiendo seguir el paso 1 que se encuentra en el tutorial.
El código resultante se puede encontrar en este repositorio de Github .
Resultados de la prueba
Después de completar las configuraciones explicadas anteriormente y asegurarme de que NodeMCU leyera los datos y los enviara a Ubidots con éxito, coloqué la placa en el piso del lugar de estacionamiento, aproximadamente en la posición marcada con la X verde en la imagen a continuación.
Para iniciar la prueba estacioné un auto y lo dejé allí por unos minutos. Después de eso, saqué el auto y esperé un par de minutos antes de repetir el proceso. Tenga en cuenta que el sensor tomaba medidas periódicamente, aproximadamente cada dos segundos. Repetí el mismo proceso varias veces y terminé la prueba.
Anteriormente, configuré un dashboard en mi cuenta Ubidots para facilitar la visualización de los datos del sensor. Después de terminar la prueba, revisé los gráficos en mi dashboard y esto es lo que encontré:
Mientras analizaba los datos, noté que había algunos cambios significativos en las mediciones del eje z. El primero ocurrió cuando aumentó la magnitud del campo magnético en el eje z (marcado con el "1" en la imagen de arriba); el segundo fue cuando la magnitud volvió a disminuir (marcado con el "2" en la imagen de arriba). Es importante notar que la magnitud de los datos tomados entre estos puntos es aproximadamente del mismo valor.
Teniendo todo esto en cuenta, es posible concluir que los cambios marcados como 1 y 2 corresponden a los momentos en que estacioné el auto (1) y lo volví a mover (2). Además, las medidas tomadas entre ellos significan el tiempo que el coche estuvo estacionado. Este comportamiento en las mediciones se volvió a repetir en el punto marcado como 3.
El resultado del experimento implica que, con el MMC5883MA, se puede detectar la presencia de un vehículo a través de los cambios en las mediciones del campo magnético, que serán más considerables en uno de los ejes, en este caso, el eje z. En resumen, cuando hay un coche en la plaza de aparcamiento, la medición del campo magnético será mayor que cuando está solo. Según la diferencia entre estos valores, es posible definir un umbral para tomar una decisión sobre la presencia del vehículo.
El siguiente objetivo a conseguir es realizar experimentos similares con el resto de sensores. Al final, hay que comparar los resultados para saber cuál de los sensores es el más adecuado para construir el prototipo final del proyecto.
Si quieres saber cómo resultan los demás experimentos, estate atento a las próximas publicaciones.