LoRaWAN

[2/3] Von der Hardware in die Cloud: MMC5883MA testen

Daniela Rico
· 6 Minuten Lesezeit
Per E-Mail versenden

Haben Sie schon einmal darüber nachgedacht, Ihre eigene IoT Anwendung von Grund auf zu entwickeln, wussten aber nicht, wo Sie anfangen sollen? Gute Neuigkeiten: Hier erfahren Sie, wie es geht! Bleiben Sie über den Projektfortschritt [ hier ] auf dem Laufenden.

Dies ist der zweite Artikel einer Reihe, in der ich die Entwicklung meiner eigenen IoT Anwendung von Grund auf beschreibe. Falls Sie Teil 1 noch nicht gelesen haben, empfehle ich Ihnen, dies zuerst zu tun , um den Projektkontext zu verstehen und die Überlegungen nachzuvollziehen, die bei der Auswahl der Technologien und Komponenten für den ersten Prototyp berücksichtigt wurden.

Um einen Prototyp bauen zu können, ist es unerlässlich, die Funktionsweise und die technischen Spezifikationen jeder Komponente zu kennen. Meiner Erfahrung nach ist der erste (und vielleicht wichtigste) Schritt, die wichtigsten Aspekte des Datenblatts der Module zu verstehen. Anschließend empfehle ich, mit jedem Modul Einzeltests durchzuführen, um dessen Verhalten zu analysieren.

Unter Berücksichtigung all dessen beschloss ich, mit dem wichtigsten Teil des Prototyps zu beginnen: den Sensoren. Der Grund ist einfach: Es muss sichergestellt werden, dass die ausgewählten Sensoren tatsächlich die Anwesenheit eines Fahrzeugs erkennen können. Außerdem müssen sie verglichen werden, um herauszufinden, welcher Sensor am besten geeignet ist, die Anforderungen und Ziele der Anwendung zu erfüllen.

In diesem Artikel beschreibe ich das Verfahren zur Bewertung des Verhaltens des Magnetsensors MMC5883MA und seiner Fähigkeit, die Anwesenheit eines Fahrzeugs auf einem Parkplatz zu erkennen. Abschließend werden die Testergebnisse dargestellt und analysiert.

Über die Komponenten

Der MMC5883MA ist ein energiesparender 3-Achsen-Magnetsensor, der über eine I2C-Schnittstelle mit einem externen Mikrocontroller kommunizieren kann. Durch das Schreiben und Lesen bestimmter Register des Sensors kann der Mikrocontroller den Betriebsmodus konfigurieren, den Messvorgang starten und die Messdaten erfassen.

Für diesen Test verwende ich die Evaluierungsversion des MMC5883MA-Sensors, genannt MMC5883MA-B , da sich oberflächliche Bauteile nicht so einfach testen lassen. Da ich zunächst einen Prototyp bauen musste, werden die meisten Komponenten über ein Steckbrett und den MMC5883MA-B verbunden, was mir dies ohne zusätzlichen Zeit- und Arbeitsaufwand ermöglicht.

Um den Test durchführen zu können, musste zunächst ein Mikrocontroller ausgewählt werden, der die vom Sensor generierten Daten erfasst. Da der Fokus des Tests jedoch auf der Analyse des Sensorverhaltens und nicht auf dem Verhalten des Mikrocontrollers liegt, bietet sich ein einfach zu programmierender Mikrocontroller an, um den Zeitaufwand und die Komplexität des Experiments zu reduzieren. Kurz gesagt, ich benötigte einen einfachen und praktischen Mikrocontroller (oder ein Entwicklungsboard) mit I2C-Schnittstelle, der die Sensordaten an die Ubidots -Plattform senden konnte, um sie dort zu speichern und zu verarbeiten.

Unter Berücksichtigung all dieser Aspekte entschied ich mich für einen NodeMCU ESP8266 als Mikrocontroller. Dieses Arduino-kompatible Entwicklungsboard basiert auf dem WLAN-Modul ESP8266 und ist aufgrund seiner praktischen Anwendbarkeit sehr beliebt in IoT-Anwendungen. Das Gerät verfügt über verschiedene Kommunikationsschnittstellen, darunter I2C. All diese Eigenschaften machen es für das Experiment geeignet.

Testbeschreibung

Das Experiment bestand darin, periodische Messungen des Magnetfelds auf einem Parkplatz durchzuführen, der reale Bedingungen simulierte, d. h. Fahrzeuge ein- und ausfuhren. Die Sensordaten sollten in Echtzeit an die Ubidots Plattform gesendet und anschließend analysiert werden, um festzustellen, ob sich das Messverhalten in Abhängigkeit von der Anwesenheit eines Fahrzeugs veränderte.

