Привет всем любителям технологий и самоделок! Сегодня мы соберём не просто устройство, а настоящую карманную метеостанцию на основе популярного микроконтроллера ESP32. Если вы только начинаете свой путь в электронике и программировании, этот проект — идеальный старт! Мы шаг за шагом соберём устройство, которое будет показывать температуру, атмосферное давление и даже высоту над уровнем моря на ярком TFT-дисплее.
Не пугайтесь сложных слов — мы всё объясним максимально просто. В итоге у вас получится полезный гаджет, собранный своими руками.
Что нам понадобится для сборки?
Давайте разложим всё по полочкам. Для этого проекта не нужны дефицитные или дорогие детали, всё легко найти:
- Микроконтроллер: ESP32 DEVKIT V1 (на 30 пинов). Это мозг нашего устройства, мощный и с Wi-Fi (который мы пока не используем, но это на будущее!).
- Дисплей: TFT-экран 1.44 дюйма с разрешением 128x128 пикселей (на чипе ST7735). Именно на нём мы и будем видеть все данные.
- Датчик: BMP180. Это наш «метеоролог», который будет точно измерять температуру и атмосферное давление.
- Соединительные провода для связи всех компонентов между собой.
- Среда разработки: Arduino IDE. Это программа, в которой мы напишем и загрузим прошивку для ESP32.
Для работы нужно установить и скачать три библиотеки.
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, проверить и загрузить на плату. Ссылку на текстовый файл с кодом вы найдёте в конце статьи.
Самая интересная и важная часть — это калибровка. Показания любого датчика могут иметь небольшую погрешность. Чтобы наша метеостанция показывала максимально точные данные, мы встроили в код простую систему калибровки через монитор порта.
Перед загрузкой кода не забудьте выбрать правильную плату (ESP32 Dev Module) и порт к которому она подключена в менеджере плат. По умолчанию в Arduino IDE нет поддержки отладочных плат ESP32, необходимо скачать специальный пакет. Нужно зайти в менеджер плат, набрать в поиске "esp32" и нажать "установка"
Как провести калибровку:
1. Калибровка давления:
- Узнайте точное атмосферное давление в вашем городе (можно посмотреть в приложении «Погода» на смартфоне).
- Откройте в Arduino IDE «Инструменты» -> «Монитор порта».
- Введите команду CAL 750.0 (где 750.0 — ваше значение давления).
- Система запомнит поправку.
2. Калибровка высоты:
- Введите команду ALT 120.0 (где 120.0 — ваша реальная высота над уровнем моря в метрах).
- Прошивка автоматически рассчитает точное давление на уровне моря, что критически важно для корректного отображения высоты.
После этой нехитрой процедуры данные на дисплее станут максимально точными!
Если в мониторе порта вместо текста появляются «кракозябры» или знаки вопроса, проверьте, чтобы скорость монитора порта была установлена на 115200, как в коде и совпадала со скоростью в диспетчере устройств компьютера (порты COM и LPT).
Что же мы видим на дисплее?
После загрузки кода и калибровки на ярком экране появятся четыре строки с данными:
- Temp: Температура в градусах Цельсия.
- Press: Атмосферное давление в гектопаскалях (hPa). Уже с учётом вашей калибровки!
- Alt: Высота над уровнем моря в метрах.
- Time: Время работы устройства в секундах.
В левом верхнем углу мигает зелёный индикатор — это значит, что система в работе и постоянно обновляет данные.
Итог: что у нас получилось?
В результате мы с вами собрали полноценную, автономную метеостанцию, которая:
- В реальном времени отображает температуру, давление и высоту.
- Имеет простую и понятную схему подключения, с которой справится даже новичок.
- Позволяет провести точную калибровку, как в профессиональных устройствах.
- Построена на доступных и популярных компонентах.
Этот проект — отличный способ погрузиться в мир Arduino и ESP32, научиться работать с датчиками и дисплеями, и получить на выходе не абстрактный «мигающий светодиод», а реально полезный девайс.
Не бойтесь экспериментировать, и у вас всё получится!
P.S. Исходный код проекта в текстовом формате ссылка
Этот материал также доступен на моём сайте ссылка