Большие часы на адресных светодиодах WS2812B

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

Как-то раз на просторах зарубежного интернета я нашел вот такой проект часов на базе светодиодной ленты WS2812B: Big, Auto Dim, Room Clock, и мне захотелось его повторить. Часы устроены как семи сегментный циферблат и работают на RTC модуле DS3231 . Часы умеют показывать температуру, имеют кнопки для настройки и перевода на зимнее время и обратно, позже я добавил датчик влажности DHT11. Температура уже вместе с влажностью считывалась с этого датчика и выводилась раз в минуту. Хоть и в модуле часов есть температурный датчик, но похоже он показывал температуру не корректно из-за самонагрева (ИМХО).




Untitled Sketch_МП.png
И главное нанести много горячих соплей

IMG_20180907_120755.jpg


Когда все было собрано, повозившись с библиотеками, все заработало. И тут возникло одно большое НО: положения яркости в только в двух позициях меня не устраивало. Тем более на границе значений происходило мерцание. Установка яркости на статичном значении меня тоже не очень устраивала ибо днем при установленном тусклом свете ничего не было видно, а ночью даже со значениями близким к минимуму можно было осветить всю Москву. Поинтересовавшись как в других проектах с этим справляется Alex было решено заменить такой код настройки яркости.

C:
void BrightnessCheck(){
  const byte sensorPin = BRI_PIN; // light sensor pin
  const byte brightnessLow = 1; // Low brightness value
  const byte brightnessHigh = 50; // High brightness value
  int sensorValue = analogRead(sensorPin); // Read sensor
  Serial.print("Sensor is: ");Serial.println(sensorValue);
  sensorValue = map(sensorValue, 0, 255, 1, 100);
  LEDS.setBrightness(sensorValue);
  };
вот такими строчками:
C:
void BrightnessCheck() {

  if (auto_bright) {                         // если включена адаптивная яркость
    if (millis() - bright_timer > 100) {     // каждые 100 мс
      bright_timer = millis();               // сброить таймер
      new_bright = map(analogRead(BRI_PIN), 0, bright_constant, min_bright, max_bright);   // считать показания с фоторезистора, перевести диапазон
      new_bright = constrain(new_bright, min_bright, max_bright);
      new_bright_f = new_bright_f * coef + new_bright * (1 - coef);
      LEDS.setBrightness(new_bright_f);      // установить новую яркость
    }
  }
};

Тут стоит упомянуть что программистом я не являюсь и большинство проблем я пытаюсь решить методом тыка и перебора.

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

Что касается кода вот сылка на GitHub. Кое-что я перевел для лучшего понимания.

Давно хотел поделиться готовым и работоспособным проектом в кругах аудитории Алекса, но вышло так что собственно нормальной работоспособностью тут не пахнет. Буду благодарени, если у кто сможет помочь.
 
Изменено:

Комментарии

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
@Leon111_09, а видит ли ардуинка модуль, что-то сомнения) там же надо прописывать пины в заголовке, что-то в коде не вижу)
Ссори, думал там 5 пинов... Это у 1302...

Проверь тут Examples→RTClib→ds1307
Этот должен работать)
 
Изменено:

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
@Leon111_09, а видит ли ардуинка модуль, что-то сомнения) там же надо прописывать пины в заголовке, что-то в коде не вижу)
Ссори, думал там 5 пинов... Это у 1302...

Проверь тут Examples→RTClib→ds1307
Этот должен работать)
проверил: без изменений.
 

Вложения

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
@Leon111_09, может тогда кварц мудрит...
К 3231 возвращайся, он стабильнее.
Если есть желание, перебирайся с ардуины на NodeMCU, синхронизация через интернет и другие плюшки)
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
@Leon111_09,К 3231 возвращайся, он стабильнее.
уже заказал. в середине августа придет.
@Leon111_09,Если есть желание, перебирайся с ардуины на NodeMCU, синхронизация через интернет и другие плюшки)
я только два месяца как занялся ардуинкой, а вы мне уже NodeMCU предлагаете :) . надо с одним сначала освоиться :)
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
Ну вот и я сделал такие часики. Получилось неплохо. Использовал три дешевых фоторамки под А4 из фикспрайс. Благодаря этому есть возможность менять картинки (если надоест эта или захочется поставить свою фотографию). Сделал возможность подключать любой блок питания,не заботясь о его вольтаже.Работает как от 12 вольт, так и от мобильной зарядки. Уличный датчик температуры оставил в скетче,только закомментировал: придет в октябре,тогда и подключу. А так все работает хорошо. Кстати,реализовал все это на датчике БМР-280 и атмега про мини, и часовой модуль DS3231. Ставить БМЕ-280 не стал: во первых китайцы ему сейчас цены не сложат (ценник уходит за 500р. и доставка два месяца и больше), а во вторых-влажность это уже переизбыток информации в часах.
P.S. Скетч не мой. Я его только адаптировал под себя. Кто-то из ребят тут в теме выложил. Спасибо ему за это :)
 

Вложения

Изменено:
  • Лойс +1
Реакции: Wan-Derer, ASM и maksland

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
в апреле за 80 успел взять
https://aliexpress.ru/item/32817286611.html тут брал
лежат 3 штуки а скетч некому доделать
это ВМР280,просто один датчик на 3,3 вольта, второй на 5 вольт. китайцы довольно часто ставят низкую цену,пишут в заголовке ВМЕ, а заходишь на страницу товара и видишь что это ВМП.
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
на BME ценник негуманный :)
лучше ставить BMP а если влажность нужна то можно что ни будь тогда из DHT11, DHT22 и DHT21
 