Der MMC5883MA-B muss über den I2C-Port mit dem NodeMCU ESP8266 verbunden werden. Diese Verbindung lässt sich einfach mit einem Steckbrett herstellen. Das NodeMCU-Modul muss korrekt konfiguriert werden, um auf ein WLAN-Netzwerk zugreifen und Daten an Ubidotssenden zu können. Vor dem Test musste noch eine Stromversorgung für die Module bereitgestellt werden, um sie portabel zu machen. Da die Betriebsspannung der Module 3,3 Volt beträgt, reichen zwei in Reihe geschaltete AA-Batterien mit je 1,5 Volt aus. Die resultierenden Verbindungen sind im folgenden Diagramm dargestellt.

Zeit zum Programmieren

Da der NodeMCU ein Arduino-kompatibles Board ist, kann er über die Arduino IDE programmiert werden. Der Arduino-Code muss zwei Hauptaufgaben erfüllen:

  • Sensordatenerfassung.
  • Daten werden auf der Ubidots Plattform veröffentlicht.

Der Teil des Codes, der die Daten vom Sensor ausliest und zur Bestimmung der Magnetfeldmessung dekodiert, basiert auf dem Datenblatt des MMC5883MA, in dem die Sensorregister detailliert beschrieben sind. Die Arduino-Bibliothek Wire.h erwies sich dabei als sehr hilfreich für die I2C-Kommunikation.

Der Codeabschnitt, der für die Einrichtung der WLAN-Verbindung und das Senden der Daten an die Ubidots -Plattform zuständig ist, basiert auf dem Ubidots Tutorial „ Connect a NodeMCU ESP8266 to Ubidots over HTTP “. Um zu erfahren, wie Sie die Arduino IDE für die Programmierung des NodeMCU-Boards konfigurieren, empfehle ich Ihnen, Schritt 1 des Tutorials zu befolgen.

GitHub-Repository zu finden .

Testergebnisse

Nachdem ich die oben beschriebenen Konfigurationen abgeschlossen und sichergestellt hatte, dass der NodeMCU die Daten las und erfolgreich an Ubidots sendete, platzierte ich das Steckbrett auf dem Boden des Parkplatzes, ungefähr an der Stelle, die im Bild unten mit einem grünen X markiert ist.

Für den Test parkte ich ein Auto und ließ es einige Minuten stehen. Anschließend fuhr ich das Auto wieder weg und wartete erneut einige Minuten, bevor ich den Vorgang wiederholte. Der Sensor führte die Messungen periodisch durch, etwa alle zwei Sekunden. Ich wiederholte den Vorgang mehrmals und schloss den Test ab.

Zuvor hatte ich in meinem Ubidots -Konto ein dashboard eingerichtet, um die Visualisierung der Sensordaten zu vereinfachen. Nach Abschluss des Tests überprüfte ich die Diagramme in meinem dashboard und stellte Folgendes fest:

Bei der Datenanalyse fielen mir einige signifikante Änderungen in den Messungen entlang der z-Achse auf. Die erste Änderung trat auf, als die Stärke des Magnetfelds in z-Richtung zunahm (im obigen Bild mit „1“ markiert); die zweite, als die Stärke wieder abnahm (im obigen Bild mit „2“ markiert). Es ist wichtig zu beachten, dass die Messwerte zwischen diesen Zeitpunkten annähernd gleich groß sind.

Unter Berücksichtigung all dessen lässt sich schlussfolgern, dass die mit 1 und 2 markierten Änderungen den Zeitpunkten entsprechen, an denen ich das Auto geparkt (1) und wieder bewegt habe (2). Die dazwischen durchgeführten Messungen geben die Zeit an, in der das Auto geparkt war. Dieses Messverhalten wiederholte sich an Punkt 3.

Das Ergebnis des Experiments zeigt, dass mit dem MMC5883MA die Anwesenheit eines Fahrzeugs anhand der Veränderungen der Magnetfeldmessungen erkannt werden kann. Diese Veränderungen sind entlang einer Achse, in diesem Fall der z-Achse, deutlicher ausgeprägt. Zusammenfassend lässt sich sagen: Befindet sich ein Auto auf dem Parkplatz, ist die Magnetfeldmessung höher als im unbesetzten Zustand. Anhand der Differenz dieser Werte kann ein Schwellenwert definiert werden, um die Anwesenheit des Fahrzeugs zu überprüfen.

Das nächste Ziel ist die Durchführung ähnlicher Experimente mit den anderen Sensoren. Abschließend müssen die Ergebnisse verglichen werden, um herauszufinden, welcher Sensor am besten für den Bau des finalen Prototyps geeignet ist.

Wenn Sie wissen möchten, wie die anderen Experimente ausfallen, behalten Sie die nächsten Beiträge im Auge.