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


