Оглавление:
Видео: Фотон частиц - Учебное пособие по прецизионному датчику высотомера MPL3115A2: 4 шага
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:51
MPL3115A2 использует датчик давления MEMS с интерфейсом I2C для получения точных данных о давлении / высоте и температуре. Выходы датчиков оцифровываются 24-битным АЦП высокого разрешения. Внутренняя обработка удаляет задачи компенсации из системы главного MCU. Он способен обнаруживать изменение всего лишь на 0,05 кПа, что соответствует изменению высоты на 0,3 м. Вот его демонстрация с помощью Particle Photon.
Шаг 1: Что вам нужно..
1. Частичный фотон
2. MPL3115A2
3. Кабель I²C
4. Экран I²C для частиц фотона
Шаг 2: Подключения:
Возьмите экран I2C для фотона частицы и осторожно наденьте его на контакты фотона частицы.
Затем подключите один конец кабеля I2C к датчику MPL3115A2, а другой конец - к экрану I2C.
Подключения показаны на картинке выше.
Шаг 3: Код:
Код частицы для MPL3115A2 можно загрузить из нашего репозитория Github - DCUBE Store.
Вот ссылка.
Мы использовали две библиотеки для кода частиц: application.h и spark_wiring_i2c.h. Библиотека Spark_wiring_i2c требуется для облегчения связи I2C с датчиком.
Вы также можете скопировать код отсюда, он выглядит следующим образом:
// Распространяется по свободной лицензии.
// Используйте его как хотите, для получения прибыли или бесплатно, при условии, что он соответствует лицензиям на связанные с ним работы.
// MPL3115A2
// Этот код предназначен для работы с I2C Mini Module MPL3115A2_I2CS
#включают
#включают
// Адрес I2C MPL3115A2 0x60 (96)
#define Addr 0x60
float cTemp = 0,0, fTemp = 0,0, давление = 0,0, высота = 0,0;
int temp = 0, tHeight = 0; long pres = 0;
установка void ()
{
// Устанавливаем переменную
Particle.variable ("i2cdevice", "MPL3115A2");
Particle.variable ("cTemp", cTemp);
Particle.variable («давление», давление);
Particle.variable ("высота", высота);
// Инициализируем связь I2C
Wire.begin ();
// Инициализируем последовательную связь, устанавливаем скорость передачи = 9600
Serial.begin (9600);
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем контрольный регистр
Wire.write (0x26);
// Активный режим, OSR = 128, режим высотомера
Wire.write (0xB9);
// Остановить передачу I2C
Wire.endTransmission ();
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем регистр конфигурации данных
Wire.write (0x13);
// Событие готовности данных включено для высоты, давления, температуры
Wire.write (0x07);
// Остановить передачу I2C
Wire.endTransmission ();
задержка (300);
}
пустой цикл ()
{
данные типа int без знака [6];
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем контрольный регистр
Wire.write (0x26);
// Активный режим, OSR = 128, режим высотомера
Wire.write (0xB9);
// Остановить передачу I2C
Wire.endTransmission ();
задержка (1000);
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем регистр данных
Wire.write (0x00);
// Остановить передачу I2C
Wire.endTransmission ();
// Запрос 6 байтов данных
Wire.requestFrom (Адрес, 6);
// Считываем 6 байтов данных с адреса 0x00 (00)
// статус, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb
если (Wire.available () == 6)
{
данные [0] = Wire.read ();
данные [1] = Wire.read ();
данные [2] = Wire.read ();
данные [3] = Wire.read ();
данные [4] = Wire.read ();
данные [5] = Wire.read ();
}
// Преобразуем данные в 20-битные
tHeight = ((((длинные) данные [1] * (длинные) 65536) + (данные [2] * 256) + (данные [3] & 0xF0)) / 16);
temp = ((данные [4] * 256) + (данные [5] & 0xF0)) / 16;
высота = tHeight / 16,0;
cTemp = (темп / 16.0);
fTemp = cTemp * 1,8 + 32;
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем контрольный регистр
Wire.write (0x26);
// Активный режим, OSR = 128, режим барометра
Wire.write (0x39);
// Остановить передачу I2C
Wire.endTransmission ();
// Запуск передачи I2C
Wire.beginTransmission (адрес);
// Выбираем регистр данных
Wire.write (0x00);
// Остановить передачу I2C
Wire.endTransmission ();
задержка (1000);
// Запрос 4 байта данных
Wire.requestFrom (Адрес, 4);
// Читаем 4 байта данных
// статус, pres msb1, pres msb, pres lsb
если (Wire.available () == 4)
{
данные [0] = Wire.read ();
данные [1] = Wire.read ();
данные [2] = Wire.read ();
данные [3] = Wire.read ();
}
// Преобразуем данные в 20-битные
прес = (((длинные) данные [1] * (длинные) 65536) + (данные [2] * 256) + (данные [3] & 0xF0)) / 16;
давление = (прес / 4,0) / 1000,0;
// Выводим данные в дашборд
Particle.publish ("Высота:", Строка (высота));
Particle.publish («Давление:», String (давление));
Particle.publish («Температура в градусах Цельсия:», String (cTemp));
Particle.publish ("Температура по Фаренгейту:", String (fTemp));
задержка (1000);
}
Шаг 4: Приложения:
Различные приложения MPL3115A2 включают в себя высокоточный альтиметр, смартфоны / планшеты, персональную электронику альтиметрии и т. Д. Он также может быть включен в систему определения точного счета GPS, усовершенствование GPS для аварийных служб, ассистент карты, навигацию, а также оборудование метеостанции.
Рекомендуемые:
Портативное устройство измерения мелких частиц (расширение): 3 шага
Портативное измерение мелких частиц (расширение): Цель: Добавление датчика CO2. Повышение читаемости программы. Открытие программы для других типов датчиков. Этот проект следует за другим, уже опубликованным. Он отвечает на вопросы читателей. Дополнительный датчик был
Arduino Nano - Руководство по датчику температуры TCN75A: 4 шага
Arduino Nano - Учебное пособие по датчику температуры TCN75A: TCN75A - это двухпроводной последовательный датчик температуры, объединенный с преобразователем температуры в цифровой. Он объединен с программируемыми пользователем регистрами, которые обеспечивают гибкость для приложений измерения температуры. Настройки реестра позволяют пользователям
Эксперимент по прецизионному исправлению: 11 шагов
Эксперимент по прецизионному выпрямлению. Недавно я провел эксперимент с прецизионной выпрямительной схемой и получил некоторые приблизительные выводы. Учитывая, что схема прецизионного выпрямителя является общей схемой, результаты этого эксперимента могут предоставить некоторую справочную информацию. E
Кормушка для кошек IoT, использующая фотон частиц, интегрированный с Alexa, SmartThings, IFTTT, Google Sheets: 7 шагов (с изображениями)
Кормушка для кошек IoT с использованием Photon-частиц, интегрированная с Alexa, SmartThings, IFTTT, Google Sheets: необходимость в автоматической кормушке для кошек не требует пояснений. Кошки (нашу кошку зовут Белла) могут быть неприятными, когда голодны, и если ваша кошка такая же, как моя, будет каждый раз есть миску досуха. Мне нужен был способ автоматической подачи контролируемого количества еды
Датчик тумана - Фотон частиц - Сохранение данных в Интернете: 5 шагов (с изображениями)
Датчик тумана - Фотон частиц - Сохранение данных в Интернете: для измерения количества тумана или дыма в воздухе мы создали этот датчик тумана. Он измеряет количество света, которое LDR получает от лазера, и сравнивает его с количеством света окружающей среды. Он размещает данные в таблице Google в реальном времени через IFTTT