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
через браузер на компьютере запустил , только в опере пришлось отключить
Anonymize local IPs exposed by WebRTC.
Block insecure private network requests.
а с телефонов через приложение не хочет
 

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
@maksland,
  • На Android младше 10 версии не работает WebSocket (временно)
может это?

на телефоне можно еще так сделать, например используя хром, или чем пользуешься)
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
почитал, надо еще закидывать файлы в esp
поэтому и по ip не заходит ! надо в скетч добавить #define GH_INCLUDE_PORTAL !
у меня 12 андроид те то младше 10 ? :)
короче еще работать и работать Gyver`у !
 

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
почитал, надо еще закидывать файлы в esp
нет)
поэтому и по ip не заходит
не особо нужная вещь) ip может сменится, поэтому не включал надстройку)
по адресу сайта всегда работает, добавил в код надстройку, теперь заходит и по ip)
короче еще работать и работать Gyver`у !
что-то не доделал ты) проверь заново, все эти настройки браузера) и сохрани, если надо)
также добавь сайт, как написано) все должно работать)
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
все это уже сделал , с компа захожу теперь по IP
но с телефонов никак, даже по IP
или в телефоне с браузерами тоже манипуляции эти делать ?
 

ASM

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

С телефона надо также настраивать как и на ПК, можно и ссылкой сделать, как написано. Я и через АПК открываю и через ссылку в виде приложения. Работает только одно активное соединение. Если через что-то открыл, то другое соединение невозможно) Надо завершить сеанс или выгрузить. Можно думаю решить, используя другие библиотеки. Синхронные/асинхронные.

Устройство, скорее всего, Алекса, он что-то подобное упоминал...
 

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
Релиз 1.3 готов, исправлены точки (теперь мигают) и ошибки с длинной массива у точки с температурой)
хотя мне писали, что с точкой все ок, но проверить никак, нет у меня этой точки)
так что, кто ей пользуется, отпишитесь, будет ли сейчас работать))
спасибо @Sergo_ST
 
Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
struct MODES {
uint8_t myMods[9] = {0, 1, 2, 3, 4}; // режимы
uint8_t myTime[9] = {2, 2, 2, 2, 2}; // время
int counter = 5;
можно тут расписать что и как ?
 

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
@maksland, по сути, все настройки идут через вэб.
Счетчик фиксирует кол-во режимов и выводит их. Какое число, столько цифр в режиме и времени.
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
сделал два светодиода на сегмент - показания давления, влажности и температуры нормально показывает а время искажено
 
Изменено:

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
время подтягивается но отображение/вывод неправильное идёт
 

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
#define DOTS_NUM 2 // задаём сколько у нас разделительных точек 2/4/6/8
так выбрано?

подключил бы датчики, увидеть бы, правильно ли цифры отображаются)
 

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
#define LEDS_IN_SEGMENT 2 // задаём сколько у нас светодиодов в сегменте
#define DOTS_NUM 2 // задаём сколько у нас разделительных точек 2/4/6/8
мигает только нижняя точка
 

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
а раньше они не работали?
сравнить бы с другой прошивкой.
можно проверить FastLED ColorPalette
 

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
@maksland, доступа нет к видео

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

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
без изменений, верхняя точка правда подмаргивает иногда
fast led 3.5 или 3.6 должна быть ?
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
@maksland,
попробуй вот такой вариант, как тут будет работать?) откатил почти все, кроме режима мигания точки)

и если не сработает, закомментируй строку в mod #11 timeToDots(); тогда исключаем точки, и если так не заработает, то походу проблема на твоей стороне, т.к. код приведен к состоянию, когда не работали только точки.
 

Вложения

maksland

★★★✩✩✩✩
13 Янв 2019
513
117
Omsk
ну всё - нормально теперь работает
а что за возможность загрузки filesystem.bin ?
хотя стоп !
нормально работает когда я меняю только
LEDS_IN_SEGMENT
но когда я меняю еще и
DOT_TEMP 1
bool rtc_check = 1
change_color = 1
symbol = 1
и заливаю - всё портится во времени опять !
 
Изменено:

ASM

★★★★★✩✩
26 Окт 2018
1,602
311
ну всё - нормально теперь работает
И меня одного волнуют подобного рода присвоения?
C++:
leds[NUM_LEDS] = 0x000000;
Ничего что это уже за пределами массива? 😅
оказывается это как раз правильно))


а что за возможность загрузки filesystem.bin ?
Кликните в IDE Arduino по Инструменты > ESP8266 Sketch Data Upload (Tools > ESP8266 Sketch Data Upload). Это должно начать загрузку файлов в файловую систему ESP8266.

это вот этот образ, который загружает IDE, без кабеля она создаст файл в системных папках, вот его можно загрузить по ОТА
 
Изменено: