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

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

  • BMP280

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

    Голосов: 71 73.2%

  • Всего проголосовало
    97

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@kDn,
C++:
void build() {
  String s;
  BUILD_BEGIN(s);
  add.THEME (GP_LIGHT);
  add.FORM_BEGIN("/update");
  add.TEXT("prs", "pressure", "0");
  add.BREAK();
  add.SUBMIT("Save");
  add.FORM_END();
  BUILD_END();
}

void myAction(GyverPortal* p) {
  if (p->form("/update")) Serial.println("Save");
}

String jsonConfig = "{}";

bool saveConfig() {
  DynamicJsonDocument doc(1024);
  doc["prs"] = prs;
  serializeJson(doc, jsonConfig);
  File configFile = SPIFFS.open ("/config.json", "w");
  if (!configFile) {
    return false;
  }
  serializeJson(doc, configFile);
  return true;
}
bool loadConfig() {
  File configFile = SPIFFS.open("/config.json", "r");
  if (!configFile) {
    saveConfig();
    return false;
  }
  size_t size = configFile.size();
  if (size > 1024) {
    return false;
  }
  jsonConfig = configFile.readString();
  DynamicJsonDocument doc(1024);
  deserializeJson (doc, jsonConfig);
  prs = doc ["prs"];
  return true;
}
void setup() {
  loadConfig();
  portal.attachBuild(build);
  portal.start();
  portal.attachForm(myAction);
}
void loop() {
  portal.tick();
  if (portal.form()) {
    if (portal.form("/update"))
      prs = portal.getInt("prs");
      saveConfig();
      }
}
как-то так получается)
 
  • Лойс +1
Реакции: kDn

Divin

★★★★✩✩✩
30 Янв 2021
458
204
@ASM, Все заработало с пол пинка - думаю скетч можно к шапке -для тех кто захочет без модуля часов, спасибо огромное!
 
  • Лойс +1
Реакции: ASM

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@Divin, я и писал ранее, возможно придется немного подправить...
Из-за UnixTime пришлось использовать библиотеку EasyNTPClient, а раз модуля RTC нет, то библиотека не подошла, поставил обычную, подправив обработку времени.
Теперь надо подумать, как объединить, или конвертировать время)
П.С.
getEpochTime оказывается и есть Unix, судя по библиотеке, тогда можно немного упростить...
посмотрел прошивку лампы, она на 5 версии Json библиотеки сделана) у меня пример тоже был на ней, кучу времени потратил на адаптацию...
Чтобы не нагружать ФС лучше сделать несколько json файлов и несколько форм? Ведь json "w" перезаписывает полностью файл, а не изменившиеся значения?
 
Изменено:

kDn

★★★★★✩✩
18 Ноя 2019
1,103
437
посмотрел прошивку лампы, она на 5 версии Json библиотеки сделана)
Без понятия какую вы именно прошивку лампы глядели, в нашей к примеру используется <ArduinoJson> 6.19.1
Чтобы не нагружать ФС лучше сделать несколько json файлов и несколько форм?
Все зависит от задачи. В нашей прошивке лампы используется основной конфиг, а также множество дополнительных - отдельные конфиги для событий, кнопки, индексы эффектов, бакапы и сами эффекты. Т.е. таких файлов больше сотни :). Но сам фреймворк в базовом наборе содержит только основной конфиг, возможно перенесу в него еще события модулем.

Суть в том, что хранить большие json-объекты в памяти несколько накладно, т.к. RAM не резиновая. Правильным подходом будет выделять память только когда нужно и освобождать когда она уже не нужна. Но это требует динамического менеджмента памяти, что мало кто использует. Второе что полезно использовать это планировщик для асинхронных задач, да и вообще все использовать асинхронное... Вот по этой причине GyverPortal на данном этапе годится разве что для ознакомления, если же потребуется более основательная и эффективная работа - то вам в тему EmbUI :)
 
  • Лойс +1
Реакции: ASM

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@Divin,
обновил общий скетч, в настройках есть переключатель: есть модуль RTC или нет) проверь у себя)
 

Вложения

Изменено:
  • Лойс +1
Реакции: Divin

Divin

★★★★✩✩✩
30 Янв 2021
458
204
@ASM, как то не очень
C++:
Arduino: 1.8.13 (Windows 7), Плата:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, Flash, Legacy (new can return nullptr), All SSL ciphers (most compatible), 4MB (FS:2MB OTA:~1019KB), 2, v2 Lower Memory, Disabled, None, All Flash Contents, 115200"


Компиляция скетча...

"C:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\python3\\3.7.2-post1/python3" "C:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4/tools/signing.py" --mode header --publickey "F:\\arduino\\Clock_ESP_8/public.key" --out "C:\\Users\\viktor\\AppData\\Local\\Temp\\arduino_build_959665/core/Updater_Signing.h"

