ESP, IoT [BigClock] Большие часы на WS2812, ESP8266, Народный мониторинг

Какой вариант датчика используется у вас? Интересно, использует ли кто BME280, как у меня?)

  • BMP280

    Голосов: 23 29.1%
  • BME280

    Голосов: 56 70.9%

  • Всего проголосовало
    79
[BigClock] Большие часы на WS2812, ESP8266, Народный мониторинг
Создаю отдельную тему по разработке прошивки на базе NodeMCU.

Мой проект сделан на ДВП, на нее наклеил ленту, объем цифрам сделал из сэндвич панели, поверх белый лист бумаги.
Корпус из дерева, покрашен акриловой краской, смесь белой и коричневой.

Данная прошивка проверяет время по NTP, часы RTC теоретически не нужны.
Барометр на базе BME280.
Имеется датчик освещенности и датчик DS18B20
Clock_схема.pngсхема пайки.jpgClock_схема3.jpg
Плата: NodeMCU 1.0 (ESP 12-E Module)
Если в качестве микроконтроллера вы используете Wemos D1 - в менеджере плат для компиляции все равно выбирайте "NodeMCU v1.0 (ESP-12E)", в противном случае, если выберете плату Wemos D1 (xxxx), - будет работать нестабильно.
Выбирайте ядро ESP версии 2.7.4.

ESP8266 (SDK v2.7+)

Необходимые библиотеки находим в репозитории программы IDE.
Настраиваем прошивку под себя, если нужно, меняем пароли для точки и OTA, WiFi можно не задавать.

Если не задавали настройки WiFi, то стартует точка, адрес стандартный 192.168.4.1 пароль по умолчанию administrator, задавать не менее 8 символов, иначе название точки не отобразится, а будет ее внутреннее имя, типа ESP12345.
Адрес портала http://clock.local/ или по IP адресу, выданному роутером.
Данные для OTA: имя: admin пароль: pass

Для подключения к сервису "Народный мониторинг" MAC адрес отображается на соответствующей странице, вводите этот адрес при регистрации устройства.

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

Версия от 16.04.2023 CLOCK_ESP_2.0:
  • оптимизация под новый портал
  • переделано давление с инт на флоат для мониторинга
  • переделан интерфейс на UI
  • добавлена ручная синхронизация времени
  • заменена библиотека rtc на microDS3231
  • багфиксы)
  • добавлена в код точка, для десятичного знака уличной температуры
  • добавлена строка с версией прошивки
  • исправление даты
  • добавление DFPlayer, спасибо: @Maxx1200 и @Romshteks
  • добавлен режим с датой (номер 5)
  • обновлена библиотека EEManager (сбросятся настройки!!!)
  • добавлен режим с показом первого нуля в часах
  • добавлена возможность устанавливать цветовое оформление в настройках прошивки, визуальные правки
  • fix GMT
  • заменены библиотеки датчиков
  • визуальные правки
  • может что-то еще))
Проект на гитхаб со всеми библиотеками и mp3
  • Дофига изменений))
  • Появилась web страничка с настройками на базе GyverPortal.
  • Изменены библиотеки.
  • Переписан код, распределил по вкладкам.
исправлено:
  • баг со сменой цвета на последней цифре
добавлен
  • символ давления, включать в настройках
исправлено:
  • переделан вывод сегментов
  • переделана функция показа точек
добавлено:
  • выбор режима мигания секунд 1 и 2 раза в сек
  • можно вручную задать порядок отображения датчиков и время показа каждого датчика
  • откл. WiFi без мониторинга
  • корректировка показания датчиков
внедрение датчика BME280, добавлен режим влажности с возможностью включить символ проценты
[*]багфиксы
багфиксы
незначительные изменения кода (настройки под себя и комментарии)
  • все настройки вынесены в Constants, вроде:)
  • добавлен web сервер, для обновления через браузер, изначально прошить через кабель, потом можете вносить изменения под себя и обновляться через бинарный файл
  • добавлены библиотеки
  • изменение в коде, из-за выноса настроек:)
  • добавлен НГ режим :)
  • возможно исправлена анимация, про которую писали, с точками и цифрами :)
  • теперь при запуске часов идет проверка с датчика времени, и если все ОК, то запускаются часы без синхронизации
  • исправлена функция освещенности заменой switch на if/else
  • подправлен код с switch в других местах
Увидел в коде небольшую ошибку с НГ режимом, не важно, включен он или нет, все равно будет) только разными методами)
leds[cursor] = (digit & mask) ? CHSV(random(0, 255), random(0, 255), random(0, 255)) : CRGB (0, 0, 0);
leds[cursor] = (digit & mask) ? ledColor : CRGB (0, 0, 0);
  • исправлен НГ режим
  • отключена точка доступа за ненадобностью
  • оптимизирован код
  • выбор в настройках кол-во разделительных точек
  • можно запускать с RTC модулем и без него
  • изменена библиотека NTP
  • поправлен код :)
