КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

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

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

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

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

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

Сборка:

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.





Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями