Table des matières:

Particle Photon - Tutoriel sur le capteur altimètre de précision MPL3115A2 : 4 étapes
Particle Photon - Tutoriel sur le capteur altimètre de précision MPL3115A2 : 4 étapes

Vidéo: Particle Photon - Tutoriel sur le capteur altimètre de précision MPL3115A2 : 4 étapes

Vidéo: Particle Photon - Tutoriel sur le capteur altimètre de précision MPL3115A2 : 4 étapes
Vidéo: Новые продукты 29.07.2015 2024, Juin
Anonim
Image
Image

Le MPL3115A2 utilise un capteur de pression MEMS avec une interface I2C pour fournir des données précises de pression/altitude et température. Les sorties des capteurs sont numérisées par un CAN 24 bits haute résolution. Le traitement interne supprime les tâches de compensation du système MCU hôte. Il est capable de détecter un changement de seulement 0,05 kPa, ce qui équivaut à un changement d'altitude de 0,3 m. Voici sa démonstration avec Particle photon.

Étape 1: Ce dont vous avez besoin.

De quoi as-tu besoin..!!
De quoi as-tu besoin..!!

1. Photon de particule

2. MPL3115A2

3. Câble I²C

4. Bouclier I²C pour les photons de particules

Étape 2: Connexions:

Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions
Connexions

Prenez un bouclier I2C pour le photon de particule et poussez-le doucement sur les broches du photon de particule.

Connectez ensuite l'une des extrémités du câble I2C au capteur MPL3115A2 et l'autre extrémité au blindage I2C.

Les connexions sont montrées dans l'image ci-dessus.

Étape 3: Coder:

Code
Code

Le code de particule pour MPL3115A2 peut être téléchargé à partir de notre référentiel Github-DCUBE Store.

Voici le lien.

Nous avons utilisé deux bibliothèques pour le code particulaire, qui sont application.h et spark_wiring_i2c.h. La bibliothèque Spark_wiring_i2c est requise pour faciliter la communication I2C avec le capteur.

Vous pouvez également copier le code d'ici, il est donné comme suit:

// Distribué avec une licence libre-arbitre.

// Utilisez-le comme vous le souhaitez, à profit ou gratuitement, à condition qu'il rentre dans les licences de ses œuvres associées.

// MPL3115A2

// Ce code est conçu pour fonctionner avec le mini module MPL3115A2_I2CS I2C

#comprendre

#comprendre

// L'adresse I2C MPL3115A2 est 0x60(96)

#define Adr 0x60

float cTemp = 0,0, fTemp = 0,0, pression = 0,0, altitude = 0,0;

int temp = 0, tHeight = 0; long pres = 0;

void setup()

{

// Définir la variable

Particule.variable("i2cdevice", "MPL3115A2");

Particule.variable("cTemp", cTemp);

Particle.variable("pression", pression);

Particle.variable("altitude", altitude);

// Initialisation de la communication I2C

Fil.begin();

// Initialiser la communication série, définir le débit en bauds = 9600

Serial.begin(9600);

// Lancer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de contrôle

Wire.write(0x26);

// Mode actif, OSR = 128, mode altimètre

Wire.write(0xB9);

// Arrêter la transmission I2C

Wire.endTransmission();

// Lancer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de configuration des données

Wire.write(0x13);

// Evénement prêt pour les données activé pour l'altitude, la pression, la température

Wire.write(0x07);

// Arrêter la transmission I2C

Wire.endTransmission();

retard (300);

}

boucle vide()

{

données int non signées[6];

// Lancer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de contrôle

Wire.write(0x26);

// Mode actif, OSR = 128, mode altimètre

Wire.write(0xB9);

// Arrêter la transmission I2C

Wire.endTransmission();

retard(1000);

// Lancer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de données

Wire.write(0x00);

// Arrêter la transmission I2C

Wire.endTransmission();

// Demande 6 octets de données

Wire.requestFrom(Adr, 6);

// Lecture de 6 octets de données à partir de l'adresse 0x00(00)

// état, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb

if(Fil.disponible() == 6)

{

data[0] = Wire.read();

données[1] = Wire.read();

data[2] = Wire.read();

data[3] = Wire.read();

données[4] = Wire.read();

données[5] = Wire.read();

}

// Convertir les données en 20 bits

tHeight = ((((long)data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16);

temp = ((données[4] * 256) + (données[5] & 0xF0)) / 16;

altitude = tHauteur / 16,0;

cTemp = (temp / 16,0);

fTemp = cTemp * 1,8 + 32;

// Lancer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de contrôle

Wire.write(0x26);

// Mode actif, OSR = 128, mode baromètre

Wire.write(0x39);

// Arrêter la transmission I2C

Wire.endTransmission();

// Lancer la transmission I2C

Wire.beginTransmission(Adr);

// Sélection du registre de données

Wire.write(0x00);

// Arrêter la transmission I2C

Wire.endTransmission();

retard(1000);

// Demande 4 octets de données

Wire.requestFrom(Adr, 4);

// Lecture de 4 octets de données

// état, appuyez sur msb1, appuyez sur msb, appuyez sur lsb

if(Fil.disponible() == 4)

{

data[0] = Wire.read();

données[1] = Wire.read();

data[2] = Wire.read();

data[3] = Wire.read();

}

// Convertir les données en 20 bits

pres = (((long)données[1] * (long)65536) + (données[2] * 256) + (données[3] & 0xF0)) / 16;

pression = (pres / 4,0) / 1000,0;

// Sortie des données vers le tableau de bord

Particle.publish("Altitude:", String(altitude));

Particle.publish("Pressure:", String(pression));

Particle.publish("Température en Celsius:", String(cTemp));

Particle.publish("Température en Fahrenheit:", String(fTemp));

retard(1000);

}

Étape 4: Candidatures:

Diverses applications du MPL3115A2 incluent l'altimétrie de haute précision, les smartphones/tablettes, l'altimétrie électronique personnelle, etc.

Conseillé: