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

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

  • BMP280

    Голосов: 26 27.7%
  • BME280

    Голосов: 68 72.3%

  • Всего проголосовало
    94
[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г.
 

Вложения

Изменено:

Комментарии

kym13

★★★✩✩✩✩
14 Ноя 2020
710
115
@ASM, Это чтобы визуально отличать понизилась/повысилась температура, давление или влажность относительно предыдущего измерения. Кстати довольно удобно не нужно запоминать, глянул на показания если к примеру зелёный значит значения не менялись.
 

Старик Похабыч

★★★★★★★
14 Авг 2019
4,319
1,318
Москва
У меня подобное сделано с давлением усреднено, справ от давления выводится символ P и далее зажигаются сегменты, если "- " давление за 15 минут не изменилось (зеленый цвет) ,синим нижний вертикальный сегмент, слабо изменилось, маленькая г -чуть сильнее , Г еще сильнее, F - сильно, P ну прям рухнуло. Зеркально в другую сторону (по вертикали) и красным - тоже на повышение.
Для температуры выбрана шкала комфорта (градиент)
 
  • Лойс +1
Реакции: kym13

ASM

★★★★★✩✩
26 Окт 2018
1,907
420
не вижу логики, в 00:00 температура 30, в 00:05 температура 20, в и далее держится) вот вроде изменение было значительное, но в 00:10 показывает уже нормальным цветом) ну или стала в 00:15 температура 21, будет красная...
что это покажет?)
красный цвет, температура растет, можно выйти на улицу, а через 5 минут налетели тучи и стало холодно)

с давлением замер сравнивают за 2 часа, если изменение более чем на 2 мм.рт.ст. значит оно скачет...
 

Вложения

maksland

★★★✩✩✩✩
13 Янв 2019
604
142
Omsk
взял б/у neptune 3 pro, перепечатываю корпуса под новый рассеиватель
совсем другой уровень качества, всё четко подходит, и красивая поверхность шероховатая от стола
 

Вложения

  • Лойс +1
Реакции: Maxx1200 и kym13

nick 56

★★✩✩✩✩✩
11 Апр 2024
146
54
ссылаться не на что. Здесь большие файлы не помещаются. Может кум13 через яндекс выложит, я ему пересылал. Рассеиватели напечатаны белым пластиком, и вщёлкиваются в сегменты. Печатается левая и правая половина отдельно и склеиваются через точки. Все пазы для склейки есть, ничего размечать не надо.
 

Вложения

maksland

★★★✩✩✩✩
13 Янв 2019
604
142
Omsk
давно хотел еще такие сделать, с отверстиями
сколько у вас светодиодов на сегмент ?
 

nick 56

★★✩✩✩✩✩
11 Апр 2024
146
54
проект не мой, где-то с инета скачал, а потом правил под свои хотелки. Так stl и есть. Пишите в личку, куда скинуть, так, как со всякими облаками не дружу.
 

maksland

