В прошлом уроке Мы научились делать термометр, используя для этого цифровой датчик температуры DS18B20, и выводить данные на OLED дисплей.
В этом уроке мы расширим возможности и добавим к проекту еще барометр BMP180, это даст нам возможность следить не только за температурой, но и за атмосферным давлением.
В этом уроке нам понадобится:
- Датчик температуры DS18B20 1 метр. (Герметичный)
- Экран 0.96 128X64 OLED,
- Breadboard
- Набор проводов Папа-Папа
- Микроконтроллер Arduino
- Резистор
- Барометр BMP180 GY-68
Для реализации проекта нам необходимо установить сразу несколько библиотек:
- OneWire Arduino Library
- OLED I2C OLED_I2C с поддержкой Русского и Украинского языка.
- Dallas Temperature
- Adafruit BMP085 Библиотека для работы с датчиком давления BMP085
Сборка:
1) OLED дисплей подключаем к arduino следующим образом:
Arduino Uno | Экран 0.96 128X64 OLED |
---|---|
5V или 3.3V | VCC |
GND | GND |
Pin 9 | SCL |
Pin 8 | SDA |
Для удобства подключения можно использовать макетную плату.
2) Датчик температуры DS18B20 подключается к arduino следующим образом:
Распиновка для влагозащитного датчика DS18B20 с метровым проводом:
Arduino UNO | Влагозащитный датчика DS18B20 |
---|---|
5V или 3.3V | Красный провод ( 5V) |
GND | Черный провод (GND) |
Pin 10 | Желтый провод (Сигнальный) (Необходимо подтянуть резистором 4,7кОм к 5V |
3) Барометр BMP180 GY-68 подключается к Arduino следующим образом:
Arduino UNO | Барометр BMP180 |
---|---|
3.3V ! |
Vin |
GND | GND |
A5 | SCL |
A4 | SDA |
В нашем случае, для удобства мы подключили все модули к питанию 3.3 Вольта. Более наглядную схемы подключения можно посмотреть на фотографии ниже.
Теперь, когда мы подключили все модули, можно приступить к написанию скетча для Arduino. Предварительно необходимо установить библиотеки указанные выше.
#include <iarduino_I2C_Software.h> #include <Adafruit_BMP085.h> // Библиотека для работы с барометром #include <iarduino_OLED.h> #include <OneWire.h> #include <DallasTemperature.h> #define ONE_WIRE_BUS 10 // номер пина к которому подключен DS18B20 #define pinSDA 8 #define pinSCL 9 float P; // В данную переменную мы будем пересчитывать давление в милиметры ртутного столба Adafruit_BMP085 bmp; OneWire oneWire(ONE_WIRE_BUS); DallasTemperature sensors(&oneWire); char buffer[25]; char buffer1[25]; SoftTwoWire softWire(pinSDA, pinSCL); iarduino_OLED myOLED(0x78); extern const uint8_t SmallFontRus[]; // Русский шрифт extern const uint8_t MegaNumbers[]; // Подключение больших шрифтов extern const uint8_t SmallFont[]; // Базовый шрифт без поддержки русскийх символов. void setup() { sensors.begin(); myOLED.begin(&softWire); bmp.begin(); myOLED.setFont(SmallFontRus); } void loop() { // Выводим на экран показания температуры sensors.requestTemperatures(); myOLED.clrScr(); // очищаем экран myOLED.setFont(SmallFontRus); myOLED.print("Ntvgthfnehf", OLED_C, 0); // вывод текста русскими буквами myOLED.setFont(SmallFont); myOLED.print("iarduino.ru", OLED_C, 55); // вывод текста myOLED.setFont(MegaNumbers); myOLED.print(String(sensors.getTempCByIndex(0) , 1), OLED_C, 10); // Отображение значения температуры, с точностью до десятых myOLED.update(); delay(2000); // Пауза 2 секунды // Выводим на экран показания атмосферного давления myOLED.clrScr(); // очищаем экран myOLED.setFont(SmallFontRus); myOLED.print("Lfdktybt", OLED_C, 0); // вывод текста русскими буквами myOLED.setFont(SmallFont); myOLED.print("iarduino.ru", OLED_C, 55); // вывод текста P=bmp.readPressure(); P=(float)0.0075*P; // пересчитываем давления в привычные нам мм ртутного столба. myOLED.setFont(MegaNumbers); myOLED.print(String(P , 1), OLED_C, 10); // Отображение значения давления, с точностью до десятых myOLED.update(); delay(2000); }
Данный скетч можно скачать по следующей ссылке: Скетч урока №8.
В результате наше устройство отображает сперва температуру, которую фиксирует датчик DS18B20, а спустя 2 секунды он выводит на экран текущее давление, зафиксированное с помощью барометра BMP180.
Обсуждение