На первый взгляд проект проще простого! Часы повесить, температуру мерить. Взял Arduino, припаял датчики, сунул в коробку — и готово.

Именно так я и сделал в 2018 году. Но из-за недостатка знаний проект хоть и работал, но до полноценного устройства ему было далеко.

Спустя годы, когда я вернулся к проекту, стало понятно: за кажущейся простотой скрываются интересные и разнообразные задачи.

  • Как сделать так, чтобы уличный датчик работал годы от одной батарейки?

  • Как добиться плавной смены цвета подсветки, чтобы она повторяла природные оттенки в течение дня?

  • Как совместить компактность, функциональность и прочность в одном корпусе?

  • И почему обычной фильтрации значений недостаточно, чтобы победить мерцание?

В этой статье — подробный разбор всех узлов, ошибки, которые я совершил, и решения, которые в итоге сработали!

Базовая станция

Принципиальная схема

схема рх

Питание и управление

Устройство работает на МК Atmega328 с внешним керамическим резонатором на 16 МГц. Питание схемы — 5 В. Для модуля NRF24L01 используется отдельный линейный стабилизатор AMS1117 на 3,3 В.

Балансировка яркости RGB-светодиодов

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

Чтобы визуально выровнять яркость всех трёх цветов, на красный светодиод установлен резистор 100 Ом, а на зелёный и синий — 200 Ом. Благодаря этому красный получает больший ток и визуально уравновешивается с остальными цветами.

Ошибки проектирования

  • В схеме установлен 1 блокировочный конденсатор по цепям питания и 1 конденсатор на вывод AREF (источник опорного напряжения для АЦП). Конфигурация работоспособна, но, как выяснилось позднее, не соответствует правилам проектирования. Для подавления импульсных помех, создаваемых микроконтроллером при работе, на каждую пару выводов питания (VCC и GND) требуется отдельный блокировочный конденсатор. Оптимальным решением была бы установка 3 конденсаторов по цепям питания и 1 на AREF.

  • Ошибочно на шину I²C установлены две пары подтягивающих резисторов, тогда как для корректного формирования логической единицы достаточно одной пары.

Печатная плата

Топология (Altium Designer)

1
2

Готовая плата

Изготовлена вручную фоторезистивным методом, для защиты дорожек на плату нанесена паяльная маска, сформированная методом УФ-экспонирования через фотошаблон

IMG_8774
IMG_8773

Особенности разводки

  • На нижнем слое расположен сплошной полигон земли. В условиях ручного изготовления переходные отверстия между слоями выполнены методом пайки отрезков провода с обеих сторон платы.

  • В разводке предусмотрено разделение цифровой и аналоговой земли — специально для фоторезистора. Однако, как я узнал позднее, в этом не было необходимости

Почему разделение оказалось лишним?

Фоторезистор — низкочастотный резистивный датчик. В схеме делителя напряжения сигнал на входе АЦП составляет единицы вольт (например, от 0,5 до 4,5 В), а наводки от цифровых компонентов на земле — единицы милливольт. Для вольтового сигнала такая погрешность составляет доли процента

Высокое сопротивление фоторезистора (кОм-МОм) вместе с конденсатором 0,1 мкФ на входе АЦП образуют фильтр нижних частот, подавляющий высокочастотные помехи от цифровой части. Конденсатор решает две задачи одновременно: он шунтирует на землю помехи, наведенные на сигнальный провод, и принудительно удерживает вход АЦП на том же потенциале, что и земля при её скачках, превращая помеху в синфазную. Поэтому вместо разделения земель достаточно было просто добавить этот конденсатор.

Для сравнения: фотодиод генерирует ток единицы–сотни микроампер. Если преобразовать этот ток в напряжение с помощью резистора, полезный сигнал окажется в милливольтах — того же порядка, что и наводки на земле. В этом случае конденсатор уже не спасает, так как сигнал слишком слаб, и требуется отдельная чистая аналоговая земля.

Вывод

Фоторезистору достаточно общей земли с цифровой частью и керамического конденсатора 0,1 мкФ на входе АЦП. Разделение земель оправдано для слаботочных датчиков (фотодиоды, пьезодатчики, термопары), где полезный сигнал сопоставим с уровнем помех. В случае с фоторезистором разделение земель оказалось избыточным.

Прошивка

Борьба с мерцанием подсветки

Яркость дисплея и нижней подсветки регулируется ШИМ в зависимости от уровня освещенности. Колебания показаний фоторезистора в пределах 3–4 единиц вызваны собственным шумом АЦП и тепловым шумом фоторезистора, они напрямую передаются в управление яркостью, вызывая заметное мерцание подсветки.

чистые с фоторезистора
Исходный сигнал с фоторезистора

Фильтрация по питанию не позволила полностью устранить эти колебания, поэтому были применены программные фильтры: медианный третьего порядка и экспоненциальный

int rawValue = analogRead(0); // Чтение сырого значения с фоторезистора
int filteredValue = med.filter(rawValue);  // Применение медианного фильтра 3-го порядка
float smoothValue = expF.filter(filteredValue); // Применение экспоненциального фильтра
int fotoresistor = map(smoothValue, 260, 1023, 0, 255); // Преобразование отфильтрованного значения
fotoresistor = constrain(fotoresistor, 0, 255);
analogWrite(3, 255 - fotoresistor); // Управление подсветкой дисплея через ШИМ

На приведенном ниже графике красным показаны значения после обработки медианным и экспоненциальным фильтрами, черным — после усреднения по 10 значениям. Связка двух фильтров показала себя лучше: несмотря на некоторое снижение скорости реакции на изменение освещенности, удалось полностью исключить случайные всплески, вызывавшие мерцание подсветки.

сравнение медианы и среднего
Медианный+экспоненциальный (красным), среднее по 10 (черным)

Прогноз дождя по давлению

Предсказание осадков основано на анализе изменения атмосферного давления: резкое падение — к дождю, рост — к улучшению погоды. Данную функцию я решил добавить, т.к. в 2017 году делал предсказатель погоды по проекту AlexGyver'a

32F435FD-14A1-4BE6-9703-B335539A3DBC

Датчик BMP280 измеряет давление каждые 10 минут. Для отсеивания случайных выбросов берётся среднее арифметическое 10 последовательных измерений. Последние 6 значений давления сохраняются в массиве.

if (millis() - lasttime > 600000) {
lasttime = millis();
PP = davlenie(); // Функция измерения давления и расчета среднего по 10 значениям
for (byte i = 0; i < 5; i++) {
pres1_array[i] = pres1_array[i + 1];
}
pres1_array[5] = PP;  // Последний элемент массива теперь - новое давление  

По шести точкам строится аппроксимирующая прямая методом наименьших квадратов. Коэффициент наклона a показывает скорость изменения давления за один шаг (10 минут), умножая на 6 получаем суммарное изменение за час.

// Расчёт коэффициента наклона (метод наименьших квадратов)
for (byte i = 0; i < 6; i++) {
  sumX += time_array[i];
  sumY += (long)pres1_array[i];  // Приводим к long для расчётов
  sumX2 += time_array[i] * time_array[i];
  sumXY += (long)time_array[i] * pres1_array[i];
  }
    a = (long)6 * sumXY;
    a = a - (long)sumX * sumY;
    a = (float)a / (6 * sumX2 - sumX * sumX); 
    delta = a * 6;  // Расчёт изменения давления за час
    rain = map(delta, -250, 250, 100, -100);

Вероятность осадков рассчитывается по изменению давления за час delta. Диапазон -250…250 Па выбран как порог значимых погодных изменений. Итоговый показатель rain отображается в шкале от –100 до 100: +100 — резкое падение давления (дождь), –100 — резкий рост (ясно).

Контроль связи с уличным датчиком

Чтобы базовая станция не показывала устаревшие показания при потере связи с уличным датчиком, используется механизм таймаута.

При каждом успешном приёме данных фиксируется время:

if (radio.available()) {
  radio.read(&rxData, sizeof(rxData));
  lastReceiveTime = millis();
  dataIsFresh = true; }

Если данные не поступают более 60 минут, срабатывает сброс:

if (lastReceiveTime > 0 && millis() - lastReceiveTime > 3600000) {
  resetWirelessData(); }

Функция resetWirelessData() сбрасывает флаг свежести dataIsFresh = false. На экране это отображается прочерками вместо температуры и влажности.

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

Атмосферная RGB подсветка

Нижняя подсветка меняет цвет в зависимости от времени суток, имитируя красивые природные явления, пусть и происходящие не совсем в это время :)

  • Утро (8:00–11:00) — золотисто-желтый рассвет

  • День (11:00–17:00) — голубое небо

  • Вечер (17:00–20:00) — розовый закат

  • Поздний вечер (20:00-22:00) — угасающий алый закат

  • Ночь (23:00–8:00) — фиолетовое северное сияние