Внимание: у кого мигает первый светодиод, необходимо изменить ядро ESP на 2.7.4 (инструменты/Плата/Менеджер плат).
Новые версии нестабильные на октябрь 2021г.
 

Вложения

Изменено:

Комментарии

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@Sergo_ST, я эту процедуру вынес в loop, чтобы ничего не мешало для проверки...
C++:
26 25458 500 0
27 26456 500 1
28 27455 500 0
29 28445 500 1
@Sergo_ST, да, закомментировал ожидание, все заработало) такая мелочь и такую бяку устраивает) спасибо)
теперь надо с освещением разобраться в твоем коде)

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

Sergo_ST

★★★★★★✩
15 Мар 2020
944
820
@ASM, Там ничего сложного, передаёте 3 параметра в функцию, а она возвращает ночной сейчас режим или нет. Я вчера редактировал пост, там всё подписано)
 
  • Лойс +1
Реакции: ASM

maksland

★★★✩✩✩✩
13 Янв 2019
512
116
Omsk
я тоже заметил что датчик раз в секунду опрашивается
а нельзя сделать раз в 5 сек например ?
 

Sergo_ST

★★★★★★✩
15 Мар 2020
944
820
@maksland, Дело в том, что его опрос создаёт задержку в основном цикле, поэтому помимо того что его стоит опрашивать пореже, стоит ещё(как я и сказал выше) или уменьшить разрядность до 9бит, или использовать асинхронное чтение результата.
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@maksland,
C++:
  ds.requestTemp();
  if (ds.ready()) {
    if (ds.readTemp())
      FtempS = ds.getTemp() + o.cor_tempS;
  }
сделал асинхронное

Там ничего сложного, передаёте 3 параметра в функцию, а она возвращает
сложно...
я проще сделал, глядя на твой код)

все сделал, также добавил выбор ленты, был прецендент @Elektronik777
избавился от всех millis()?
@Romshteks можешь избавиться от millis в https://github.com/Serega88kos/BigClock/blob/main/BigClock/Kukushka.ino
C++:
gh::Timer timer(500); //время в мс
if (timer) procedura();
можно упростить флаги, код станет короче)
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
944
820
@ASM, Сложно передать 3 параметра?😅
C++:
if (checkHourStrart(o.start_night, o.stop_night, hour)) {
//Ночной режим 
}
else {
//Дневной режим
}
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@Sergo_ST, зачем такие сложности, целая процедура, чтобы передавать параметры, когда можно вставить все в условие)

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

Sergo_ST

★★★★★★✩
15 Мар 2020
944
820
@ASM, Можно, но когда требуется выполнять одно и тоже действие в разных местах то это экономит флеш, к тому-же данный подход повышает читаемость кода и соответственно облегчает его отладку. Но тут уж дело ваше, как реализовывать в вашем проекте те или иные решения, я просто продемонстрировал что сложностей никаких нет с использованием готовой функции)
в асинхронном режиме что-то нули показывает
Нужно просто запрос делать например раз в 5 сек, как предложил @maksland или сделать так:
C++:
  if (!ds.isWaiting()) ds.requestTemp();
  if (ds.ready()) {
    if (ds.readTemp())
      FtempS = ds.getTemp() + o.cor_tempS;
  }
 
  • Лойс +1
Реакции: maksland и ASM

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@Sergo_ST, поправил, температура показывает 0,5 и 1, то ли реально такая, толи погрешность такая стала)
Раньше до сотых показывало...

C++:
  if (timerDS) ds.requestTemp();
  if (ds.readTemp()) FtempS = ds.getTemp() + o.cor_tempS;
сделал на таймере
 
Изменено:

Sergo_ST

★★★★★★✩
15 Мар 2020
944
820
@ASM, Если включен режим 9бит то да, шаг температуры будет 0.5 градуса. Но у него и погрешность в целом +-0.5 градуса...
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@Sergo_ST, выключен режим, ладно, понаблюдаю...
в истории показаний вижу, что там до сотых было, откатил прошивку с гх, изменений не заметил, накатил новую.
скорее всего такая погода в данный момент
 

Sergo_ST

★★★★★★✩
15 Мар 2020
944
820
@ASM, Я не уверен прям точно, но вроде у него энергонезависимая память и просто нужно вызвать ещё раз установку разрешения на нужное количество бит...
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@Sergo_ST, сколько по умолчанию, 12?
Поставил 12, точность появилась)

Код:
11.11.24 2.7
Исправлен ночной режим, исправлены точки в часах (спасибо Sergo_ST).
Добавлен выбор типа ленты (GRB и RGB, остальное по надобности).
Увеличено кол-во СД в сегменте до 10.
Оптимизирован код.
Косметические правки.
Обновление загружено, можно нажать обновить)