Изменено:

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
на BME ценник негуманный :)
лучше ставить BMP а если влажность нужна то можно что ни будь тогда из DHT11, DHT22 и DHT21
согласен полностью. да и вывод в часах еще и влажности это уже перебор :)
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
@ASM, посмотрите,как я подключил БМР и модуль часов (RTS3231), думаю так будет даже удобней. БМР у меня правда на 3,3 вольта и пришлось понижающий доп.стабилизатор на него колхозить.
 

Вложения

  • 54.6 KB Просмотры: 28
  • Лойс +1
Реакции: ASM

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
Leon111_09 ну в помещении влажность мерять не такой уж перебор
Divin , да. Жаль Вячеслав_45 куда то пропал, так хотелось BMP280 проверить и перейти на проект ASM (платы уже на подходе)
я сюда с Кота пришёл, там всё заглохло к сожалению
а тут так всё бодренько решается и обсуждается, я в программировании ноль но хоть платки нарисую и проверю в работе (чтобы всё красиво и компактно было )
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
Leon111_09 ну в помещении влажность мерять не такой уж перебор
Divin , да. Жаль Вячеслав_45 куда то пропал, так хотелось BMP280 проверить и перейти на проект ASM (платы уже на подходе)
я сюда с Кота пришёл, там всё заглохло к сожалению
а тут так всё бодренько решается и обсуждается, я в программировании ноль но хоть платки нарисую и проверю в работе (чтобы всё красиво и компактно было )
В том скетче,что я прикрепил как раз и есть ВМР280.
Работает прекрасно. А влажность можно и так померить :)222.jpg
 
Изменено:

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
В том скетче,что я прикрепил как раз и есть ВМР280.
Работает прекрасно. А влажность можно и так померить :)Посмотреть вложение 28634
Действительно, нужно измерить температуру "сухого" и "мокрого" DS18B20 и попросить ардуинку вичислить значение влажности по формуле, только нужно не забывать периодически смачивать батист на "мокром" термометре, или придумать систему "автодолива воды"
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
Действительно, нужно измерить температуру "сухого" и "мокрого" DS18B20 и попросить ардуинку вичислить значение влажности по формуле, только нужно не забывать периодически смачивать батист на "мокром" термометре, или придумать систему "автодолива воды"
На фото датчик ДНТ11, а у него другой принцип измерения влажности. Там типа пакетика с солью (или каким другим веществом) между двумя электродами. И этот пакетик в зависимости от влажности меняет свое сопротивление. А описанный вами метод вроде меряет не влажность.
 

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
@начинающий, датчики должны быть в помещении. На улице так не получится, т.к. движение воздуха.
 

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
описанный вами метод вроде меряет не влажность.
мною описан психрометрический метод измерения влажности, в зависимости от насыщенности воздуха влагой скорость испарения жидкости в сухом воздухе больше чем во влажном, а чем больше скорость испарения тем температура поверхности с которой испаряется жидкость ниже чем температура воздуха (смочите палец и подуйте на него, чувствуете холод) и по разности температур сухого и мокрого термометров вычисляется влажность, чем меньше влажность воздуха тем разность температур больше, чем больше влажность, тем разность температур меньше, при влажности 99,9% разноть температур почти равна нулю.
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
я пользуюсь прошивкой на основе скетча Вячеслава, вот хотелось бы сюда прикрутить показания давления с соответствующими дополнениями в меню
 

Вложения

Геннадий П

★★★★★★✩
14 Апр 2021
1,963
632
44
На улице так не получится, т.к. движение воздуха.
Получится, если поместить в коробку, в которую есть доступ воздуха, но отсекает его движение. Например окно в коробке, закрытое несколькими слоями ткани. Более технологично - расположенные особым образом шторки, типа жалюзи.
 

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
@Геннадий П, сомневаюсь, ветер найдет путь, особенно зимой)
Лучше использовать датчик влажности.
На сайте народного мониторинга в справке есть описания датчиков, на основе использования опыта его участниками, можете почитать.
 

начинающий

✩✩✩✩✩✩✩
13 Дек 2020
130
9
@Геннадий П, сомневаюсь, ветер найдет путь, особенно зимой)
Лучше использовать датчик влажности.
На сайте народного мониторинга в справке есть описания датчиков, на основе использования опыта его участниками, можете почитать.
Согласен, датчик влажности обеспечивает непрерывное измерение, а психрометр мериет только "на момент замера" типа как лаборант зашел в цех, смочил градусник, померил, записал и ушел, т.е. нет возможности постоянно контролировать смочен ли второй термометр, датчики же этого недостатка лишены, и можно произвести замер в любой момент независимо ни от чего, кроме энергообеспечения средства измерения.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
@Геннадий П, только если у них, самому такое проблемно)
ну извините, такое дома во дворе или на балконе городить-это извращение :) . Я лучше по старинке,датчиком ДНТ11: он и компактней и дешевле :).

вот хотелось бы сюда прикрутить показания давления с соответствующими дополнениями в меню
Попробую прикрутить сюда БМП280,но проверить никак будет: модуль часов был один и я его в паре с про мини уже использовал. Есть в наличии DS1307 (он практически идентичен с 3231),но он у меня проблематичный-время не считает. Тупо выводит одно и тоже значение. Скажу сразу: кварц заменил-изменений нет никаких. По ходу сам чип такой. Так что будете,так сказать, подопытным :) .