Главная chevron_right Наши уроки chevron_right Arduino chevron_right Урок 8. Arduino погодная станция на базе барометра BMP180 термометра DS18B20

Урок 8. Arduino погодная станция на базе барометра BMP180 термометра DS18B20

Собираем погодную станцию на Arduino: подключаем барометр BMP180 и термометр DS18B20 к OLED-дисплею, устанавливаем нужные библиотеки и пишем скетч для отображения температуры и...

Видео-обложка запускается при наведении

В прошлом уроке Мы научились делать термометр, используя для этого цифровой датчик температуры DS18B20, и выводить данные на OLED дисплей.

В этом уроке мы расширим возможности и добавим к проекту еще барометр BMP180, это даст нам возможность следить не только за температурой, но и за атмосферным давлением.

В этом уроке нам понадобится:

Для реализации проекта нам необходимо установить сразу несколько библиотек:

Сборка:

1) OLED дисплей подключаем к arduino следующим образом:

Arduino UnoЭкран 0.96 128X64 OLED
5V или 3.3VVCC
GNDGND
Pin 9SCL
Pin 8SDA

Для удобства подключения можно использовать макетную плату.

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
GNDGND
A5SCL
A4SDA

В нашем случае, для удобства мы подключили все модули к питанию 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.

Комплект для повторения проекта

Что понадобится

Это быстрый ориентир по основным модулям и деталям. Полный список для повторения проекта смотрите в самой статье.

4 позиции
Все уроки Arduino