Монитор погоды на ESP32 и дисплее Nextion
- himikat123
- Электрический кот
- Сообщения: 1078
- Зарегистрирован: Ср фев 15, 2017 22:37:11
- Контактная информация:
Re: Монитор погоды на ESP32 и дисплее Nextion
Ну, для начала перепрошить всё попробуйте. Другой блок питания подкиньте.
- Реклама
Re: Монитор погоды на ESP32 и дисплее Nextion
Добрый день.Пятивольтовый адаптер питания я поменял сразу же,как возникла проблема.Безрезультатно.Сегодня перепрошился,и все стало хорошо.Еще раз спасибо Автору за замечательный и "душевный" мониторчик. 
Re: Монитор погоды на ESP32 и дисплее Nextion
Народ подскажите а где почитать про большие часы к этому изделию??
Re: Монитор погоды на ESP32 и дисплее Nextion
[uquote="toka2000",url="/forum/viewtopic.php?p=4315372#p4315372"]Народ подскажите а где почитать про большие часы к этому изделию??[/uquote]
Здесь, в этой ветке и почитать.
Здесь, в этой ветке и почитать.
- Реклама
- himikat123
- Электрический кот
- Сообщения: 1078
- Зарегистрирован: Ср фев 15, 2017 22:37:11
- Контактная информация:
Re: Монитор погоды на ESP32 и дисплее Nextion
Тут можно почитать https://radiokot.ru/forum/viewtopic.php ... &start=100
Правда написано там почти ничего. Но если есть вопросы - ответим
Правда написано там почти ничего. Но если есть вопросы - ответим
Re: Монитор погоды на ESP32 и дисплее Nextion
Вопрос один схемку подключения поподробнее бы. Заказал корпус есть желание прикрутить
- himikat123
- Электрический кот
- Сообщения: 1078
- Зарегистрирован: Ср фев 15, 2017 22:37:11
- Контактная информация:
Re: Монитор погоды на ESP32 и дисплее Nextion
Повторил авторскую идею, реализация вполне успешная, но появилась необходимость выносные часы сделать шнуро независимыми так как от базы они находятся в 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, 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"];
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);
}
Может кому то понадобиться. По такому принципу в основному монитору погоды можно подключить насколько выносных часов. Спасибо автору за приветливое общение и отзывчивость!!.
во вкладке 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, 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"];
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);
}
Может кому то понадобиться. По такому принципу в основному монитору погоды можно подключить насколько выносных часов. Спасибо автору за приветливое общение и отзывчивость!!.
- himikat123
- Электрический кот
- Сообщения: 1078
- Зарегистрирован: Ср фев 15, 2017 22:37:11
- Контактная информация:
Re: Монитор погоды на ESP32 и дисплее Nextion
toka2000, спасибо что поделились!
ЗЫ. Мне тоже как-то понадобилось сделать выносной экран шнуронезависимым. Так вот, мне было лень городить огород из передатчиков/приемников, ардуин и кучи программного кода, поэтому я просто взял еще одну ESP32, прошил ее той же прошивкой монитора погоды и подключил к ней только этот "выносной" диплей, без nextion дисплея.
ЗЫЗЫ. Это как вариант для ленивых.
ЗЫ. Мне тоже как-то понадобилось сделать выносной экран шнуронезависимым. Так вот, мне было лень городить огород из передатчиков/приемников, ардуин и кучи программного кода, поэтому я просто взял еще одну ESP32, прошил ее той же прошивкой монитора погоды и подключил к ней только этот "выносной" диплей, без nextion дисплея.
ЗЫЗЫ. Это как вариант для ленивых.
- himikat123
- Электрический кот
- Сообщения: 1078
- Зарегистрирован: Ср фев 15, 2017 22:37:11
- Контактная информация:
Re: Монитор погоды на ESP32 и дисплее Nextion
Здравствуйте. Зайдите в веб интерфейс и нажмите там кнопку "дверь". Или просто нажмите и подержите кнопку "Settings" на самом приборе
Re: Монитор погоды на ESP32 и дисплее Nextion
Здравствуйте himikat123 . Огромное вам спасибо за проект! Были сомнения в повторении (только из за цены на дисплей), но радиолюбительский интерес взял верх, собрал модули на макетной плате вместо дисплея включил эмуляцию в nextion editor. И был впечатлен! Плюс настройка и работа в браузере! Дисплей уже заказан. И я смотрю появилась следующая версия прошивки 3.0 с добавлением возможностей. Еще раз спасибо за труд и новых идей!
- himikat123
- Электрический кот
- Сообщения: 1078
- Зарегистрирован: Ср фев 15, 2017 22:37:11
- Контактная информация:
Re: Монитор погоды на ESP32 и дисплее Nextion
Спасибо VR70, за положительный отзыв.
Версия 3.0 пока только бетта, проходит тестирование и еще недоступна для скачивания. Но статью я уже обновил, готовлюсь к релизу
Версия 3.0 пока только бетта, проходит тестирование и еще недоступна для скачивания. Но статью я уже обновил, готовлюсь к релизу
- samand587
- Поставщик валерьянки для Кота
- Сообщения: 2312
- Зарегистрирован: Вт фев 21, 2017 18:59:21
- Откуда: Седой Урал
Re: Монитор погоды на ESP32 и дисплее Nextion
himikat123, статью прочитал- отличная работа! Марку держите на высоте! 
- himikat123
- Электрический кот
- Сообщения: 1078
- Зарегистрирован: Ср фев 15, 2017 22:37:11
- Контактная информация:
Re: Монитор погоды на ESP32 и дисплее Nextion
Вышло большое обновление, версия 3.0. https://github.com/himikat123/Weather-monitor-BIM32
Краткий список нового:
- Прибор больше не перезагружается сам по себе, если нет интернета
- Добавлена поддержка дисплея NX4832T035
- Добавлен будильник и говорящие часы
- Добавлен аналоговый датчик освещенности (фоторезистор)
- Два беспроводных датчика
- Настройки через тачскрин дисплея больше невозможны
- Новый веб-интерфейс настроек (быстрый и отзывчивый)
- Более гибкие настройки
- Новое описание и схемы
- Новый корпус для печати на 3д принтере
Ну и по мелочи много всего, уже и не припомню..
Всех с наступающим новым годом!
Краткий список нового:
- Прибор больше не перезагружается сам по себе, если нет интернета
- Добавлена поддержка дисплея NX4832T035
- Добавлен будильник и говорящие часы
- Добавлен аналоговый датчик освещенности (фоторезистор)
- Два беспроводных датчика
- Настройки через тачскрин дисплея больше невозможны
- Новый веб-интерфейс настроек (быстрый и отзывчивый)
- Более гибкие настройки
- Новое описание и схемы
- Новый корпус для печати на 3д принтере
Ну и по мелочи много всего, уже и не припомню..
Всех с наступающим новым годом!
- samand587
- Поставщик валерьянки для Кота
- Сообщения: 2312
- Зарегистрирован: Вт фев 21, 2017 18:59:21
- Откуда: Седой Урал
Re: Монитор погоды на ESP32 и дисплее Nextion
himikat123, здравствуйте!
Спасибо! Разобрался!
З.Ы. Перешел на версию 3.0. Отличная работа!
З.Ы. Перешел на версию 3.0. Отличная работа!
Последний раз редактировалось samand587 Сб дек 17, 2022 19:07:06, всего редактировалось 2 раза.
Re: Монитор погоды на ESP32 и дисплее Nextion
Отличная новость! Спасибо himikat123 и с наступающим новым годом!
Re: Монитор погоды на ESP32 и дисплее Nextion
А я немного по-другому поступаю. В папке data есть файл config.json. Вот туда прописываю параметры сети, ну а после прошивки настраиваю все остальное.
- samand587
- Поставщик валерьянки для Кота
- Сообщения: 2312
- Зарегистрирован: Вт фев 21, 2017 18:59:21
- Откуда: Седой Урал
Re: Монитор погоды на ESP32 и дисплее Nextion
Почему то не идет прогноз погоды. Что может быть? 


