Sommario:
- Passaggio 1: ciò di cui hai bisogno.
- Passaggio 2: connessioni:
- Passaggio 3: codice:
- Passaggio 4: applicazioni:
Video: Particle Photon - Tutorial del sensore dell'altimetro di precisione MPL3115A2: 4 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
L'MPL3115A2 utilizza un sensore di pressione MEMS con un'interfaccia I2C per fornire dati precisi su pressione/altitudine e temperatura. Le uscite del sensore sono digitalizzate da un ADC a 24 bit ad alta risoluzione. L'elaborazione interna rimuove le attività di compensazione dal sistema MCU host. È in grado di rilevare un cambiamento di soli 0,05 kPa, che equivale a un cambiamento di altitudine di 0,3 m. Ecco la sua dimostrazione con il fotone particellare.
Passaggio 1: ciò di cui hai bisogno.
1. Fotone particellare
2. MPL3115A2
3. Cavo I²C
4. Scudo I²C per fotoni di particelle
Passaggio 2: connessioni:
Prendi uno scudo I2C per fotone particellare e spingilo delicatamente sui perni del fotone particellare.
Quindi collegare un'estremità del cavo I2C al sensore MPL3115A2 e l'altra estremità allo schermo I2C.
I collegamenti sono mostrati nell'immagine sopra.
Passaggio 3: codice:
Il codice particella per MPL3115A2 può essere scaricato dal nostro repository Github-DCUBE Store.
Ecco il link.
Abbiamo usato due librerie per il codice particellare, che sono application.he spark_wiring_i2c.h. La libreria Spark_wiring_i2c è necessaria per facilitare la comunicazione I2C con il sensore.
Puoi anche copiare il codice da qui, è fornito come segue:
// Distribuito con una licenza libera.
// Usalo come vuoi, a scopo di lucro o gratuito, a condizione che rientri nelle licenze delle opere associate.
//MPL3115A2
// Questo codice è progettato per funzionare con il Mini Modulo MPL3115A2_I2CS I2C
#includere
#includere
// L'indirizzo I2C MPL3115A2 è 0x60(96)
#define Indirizzo 0x60
float cTemp = 0,0, fTemp = 0,0, pressione = 0,0, altitudine = 0,0;
int temp = 0, tHeight = 0;long pres = 0;
configurazione nulla()
{
// Imposta variabile
Particle.variable("i2cdevice", "MPL3115A2");
Particle.variable("cTemp", cTemp);
Particle.variable("pressione", pressione);
Particle.variable("altitudine", altitudine);
// Inizializza la comunicazione I2C
Wire.begin();
// Inizializza la comunicazione seriale, imposta la velocità di trasmissione = 9600
Serial.begin(9600);
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona il registro di controllo
Wire.write(0x26);
// Modalità attiva, OSR = 128, modalità altimetro
Wire.write(0xB9);
// Interrompe la trasmissione I2C
Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona il registro di configurazione dei dati
Wire.write(0x13);
// Evento Data Ready abilitato per altitudine, pressione, temperatura
Wire.write(0x07);
// Interrompe la trasmissione I2C
Wire.endTransmission();
ritardo(300);
}
ciclo vuoto()
{
dati int non firmati[6];
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona il registro di controllo
Wire.write(0x26);
// Modalità attiva, OSR = 128, modalità altimetro
Wire.write(0xB9);
// Interrompe la trasmissione I2C
Wire.endTransmission();
ritardo(1000);
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona registro dati
Wire.write(0x00);
// Interrompe la trasmissione I2C
Wire.endTransmission();
// Richiedi 6 byte di dati
Wire.requestFrom(Addr, 6);
// Legge 6 byte di dati dall'indirizzo 0x00(00)
// stato, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
if(Filo.disponibile() == 6)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
data[4] = Wire.read();
data[5] = Wire.read();
}
// Converti i dati a 20 bit
tHeight = ((((long)data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16);
temp = ((data[4] * 256) + (data[5] & 0xF0)) / 16;
altitudine = tAltezza / 16,0;
cTemp = (temp / 16.0);
fTemp = cTemp * 1,8 + 32;
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona il registro di controllo
Wire.write(0x26);
// Modalità attiva, OSR = 128, modalità barometro
Wire.write(0x39);
// Interrompe la trasmissione I2C
Wire.endTransmission();
// Avvia la trasmissione I2C
Wire.beginTransmission(Addr);
// Seleziona registro dati
Wire.write(0x00);
// Interrompe la trasmissione I2C
Wire.endTransmission();
ritardo(1000);
// Richiedi 4 byte di dati
Wire.requestFrom(Addr, 4);
// Legge 4 byte di dati
// stato, pres msb1, pres msb, pres lsb
if(Filo.disponibile() == 4)
{
data[0] = Wire.read();
data[1] = Wire.read();
data[2] = Wire.read();
data[3] = Wire.read();
}
// Converti i dati a 20 bit
pres = (((long)data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16;
pressione = (pres / 4.0) / 1000.0;
// Invia i dati alla dashboard
Particle.publish("Altitudine:", String(altitudine));
Particle.publish("Pressione:", String(pressione));
Particle.publish("Temperatura in gradi Celsius:", String(cTemp));
Particle.publish("Temperatura in gradi Fahrenheit:", String(fTemp));
ritardo(1000);
}
Passaggio 4: applicazioni:
Varie applicazioni di MPL3115A2 includono altimetria ad alta precisione, smartphone/tablet, altimetria elettronica personale ecc. Può anche essere incorporata in GPS Dead Reckoning, GPS Enhancement per servizi di emergenza, Map Assist, navigazione e apparecchiature per stazioni meteorologiche.
Consigliato:
Pingo: un lanciatore di palline da ping pong con rilevamento del movimento e alta precisione: 8 passaggi
Pingo: un lanciatore di palline da ping pong con rilevamento del movimento e alta precisione: Kevin Nitiema, Esteban Poveda, Anthony Mattacchione, Raphael Kay
Monitoraggio della temperatura e dell'umidità utilizzando SHT25 e Particle Photon: 5 passaggi
Monitoraggio della temperatura e dell'umidità mediante SHT25 e Particle Photon: abbiamo recentemente lavorato su vari progetti che richiedevano il monitoraggio della temperatura e dell'umidità e poi ci siamo resi conto che questi due parametri svolgono effettivamente un ruolo fondamentale nella stima dell'efficienza di funzionamento di un sistema. Entrambi all'indu
Misurazione dell'umidità e della temperatura utilizzando HTS221 e Particle Photon: 4 passaggi
Misurazione di umidità e temperatura mediante HTS221 e Particle Photon: HTS221 è un sensore digitale capacitivo ultra compatto per umidità relativa e temperatura. Include un elemento di rilevamento e un circuito integrato specifico per l'applicazione del segnale misto (ASIC) per fornire le informazioni di misurazione tramite seriale digitale
Utilizzo del sensore di distanza a ultrasuoni e dell'uscita del monitor seriale: 6 passaggi
Utilizzo del sensore di distanza a ultrasuoni e dell'uscita del monitor seriale.: Ehi ragazzi! Vuoi imparare a usare un'uscita monitor seriale. Bene, ecco il tutorial perfetto su come farlo! In questo tutorial, ti guiderò attraverso i semplici passaggi necessari per rilevare la distanza utilizzando il sensore a ultrasuoni e riferire i
Metodi di rilevamento del livello dell'acqua Arduino utilizzando il sensore a ultrasuoni e il sensore dell'acqua Funduino: 4 passaggi
Metodi per rilevare il livello dell'acqua Arduino utilizzando il sensore ad ultrasuoni e il sensore dell'acqua Funduino: in questo progetto, ti mostrerò come creare un rilevatore d'acqua economico utilizzando due metodi: 1. Sensore a ultrasuoni (HC-SR04).2. Sensore acqua Funduino