Создайте простую метеостанцию на Arduino UNO с датчиком BMP280 и LCD-дисплеем
Компоненты и материалы
- Arduino UNO — 1 шт.
- LCD-дисплей 16×2 (белый на синем) — 1 шт. (Adafruit Standard)
- Модуль датчика давления/температуры GY-BMP280 (BMP280) — 1 шт.
- Резистор 221 Ом — 1 шт. (для регулировки контраста)
- Провода-перемычки (набор) — 17 шт.
- Комплектующие от UTSOURCE — 1 комплект (спонсор проекта)
Необходимые инструменты
- Паяльник (при необходимости)
Программное обеспечение
- Arduino IDE — для написания и загрузки кода
О проекте
Это первая версия простой метеостанции, построенной на базе Arduino UNO, датчика BMP280 и жидкокристаллического дисплея. Проект спонсируется компанией Utsource.net — надежным поставщиком электронных компонентов.
Автор уже работает над версией 2.0, которая будет беспроводной. Следите за обновлениями!
Код прошивки
Ниже приведен полный код для Arduino IDE. Он инициализирует датчик BMP280 и LCD-дисплей, считывает температуру и давление, применяет корректировки и выводит данные на экран каждые 2 секунды.
#include <LiquidCrystal.h> // Библиотека для LCD-дисплея
#include <BMP280.h> // Библиотека для датчика BMP280
BMP280 bmp; // Инициализация датчика
LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // Инициализация LCD (проверьте подключение!)
#define P0 1013.25 // Стандартное атмосферное давление (гПа)
#define CONTRAST_PIN 9 // Пин управления контрастом
#define BRIGHTNESS_PIN 10 // Пин управления яркостью
double temperature = 0; // Переменная для температуры
double pressure = 0; // Переменная для давления
char measureStatus = 0; // Статус измерения
void collectData() {
measureStatus = bmp.startMeasurment();
if (measureStatus != 0) {
delay(measureStatus);
measureStatus = bmp.getTemperatureAndPressure(temperature, pressure);
if (measureStatus != 0) {
pressure += 17; // Коррекция ошибки датчика давления (+17 гПа)
temperature -= 0.8; // Коррекция ошибки датчика температуры (-0.8 °C)
lcd.clear();
lcd.print("T: ");
lcd.print(temperature);
lcd.print(" C");
lcd.setCursor(0, 1);
lcd.print("P: ");
lcd.print(pressure);
lcd.print(" hPa");
} else {
lcd.print("Error.");
}
} else {
lcd.print("Error.");
}
}
void setup() {
lcd.begin(16, 2);
pinMode(CONTRAST_PIN, OUTPUT);
pinMode(BRIGHTNESS_PIN, OUTPUT);
analogWrite(CONTRAST_PIN, 100); // Значение контраста (0-255)
analogWrite(BRIGHTNESS_PIN, 255); // Значение яркости (0-255)
if (!bmp.begin()) {
delay(1000);
lcd.print("Init. failed.");
lcd.setCursor(0, 1);
delay(1000);
lcd.print("Check wiring.");
while (1); // Остановка при ошибке инициализации
} else {
lcd.print("Init. OK.");
}
bmp.setOversampling(4); // Установка передискретизации
delay(2000);
collectData();
}
void loop() {
collectData();
delay(2000); // Обновление каждые 2 секунды
}
Схема подключения
Следуйте приведенной схеме для правильного подключения всех компонентов. При правильной сборке проблем не должно возникнуть.
Важные замечания
- Библиотека
BMP280.hдолжна быть установлена через менеджер библиотек Arduino IDE. - Пины LCD-дисплея (12, 11, 5, 4, 3, 2) соответствуют стандартной схеме подключения 16×2 дисплея с параллельным интерфейсом.
- Резистор 221 Ом используется для ограничения тока подсветки или контраста (в зависимости от модуля).
- Корректировки
pressure += 17иtemperature -= 0.8являются эмпирическими для данного конкретного датчика; при использовании другого экземпляра BMP280 их может потребоваться скорректировать.
Производственный процесс
- Сборка уличной метеостанции на Raspberry Pi 2 и ADS‑WS1
- Создание метеостанции на Raspberry Pi с ежедневными email-отчётами о погоде
- Продвинутая метеостанция v2.0: мониторинг температуры, давления, влажности и высоты в реальном времени
- Автоматизированная барная станция «6-Сhooter» на Arduino — Собираем коктейльный робот своими руками
- Цифровые кости на Arduino: генератор случайных чисел с LCD-дисплеем и кнопкой
- DIY USB-геймпад на Arduino: собственный высокопроизводительный контроллер
- Pixel Chaser: игра на один тап с NeoPixel Ring и Arduino Nano
- Высокопроизводительный регистратор данных для метеозонда на Arduino
- Портативная метеостанция на Arduino Nano за $10: DHT22, BMP180 и LCD
- eDOT: точные Arduino-часы и метеостанция с встроенным ИК-пультом