Датчик барометр/термометр GY-68 BMP180
Данный датчик очень высокоточен и экономичен в расходе энергии. Степень точности измерения можно выставлять программно, однако следует понимать, что чем выше точность измерений датчика GY-68, тем выше будет и его энергопотребление.
Помимо всего прочего, модуль обладает встроенным альтиметром и может определить высоту над уровнем моря с погрешностью до 17 см.
Барометр/термометр GY-68 BMP180 имеет собственную температурную компенсацию проводимых измерений.
Схема подключения датчика барометра/термометра GY-68 BMP180
На изображении ниже представлена схема подключения датчика.

Код для подключения датчика барометра/термометра GY-68 BMP180
В примере ниже показано, как подключить вывод датчика барометра/термометра GY-68 BMP180 к монитору последовательного порта платы (вывод можно посмотреть в мониторе порта Arduino IDE). Для корректной работы кода нужно подключить библиотеки SFE_BMP180.h и Wire.h.
#include <SFE_BMP180.h> #include <Wire.h> SFE_BMP180 pressure; // Объявляем переменную для доступа к SFE_BMP180 void setup() { Serial.begin(9600); // Задаем скорость передачи данных Serial.println("REBOOT"); // Печать текста "Перезагрузка" if (pressure.begin()) // Инициализация датчика Serial.println("BMP180 init success"); // Печать текста "BMP180 подключен" else { // В противном случаи, датчик не подключен Serial.println("BMP180 init fail\n\n"); // Печать текста "BMP180 не подключен" while (1); // Пауза. } } void loop() { char status; double T, P, p0, a; /* Так как давление зависит от температуры, надо сначала узнать температуру Считывание температуры занимает какое-то время. Если все хорошо, функция pressure.startTemperature вернет status с количеством миллисекунд которые нужно подождать. Если какая-то то проблема, то функция вернет 0. */ status = pressure.startTemperature(); // Считывание показания if (status != 0) { // Если значение status не 0, выполняем следующую команду. delay(status); // Ждем status = pressure.getTemperature(T); // Полученные показания, сохраняем в переменную T if (status != 0) { // Если все хорошо, функция вернет 1, иначе вернет 0 Serial.print("Temperature: "); // Печать текста "Температура" Serial.print(T, 2); // Печать показания переменной "Т" Serial.println(" C, "); // Печать текста "С" /* Определяем показания атмосферного давления Параметр указывает расширение, от 0 до 3 (чем больше расширение, тем больше точность, тем дольше ждать) Если все хорошо, функция pressure.startTemperature вернет status с количеством миллисекунд которые нужно подождать. Если какая-то то проблема, то функция вернет 0. */ status = pressure.startPressure(3); // Считывание показания if (status != 0) { // Если значение status не 0, выполняем следующую команду. delay(status); // Ждем status = pressure.getPressure(P, T); // Полученные показания, сохраняем в переменную P if (status != 0) { // Если все хорошо, функция вернет 1, иначе вернет 0 Serial.print("Absolute pressure: "); // Печать текста "Атмосферное давление" Serial.print(P, 2); // Печать показания переменной mBar Serial.print(" mbar, "); // Печать текста "mBar" Serial.print(P * 0.7500637554192, 2); // Печать показания в mmHg Serial.println(" mmHg"); } // Печать текста "mmHg" else Serial.println("error retrieving pressure measurement\n"); } // Ошибка получения давления else Serial.println("error starting pressure measurement\n"); } // Ошибка запуска получения давления else Serial.println("error retrieving temperature measurement\n"); } // Ошибка получения температуры else Serial.println("error starting temperature measurement\n"); // Ошибка запуска получения температуры delay(5000); // Пауза в 5с }
Скачать файл с кодом, формат .INO: Датчик BMP180