Заголовок сообщения: Re: Монитор погоды на ESP32 и дисплее Nextion
Добавлено: Ср ноя 02, 2022 09:22:08
Открыл глаза
Зарегистрирован: Пт сен 27, 2019 14:32:31 Сообщений: 41
Рейтинг сообщения:0
Добрый день.Пятивольтовый адаптер питания я поменял сразу же,как возникла проблема.Безрезультатно.Сегодня перепрошился,и все стало хорошо.Еще раз спасибо Автору за замечательный и "душевный" мониторчик.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Подключается все это к GPIO12, питать часы можно и от монитора погоды, главное блок питания на 2А и больше. Если светодиоды очень китайские то часы не заведутся так просто, придется городить преобразователь 3.3В -> 5В чтоб согласовать логические уровни.
Повторил авторскую идею, реализация вполне успешная, но появилась необходимость выносные часы сделать шнуро независимыми так как от базы они находятся в 6-8 метрах. Для реализации разноса был организован радиоканал на НС-12, с разносом частоты. Для формирования массива который передается по радиоканалу в скетч добавлены несколько строк. было несколько попыток организовать еще один серийный порт, однако практика показала что при обработке SofеwareSerial богат на ошибки при формировании массива. Использовал серийный порт (закомментировал всю отладочную информацию) за 12 часов прогона не было ни одной ошибки. во вкладке extra_clock добавления: pix = "{\"p\":["; for(uint8_t i=0; i<30; i++){ if(clock_pixels){ switch(config.dc[snum]){ case 65535: strip.SetPixelColor(i, white);zz=1; break; case 63488: strip.SetPixelColor(i, red); zz=2; break; case 2016: strip.SetPixelColor(i, green);zz=3; break; case 31: strip.SetPixelColor(i, blue); zz=4; break; case 65504: strip.SetPixelColor(i, yellow);zz=5; break; case 2047: strip.SetPixelColor(i, cyan); zz=6; break; case 63519: strip.SetPixelColor(i, purple);zz=7; break; default: ;zz=0; break;} } else strip.SetPixelColor(i, black); pix = pix + String(clock_pixels[i], DEC); if (i < 29){pix = pix + ",";} } pix = pix + "],\"z\":" + zz + "}"; Serial.println(pix); strip.Show(); pix =""; vTaskDelay(500); } } Таким образом сформирован массив pix , информация о цвете сохраняется в переменной zz и хранится в конце массива.
Приемная часть выносных часов собрана на Arduino mini. там же размещен датчик освещенности ВН-1750. массив принимается на НС-12 подключенному также к серийному порту для снижения вероятности ошибок. Яркость повышается и понижается плавно при изменении освещенности. Скетч приемной части:
#include <Arduino_JSON.h> #include <NeoPixelBus.h> #include <NeoPixelBrightnessBus.h> #include <Wire.h> #include <BH1750.h> BH1750 lightMeter; const uint16_t PixelCount = 30; const uint8_t PixelPin = 2; #define colorSaturation 250 RgbColor red(colorSaturation, 0, 0); RgbColor yellow(colorSaturation, colorSaturation, 0); RgbColor green(0, colorSaturation, 0); RgbColor cyan(0, colorSaturation, colorSaturation); RgbColor blue(0, 0, colorSaturation); RgbColor purple(colorSaturation, 0, colorSaturation); RgbColor white(colorSaturation); RgbColor black(0); NeoPixelBrightnessBus<NeoGrbFeature, Neo800KbpsMethod> strip(PixelCount, PixelPin); String str_r = ""; uint8_t z = 0; int z1 = 0; uint16_t i = 0; unsigned int zz = 0; String jsonDocument (1024); int brightness = 25; void setup() { Serial.begin(115200); Serial.flush(); strip.Begin(); strip.Show(); lightMeter.begin(BH1750::CONTINUOUS_HIGH_RES_MODE); } void loop() { uint8_t brightness1 = strip.GetBrightness(); uint16_t lux = lightMeter.readLightLevel(); Serial.println(brightness1); lux = round(lux*30/100); if (lux > 250) lux= 250; if (lux < 10) lux= 10; if (lux > brightness1) {if ((lux - brightness1) > 10){ brightness = brightness + 10;}else{++brightness;}} if (lux < brightness1) {if ((brightness1 - lux) > 10){ brightness = brightness - 10;}else{--brightness;}} Serial.println(lux); if (Serial.available()) { str_r = Serial.readStringUntil('\n'); if (str_r.lastIndexOf("{") != -1) { JSONVar myOb = JSON.parse(str_r); if (JSON.typeof(myOb) != "undefined") { int z1 = myOb["z"]; // читаю признак цвета for (i = 0; i < 30; i++) { // читаю и присваиваю из массива int mm = myOb["p"][i]; if (mm == 1) { switch (z1) { case 1: strip.SetPixelColor(i, white); ; break; // присваиваю цвет case 2: strip.SetPixelColor(i, red); ; break; case 3: strip.SetPixelColor(i, green); ; break; case 4: strip.SetPixelColor(i, blue); ; break; case 5: strip.SetPixelColor(i, yellow); ; break; case 6: strip.SetPixelColor(i, cyan); ; break; case 7: strip.SetPixelColor(i, purple); ; break; } } else {strip.SetPixelColor(i, black);} } strip.SetBrightness(brightness); strip.Show(); str_r = ""; z1 = 0; } } } delay(500); }
Может кому то понадобиться. По такому принципу в основному монитору погоды можно подключить насколько выносных часов. [i]Спасибо автору за приветливое общение и отзывчивость!!.
ЗЫ. Мне тоже как-то понадобилось сделать выносной экран шнуронезависимым. Так вот, мне было лень городить огород из передатчиков/приемников, ардуин и кучи программного кода, поэтому я просто взял еще одну ESP32, прошил ее той же прошивкой монитора погоды и подключил к ней только этот "выносной" диплей, без nextion дисплея. ЗЫЗЫ. Это как вариант для ленивых.
Здравствуйте himikat123 . Огромное вам спасибо за проект! Были сомнения в повторении (только из за цены на дисплей), но радиолюбительский интерес взял верх, собрал модули на макетной плате вместо дисплея включил эмуляцию в nextion editor. И был впечатлен! Плюс настройка и работа в браузере! Дисплей уже заказан. И я смотрю появилась следующая версия прошивки 3.0 с добавлением возможностей. Еще раз спасибо за труд и новых идей!
Спасибо VR70, за положительный отзыв. Версия 3.0 пока только бетта, проходит тестирование и еще недоступна для скачивания. Но статью я уже обновил, готовлюсь к релизу
Вышло большое обновление, версия 3.0. https://github.com/himikat123/Weather-monitor-BIM32 Краткий список нового: - Прибор больше не перезагружается сам по себе, если нет интернета - Добавлена поддержка дисплея NX4832T035 - Добавлен будильник и говорящие часы - Добавлен аналоговый датчик освещенности (фоторезистор) - Два беспроводных датчика - Настройки через тачскрин дисплея больше невозможны - Новый веб-интерфейс настроек (быстрый и отзывчивый) - Более гибкие настройки - Новое описание и схемы - Новый корпус для печати на 3д принтере Ну и по мелочи много всего, уже и не припомню.. Всех с наступающим новым годом!
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 46
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения