Inhaltsverzeichnis:
Video: Particle Photon - MPL3115A2 Präzisions-Höhenmesser-Sensor Tutorial - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:18
Der MPL3115A2 verwendet einen MEMS-Drucksensor mit einer I2C-Schnittstelle, um genaue Druck-/Höhen- und Temperaturdaten bereitzustellen. Die Sensorausgänge werden von einem hochauflösenden 24-Bit-ADC digitalisiert. Die interne Verarbeitung entfernt Kompensationsaufgaben vom Host-MCU-System. Es ist in der Lage, eine Änderung in nur 0,05 kPa zu erkennen, was einer Höhenänderung von 0,3 m entspricht. Hier ist seine Demonstration mit Particle Photon.
Schritt 1: Was Sie brauchen.
1. Teilchenphoton
2. MPL3115A2
3. I²C-Kabel
4. I²C-Schild für Teilchenphotonen
Schritt 2: Anschlüsse:
Nehmen Sie einen I2C-Schild für Partikelphotonen und schieben Sie ihn vorsichtig über die Pins des Partikelphotons.
Verbinden Sie dann das eine Ende des I2C-Kabels mit dem MPL3115A2-Sensor und das andere Ende mit der I2C-Abschirmung.
Die Anschlüsse sind im Bild oben dargestellt.
Schritt 3: Code:
Der Partikelcode für MPL3115A2 kann von unserem Github-Repository-DCUBE Store heruntergeladen werden.
Hier ist der Link.
Wir haben zwei Bibliotheken für Partikelcode verwendet, nämlich application.h und spark_wiring_i2c.h. Die Bibliothek Spark_wiring_i2c wird benötigt, um die I2C-Kommunikation mit dem Sensor zu ermöglichen.
Sie können den Code auch von hier kopieren, er wird wie folgt angegeben:
// Wird mit einer frei wählbaren Lizenz vertrieben.
// Verwenden Sie es, wie Sie wollen, gewinnbringend oder kostenlos, sofern es in die Lizenzen der zugehörigen Werke passt.
// MPL3115A2
// Dieser Code wurde entwickelt, um mit dem MPL3115A2_I2CS I2C Mini Module zu arbeiten
#enthalten
#enthalten
// MPL3115A2 I2C-Adresse ist 0x60(96)
#define Addr 0x60
Schwimmer cTemp = 0.0, fTemp = 0.0, Druck = 0.0, Höhe = 0.0;
int temp = 0, tHeight = 0;lange Pres = 0;
Void-Setup ()
{
// Variable setzen
Partikel.variable("i2cdevice", "MPL3115A2");
Partikel.variable("cTemp", cTemp);
Particle.variable("Druck", Druck);
Particle.variable("Höhe", Höhe);
// I2C-Kommunikation initialisieren
Wire.begin();
// Serielle Kommunikation initialisieren, Baudrate = 9600. einstellen
Serial.begin (9600);
// I2C-Übertragung starten
Wire.beginTransmission(Addr);
// Steuerregister auswählen
Wire.write (0x26);
// Aktiver Modus, OSR = 128, Höhenmessermodus
Wire.write(0xB9);
// I2C-Übertragung stoppen
Wire.endTransmission();
// I2C-Übertragung starten
Wire.beginTransmission(Addr);
// Datenkonfigurationsregister auswählen
Wire.write (0x13);
// Datenbereit-Ereignis für Höhe, Druck, Temperatur aktiviert
Wire.write (0x07);
// I2C-Übertragung stoppen
Wire.endTransmission();
Verzögerung (300);
}
Leere Schleife ()
{
unsignierte int-Daten[6];
// I2C-Übertragung starten
Wire.beginTransmission(Addr);
// Steuerregister auswählen
Wire.write (0x26);
// Aktiver Modus, OSR = 128, Höhenmessermodus
Wire.write(0xB9);
// I2C-Übertragung stoppen
Wire.endTransmission();
Verzögerung (1000);
// I2C-Übertragung starten
Wire.beginTransmission(Addr);
// Datenregister auswählen
Wire.write (0x00);
// I2C-Übertragung stoppen
Wire.endTransmission();
// 6 Byte Daten anfordern
Wire.requestFrom(Addr, 6);
// 6 Byte Daten von Adresse 0x00(00) lesen
// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
if(Draht.verfügbar() == 6)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
Daten[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
}
// Konvertieren Sie die Daten in 20-Bit
tHeight = (((((lang))Daten[1] * (lang)65536) + (Daten[2] * 256) + (Daten[3] & 0xF0)) / 16);
temp = ((Daten[4] * 256) + (Daten[5] & 0xF0)) / 16;
Höhe = tHeight / 16,0;
cTemp = (Temp / 16,0);
fTemp = cTemp * 1,8 + 32;
// I2C-Übertragung starten
Wire.beginTransmission(Addr);
// Steuerregister auswählen
Wire.write (0x26);
// Aktiver Modus, OSR = 128, Barometermodus
Wire.write (0x39);
// I2C-Übertragung stoppen
Wire.endTransmission();
// I2C-Übertragung starten
Wire.beginTransmission(Addr);
// Datenregister auswählen
Wire.write (0x00);
// I2C-Übertragung stoppen
Wire.endTransmission();
Verzögerung (1000);
// 4 Byte Daten anfordern
Wire.requestFrom(Addr, 4);
// 4 Byte Daten lesen
// status, pres msb1, pres msb, pres lsb
if(Draht.verfügbar() == 4)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
Daten[3] = Wire.read();
}
// Konvertieren Sie die Daten in 20-Bit
pres = (((long)data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16;
Druck = (pres / 4,0) / 1000,0;
// Daten an Dashboard ausgeben
Particle.publish("Höhe:", String(Höhe));
Particle.publish("Druck:", String(Druck));
Particle.publish("Temperatur in Celsius:", String(cTemp));
Particle.publish("Temperatur in Fahrenheit:", String(fTemp));
Verzögerung (1000);
}
Schritt 4: Anwendungen:
Zu den verschiedenen Anwendungen des MPL3115A2 gehören hochgenaue Höhenmessung, Smartphones/Tablets, persönliche elektronische Höhenmessung usw. Es kann auch in GPS-Dead Reckoning, GPS-Erweiterung für Rettungsdienste, Kartenassistent, Navigation sowie Wetterstationsausrüstung integriert werden.
Empfohlen:
AVR Assembler Tutorial 2: 4 Schritte
AVR Assembler Tutorial 2: Dieses Tutorial ist eine Fortsetzung von "AVR Assembler Tutorial 1" Wenn Sie Tutorial 1 noch nicht durchlaufen haben, sollten Sie jetzt aufhören und das zuerst tun. In diesem Tutorial werden wir unser Studium der Assemblersprachprogrammierung des atmega328p u
AVR Assembler Tutorial 1: 5 Schritte
AVR Assembler Tutorial 1: Ich habe beschlossen, eine Reihe von Tutorials zum Schreiben von Assemblerprogrammen für den Atmega328p, den Mikrocontroller des Arduino, zu schreiben. Wenn die Leute interessiert bleiben, werde ich weiterhin eine Woche oder so veröffentlichen, bis ich keine mehr habe
AVR-Assembler-Tutorial 6: 3 Schritte
AVR Assembler Tutorial 6: Willkommen bei Tutorial 6!Das heutige Tutorial wird kurz sein, in dem wir eine einfache Methode entwickeln, um Daten zwischen einem atmega328p und einem anderen über zwei Ports zu übertragen, die sie verbinden. Wir nehmen dann den Würfelroller aus Tutorial 4 und das Register
AVR-Assembler-Tutorial 8: 4 Schritte
AVR Assembler Tutorial 8: Willkommen zu Tutorial 8!In diesem kurzen Tutorial werden wir eine kleine Ablenkung von der Einführung neuer Aspekte der Assemblerprogrammierung nehmen, um zu zeigen, wie unsere Prototyping-Komponenten in eine separate "gedruckte" Leiterplatte. Die
Einführung in Particle Photon und IoT: 4 Schritte
Einführung in Particle Photon und IoT: Das Particle Photon ist eines der neuesten und meiner Meinung nach coolsten Entwicklungsboards auf dem Markt. Es verfügt über WiFi-Integrationen und eine RESTful-API, die es Ihnen ermöglicht, einfach mit dem Board zu interagieren, und Sie können es sogar mit IFTTT verknüpfen