"C:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-4-b40a506/bin/xtensa-lx106-elf-g++" -D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4/tools/sdk/include" "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4/tools/sdk/lwip2/include" "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4/tools/sdk/libc/xtensa-lx106-elf/include" "-IC:\\Users\\viktor\\AppData\\Local\\Temp\\arduino_build_959665/core" -c -w -Os -g -mlongcalls -mtext-section-literals -fno-rtti -falign-functions=4 -std=gnu++11 -MMD -ffunction-sections -fdata-sections -fno-exceptions -DNONOSDK22x_190703=1 -DF_CPU=80000000L -DLWIP_OPEN_SRC -DTCP_MSS=536 -DLWIP_FEATURES=1 -DLWIP_IPV6=0 -DARDUINO=10813 -DARDUINO_ESP8266_NODEMCU -DARDUINO_ARCH_ESP8266 "-DARDUINO_BOARD=\"ESP8266_NODEMCU\"" -DLED_BUILTIN=2 -DFLASHMODE_DIO -DESP8266 "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\cores\\esp8266" "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\variants\\nodemcu" "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\libraries\\ESP8266WiFi\\src" "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\libraries\\ESP8266WebServer\\src" "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\libraries\\ESP8266mDNS\\src" "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\libraries\\ESP8266HTTPUpdateServer\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\NTPClient_Generic\\src" "-IC:\\Program Files (x86)\\Arduino\\libraries\\Time" "-IC:\\Program Files (x86)\\Arduino\\libraries\\RTClib" "-IC:\\Program Files (x86)\\Arduino\\libraries\\FastLED\\src" "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\libraries\\Wire" "-IC:\\Program Files (x86)\\Arduino\\libraries\\SparkFun_BME280\\src" "-IC:\\Users\\viktor\\AppData\\Local\\Arduino15\\packages\\esp8266\\hardware\\esp8266\\2.7.4\\libraries\\SPI" "-IC:\\Program Files (x86)\\Arduino\\libraries\\OneWire" "-IC:\\Program Files (x86)\\Arduino\\libraries\\DallasTemperature" "C:\\Users\\viktor\\AppData\\Local\\Temp\\arduino_build_959665\\sketch\\Clock_ESP_8.ino.cpp" -o "C:\\Users\\viktor\\AppData\\Local\\Temp\\arduino_build_959665\\sketch\\Clock_ESP_8.ino.cpp.o"

In file included from F:\arduino\Clock_ESP_8\Clock_ESP_8.ino:16:0:

C:\Program Files (x86)\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:\Program Files (x86)\Arduino\libraries\FastLED\src/FastLED.h:65:0,

                 from F:\arduino\Clock_ESP_8\Clock_ESP_8.ino:16:

C:\Program Files (x86)\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:\Program Files (x86)\Arduino\libraries\FastLED\src/FastLED.h:48:0,

                 from F:\arduino\Clock_ESP_8\Clock_ESP_8.ino:16:

C:\Program Files (x86)\Arduino\libraries\FastLED\src/fastpin.h: In instantiation of 'class FastPin<12u>':

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

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

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

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

F:\arduino\Clock_ESP_8\Clock_ESP_8.ino:102:56:   required from here

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

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

  ^

Используем библиотеку ESP8266WiFi версии 1.0 из папки: C:\Users\viktor\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WiFi

Используем библиотеку ESP8266WebServer версии 1.0 из папки: C:\Users\viktor\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266WebServer

Используем библиотеку ESP8266mDNS версии 1.2 из папки: C:\Users\viktor\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266mDNS

Используем библиотеку ESP8266HTTPUpdateServer версии 1.0 из папки: C:\Users\viktor\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\ESP8266HTTPUpdateServer

Используем библиотеку NTPClient_Generic версии 3.7.1 из папки: C:\Program Files (x86)\Arduino\libraries\NTPClient_Generic

Используем библиотеку Time версии 1.6 из папки: C:\Program Files (x86)\Arduino\libraries\Time

Используем библиотеку RTClib версии 1.12.5 из папки: C:\Program Files (x86)\Arduino\libraries\RTClib

Используем библиотеку FastLED версии 3.4.0 из папки: C:\Program Files (x86)\Arduino\libraries\FastLED

Используем библиотеку Wire версии 1.0 из папки: C:\Users\viktor\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\Wire

Используем библиотеку SparkFun_BME280 версии 2.0.9 из папки: C:\Program Files (x86)\Arduino\libraries\SparkFun_BME280

Используем библиотеку SPI версии 1.0 из папки: C:\Users\viktor\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.4\libraries\SPI

Используем библиотеку OneWire версии 2.3.5 из папки: C:\Program Files (x86)\Arduino\libraries\OneWire

Используем библиотеку DallasTemperature версии 3.9.0 из папки: C:\Program Files (x86)\Arduino\libraries\DallasTemperature

