LoRaWAN

[2/3] Del hardware a la nube: Pruebas del MMC5883MA

Daniela Rico
· 6 minutos de lectura
Enviar por correo electrónico

¿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. Mantente al tanto del progreso del proyecto [ aquí ].

Este es el segundo de una serie de artículos en los que describiré el proceso de desarrollo de mi propia IoT desde cero. Si aún no has leído la primera parte, te recomiendo que la leas primero para comprender el contexto del proyecto y ponerte al día con las consideraciones a tener en cuenta para seleccionar las tecnologías y los componentes necesarios para construir el primer prototipo.

Para construir un prototipo, es necesario conocer los detalles de funcionamiento y las especificaciones técnicas de cada componente. En 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. Posteriormente, recomiendo realizar pruebas individuales con cada uno para comprender su comportamiento.

Teniendo todo esto en mente, decidí comenzar con la parte más crítica del prototipo: los sensores. La razón es simple: es necesario asegurar que los sensores seleccionados sean realmente capaces de detectar la presencia de un vehículo, además de compararlos para determinar cuál es el más adecuado para cumplir con los requisitos y objetivos de la aplicación.

En este artículo, describiré el proceso llevado 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. Finalmente, se mostrarán y analizarán los resultados de la prueba.

Acerca de los componentes

El MMC5883MA es un sensor magnético de 3 ejes de bajo consumo que se comunica con un microcontrolador externo mediante una interfaz I₂C. Mediante la escritura y lectura de 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, utilizo la versión de evaluación del sensor MMC5883MA, llamada MMC5883MA-B , ya que los componentes superficiales no se pueden probar fácilmente. Como primero necesitaba construir un prototipo, la mayoría de los componentes deben conectarse mediante una placa de pruebas y el MMC5883MA-B, lo que me permite hacerlo sin necesidad de tiempo ni trabajo adicionales.

Para realizar la prueba, el primer paso fue seleccionar un microcontrolador que recopilara los datos generados por el sensor. Sin embargo, dado que el objetivo de la prueba es analizar el comportamiento del sensor, no el del microcontrolador, una buena opción es elegir un microcontrolador fácil de programar para reducir el tiempo y la complejidad del experimento. En resumen, necesitaba un microcontrolador (o placa de desarrollo) sencillo y práctico, con una interfaz I2C, que también pudiera enviar los datos del sensor a la plataforma Ubidots para su almacenamiento y procesamiento.

Teniendo todo esto en cuenta, decidí usar un NodeMCU ESP8266 como microcontrolador. Esta placa de desarrollo, compatible con Arduino, se basa en el módulo WiFi ESP8266 y es muy popular en aplicaciones del Internet de las Cosas (IoT) gracias a su practicidad. Este dispositivo cuenta con diversas interfaces de comunicación, incluyendo I₂C. Todas estas características lo hacen ideal para el experimento.

Descripción de la prueba

El experimento consistió en tomar mediciones periódicas del campo magnético en una plaza de aparcamiento simulando condiciones reales, es decir, con vehículos entrando y saliendo. Los datos del sensor debían enviarse en tiempo real a la plataforma Ubidots y luego analizarse para identificar cualquier cambio en el comportamiento de las mediciones que pudiera estar relacionado con la presencia de vehículos.

El MMC5883MA-B debe conectarse al NodeMCU ESP8266 a través del puerto I₂C. Estas conexiones se realizan fácilmente con una placa de pruebas. El módulo NodeMCU debe configurarse correctamente para acceder a una red WiFi y enviar datos a Ubidots. El último paso antes de comenzar la prueba fue proporcionar una fuente de alimentación a los módulos para que fueran portátiles. Dado que el voltaje de funcionamiento de los módulos es de 3,3 voltios, bastará con usar dos pilas AA de 1,5 voltios cada una, conectadas en serie. Las conexiones resultantes se muestran en el diagrama a continuación.

Es hora de codificar

Dado que la 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 se basó en la hoja de datos del MMC5883MA, donde se detallan los registros del sensor. En este caso, la biblioteca de 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 se basa en el tutorial Ubidots Conectar un NodeMCU ESP8266 a Ubidots mediante HTTP ". Para aprender a configurar el IDE de Arduino para programar la placa NodeMCU, recomiendo seguir el paso 1 del tutorial.

El código resultante se puede encontrar en este repositorio de Github .

Resultados de la prueba

Luego de completar las configuraciones explicadas anteriormente y asegurarme que el NodeMCU estaba leyendo los datos y enviándolos a Ubidots exitosamente, coloqué la placa de pruebas en el piso del lugar de estacionamiento, aproximadamente en la posición marcada con la X verde en la imagen de abajo.

Para comenzar la prueba, estacioné un auto y lo dejé allí unos minutos. Después, lo saqué y esperé un par de minutos antes de repetir el proceso. Tenga en cuenta que el sensor tomaba las mediciones periódicamente, aproximadamente cada dos segundos. Repetí el mismo proceso varias veces y finalicé la prueba.

Previamente, configuré un dashboard en mi cuenta de Ubidots para facilitar la visualización de los datos del sensor. Tras finalizar la prueba, revisé los gráficos en mi dashboard y esto es lo que encontré:

Al analizar los datos, noté algunos cambios significativos en las mediciones del eje z. El primero se produjo cuando la magnitud del campo magnético en el eje z aumentó (marcado con el "1" en la imagen superior); el segundo, cuando la magnitud disminuyó de nuevo (marcado con el "2" en la imagen superior). Es importante destacar que la magnitud de los datos tomados entre estos puntos se mantiene aproximadamente en el mismo valor.

Teniendo en cuenta todo esto, se puede concluir que los cambios marcados como 1 y 2 corresponden a los momentos en que estacioné el coche (1) y lo volví a mover (2). Además, las mediciones tomadas entre ambos representan el tiempo que el coche estuvo estacionado. Este comportamiento en las mediciones se repitió en el punto marcado como 3.

El resultado del experimento implica que, con el MMC5883MA, se puede detectar la presencia de un vehículo mediante 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 aparcado, 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 determinar la presencia del vehículo.

El siguiente objetivo es realizar experimentos similares con los demás sensores. Al final, se deben comparar los resultados para determinar 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.