КОРЗИНА
магазина
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 <Wire.h>
#include <Adafruit_BMP085.h> // Библиотека для работы с барометром
float P; // В данную переменную мы будем пересчитывать давление в милиметры ртутного столба
Adafruit_BMP085 bmp;
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 10 // номер пина к которому подключен DS18B20
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
char buffer[25];
char buffer1[25];
#include <OLED_I2C.h>
OLED  myOLED(8, 9, 8); // Подключение дисплея, 8pin - SDA , 9pin - SCL
extern uint8_t RusFont[]; // Русский шрифт
extern uint8_t MegaNumbers[]; // Подключение больших шрифтов
extern uint8_t SmallFont[]; // Базовый шрифт без поддержки русскийх символов.
void setup()
{
  sensors.begin(); 
  myOLED.begin();
  bmp.begin();
  myOLED.setFont(RusFont);
}
void loop()
{
// Выводим на экран показания температуры
sensors.requestTemperatures();
myOLED.clrScr(); // очищаем экран
myOLED.setFont(RusFont);
myOLED.print("Ntvgthfnehf", CENTER, 0); // вывод текста русскими буквами
myOLED.setFont(SmallFont);
myOLED.print("iarduino.ru", CENTER, 55); // вывод текста 
myOLED.setFont(MegaNumbers);
myOLED.print(String(sensors.getTempCByIndex(0) , 1), CENTER, 10);   // Отображение значения температуры, с точностью до десятых
myOLED.update();
delay(2000); // Пауза 2 секунды
// Выводим на экран показания атмосферного давления
myOLED.clrScr(); // очищаем экран 
myOLED.setFont(RusFont);
myOLED.print("Lfdktybt", CENTER, 0); // вывод текста русскими буквами
myOLED.setFont(SmallFont);
myOLED.print("iarduino.ru", CENTER, 55); // вывод текста
P=bmp.readPressure();
P=(float)0.0075*P; // пересчитываем давления в привычные нам мм ртутного столба.
myOLED.setFont(MegaNumbers);
myOLED.print(String(P , 1), CENTER, 10);   // Отображение значения давления, с точностью до десятых
myOLED.update();
delay(2000);
}

Данный скетч можно скачать по следующей ссылке: Скетч урока №8.

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






Обсуждение

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