exit status 1

Ошибка компиляции для платы NodeMCU 1.0 (ESP-12E Module).
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@Divin,
попробуй исправить пин ленты, я дописывал букву D, вспоминая твои слова)
 

maksland

★★★✩✩✩✩
13 Янв 2019
611
143
Omsk
#define DOTS_NUM 2 // задаём сколько у нас разделительных - я так понимаю если мы хотим точки покрупнее сделать то можем указать 4 , 6, 8 и соответственно на одну точку у нас будет 2, 3, 4 светодиода ?
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@maksland, ага) только немного код дописать с точками) хотя можно доделать хотя бы несколько вариантов, 2,4,6,8 больше уж вряд ли надо будет))
переделал под 2/4/6/8 точек) если нужно, проверь)
@kamikadzze, тоже, если возможно)
 

Вложения

Изменено:
  • Лойс +1
Реакции: kamikadzze

maksland

★★★✩✩✩✩
13 Янв 2019
611
143
Omsk
не .... мне 2 хватит :) это @kamikadzze надо
хотя попросили в школу сделать, в фойе. Спросил какие размеры - в воздухе начертили примерно как у kamikadzze.
Делать надо так как директор школы часто забирает мои радиодетали из города :(
Еще хотел чтобы часы сигнал выдавали на звонок но я отговорил :) еще по размеру надо отговорить !
 

Leon111_09

★★★✩✩✩✩
6 Июн 2021
641
149
56
Таганрог
forum.wisecomp.ru
Ребят, я тут плату развел под часы на базе модуля ESP-12. Бюджетную плату: односторонний гетинакс. Даже что-то наподобие шелкографии получилось-вторую половину схемы переводить надо после травления на тыльную сторону. Печатал на фольге, при 110% увеличении-тогда контакты совпадают полностью.
1234567.jpg 7654321.jpg

P.S.Чуть не забыл упомянуть о косяке: там от контура USB почему то отпечаталась черта. Ее обязательно надо удалить после протравки, иначе будет КЗ. Я на скрине отметил ту черту. Она по идее должна была уйти в шелкографию,но почему-то отобразилась как дорожка. А заметил я ее только сейчас,когда плату уже протравил.
 

Вложения

Изменено:
  • Лойс +1
Реакции: Divin и ASM

kamikadzze

✩✩✩✩✩✩✩
3 Ноя 2020
23
1
@ASM
я уже подправил код в 5 версии. Но завтра загружу ваш для проверки. Все как вы тогда описали,-работают
 
  • Лойс +1
Реакции: ASM

kamikadzze

✩✩✩✩✩✩✩
3 Ноя 2020
23
1
@maksland,
С размерами на самом деле ничего сложного. Что под 4 диода, что под 6, как по мне разницы нет. Шаблон индикатора(табло если нужно) для лазера почти готов. Вырезал себе, надо пару косяков исправить.
 

maksland

★★★✩✩✩✩
13 Янв 2019
611
143
Omsk
а какое потребление получается с 4 светодиодами ? проблема с питанием встаёт в плане 5в
для 1-2 светиков на сегмент хватает и 2А DCDC и все на одной плате сделать можно
хотя сейчас модули есть и до 4А уже (у Лисина на ютубе обзор есть ) но там корпус ужас :)
@kamikadzze покажите что вырезано и чем закрываете табло для рассеивания?
а чем SK6812 от ws2812 отличаются ? хочу еще настольные моноплатные микрочасики сделать - у них корпус 3.5 мм (и даже 2 на 2 мм )
+ потребление есть на 5ма и 12ма (на цвет)
 
Изменено:

kamikadzze

✩✩✩✩✩✩✩
3 Ноя 2020
23
1
@ASM,
Прошил версию 8 с разделительными точками. Все работает в выводе на экран, но есть баг с ds3231. У меня она есть и в настройках оставил 1. Но стоило передернуть батарейку, время 0.00 и с инета не тянет. Вайфай работает. Все в норме. Прошиваю эту же версию с настройкой 0, синхронизация проходит.
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@kamikadzze, если время обнулить, то синхронизация не работает с включенным rtc?, я так понял?)
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@kamikadzze, посмотрю, по идее не должно быть такого, в мониторе что пишет?) Может не правильно обрабатывается новая библиотека, у меня были подозрения, но лень было лезть и вытаскивать батарейку)
 

kamikadzze

✩✩✩✩✩✩✩
3 Ноя 2020
23
1
@ASM,
В Монитор порта завтра залезу. Лог пришлю. Да я сам случайно это обнаружил.
 

ASM

★★★★★✩✩
26 Окт 2018
1,918
422
@kamikadzze, программно задал неверное время, вижу проблему)
исправил, урра) на библиотеке NTPClient...
 
Изменено:
  • Лойс +1
Реакции: kamikadzze