GY-63 (MS5611) – высокоточный барометр на базе одноименного датчика атмосферного давления MS5611. Модуль барометра часто используется в квадрокоптерах, воздушных шарах, метеозондах, дельтапланах. А также в составе самостоятельного высотомера или вместе с прибором GPS для уточнения высоты.
Характеристики:
- Питание: 1.8 – 3.6 В
- Диапазон измерения давления: от 10 до 1200 гПа (от -1500 от +36500 метров над уровнем моря)
- Точность измерения высоты: до 10 см
- Потребляемый ток: 1 мкА при частоте опроса 1 Гц
- Потребляемый ток в режиме ожидания: < 0.15 мкА
- Рабочая температура: -40 … +85 °C
- Выходной сигнал: цифровой
Датчик GY-63 MS5611 имеет 7 выводов, для подключения мы будем использовать первые 4:
VCC – Питание
GND – "Земля"
SCL – Вывод шины данных i2c
SDA – Вывод шины данных i2c
Подключение к Arduino:
Для подключения датчика нам необходимы:
- Любая Arduino-совместимая плата
- Компьютер с установленной средой Arduino IDE.
- USB кабель для подключения Arduino к персональному компьютеру
- Провода типа “папа-мама”
Принципиальная схема подключения компонентов:
Скетч для Arduino:
Для считывания показаний с датчика необходимо использовать библиотеку* MS5611.
Скачать её можно здесь.
*Библиотека Arduino – программный код, хранящийся не в скетче, а во внешних файлах, которые можно подключить к вашему проекту. Библиотека содержит в себе различные методы и структуры данных, которые нужны для упрощения работы с датчиками, индикаторами, модулями и другими электронными компонентами.
Пример кода:
#include <Wire.h> // библиотека встроенная, скачивать отдельно ее не нужно #include <MS5611.h> MS5611 ms5611; double referencePressure; void setup() { Serial.begin(9600); // Initialize MS5611 sensor Serial.println("Initialize MS5611 Sensor"); while(!ms5611.begin()) { Serial.println("Could not find a valid MS5611 sensor, check wiring!"); delay(500); } // Get reference pressure for relative altitude referencePressure = ms5611.readPressure(); // Check settings checkSettings(); } void checkSettings() { Serial.print("Oversampling: "); Serial.println(ms5611.getOversampling()); } void loop() { // Read raw values uint32_t rawTemp = ms5611.readRawTemperature(); uint32_t rawPressure = ms5611.readRawPressure(); // Read true temperature & Pressure double realTemperature = ms5611.readTemperature(); long realPressure = ms5611.readPressure(); // Calculate altitude float absoluteAltitude = ms5611.getAltitude(realPressure); float relativeAltitude = ms5611.getAltitude(realPressure, referencePressure); Serial.println("--"); Serial.print(" rawTemp = "); Serial.print(rawTemp); Serial.print(", realTemp = "); Serial.print(realTemperature); Serial.println(" *C"); Serial.print(" rawPressure = "); Serial.print(rawPressure); Serial.print(", realPressure = "); Serial.print(realPressure); Serial.println(" Pa"); Serial.print(" absoluteAltitude = "); Serial.print(absoluteAltitude); Serial.print(" m, relativeAltitude = "); Serial.print(relativeAltitude); Serial.println(" m"); delay(1000); }
Комментарии
Ответ: Да, действительно. Мы проверили. Автор библиотеки не учел этот момент. Можно держать это в уме или воспользоваться другой библиотекой. А мы на досуге попробуем поправить текущую библиотеку. Спасибо за внимательность.