1CA28002-0B3A-4F26-A6E5-51638FC77369

Задача состояла в том, чтобы сделать плавные, незаметные для глаза переходы между этими состояниями.

Каждому времени суток соответствует свой временной интервал, внутри которого цвет рассчитывается программно. Для плавности используется линейная интерполяция цветовых каналов RGB. В зависимости от текущего часа и минут вычисляется коэффициент прогресса — число от 0 до 1, показывающее, насколько далеко мы продвинулись от начала интервала к его концу.

float progress = (currentHour - 8 + (float)currentMinute / 60.0) / 3.0;

Некоторые интервалы для большей естественности разбиты на несколько этапов. Например, утро состоит из двух фаз: сначала появляются зеленый и синий оттенки, затем красный начинает уступать место голубому. Для каждого такого этапа используется свой внутренний коэффициент (subProgress), который также изменяется от 0 до 1, но уже в пределах данной фазы.

if (progress < 0.5) {  // Первая половина утра
float subProgress = progress * 2.0;
r = 255;                           // красный постоянный
g = 80 + subProgress * 90;          // зеленый растет от 80 до 170
b = 0 + subProgress * 50;            // синий растет от 0 до 50
}
  else {  // Вторая половина утра
  float subProgress = (progress - 0.5) * 2.0;
  r = 255 - subProgress * 170;         // красный падает от 255 до 85
  g = 180 - subProgress * 50;            // зеленый падает от 180 до 130
  b = 60 + subProgress * 195;           // синий растет от 60 до 255
  }

// Таким образом, желтый плавно перешел в голубой, который включается с 11:00
void dayy () {
  r = 85;
  g = 130;
  b = 255; 
  }

Этот подход позволил описать сложные цветовые переходы простыми линейными формулами. В результате цвет подсветки плавно следует за временем суток, оставаясь в заданной "природной гамме".

Загрузка прошивки

Для прошивки микроконтроллера Atmega328 используется Arduino в режиме программатора. Для этого в неё предварительно загружается скетч Arduino as ISP. Затем программатор подключается к PLS-разъемам на ПП и прошивка заливается непосредственно в МК.

IMG_9042

Корпус

Материалы: основной корпус — белый ABS, нижняя пластина и верхняя пирамидка — прозрачный PETG.

IMG_8371
IMG_9041

Компактность

Плата сделана по размеру дисплея и напаяна непосредственно на его выводы (конкретнее на модуль I²C)

IMG_8435

Вентиляция датчика

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

Разборность конструкции

Нижняя пластина крепится двумя винтами М2 к вплавляемым гайкам в основном корпусе, а задняя крышка — четырьмя винтами М3 длиной 30 мм. Проставки между крышкой и платой прижимают дисплей к лицевой грани, фиксируя его без люфта

Подсветка

Для равномерной засветки лицевой части пластины были выбраны светодиоды с широкой диаграммой направленности (120°). Однако в процессе 3D-печати выяснилось, что решающую роль играет не только расположение диодов, но и внутренняя структура пластины.

При заполнении сотами свет рассеивался равномерно во все стороны, из-за чего на пластине возникали две ярко выраженные зоны засветки. Замена заполнения на хорды Архимеда перенаправила световой поток на лицевую часть, что дало более яркое и равномерное свечение. Тем не менее, полностью устранить неравномерность не удалось.

На рисунках ниже выделены наиболее яркие области для сравнения двух типов заполнения.

Благодарности

Хочу выразить благодарность Передовой инженерной школе «ЛЭТИ» и аспиранту кафедры ЭПУ Кушнаревой Олесе Андреевне за содействие и предоставленную возможность в реализации корпуса для проекта!


Выносной датчик

Принципиальная схема выносного датчика

схема тх

В данной схеме блокировочные конденсаторы установлены правильно: на каждую пару выводов питания (VCC и GND) стоит отдельный керамический конденсатор 0.1 мкФ. Дополнительно на входе питания установлен керамический конденсатор 10 мкФ. Он выполняет роль накопительного конденсатора: при выходе из сна потребление резко возрастает с 23 мкА до 750 мкА, конденсатор отдаёт этот импульсный всплеск, предотвращая кратковременную просадку напряжения от батарейки.

Выбор источника питания

Поскольку датчик работает на улице в течение всего года, к источнику питания предъявляются повышенные требования. Литиевая батарейка CR123A стала оптимальным решением: при компактных размерах её ёмкость составляет 1300 мА·ч, и, что важнее всего, она стабильно работает в широком диапазоне температур от –40 °C до +60 °C. В отличие от щелочных элементов, которые на сильном морозе перестают отдавать энергию, литиевый источник сохраняет работоспособность в суровых зимних условиях.

Энергосбережение

Для максимального энергосбережения были предприняты следующие меры:

  • Все модули выбраны с учётом питания от 3 В, что позволило отказаться от повышающих преобразователей

  • Режим сна для Atmega328 выбран Power-Down. В этом режиме отключается практически всё: ядро, память, АЦП, цифровые интерфейсы (SPI, UART, I²C) и все тактовые генераторы. Активными остаются только сторожевой таймер (WDT) и логика пробуждения по внешним прерываниям.

  • Детектор понижения напряжения (BOD) настроен на порог 1.8 В под литиевую батарейку CR123A (номинальное напряжение 3 В).

  • Датчик BME280 работает в принудительном режиме (forced mode) — он просыпается, делает одно измерение и снова засыпает. Радиомодуль NRF24L01 также большую часть времени находится во сне.

Измерение потребления

При различных частотах тактирования и напряжениях питания были выполнены замеры потребления. Результаты на графиках ниже:

сон потребление
Режим сна
не сон потребление
Активный режим

Как и ожидалось, минимальное потребление в активном режиме достигнуто на частоте 1 МГц. Именно в активном режиме разница наиболее заметна: снижение частоты позволяет значительно уменьшить ток потребления. В режиме же сна значения оказались практически одинаковыми для всех конфигураций, что логично — в глубоком сне тактирование большей части модулей остановлено, и частота ядра уже не играет роли.

Расчет автономности

Благодаря перечисленным мерам и тому, что устройство просыпается всего на 2 секунды каждые полчаса, удалось достичь впечатляющего результата:

Усреднив ток потребления по всему диапазону рабочих напряжений (от 3.3 В до 2.0 В), получили средние значения: 23 мкА в режиме сна и 748 мкА в активном режиме. Во сне схема проводит 99,89% времени, в активном режиме — 0,11%. При ёмкости батареи CR123A 1300 мА·ч и с учётом саморазряда 2% в год расчётное время автономной работы составляет чуть более 6 лет.

С учётом внешних факторов, таких как пониженные температуры зимой и возможное падение ёмкости со временем, можно говорить о реальном ресурсе около 5 лет.

Печатная плата выносного датчика

Топология (Altium Designer)

6

Готовая плата

2110262A-73B5-497C-A0A1-0F89CBE3CB93

Защита от влаги

Для защиты от осадков плата покрыта двумя слоями электроизоляционного лака Plastik 71. Чтобы лак не повредил чувствительную мембрану, отверстие датчика перед нанесением было закрыто малярным скотчем.

Испытания холодом

Тестирование схемы проводилось в морозилке при –25°C. Но при достижении –15°C связь с базой пропадала. Под подозрение попал внутренний RC-генератор Atmega328, однако замена на внешний кварц не помогла. Узнав, что все компоненты по даташиту должны работать до 40°C, я заметил странную особенность: стоило достать плату из морозилки — данные тут же приходили.

Стало понятно: проблема не в холоде, а в клетке Фарадея. Металлические стенки морозилки просто глушат сигнал, поэтому он не пробивался наружу, а снижение температуры ниже -15°C лишь добавляло ослабления радиоволнам.

Намотав пару витков провода на антенну передатчика, связь стала устойчивой при закрытой дверце и –25°C. На улице, разумеется, никаких дополнительных витков не нужно — там нет металлических стенок, образующих замкнутый контур.

Схема выдержала длительное тестирование в морозилке. Осталась последняя задача — корпус.

Экран Стивенсона

Плата передатчика спрятана в закрытый отсек и накрыта крышкой. Через отверстия в крышке выведены провода к датчику BME280, который приподнят над ней — так основная электроника остаётся в защищённом объёме, а чувствительный элемент свободно обдувается воздухом.

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

По результатам прочностного расчёта в SolidWorks толщина стенок была увеличена вдвое, а ребра жесткости сделаны крупнее. Прочность заложена с запасом, поскольку модель рассчитывалась как монолитная деталь из ABS-пластика — корректно учесть реальный процент заполнения при 3D-печати в данном случае не представлялось возможным. Для наглядности на визуализации коэффициент деформации установлен равным 5, чтобы ярче показать зоны изгиба.

Gif 2

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

C2E14774-CCA3-4DF2-B978-2B4F73BD054B

Демонстрация работы устройства

Конструкция и функционал — на видео (Rutube)

Все исходники — на GitHub

Первая версия

А начиналось всё с этого: ниже представлены фотографии самой первой версии станции, которую я собрал в 14 лет. С тех пор прошивка и все внутренние процессы были полностью переработаны — чтобы наконец воплотить ту задумку, которая была у меня изначально

Итог

Метеостанция стала следующим этапом после проекта «Копилка», ошибки в котором позволили пересмотреть подход к энергосбережению. Если раньше автономность ограничивалась 20 днями, то выносной датчик теперь работает от одной литиевой батарейки 5 лет — благодаря мерам, описанным в статье. Проект представляет собой законченную систему: от полностью автономного уличного блока до информативной базовой станции.

Если вам интересна разработка DIY-проектов со всеми разборами ошибок и техническими нюансами — подписывайтесь! Жду ваши комментарии: какие функции стоит добавить? Что можно улучшить?

Комментарии (21)


  1. GennPen
    23.03.2026 06:43

    Для отсеивания случайных выбросов берётся среднее арифметическое 10 последовательных измерений.

    Для отсеивания случайных выбросов обычно берется медиана, а не среднее. Тогда даже сбойное значение в миллион градусов не повлияет на результат.


    1. andreyyykovvv Автор
      23.03.2026 06:43

      Согласен, медиана лучше отсеивает выбросы. В случае давления среднего по 10 значениям было достаточно, поэтому решил оставить. Вот для фоторезистора как раз применил медиану в связке с экспонентой


  1. sav13
    23.03.2026 06:43

    23мкА - от очень большое потребление для батареечных датчиков.

    Возьмите NRF52 - хороший МК сразу с радиомодулем. Если нормально работать с датчиком температуры, то вполне можно уложиться 1-2мкА в режиме сна

    Да даже на ESP32C3 можно уложиться в 5-6мкА


    1. andreyyykovvv Автор
      23.03.2026 06:43

      Спасибо за рекомендации! NRF52 действительно интересный вариант, ранее не слышал о нём. Присмотрюсь к нему в следующих проектах


    1. tklim
      23.03.2026 06:43

      23мкА - это даже мало для такой схемы.
      Покажете, как на одной нрф52 можно реализовать подобный датчик с 1-2мка потрбеления? практический пример, так сказать.


  1. Nick0las
    23.03.2026 06:43

    Статья интересная, но используемое решение странное. Можно вместо атмеги использовать NRF52 как советуют выше. Еще смущает что вы не выводите графики, и не логгируете данные, а ограничиваетесь текущими показаниями на экране. Это далеко не так интеесно, как график. Впрочем это мелочи, главное - датчики.

    А теперь вопрос по датчикам: вы не проводили замеры, насколько колпак стивенсона спасает от систематической ошибки на солнце? Можно увеличить частоту замеров, выносить прибор из тени и заносить и смотреть на изменение температуры. Еще немного смущает крепление датчика на массивном основании. Это добавляет приток тепла от опоры, хотя для медленных измерений это не так критично. Просто я знаю что голый датчик висящий на тонких проводках очень быстро реагирует на изменение температуры по сравнению с датчиком в корпусе: постоянная времени реакции меняется с нескольких секунд до единиц - десятков минут.


    1. sav13
      23.03.2026 06:43

      Никакой колпак Стивенсона не спасает от солнца на 100%.
      Я у себя дома поставил два датчика на северную и южную сторону и беру минимальное значение температуры в систему.
      Если ночью разница температур между датчиками редко бывает больше 1 градуса, то в солнечный день 6 градусов разницы - это норма


    1. andreyyykovvv Автор
      23.03.2026 06:43

      Спасибо за развёрнутый комментарий!
      Atmega и nRF24 использовал, потому что ранее не слышал о nRF52 — присмотрюсь к нему в следующих проектах.

      По графикам Вы правы, это добавило бы наглядности. Я делал акцент на локальной индикации: посмотрел на экран и забыл.

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

      Датчик не хотел крепить только на проводах, поэтому сделал для него минимальную площадку и опору, внутри которой спрятаны провода. Это добавило тепловой инерции, но при интервале измерений 30 минут я не считаю это критичным — датчик успевает адаптироваться к изменению температуры, впрочем, как Вы и упомянули


  1. rodial
    23.03.2026 06:43

    Аtmega328 и NRF24L01

    Недавно начал использовать esp32c6, и wifi/bluetooth/zigbee и экономное ядро 20мгц в одном корпусе

    ... и подключение аккумулятора ещё обычно делают на плате сразу.


    1. andreyyykovvv Автор
      23.03.2026 06:43

      Спасибо, что поделились информацией про ESP32-C6

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


  1. VT100
    23.03.2026 06:43

    Как и ожидалось, минимальное потребление в активном режиме достигнуто на частоте 1 МГц.

    "Неправильно ты, дядя Фёдор, ..." считаешь. Надо считать не ток, а энергию (ток*время). Тогда получится, что выгоднее "быстро пробежать и раньше лечь спать".

    23 мкА в режиме сна

    В коде Meteo TX - не вижу настроек портов ATmega328. После сброса - они все настроены как входы и могут давать лишнее потребление при флуктуациях входного уровня. Можно, например, в начале настройки записать 0xFF во все регистры PORTx (включение встроенных подтягивающих резисторов).


    1. tklim
      23.03.2026 06:43

      здесь - нет. основной расход - опрос датчика и отправка данных радиоканалом.


      1. VT100
        23.03.2026 06:43

        Что "нет"? Первое, второе, оба?


        1. tklim
          23.03.2026 06:43

          Да, первое конечно. Забыл цитирование вставить.

          Если экономить по-настоящему, то нужно rtc-кварц цеплять и ключи на питание радио модуля и датчика - выйдет меньше микроампера.


    1. andreyyykovvv Автор
      23.03.2026 06:43

      В моём случае активный режим длится строго фиксированное время — 2 секунды независимо от частоты. Поскольку время работы одинаково, я сравнивал именно ток потребления. При 1 МГц он оказался минимальным, что и определило выбор.

      Действительно, в коде я не настраивал неиспользуемые порты. Этот момент упустил. Сейчас все неиспользуемые пины остаются в режиме входа без подтяжки

      Обязательно добавлю эту настройку — спасибо за ценный совет!


  1. Mike-M
    23.03.2026 06:43

    модель рассчитывалась как монолитная деталь из ABS-пластика

    ...который боится УФ-излучения от солнца. Кроме того, в расчете не предусмотрена ситуация, если на верхушку колпака Стивенсона сядет птица или накопится и отяжелеет снег.

    Конденсатор решает две задачи одновременно: он шунтирует на землю помехи, наведенные на сигнальный провод, и принудительно удерживает вход АЦП на том же потенциале, что и земля при её скачках, превращая помеху в синфазную.

    Конденсатор на выводе (а не входе) AREF АЦП не имеет никакого отношения к сигнальному проводу от фоторезистора: см. datasheet, figure "Analog to Digital Converter Block Schematic Operation".


    1. tklim
      23.03.2026 06:43

      Самое главное, как уже говорили и не только здесь, экран Стивенсона абсолютно бесполезен при креплении на окно и вообще близко к стене здания.

      А по поводу АЦП - вы правы, автору не хватает базовых знаний


    1. andreyyykovvv Автор
      23.03.2026 06:43

      В статье не стал детально описывать расчёт прочности. Помимо собственного веса конструкции, на верхнюю грань была добавлена нагрузка 400 г, что соответствует массе голубя или чайки.
      Речь идёт не о конденсаторе на AREF, а о конденсаторе, подключённом к аналоговому входу параллельно фоторезистору. Он шунтирует помехи именно по сигнальной цепи, как и описано в тексте.


      1. Mike-M
        23.03.2026 06:43

        Речь идёт не о конденсаторе на AREF, а о конденсаторе, подключённом к аналоговому входу параллельно фоторезистору.

        В таком случае этот конденсатор должен быть показан на схеме.
        Кстати, в передатчике конденсатор на выводе AREF лишний, т.к. АЦП не используется.


        1. andreyyykovvv Автор
          23.03.2026 06:43

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

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

          2. Согласен, в передатчике он не нужен — поставил по привычке, так как в базовой станции АЦП используется


  1. tklim
    23.03.2026 06:43

    Вентиляция датчика

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

    Сбоку, снизу - да

    Сверху - +1 градус - легко