Домашняя метеостанция

13.05.2021 15:21, автор DiEitch

Однажды я случайно открыл на Youtube видео, внимательно посмотрел и (так как мне понравилась конструкция) решил повторить. По ссылкам я попал на страничку, посвящённую этой метеостанции, а также на тематический форум и отдельно обсуждение проекта. Огромное спасибо этому человеку за подробное описание, красочные рисунки, презентабельную, а главное, рабочую конструкцию.

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

  • не понравился "шрифт" цифр, не понравились вид и расположение цифры 1 (прямо, как 7), в итоге я взял за основу своей копии модификацию скетча на форуме от пользователя vic2007ch (за что ему - спасибо) и немного раздвинул цифры как (было ранее) у AlexGyver;
  • не все комплектующие были на руках;
  • не хотелось покупать очень дорогой датчик СО²;
  • нет датчика - нет RGB светодиода (хотя есть идея его к индикации погоды приделать);
  • не полностью устроил интерфейс на экране: большие цифры - это зачёт (кстати, у меня ранее была конструкция метеостанции с таким отображением времени), но вот другие параметры отображались для меня не совсем понятно: rain -6%, 741 mm.

Интерфейс часов от vic2007ch

Мой вариант (чтобы цифры не "липли друг к другу"):

В отставшееся справа поле знакомест 5х2 я поместил дату (число/месяц), секунды и день недели цифрой.

Так как, в отличие от Алекса, я очень ленивый, то решил сначала сэмулировать станцию в Proteus (и чтобы не терять время, пока ко мне едет BME280, корпус и некоторые другие детали). В Proteus можно найти всё кроме Arduino Nano и BME280. И если первое можно скачать по ссылке, то  со вторым всё оказалось сложнее, и пришлось сэмулировать с помощью контроллера.

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

   

Итак - процесс эмуляции. К сожалению, мой эмулятор BME280 пока не изменяет значения (они жёстко забиты в контроллер), и погодную шкалу посмотреть в Proteus пока не получится.

DS3231 у меня под рукой не оказалось, поэтому я немного переделал скетч под DS1307 (но оставил возможность включить DS3231, если понадобится), тоже неплохо работает. Также в коде добавил опции компиляции для Proteus, где для BME280 явно задаются адрес на шине (0x76 или 0x77) и скорость (100 или 400 кГц).

Так как датчик СО² пока не планируется, то немного поменял исходный "графический" интерфейс:

  • под "большими часами" разместил 3 основных параметра (температура. влажность, давление);
  • вероятность осадков сделал в виде шкалы: "########0%########o, где " (зимой *) - осадки, о - солнце; # - движок.

Значки (дождь) и о (солнце) я планирую нарисовать, чтобы они лучше соответствовали погодным явлениям, но для этого придётся немного подкорректировать сегменты больших цифр. Так, например, выглядит на моём дисплее прояснение зимой (25%, так как одно деление шкалы 12.5%):

 

Далее планирую добавить настройку времени, будильник и кнопки (или даже энкодер, например, колёсико от мыши). Также в планах реализовать возможность подключения к компьютеру для отображения параметров системы и упрощение схемы (дисплей подключу напрямую к выводам Arduino, чтобы избавиться от преобразователя PCF8574 и лишней печатной платы).

Архив проекта можно скачать по ссылке.