Índice:
Vídeo: Particle Photon - MPL3115A2 Precision Altimeter Sensor Tutorial: 4 Passos
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
O MPL3115A2 emprega um sensor de pressão MEMS com uma interface I2C para fornecer dados precisos de pressão / altitude e temperatura. As saídas do sensor são digitalizadas por um ADC de alta resolução de 24 bits. O processamento interno remove as tarefas de compensação do sistema MCU host. Ele é capaz de detectar uma mudança em apenas 0,05 kPa, o que equivale a uma mudança de 0,3 m na altitude. Aqui está sua demonstração com o fóton de partículas.
Etapa 1: O que você precisa..
1. Partícula de fóton
2. MPL3115A2
3. Cabo I²C
4. Escudo I²C para Fóton de Partículas
Etapa 2: Conexões:
Pegue um escudo I2C para o fóton da partícula e empurre-o suavemente sobre os pinos do fóton da partícula.
Em seguida, conecte uma extremidade do cabo I2C ao sensor MPL3115A2 e a outra extremidade à blindagem I2C.
As conexões são mostradas na imagem acima.
Etapa 3: Código:
O código de partícula para MPL3115A2 pode ser baixado de nosso repositório Github-DCUBE Store.
Aqui está o link.
Usamos duas bibliotecas para código de partículas, que são application.h e spark_wiring_i2c.h. A biblioteca Spark_wiring_i2c é necessária para facilitar a comunicação I2C com o sensor.
Você também pode copiar o código daqui, ele é fornecido da seguinte forma:
// Distribuído com uma licença de livre arbítrio.
// Use-o como quiser, com ou sem lucro, desde que se enquadre nas licenças das suas obras associadas.
// MPL3115A2
// Este código é projetado para funcionar com o Minimódulo MPL3115A2_I2CS I2C
#incluir
#incluir
// O endereço MPL3115A2 I2C é 0x60 (96)
#define Addr 0x60
float cTemp = 0,0, fTemp = 0,0, pressão = 0,0, altitude = 0,0;
int temp = 0, tHeight = 0; long pres = 0;
void setup ()
{
// Definir variável
Particle.variable ("i2cdevice", "MPL3115A2");
Particle.variable ("cTemp", cTemp);
Variável de partícula ("pressão", pressão);
Partícula.variable ("altitude", altitude);
// Inicializar a comunicação I2C
Wire.begin ();
// Inicialize a comunicação serial, defina a taxa de transmissão = 9600
Serial.begin (9600);
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de controle
Wire.write (0x26);
// Modo ativo, OSR = 128, modo altímetro
Wire.write (0xB9);
// Pare a transmissão I2C
Wire.endTransmission ();
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de configuração de dados
Wire.write (0x13);
// Evento Data Ready habilitado para altitude, pressão, temperatura
Wire.write (0x07);
// Pare a transmissão I2C
Wire.endTransmission ();
atraso (300);
}
void loop ()
{
dados internos não assinados [6];
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de controle
Wire.write (0x26);
// Modo ativo, OSR = 128, modo altímetro
Wire.write (0xB9);
// Pare a transmissão I2C
Wire.endTransmission ();
atraso (1000);
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de dados
Wire.write (0x00);
// Pare a transmissão I2C
Wire.endTransmission ();
// Solicita 6 bytes de dados
Wire.requestFrom (Addr, 6);
// Lê 6 bytes de dados do endereço 0x00 (00)
// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
if (Wire.available () == 6)
{
dados [0] = Wire.read ();
dados [1] = Wire.read ();
dados [2] = Wire.read ();
dados [3] = Wire.read ();
dados [4] = Wire.read ();
dados [5] = Wire.read ();
}
// Converta os dados para 20 bits
tHeight = ((((longo) dados [1] * (longo) 65536) + (dados [2] * 256) + (dados [3] & 0xF0)) / 16);
temp = ((dados [4] * 256) + (dados [5] e 0xF0)) / 16;
altitude = tHeight / 16,0;
cTemp = (temp / 16,0);
fTemp = cTemp * 1,8 + 32;
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de controle
Wire.write (0x26);
// Modo ativo, OSR = 128, modo barômetro
Wire.write (0x39);
// Pare a transmissão I2C
Wire.endTransmission ();
// Iniciar a transmissão I2C
Wire.beginTransmission (Addr);
// Selecione o registro de dados
Wire.write (0x00);
// Pare a transmissão I2C
Wire.endTransmission ();
atraso (1000);
// Solicita 4 bytes de dados
Wire.requestFrom (Addr, 4);
// Lê 4 bytes de dados
// status, pres msb1, pres msb, pres lsb
if (Wire.available () == 4)
{
dados [0] = Wire.read ();
dados [1] = Wire.read ();
dados [2] = Wire.read ();
dados [3] = Wire.read ();
}
// Converta os dados para 20 bits
pres = (((longo) dados [1] * (longo) 65536) + (dados [2] * 256) + (dados [3] & 0xF0)) / 16;
pressão = (pres / 4,0) / 1000,0;
// Saída de dados para o painel
Particle.publish ("Altitude:", String (altitude));
Particle.publish ("Pressão:", Corda (pressão));
Particle.publish ("Temperatura em Celsius:", String (cTemp));
Particle.publish ("Temperatura em Fahrenheit:", String (fTemp));
atraso (1000);
}
Etapa 4: Aplicativos:
Várias aplicações de MPL3115A2 incluem Altimetria de Alta Precisão, Smartphones / Tablets, Altimetria Eletrônica Pessoal, etc. Ele também pode ser incorporado em GPS Dead Reckoning, Melhoria de GPS para Serviços de Emergência, Map Assist, Navegação, bem como Equipamentos de Estação Meteorológica.
Recomendado:
Raspberry Pi A1332 Precision Hall - Tutorial Java do sensor de ângulo de efeito: 4 etapas
Raspberry Pi A1332 Precision Hall - Sensor de ângulo de efeito Java Tutorial: A1332 é um sensor de posição de ângulo magnético programável de alta resolução de 360 ° sem contato. Ele é projetado para sistemas digitais que usam uma interface I2C. É construído com tecnologia Circular Vertical Hall (CVH) e um sinal baseado em microprocessador programável
Particle Photon - Tutorial do sensor de temperatura ADT75: 4 etapas
Particle Photon - ADT75 Temperature Sensor Tutorial: ADT75 é um sensor de temperatura digital de alta precisão. É composto por um sensor de temperatura de banda larga e um conversor analógico-digital de 12 bits para monitorar e digitalizar a temperatura. Seu sensor altamente sensível o torna competente o suficiente para mim
Particle Photon - Tutorial do sensor de temperatura STS21: 4 etapas
Particle Photon - STS21 Temperature Sensor Tutorial: STS21 Digital Temperature Sensor oferece desempenho superior e uma pegada de economia de espaço. Ele fornece sinais calibrados e linearizados em formato digital I2C. A fabricação deste sensor é baseada na tecnologia CMOSens, que atribui ao superior
Particle Photon - Tutorial do sensor de temperatura HDC1000: 4 etapas
Particle Photon - HDC1000 Temperature Sensor Tutorial: O HDC1000 é um sensor de umidade digital com sensor de temperatura integrado que fornece excelente precisão de medição em potência muito baixa. O dispositivo mede a umidade com base em um novo sensor capacitivo. Os sensores de umidade e temperatura são fac
Particle Photon - Sensor de luz ambiente digital BH1715 Tutorial: 4 etapas
Particle Photon - Sensor de luz ambiente digital BH1715 Tutorial: O BH1715 é um sensor de luz ambiente digital com uma interface de barramento I²C. O BH1715 é comumente usado para obter os dados da luz ambiente para ajustar a energia da luz de fundo do LCD e do teclado para dispositivos móveis. Este dispositivo oferece uma resolução de 16 bits e um ajuste