Найти в Дзене
Zvixdzen

Создаем метеостанцию на ESP32 с TFT-дисплеем и BMP180

Привет всем любителям технологий и самоделок! Сегодня мы соберём не просто устройство, а настоящую карманную метеостанцию на основе популярного микроконтроллера ESP32. Если вы только начинаете свой путь в электронике и программировании, этот проект — идеальный старт! Мы шаг за шагом соберём устройство, которое будет показывать температуру, атмосферное давление и даже высоту над уровнем моря на ярком TFT-дисплее. Не пугайтесь сложных слов — мы всё объясним максимально просто. В итоге у вас получится полезный гаджет, собранный своими руками. Что нам понадобится для сборки? Давайте разложим всё по полочкам. Для этого проекта не нужны дефицитные или дорогие детали, всё легко найти: Для работы нужно установить и скачать три библиотеки. 1. Adafruit_GFX - графическая библиотека 2. Adafruit_ST7735 - драйвер для дисплея ST7735 3. Adafruit_BMP085 - для работы с датчиком BMP085/BMP180 Ниже перечисленные три библиотеки, которые встроены в Arduino IDE. (скачивать не нужно) 4. SPI.h - работ

Соединение ESP32 с TFT-дисплеем и BMP180
Соединение ESP32 с TFT-дисплеем и BMP180

Привет всем любителям технологий и самоделок! Сегодня мы соберём не просто устройство, а настоящую карманную метеостанцию на основе популярного микроконтроллера ESP32. Если вы только начинаете свой путь в электронике и программировании, этот проект — идеальный старт! Мы шаг за шагом соберём устройство, которое будет показывать температуру, атмосферное давление и даже высоту над уровнем моря на ярком TFT-дисплее.

Не пугайтесь сложных слов — мы всё объясним максимально просто. В итоге у вас получится полезный гаджет, собранный своими руками.

Что нам понадобится для сборки?

Давайте разложим всё по полочкам. Для этого проекта не нужны дефицитные или дорогие детали, всё легко найти:

ESP32, TFT дисплей 1.44, датчик BMP180
ESP32, TFT дисплей 1.44, датчик BMP180

  • Микроконтроллер: ESP32 DEVKIT V1 (на 30 пинов). Это мозг нашего устройства, мощный и с Wi-Fi (который мы пока не используем, но это на будущее!).
  • Дисплей: TFT-экран 1.44 дюйма с разрешением 128x128 пикселей (на чипе ST7735). Именно на нём мы и будем видеть все данные.
  • Датчик: BMP180. Это наш «метеоролог», который будет точно измерять температуру и атмосферное давление.
  • Соединительные провода для связи всех компонентов между собой.
  • Среда разработки: Arduino IDE. Это программа, в которой мы напишем и загрузим прошивку для ESP32.
Вот как выглядит список нужных библиотек в менеджере библиотек Arduino IDE.
Вот как выглядит список нужных библиотек в менеджере библиотек Arduino IDE.

Для работы нужно установить и скачать три библиотеки.

1. Adafruit_GFX - графическая библиотека

2. Adafruit_ST7735 - драйвер для дисплея ST7735

3. Adafruit_BMP085 - для работы с датчиком BMP085/BMP180

Ниже перечисленные три библиотеки, которые встроены в Arduino IDE. (скачивать не нужно)

4. SPI.h - работа с SPI интерфейсом

5. Wire.h - работа с I2C интерфейсом

6. math.h - математические функции

Собираем схему: это проще, чем кажется

Сборка напоминает конструктор «Лего» — нужно просто соединить нужные пины по схеме. Мы подготовили две простые таблицы, чтобы вы не запутались.

Подключение дисплея к ESP32.

Дисплей = ESP32

VVC = 3.3V

GND = GND

CS = GPIO5

RESET= GPIO4

AD (DC) = GPIO2

SDA = GPIO23

SCL (SCK) = GPIO18

LED = 3.3V

Подключение датчика BMP180 к ESP32.

BMP180= ESP32

VIN = 3.3V

GND = GND

SCL = GPIO22

SDA = GPIO21

Важный момент: Датчик BMP180 общается с ESP32 по протоколу I2C, поэтому мы используем пины SDA и SCL. Дисплей работает по SPI — его можно подключить к любым цифровым пинам, которые мы указали в коде.

Программная часть: «оживляем» метеостанцию

Весь код мы написали за вас. Его нужно просто скопировать в Arduino IDE, проверить и загрузить на плату. Ссылку на текстовый файл с кодом вы найдёте в конце статьи.

Самая интересная и важная часть — это калибровка. Показания любого датчика могут иметь небольшую погрешность. Чтобы наша метеостанция показывала максимально точные данные, мы встроили в код простую систему калибровки через монитор порта.

выбор платы  в Arduino IDE
выбор платы в Arduino IDE

Перед загрузкой кода не забудьте выбрать правильную плату (ESP32 Dev Module) и порт к которому она подключена в менеджере плат. По умолчанию в Arduino IDE нет поддержки отладочных плат ESP32, необходимо скачать специальный пакет. Нужно зайти в менеджер плат, набрать в поиске "esp32" и нажать "установка"

Специальный пакет для работы с esp32.
Специальный пакет для работы с esp32.

Как провести калибровку:

1. Калибровка давления:

  • Узнайте точное атмосферное давление в вашем городе (можно посмотреть в приложении «Погода» на смартфоне).
  • Откройте в Arduino IDE «Инструменты» -> «Монитор порта».
  • Введите команду CAL 750.0 (где 750.0 — ваше значение давления).
  • Система запомнит поправку.

2. Калибровка высоты:

  • Введите команду ALT 120.0 (где 120.0 — ваша реальная высота над уровнем моря в метрах).
  • Прошивка автоматически рассчитает точное давление на уровне моря, что критически важно для корректного отображения высоты.

После этой нехитрой процедуры данные на дисплее станут максимально точными!

монитор порта с выделенной скоростью 115200 бод.
монитор порта с выделенной скоростью 115200 бод.

Если в мониторе порта вместо текста появляются «кракозябры» или знаки вопроса, проверьте, чтобы скорость монитора порта была установлена на 115200, как в коде и совпадала со скоростью в диспетчере устройств компьютера (порты COM и LPT).

Установка скорости в диспетчере устройств компьютера
Установка скорости в диспетчере устройств компьютера

Что же мы видим на дисплее?

После загрузки кода и калибровки на ярком экране появятся четыре строки с данными:

  • Temp: Температура в градусах Цельсия.
  • Press: Атмосферное давление в гектопаскалях (hPa). Уже с учётом вашей калибровки!
  • Alt: Высота над уровнем моря в метрах.
  • Time: Время работы устройства в секундах.

В левом верхнем углу мигает зелёный индикатор — это значит, что система в работе и постоянно обновляет данные.

На дисплее данные; температуры, давления, высота над уровнем моря и время работы с момента включения.
На дисплее данные; температуры, давления, высота над уровнем моря и время работы с момента включения.

Итог: что у нас получилось?

В результате мы с вами собрали полноценную, автономную метеостанцию, которая:

  • В реальном времени отображает температуру, давление и высоту.
  • Имеет простую и понятную схему подключения, с которой справится даже новичок.
  • Позволяет провести точную калибровку, как в профессиональных устройствах.
  • Построена на доступных и популярных компонентах.

Этот проект — отличный способ погрузиться в мир Arduino и ESP32, научиться работать с датчиками и дисплеями, и получить на выходе не абстрактный «мигающий светодиод», а реально полезный девайс.

Не бойтесь экспериментировать, и у вас всё получится!

P.S. Исходный код проекта в текстовом формате ссылка

Этот материал также доступен на моём сайте ссылка