★★★✩✩✩✩
13 Янв 2019
604
142
Omsk
nick 56, проект кстати наш часов, тот человек еще красиво самолеты клеит из бумаги
но давно ничего нового не выкладывал
начинаю реверс инжиниринг :)
в муках теперь, как и что сделать :(
чтобы красиво всё и без термоклея и светодиодной ленты
помогите !!!
еще вот такая идея что в часах оставить только DCDC и микросхему интерфейса (до 100 метров)
а блок управления управления в другом месте

1749701224328.png 1749701377151.png
 
Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
604
142
Omsk
как грамотно всё сделать чтобы соединялось - платы, корпус и тд и тп
 

maksland

★★★✩✩✩✩
13 Янв 2019
604
142
Omsk
прошил esp, но при старте мигает 2 раза и всё
точка доступа появляется но зайти не дает на неё
 

kym13

★★★✩✩✩✩
14 Ноя 2020
710
115

@maksland,
Была такая ерунда, попробуйте ESP очистить и прошить пустым файлом если не поможет значит не повезло.
 

maksland

★★★✩✩✩✩
13 Янв 2019
604
142
Omsk
какая то ерунда, две платы и симптомы одинаковые, IP адрес есть и часы работают но зайти не могу
уже и скетчем kym13 прошил (с полной очисткой)
прошивается без ошибок
ide 2.3.6
пингуется, но не заходит !

снес все и по новой библиотеки все ставлю
опять ошибка не понятная , hub качал по ссылке
C++:
In file included from d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/core.h:11:0,
                 from d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/hub.h:6,
                 from d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/GyverHub.h:59,
                 from D:\Users\jn79\Documents\Arduino\BigClock_3.9_DFRobot\BigClock_3.9_DFRobot.ino:29:
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/datatypes.h: In function 'void ghc::varToStr(ghc::Packet&, const ghc::AnyPtr&)':
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/datatypes.h:105:15: error: 'class ghc::Packet' has no member named 'addTextRawEsc'
             p.addTextRawEsc(*(String*)data.ptr);
               ^
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/datatypes.h:108:15: error: 'class ghc::Packet' has no member named 'addTextRawEsc'
             p.addTextRawEsc((const char*)data.ptr);
               ^
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/datatypes.h:111:15: error: 'class ghc::Packet' has no member named 'addTextRawEsc'
             p.addTextRawEsc(*(const GHTXT*)data.ptr);
               ^
In file included from d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/ui/builder.h:12:0,
                 from d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/core.h:20,
                 from d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/hub.h:6,
                 from d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/GyverHub.h:59,
                 from D:\Users\jn79\Documents\Arduino\BigClock_3.9_DFRobot\BigClock_3.9_DFRobot.ino:29:
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/ui/canvas.h: In member function 'gh::Canvas& gh::Canvas::custom(const AnyText&)':
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/ui/canvas.h:65:12: error: 'class ghc::Packet' has no member named 'addTextRaw'
         p->addTextRaw(text);
            ^
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/ui/canvas.h: In member function 'gh::Canvas& gh::Canvas::font(const AnyText&)':
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/ui/canvas.h:391:12: error: 'class ghc::Packet' has no member named 'addTextRaw'
         p->addTextRaw(v);
            ^
In file included from d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/GyverHub.h:59:0,
                 from D:\Users\jn79\Documents\Arduino\BigClock_3.9_DFRobot\BigClock_3.9_DFRobot.ino:29:
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/hub.h: In member function 'void GyverHub::sendAction(const AnyText&, gh::Client*)':
d:\Users\jn79\Documents\Arduino\libraries\GyverHub\src/core/hub.h:197:11: error: 'class ghc::Packet' has no member named 'addTextRaw'
         p.addTextRaw(F("{\"action\":1}}"));
           ^
In file included from d:\Users\jn79\Documents\Arduino\libraries\FastLED\src/FastLED.h:80:0,
                 from D:\Users\jn79\Documents\Arduino\BigClock_3.9_DFRobot\BigClock_3.9_DFRobot.ino:40:
d:\Users\jn79\Documents\Arduino\libraries\FastLED\src/fastspi.h: At global scope:
d:\Users\jn79\Documents\Arduino\libraries\FastLED\src/fastspi.h:163:23: note: #pragma message: No hardware SPI pins defined.  All SPI access will default to bitbanged output
#      pragma message "No hardware SPI pins defined.  All SPI access will default to bitbanged output"
                       ^
exit status 1

Compilation error: exit status 1

P.S. на работе IDE 2.3.2 - две платы перешил - без проблем !все заработало

kym13 , от 30 апреля скетч ваш
1750324134083.png
1750323896761.png
выбираю адрес bmp/ e 0*76 - температура и давление "0", выбираю комнатная температура bmp/e- начинает показывать
так и задумано ?

P.S.
1750606284609.png последняя версия с выносным блоком управления ...и буду завязывать с часами
как бы теперь механизм блока управления придумать чтобы и на стену и на стол можно было ставить/вешать
 
Изменено:
  • Лойс +1
Реакции: kym13 и ASM

maksland

★★★✩✩✩✩
13 Янв 2019
604
142
Omsk
у меня не работает фотодатчик, на схеме правильно всё нарисовано ?
я раньше фонариком проверял, менялись показания, а сейчас на нижнем пороге всегда
 

kym13

★★★✩✩✩✩
14 Ноя 2020
710
115
@maksland, А что там может быть не правильным? Там один провод и питание сложно перепутать, а в коде какой пин указан на фоторезистор. Может указан А1, а припаян к А0 или наоборот. Тестером подцепись к А0 относительно gnd и глянь меняется напряжение когда фоторезистор закрываешь/открываешь

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

maksland

★★★✩✩✩✩
13 Янв 2019
604
142
Omsk
А0, сопротивление меняется
в темноте 10к при освещении 6-7к
 
Изменено:

Sir90

✩✩✩✩✩✩✩
23 Мар 2022
3
0
Ребят либо я слепой либо я не увидел в коде настройку сегментов и выбор количества светодиодов типо таких:

/* Segment order, seen from the front:
< A >
/\ /\
F B
\/ \/
< G >
/\ /\
E C
\/ \/
< D >
digit positions, seen from the front:
_ _ _ _ _ _
|| || || || || ||
|| || || || || ||
0 1 2 3 4 5

/* segments 0-27, 4 digits x 7 segments */
/* digit position 0 */
{ 8, 11 }, // top, a
{ 4, 7 }, // top right, b
{ 26, 29 }, // bottom right, c
{ 22, 25 }, // bottom, d
{ 18, 21 }, // bottom left, e
{ 12, 15 }, // top left, f
{ 0, 3 }, // center, g
/* digit position 1 */
{ 51, 54 }, // top, a
{ 47, 50 }, // top right, b
{ 41, 44 }, // bottom right, c
{ 37, 40 }, // bottom, d
{ 33, 36 }, // bottom left, e
{ 55, 58 }, // top left, f
{ 59, 62 }, // center, g
/* digit position 2 */
{ 78, 81 }, // top, a
{ 74, 77 }, // top right, b
{ 96, 99 }, // bottom right, c
{ 92, 95 }, // bottom, d
{ 88, 91 }, // bottom left, e
{ 82, 85 }, // top left, f
{ 70, 73 }, // center, g
/* digit position 3 */
{ 121, 124 }, // top, a
{ 117, 120 }, // top right, b
{ 111, 114 }, // bottom right, c
{ 107, 110 }, // bottom, d
{ 103, 106 }, // bottom left, e
{ 125, 128 }, // top left, f
{ 129, 132 } // center, g
#if ( LED_DIGITS == 6 ) // add two digits, 14 segments, only used
 

kym13

★★★✩✩✩✩
14 Ноя 2020
710
115

@Sir90, В самом низу этой вкладки есть выбор кол-ва диодов на сегмент, можно и потом после прошивки в WEB во вкладке "Настройка" настроить.
В этм коде для выбора диодов нужно только в одном месте указать количество.
 

Вложения