Ночной режим тоже работает?
проверяйте)
версию до 3.0 поднимите !
так ничего кардинального нет)

@nick 56, открыть Gyverhub, будет предложено обновиться)
 
Изменено:
  • Лойс +1
Реакции: maksland

nick 56

✩✩✩✩✩✩✩
11 Апр 2024
52
5
можете скриншот показать, или в каком это разделе
вот мой скриншот после загрузки
 

Вложения

Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
512
116
Omsk
мне никогда не предлагает обновиться, вручную bin заливаю
мигают теперь точки 2 раза в секунду !
по температуре у меня так меняется цвет
C++:
DEFINE_GRADIENT_PALETTE(Temperature){
  00, 0, 0, 139,                //DarkBlue
  128 - 30 * 2, 138, 43, 255,     //BlueViolet
  128 - 20 * 2, 30, 144, 255,  //DodgerBlue
  128 - 10 * 2, 0, 255, 255,   //Aqua
  128 + 0, 0, 250, 154,     //MediumSpringGreen
  128 + 10, 0, 255, 0,       //Lime
  128 + 20, 173, 255, 47,       //GreenYellow
  128 + 30, 255, 165, 0,       //Orange
  255, 255, 0, 0               //Red
};
и еще ....может на вход сделать логин и пароль, чтобы если в сети часы, никто не изъявил настройки поменять
 

nick 56

✩✩✩✩✩✩✩
11 Апр 2024
52
5
в ручную и я могу, но надо часы разбирать, плату вытаскивать, программатор подключать
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
ASM. В ночной режим переходят по установленному времени но все равно показывает при вкл." Только часы" тепм. влажность и давление. И перестало выставляться время вывода на экран по умолчанию "2,2,2,2,2" без разницы какое число поставишь всё равно выводит как по умолчанию по 2 сек.

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

Вложения

  • 62.7 KB Просмотры: 1
Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
512
116
Omsk
В ручную я имел ввиду через браузер, уже не разбираю часы.

настраиваю скетч, компилирую и по сети через веб интерфейс закидываю в часы BIN файл
 

nick 56

✩✩✩✩✩✩✩
11 Апр 2024
52
5
Спасибо, но ASM обновляется как-то по другому, или я чего то не понимаю. Откуда идёт обновление? Файл надо скачивать с гитхаба?
 

Влад78

✩✩✩✩✩✩✩
6 Июн 2023
28
0
@nick 56,
Я скачал свежий файл bin , с гитхаб, если смотреть на ваш скриншот, нажать шестерню, выбрать ОТА, далее flash и указать место где лежит файл. И обновить. Но у меня что-то пошло не так... Зависли... Перегрузил, работает. Сегодня без проблем подключился к часам через хаб в браузере.
 
Изменено:

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@Влад78, Это с компьютера, а со смартфона как? Скачать Бин на смартфон? И это не по воздуху, это обычная прошивка с таким же успехом можно просто через IDE скетч загрузить.
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@nick 56, так надо выбрать устройство, и если есть обновление, предложит автоматически. Можно проверить, всё предыдущие версии.bin в репозитории. Указываем ссылку и обновляемся)
 

Влад78

✩✩✩✩✩✩✩
6 Июн 2023
28
0
@kym13, все с телефона. Можно и с компьютера, и все без проводов. Выше автор написал как в автотическом режиме делать.
Я сейчас сделал так: открыл приложение Гайверхаб в телефоне. Выбрал часы и мне предложено было обновление. Согласился. Обновились. Надо посмотреть что нового .
Но у меня на 2.6 не было проблем с миганием, не обращал внимание. Ночной режим тоже только часы были.
Странно перед загрузкой говорил версия 2.7. в настройках смотрю 2.6....Screenshot_2024-11-12-00-41-26-113_ru.alexgyver.GyverHub.jpg
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@Влад78, бывает, зависают, не стартуют сами, приходится выкл/вкл, но не так часто делаю во время экспериментов.
Это не от меня зависит, либо хаб, либо есп.
@kym13, часы вижу, не работают, посмотрю, сам не пользуюсь этим)
С режимами не понял, добавляется, редактируется...
Увидел)
Откуда это все появляется, интересно даже) Опять таймеры))
@Влад78, проблема с не обновлением присутствует. У меня не часто, но бывало. У кого-то чаще проблема. Это уже на стороне хаба с есп. Это либо к Алексу, либо к какой-то связанных с этим процессом библиотек. Может роутер что-то блокирует. Напишу ему.

Перезапусти приложение. Или в меню устройств обнови список и открой заново. Будет предложено обновится.
 
Изменено:
  • Лойс +1
Реакции: Влад78