
Всем привет! Меня зовут Георгий, я начинающий ардуинщик, и это история создания моей первой метеостанции, это мой самый первый проект, который позволил взглянуть на мир роботехники и других электронных устройств. С этим проектом я выступал в конкурсе РЦ Вега и мог бы занять первое место, если бы сами места не раскупили. Расскажу, как прошел путь от идеи до готового устройства, с какими проблемами столкнулся и почему самодельная станция может быть лучше магазинной.
Зачем мне это?
Многие хотят иметь дома прибор, который показывает температуру, влажность и давление. Можно просто купить готовую станцию в магазине, но цены на нормальные модели кусаются, а дешевые питаются от батареек, которые вечно садятся в самый неподходящий.
Я поставил цель: сделать устройство, которое:
работает от сети;
выводит данные на олед дисплей;
измеряет температуру, влажность и давление в комнате и на улице;
можно положить на рабочий стол;
Выбираем компоненты

За основу взял Arduino Nano — недорогая, компактная много информации в интернете о ней. Дальше я начал пробовать и экспериментировать, постепенно добавляя компоненты:
Компонент | Модель | Назначение |
Микроконтроллер | Arduino Nano | Мозги |
Датчик влажности и температуры | DHT 11 | Для комнаты |
Датчик температуры и давления | BME280 | Для комнаты |
Дисплей | OLED 128x64 0.96 | Показывает значения |
Датчик темп. и влажн.(уличный) | DHT 21 | Для улицы |
Часы реального времени | DS1302 | Время |
Схема подключения

DHT 11 > D6;
DHT 21 > D8;
BME280 > по I2C(A4, A5);
OLED дисплей > по I2C(A4, A5);
часы DS1302 > D2, D3, D4;
кнопка > D7;
Проектируем корпус в FreeCAD и печатаем

Когда «начинка» заработала, встал вопрос: куда это все положить? Можно было купить готовый корпус, но интереснее сделать свой. Тем более у меня есть доступ к 3D-принтеру.
После моделирования экспортировал в STL и подготовил к печати в UltiMaker Cura. Настройки: PLA, слой 0.2 мм, заполнение 20%.
Первую версию пришлось выкинуть — пластик дал усадку, и компоненты не влезли. Откорректировал модели и напечатал заново. Это нормальный процесс, без такого никуда.

Программирование
Писал в Arduino IDE. Использовал библиотеки:
stDHT.h — для датчиков влажности;
GyverButton.h — для кнопок;
iarduino_RTC.h — для часов;
iarduino_OLED_txt.h — для олед экрана;
Adafruit_BMP280.h — датчик давления и температуры;
Фрагмент кода:

Проблемы, с которыми столкнулся:
конфликты библиотек – искал совместимые версии;
I2С – адреса оказались нестандартными;
данные с DHT11 иногда вылетали — добавил проверку на ошибки;
Итоги
Что получилось:
питание от сети;
почти точные измерения;
маленький корпус;
6 режимов отображения;
Что можно добавить:
WiFi и подключение через;
дополнительные датчики;
Другие интернет ресурсы
3д модели и код можно найти в моём телеграм канале:
