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г.
 

Вложения

Изменено:

Комментарии

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
я тоже думал bmp ставить но использование ESP как бы обязывает модули побогаче использовать :) но bmp тоже есть пару штук (страшно смотреть сейчас сколько они стоят )
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
bmp тоже есть пару штук (страшно смотреть сейчас сколько они стоят )
Эти как раз не особо подорожали.
использование ESP как бы обязывает модули побогаче использовать :)
А по мне так лучше использовать то,что нужно. Можно по этому принципу и углекислый датчик подключить, и анемометр, да и еще вообще кучу лишнего натыкать. Только толку будет ноль: мы ограничены минутой, и впихнуть в нее великое количество информации бесполезно-она даже в сознании не задержится :).
@ASM, Сейчас прогнал тот скетч, вот что выдало
Arduino: 1.8.15 (Windows 7), Плата:"Generic ESP8266 Module, 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), dtr (aka nodemcu), 26 MHz, 40MHz, DOUT (compatible), 4MB (FS:none OTA:~1019KB), 2, nonos-sdk 2.2.1+100 (190703), v2 Lower Memory, Disabled, None, All Flash Contents, 115200"

In file included from E:\Часы на есп8266\Clock_WiFi_04_9\Clock_WiFi_04_9.ino:13:0:

C:\Arduino\libraries\FastLED\src/FastLED.h:14:21: note: #pragma message: FastLED version 3.004.000

# pragma message "FastLED version 3.004.000"

^

In file included from C:\Arduino\libraries\FastLED\src/FastLED.h:65:0,

from E:\Часы на есп8266\Clock_WiFi_04_9\Clock_WiFi_04_9.ino:13:

C:\Arduino\libraries\FastLED\src/fastspi.h:135: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"

^

In file included from C:\Arduino\libraries\BMP280_DEV/BMP280_DEV.h:46:0,

from E:\Часы на есп8266\Clock_WiFi_04_9\Clock_WiFi_04_9.ino:14:

C:\Arduino\libraries\BMP280_DEV/Device.h: In function 'void setup()':

C:\Arduino\libraries\BMP280_DEV/Device.h:67:8: error: 'void Device::setI2CAddress(uint8_t)' is protected

void setI2CAddress(uint8_t addr); // Set the Device I2C address

^

Clock_WiFi_04_9:124:28: error: within this context

Clock_WiFi_04_9:125:14: error: 'class BMP280_DEV' has no member named 'beginI2C'

E:\Часы на есп8266\Clock_WiFi_04_9\Clock_WiFi_04_9.ino: In function 'void TempToArray()':

Clock_WiFi_04_9:275:10: error: 'class BMP280_DEV' has no member named 'beginI2C'

Clock_WiFi_04_9:277:19: error: 'class BMP280_DEV' has no member named 'readTempC'

E:\Часы на есп8266\Clock_WiFi_04_9\Clock_WiFi_04_9.ino: In function 'void PressToArray()':

Clock_WiFi_04_9:301:10: error: 'class BMP280_DEV' has no member named 'beginI2C'

Clock_WiFi_04_9:302:19: error: 'class BMP280_DEV' has no member named 'readFloatPressure'

In file included from C:\Arduino\libraries\FastLED\src/FastLED.h:48:0,

from E:\Часы на есп8266\Clock_WiFi_04_9\Clock_WiFi_04_9.ino:13:

C:\Arduino\libraries\FastLED\src/fastpin.h: In instantiation of 'class FastPin<6u>':

C:\Arduino\libraries\FastLED\src/platforms/esp/8266/clockless_esp8266.h:21:49: required from 'class ClocklessController<6, 20, 50, 30, (EOrder)10u, 0, false, 50>'

C:\Arduino\libraries\FastLED\src/chipsets.h:578:7: required from 'class WS2812Controller800Khz<6u, (EOrder)10u>'

C:\Arduino\libraries\FastLED\src/FastLED.h:105:52: required from 'class WS2812B<6u, (EOrder)10u>'

C:\Arduino\libraries\FastLED\src/FastLED.h:302:39: required from 'static CLEDController& CFastLED::addLeds(CRGB*, int, int) [with CHIPSET = WS2812B; unsigned char DATA_PIN = 6u; EOrder RGB_ORDER = (EOrder)10u]'

E:\Часы на есп8266\Clock_WiFi_04_9\Clock_WiFi_04_9.ino:128:56: required from here

C:\Arduino\libraries\FastLED\src/fastpin.h:210:2: error: static assertion failed: Invalid pin specified

static_assert(validpin(), "Invalid pin specified");

^

Несколько библиотек найдено для "RTClib.h"

Используется: C:\Arduino\libraries\RTClib

Не используется: C:\Arduino\libraries\RTClib-master

Не используется: C:\Program Files (x86)\Arduino\libraries\RTClib

Несколько библиотек найдено для "Wire.h"

Используется: C:\Users\Леонид\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\Wire

Не используется: C:\Program Files (x86)\Arduino\libraries\Wire

Несколько библиотек найдено для "FastLED.h"

Используется: C:\Arduino\libraries\FastLED

Не используется: C:\Program Files (x86)\Arduino\libraries\FastLED

Не используется: C:\Program Files (x86)\Arduino\libraries\FastLED-3.4.0

Не используется: C:\Arduino\libraries\FastLED-3.4.0

Не используется: C:\Program Files (x86)\Arduino\libraries\FastLED-stm32patch

Несколько библиотек найдено для "OneWire.h"

Используется: C:\Arduino\libraries\OneWire

Не используется: C:\Arduino\libraries\OneWire-master

Не используется: C:\Program Files (x86)\Arduino\libraries\OneWire

Несколько библиотек найдено для "DallasTemperature.h"

Используется: C:\Arduino\libraries\DallasTemperature

Не используется: C:\Program Files (x86)\Arduino\libraries\DallasTemperature

Несколько библиотек найдено для "SPI.h"

Используется: C:\Users\Леонид\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\SPI

Не используется: C:\Program Files (x86)\Arduino\libraries\SPI

exit status 1

within this context



Этот отчёт будет иметь больше информации с
включенной опцией Файл -> Настройки ->
"Показать подробный вывод во время компиляции"
P.S. @ASM, Вот на эту строчку ругается: bmp280.setI2CAddress(0x76); //Connect to a second sensor
 
Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
поэтому и переходить на панели надо ... там места хватить должно всем !
хотя я бы попытался панель разработать универсальную самим (ассортимент светодиодов позволяет)
светиков будет только за 500 штук и больше :)
 
Изменено:

Leon111_09

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

bort707

★★★★★★✩
21 Сен 2020
3,046
909
поэтому и переходить на панели надо ... там места хватить должно всем !
какие панели? Светодиодные rgb?
Одно другое, как мне кажется, не заменяет. Дизайн очень разный, на панели картинка уж больно пиксельная получается.
А так проблем нет, и светиков будет не 500 шт, а тыщи две, так как минимальный разумный размер для дисплея метеостанции - 64х32
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
И блок питания нужен будет как чемодан-законы электропитания никто не отменял :)
на 64х32 вполне достаточно БП 5в 2-3А ( у меня успешно работает на 2.5а).
Там же динамическая индикация, одновременно засвечивается всего 1/16 часть матрицы. Плюс еще коэфф заполнения картинки далеко не 100%
 
  • Лойс +1
Реакции: kym13 и ASM

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@Leon111_09, если яркость не включать на Макс со всеми диодами, ничего не много)
Обычного 5В 3А хватит вполне) может даже и на 2А.
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
на 64х32 вполне достаточно БП 5в 2-3А ( у меня успешно работает на 2.5а).
Я так на скорую руку и прикинул что старт БП должен быть не менее 2А. А если условия использования изменятся то БП может не выдержать. Поэтому всегда рекомендуют использовать БП с запасом (как раз на такие случаи).
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
55
Таганрог
forum.wisecomp.ru
если яркость не включать на Макс со всеми диодами, ничего не много)
Ну это похоже на"купить мерс с двигателем на 300 коней,но ездить не более 20 км/час,чтоб как бы чего не случилось." .Смысл тогда в часы вкладывать полноценную мощность,чтоб потом ее "резать" из-за БП.
максимальный ток можно задать в коде программы.
Можно,но если делаешь часы для себя. А если на подарок-то не знаешь в каких условиях и с каким БП он будет использоваться. Кстати, а этот параметр в вебморде можно же тоже добавить? это довольно важный параметр :).
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@Leon111_09, текущий проект тоже урезан по мощности))
#define milliamp 1000 // ограничение по току в мА
FastLED.setMaxPowerInVoltsAndMilliamps (5, milliamp);
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@Leon111_09,
Собрал часы вот такие: https://www.youtube.com/c/GreatProjects . У меня P4 панель 64х32(2048 диодов) если нет белого цвета то за 2А даже не выходит.
ASM)) А Вы на каких панелях планируете следующий проект P4 или P5 ? Я выше спрашивал про подключение, у P4 и P5 оно одинаковое? Разница только в размере панели?
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
@kym13, Р5, уже пришли, Али сообщил о доставке, но дпд пока не сообщил)
Мелочевки эконом доставкой пришла быстрее, чем ТК дпд)
 
  • Лойс +1
Реакции: kym13

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@bort707,
одинаковое, если размерность в пикселях та же...
Если я Вас правильно понял то все матрицы типоразмера 64х32 подключаются одинаково и не важно Р2 это или Р10.
Ну понятно что в Р10 диодов меньше, это я образно в качестве примера.
 

Divin

★★★✩✩✩✩
30 Янв 2021
436
192
@kym13, диодов одинаково, разное расстояние между ними, шаг между диодами и есть Р, в Р10 шаг 10мм.
 

ASM

★★★★★✩✩
26 Окт 2018
1,599
311
Прикольная матрица, включил в сеть, непонятно что показывает) мерцания, полосы) яркая)
 

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
Divin, ASM, bort707
Мужики ну чё Вы меня "лечите", я прекрасно знаю что Р2....Р10 это расстояние между диодами и конечно в Р10 их меньше, Я же написал "Образно в качестве примера". Меня интересует подключение, т.е. все матрицы 64х32 подключаются одинаково или есть различия от размера?
 

bort707

★★★★★★✩
21 Сен 2020
3,046
909
я прекрасно знаю что Р2....Р10 это расстояние между диодами и конечно в Р10 их меньше
приехали...
Почему меньше-то, обьясни?

Что касается подключения, то оно зависит не от размера, а от такого параметра как сканирование - матрицы бывают сканированием 1/2 1/4 1/8 .... и так до 1/32.
Кроме этого матрицы отличаются по тому, какой на них установлен драйвер и по схеме соединения пикселей(бывают линейные, а бывают и сложные, типа зигзаг - их десятки вариантов:) . От этого зависит и подключение, и протокол работы с матрицей.

Но все эти вопросы за вас решают авторы библиотек, так что не парьтесь:)
 
Изменено:
  • Ахах! +1
Реакции: Divin

kym13

★★✩✩✩✩✩
14 Ноя 2020
472
70
@bort707,
Почему меньше-то, обьясни?...
Потому что матриц Р10 нет типоразмера 32х64(2048 диодов), есть только 32х16, а это всего 512 диодов