Tabla de contenido:
Video: Fotón de partículas - Tutorial del sensor de altímetro de precisión MPL3115A2: 4 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:42
El MPL3115A2 emplea un sensor de presión MEMS con una interfaz I2C para proporcionar datos precisos de presión / altitud y temperatura. Las salidas del sensor están digitalizadas por un ADC de alta resolución de 24 bits. El procesamiento interno elimina las tareas de compensación del sistema MCU anfitrión. Es capaz de detectar un cambio de solo 0,05 kPa, lo que equivale a un cambio de altitud de 0,3 m. Aquí está su demostración con fotón de partículas.
Paso 1: ¡¡Lo que necesitas …
1. Fotón de partículas
2. MPL3115A2
3. Cable I²C
4. Escudo I²C para fotones de partículas
Paso 2: Conexiones:
Tome un escudo I2C para fotones de partículas y empújelo suavemente sobre los pines del fotón de partículas.
Luego, conecte un extremo del cable I2C al sensor MPL3115A2 y el otro extremo al blindaje I2C.
Las conexiones se muestran en la imagen de arriba.
Paso 3: Código:
El código de partículas para MPL3115A2 se puede descargar desde nuestro repositorio Github-DCUBE Store.
Aqui esta el link.
Hemos utilizado dos bibliotecas para código de partículas, que son application.hy spark_wiring_i2c.h. Se requiere la biblioteca Spark_wiring_i2c para facilitar la comunicación I2C con el sensor.
También puede copiar el código desde aquí, se proporciona de la siguiente manera:
// Distribuido con licencia de libre albedrío.
// Úselo de la forma que desee, lucrativa o gratuita, siempre que encaje en las licencias de sus obras asociadas.
// MPL3115A2
// Este código está diseñado para funcionar con el mini módulo MPL3115A2_I2CS I2C
#incluir
#incluir
// La dirección MPL3115A2 I2C es 0x60 (96)
#define Addr 0x60
float cTemp = 0.0, fTemp = 0.0, presión = 0.0, altitud = 0.0;
int temp = 0, tHeight = 0; long pres = 0;
configuración vacía ()
{
// Establecer variable
Particle.variable ("i2cdevice", "MPL3115A2");
Particle.variable ("cTemp", cTemp);
Particle.variable ("presión", presión);
Particle.variable ("altitud", altitud);
// Inicializar la comunicación I2C
Wire.begin ();
// Inicializar la comunicación en serie, configurar la velocidad en baudios = 9600
Serial.begin (9600);
// Iniciar transmisión I2C
Wire.beginTransmission (Addr);
// Seleccionar registro de control
Wire.write (0x26);
// Modo activo, OSR = 128, modo altímetro
Wire.write (0xB9);
// Detener la transmisión I2C
Wire.endTransmission ();
// Iniciar transmisión I2C
Wire.beginTransmission (Addr);
// Seleccionar registro de configuración de datos
Wire.write (0x13);
// Evento de datos listos habilitado para altitud, presión, temperatura
Wire.write (0x07);
// Detener la transmisión I2C
Wire.endTransmission ();
retraso (300);
}
bucle vacío ()
{
datos int sin firmar [6];
// Iniciar transmisión I2C
Wire.beginTransmission (Addr);
// Seleccionar registro de control
Wire.write (0x26);
// Modo activo, OSR = 128, modo altímetro
Wire.write (0xB9);
// Detener la transmisión I2C
Wire.endTransmission ();
retraso (1000);
// Iniciar transmisión I2C
Wire.beginTransmission (Addr);
// Seleccionar registro de datos
Wire.write (0x00);
// Detener la transmisión I2C
Wire.endTransmission ();
// Solicita 6 bytes de datos
Wire.requestFrom (Dirección, 6);
// Leer 6 bytes de datos de la dirección 0x00 (00)
// estado, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
if (Cable disponible () == 6)
{
datos [0] = Wire.read ();
datos [1] = Wire.read ();
datos [2] = Wire.read ();
datos [3] = Wire.read ();
datos [4] = Wire.read ();
datos [5] = Wire.read ();
}
// Convierte los datos a 20 bits
tHeight = (((((largo) datos [1] * (largo) 65536) + (datos [2] * 256) + (datos [3] & 0xF0)) / 16);
temp = ((datos [4] * 256) + (datos [5] & 0xF0)) / 16;
altitud = tHeight / 16.0;
cTemp = (temp / 16.0);
fTemp = cTemp * 1.8 + 32;
// Iniciar transmisión I2C
Wire.beginTransmission (Addr);
// Seleccionar registro de control
Wire.write (0x26);
// Modo activo, OSR = 128, modo barómetro
Wire.write (0x39);
// Detener la transmisión I2C
Wire.endTransmission ();
// Iniciar transmisión I2C
Wire.beginTransmission (Addr);
// Seleccionar registro de datos
Wire.write (0x00);
// Detener la transmisión I2C
Wire.endTransmission ();
retraso (1000);
// Solicitar 4 bytes de datos
Wire.requestFrom (Addr, 4);
// Leer 4 bytes de datos
// estado, pres msb1, pres msb, pres lsb
if (Cable disponible () == 4)
{
datos [0] = Wire.read ();
datos [1] = Wire.read ();
datos [2] = Wire.read ();
datos [3] = Wire.read ();
}
// Convierte los datos a 20 bits
pres = (((largo) datos [1] * (largo) 65536) + (datos [2] * 256) + (datos [3] & 0xF0)) / 16;
presión = (pres / 4.0) / 1000.0;
// Salida de datos al tablero
Particle.publish ("Altitud:", Cadena (altitud));
Particle.publish ("Presión:", Cadena (presión));
Particle.publish ("Temperatura en grados Celsius:", String (cTemp));
Particle.publish ("Temperatura en Fahrenheit:", String (fTemp));
retraso (1000);
}
Paso 4: Aplicaciones:
Varias aplicaciones de MPL3115A2 incluyen altímetro de alta precisión, teléfonos inteligentes / tabletas, altímetro de electrónica personal, etc. También se puede incorporar en GPS Dead Reckoning, mejora de GPS para servicios de emergencia, asistencia de mapas, navegación y equipo de estación meteorológica.
Recomendado:
Medición de la aceleración con ADXL345 y fotón de partículas: 4 pasos
Medición de la aceleración usando ADXL345 y Particle Photon: El ADXL345 es un acelerómetro de 3 ejes pequeño, delgado y de ultra baja potencia con medición de alta resolución (13 bits) de hasta ± 16 g. Los datos de salida digital están formateados como un complemento de dos de 16 bits y se puede acceder a ellos a través de la interfaz digital I2 C. Mide el
Medición de campo magnético con HMC5883 y fotón de partículas: 4 pasos
Medición de campo magnético con HMC5883 y fotón de partículas: El HMC5883 es una brújula digital diseñada para detección magnética de campo bajo. Este dispositivo tiene un amplio rango de campo magnético de +/- 8 Oe y una tasa de salida de 160 Hz. El sensor HMC5883 incluye controladores de correa de desmagnetización automática, cancelación de compensación y
Sensor de humedad con fotón de partículas: 6 pasos
Sensor de humedad usando un fotón de partículas: Introducción En este tutorial vamos a construir un sensor de humedad usando un fotón de partículas y su antena WiFi interna o externa. La potencia de WiFi depende de la cantidad de humedad en el aire y también en el suelo. Usamos este principio
Monitoreo de la calidad del aire con fotón de partículas: 11 pasos (con imágenes)
Monitoreo de la calidad del aire con fotón de partículas: en este proyecto, el sensor de partículas PPD42NJ se usa para medir la calidad del aire (PM 2.5) presente en el aire con fotón de partículas. No solo muestra los datos en la consola Particle y dweet.io, sino que también indica la calidad del aire usando LED RGB cambiándolo
Sensor de niebla - Fotón de partículas - Guardar datos en línea: 5 pasos (con imágenes)
Sensor de niebla - Fotón de partículas - Guardar datos en línea: para medir la cantidad de niebla o humo en el aire, hicimos este sensor de niebla. Mide la cantidad de luz que recibe un LDR de un láser y la compara con la cantidad de luz del entorno. Publica los datos en una hoja de Google en tiempo real a través de IFTTT