[2/3] Von der Hardware in die Cloud: MMC5883MA testen
Haben Sie schon einmal darüber nachgedacht, Ihre eigene IoT Anwendung von Grund auf zu entwickeln, wussten aber nicht, wo Sie anfangen sollen? Gute Nachrichten, hier erfahren Sie, wie es geht! Bleiben Sie über den Projektfortschritt auf dem Laufenden [ hier ].
Dies ist der zweite Teil einer Artikelserie, in der ich den Prozess der Entwicklung meiner eigenen IoT Anwendung von Grund auf beschreibe. Wenn Sie Teil 1 noch nicht gelesen haben, empfehle ich Ihnen, dies zuerst zu lesen , damit Sie den Kontext des Projekts verstehen und sich über die Überlegungen informieren können, die bei der Auswahl der Technologien und Komponenten berücksichtigt wurden, die für den Bau des ersten Prototyps erforderlich sind.
Um einen Prototyp bauen zu können, ist es notwendig, die Betriebsdetails und technischen Spezifikationen jeder Komponente zu kennen. Aus meiner Erfahrung bin ich der Meinung, dass der erste (und vielleicht wichtigste Schritt) darin besteht, die Hauptaspekte des Datenblatts der Module zu verstehen. Anschließend empfehle ich, mit jedem Einzelnen individuelle Tests durchzuführen, um sein Verhalten zu verstehen.
Vor diesem Hintergrund beschloss ich, mit dem kritischsten Teil des Prototyps zu beginnen: den Sensoren. Der Grund ist einfach: Es muss sichergestellt werden, dass die ausgewählten Sensoren tatsächlich in der Lage sind, die Anwesenheit eines Fahrzeugs zu erkennen. Außerdem müssen sie verglichen werden, um herauszufinden, welcher Sensor für die Anforderungen und Ziele der Anwendung am besten geeignet ist.
In diesem Artikel werde ich den Prozess beschreiben, der zur Bewertung des Verhaltens des Magnetsensors MMC5883MA und seiner Fähigkeit, die Anwesenheit eines Fahrzeugs auf einem Parkplatz zu erkennen, durchgeführt wird. Am Ende werden die Testergebnisse angezeigt und analysiert.
Über die Komponenten
Der MMC5883MA ist ein stromsparender 3-Achsen-Magnetsensor, der über eine I2C-Schnittstelle mit einem externen Mikrocontroller kommunizieren kann. Durch das Schreiben und Lesen bestimmter spezifischer Register vom Sensor kann der Mikrocontroller neben dem Abrufen der Messdaten auch den Betriebsmodus konfigurieren und den Messvorgang starten.
Für diesen Test verwende ich die Evaluierungsversion des MMC5883MA-Sensors mit der Bezeichnung MMC5883MA-B , da oberflächliche Komponenten nicht so einfach getestet werden können. Da ich zunächst einen Prototypen bauen musste, sollten die meisten Komponenten über ein Steckbrett und den MMC5883MA-B verbunden werden, sodass ich dies ohne zusätzlichen Zeit- und Arbeitsaufwand tun kann.
Um den Test durchführen zu können, musste zunächst ein Mikrocontroller ausgewählt werden, der die vom Sensor generierten Daten sammelt. Da der Schwerpunkt des Tests jedoch auf der Analyse des Sensorverhaltens und nicht auf dem Verhalten des Mikrocontrollers liegt, kann die Wahl eines einfach zu programmierenden Mikrocontrollers eine gute Option sein, um die Zeit und Komplexität des Experiments zu reduzieren. Kurz gesagt, ich musste einen einfachen und praktischen Mikrocontroller (oder ein Entwicklungsboard) mit einer I2C-Schnittstelle finden, der auch in der Lage war, die Sensordaten an die Ubidots -Plattform zu senden, um dort gespeichert und verarbeitet zu werden.
Vor diesem Hintergrund habe ich mich für die Verwendung eines NodeMCU ESP8266 als Mikrocontroller entschieden. Dieses Arduino-kompatible Entwicklungsboard basiert auf dem WiFi-Modul ESP8266 und ist aufgrund seiner Praktikabilität bei Internet-of-Things-Anwendungen sehr beliebt. Dieses Gerät verfügt über eine Vielzahl von Kommunikationsschnittstellen, einschließlich I2C. Alle diese Eigenschaften machen es für den Einsatz im Experiment geeignet.
Testbeschreibung
Das Experiment bestand darin, periodische Messungen des Magnetfelds auf einem Parkplatz durchzuführen und reale Bedingungen zu simulieren, d. h. beim Ein- und Ausfahren von Fahrzeugen. Die Sensordaten sollten in Echtzeit an die Ubidots -Plattform gesendet und dann analysiert werden, um festzustellen, ob sich das Verhalten der Messungen geändert hat, die mit der Fahrzeugpräsenz zusammenhängen könnten.
Der MMC5883MA-B muss über den I2C-Port mit dem NodeMCU ESP8266 verbunden werden. Diese Verbindungen lassen sich ganz einfach mit Hilfe eines Steckbretts herstellen. Das NodeMCU-Modul muss ordnungsgemäß konfiguriert sein, um auf ein WLAN-Netzwerk zugreifen und Daten an Ubidots senden zu können. Das letzte Detail vor Beginn des Tests bestand darin, die Module mit Strom zu versorgen, um sie tragbar zu machen. Da die Arbeitsspannung der Module 3,3 Volt beträgt, sollte es ausreichen, zwei in Reihe geschaltete AA-Batterien mit je 1,5 Volt zu verwenden. Die resultierenden Verbindungen sind im Diagramm unten dargestellt.
Zeit zum Codieren
Da es sich bei der NodeMCU um eine Arduino-kompatible Platine handelt, kann sie über die Arduino-IDE programmiert werden. Der Arduino-Code muss zwei Hauptaufgaben implementieren:
- Sensordatenerfassung.
- Datenveröffentlichung auf der Ubidots Plattform.
Der Teil des Codes, der dafür verantwortlich ist, die Daten vom Sensor zu lesen und sie zu dekodieren, um die Magnetfeldmessung zu erhalten, wurde auf der Grundlage des Datenblatts des MMC5883MA geschrieben, in dem die Register des Sensors ausführlich erläutert werden. Hier war die Arduino-Bibliothek Wire.h sehr hilfreich, um die I2C-Kommunikation zu erreichen.
Der Teil des Codes, der für die Einrichtung der WLAN-Verbindung und das Senden der Daten an die Ubidots -Plattform verantwortlich ist, basiert auf dem Ubidots -Tutorial „ Connect a NodeMCU ESP8266 to Ubidots over HTTP “. Um zu erfahren, wie Sie die Arduino IDE zum Programmieren des NodeMCU-Boards konfigurieren, empfehle ich, Schritt 1 im Tutorial zu befolgen.
Github-Repository gefunden werden .
Testergebnisse
Nachdem ich die oben erläuterten Konfigurationen abgeschlossen und sichergestellt hatte, dass die NodeMCU die Daten las und erfolgreich an Ubidots sendete, platzierte ich das Steckbrett auf dem Boden des Parkplatzes, ungefähr an der Position, die im Bild unten mit dem grünen X markiert ist.
Um den Test zu starten, parkte ich ein Auto und ließ es einige Minuten dort stehen. Danach habe ich das Auto herausgefahren und ein paar Minuten gewartet, bevor ich den Vorgang wiederholt habe. Bedenken Sie, dass der Sensor die Messungen regelmäßig durchführt, etwa alle zwei Sekunden. Ich wiederholte den gleichen Vorgang mehrmals und beendete den Test.
Zuvor habe ich in meinem Ubidots -Konto ein dashboard konfiguriert, um die Visualisierung der Sensordaten zu erleichtern. Nach Abschluss des Tests habe ich die Diagramme in meinem dashboard überprüft und Folgendes gefunden:
Als ich die Daten analysierte, bemerkte ich, dass es einige signifikante Änderungen bei den Z-Achsen-Messungen gab. Der erste Fall trat auf, als die Stärke des Magnetfelds in der z-Achse zunahm (im Bild oben mit „1“ markiert); der zweite war, als die Helligkeit wieder abnahm (im Bild oben mit der „2“ markiert). Es ist wichtig zu beachten, dass die Größe der zwischen diesen Punkten erfassten Daten ungefähr dem gleichen Wert entspricht.
Wenn man all dies im Hinterkopf behält, kann man schlussfolgern, dass die mit 1 und 2 markierten Änderungen den Momenten entsprechen, in denen ich das Auto geparkt (1) und wieder bewegt habe (2). Darüber hinaus bedeuten die zwischen ihnen gemessenen Messungen die Zeit, während der das Auto geparkt war. Dieses Verhalten in den Messungen wiederholte sich noch einmal an der mit 3 gekennzeichneten Stelle.
Das Ergebnis des Experiments lässt darauf schließen, dass mit dem MMC5883MA die Anwesenheit eines Fahrzeugs anhand der Änderungen in den Magnetfeldmessungen erkannt werden kann, die in einer der Achsen, in diesem Fall der Z-Achse, stärker ausfallen. Zusammenfassend lässt sich sagen, dass die Magnetfeldmessung höher ist, wenn ein Auto auf dem Parkplatz steht, als wenn es allein steht. Anhand der Differenz zwischen diesen Werten kann ein Schwellenwert definiert werden, um über die Anwesenheit des Fahrzeugs zu entscheiden.
Das nächste zu erreichende Ziel besteht darin, ähnliche Experimente mit den anderen Sensoren durchzuführen. Am Ende müssen die Ergebnisse verglichen werden, um herauszufinden, welcher der Sensoren am besten für den Bau des endgültigen Prototyps des Projekts geeignet ist.
Wenn Sie wissen möchten, wie die anderen Experimente ausfallen, behalten Sie die nächsten Beiträge im Auge.