Монитор параметров ПК+часы и метеостанция

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
Собственно вдохновился давним проектом Гайвера, но кардинально изменил подход к реализации
IMG_20221110_210303.jpg
Собственно вдохновился давним проектом Гайвера, но кардинально изменил подход к реализации
1. Из-за недостатка свободных USB портов параметры работы ПК из Libre Hardware Monitor получаю по WiFi. Для этого в LHM есть такая удобная функция как Web сервер, откуда средствами ESP8266 качаю JSON и произвожу парсинг данных. Плюс данного подхода - это возможность расположить устройство в любом удобном месте не заботясь о длине проводов, наличии свободных USB разъемов и прочего.Также есть это возможность выводить любые данные на экран дисплея, а не только те которые выводит в COM порт автор мода LHM. Да и версия Hardware Monitor подойдет любая свежая. Очевидный минус подхода - парсинг JSON lидет гораздо медленнее, чем чтение из COM порта
2. ЖК экран 2004 имет кучу достоинств, типа дешевизны и простоты подключения, но габариты у него, что-то не особо радуют, да и отображаемая картинка в целом тоже. Поэтому для проекта использовал, так кстати купленный на недавней распродаже на алике за смешные 180 рублей TFT 1.8 дисплей с SPI интерфейсом. И габариты поменьше и картинка глазу приятнее
3. Так как решил получать данные с ПК по воздуху, то и микроконтроллер вместо Arduino использовал на базе ESP8266 - Wemos d1 mini
4. Помимо непосредственно, чтения датчиков решил добавить еще и отображение графиков температуры процессора и видеокарты. Не так чтобы особо нужная фича, но сделал просто чтобы была. Может кому пригодится
5. Через несколько дней использования, понял что мне очень не хватает отображения текущего времени на экране дисплея. Добавил синхронизацию времени по NTP протоколу и отображение его на экране
6. Опять же, довольно скоро понял, что раз уж устройство работает независимо от ПК, то надо что-то делать когда компьютер выключен. Просто отправлять устройство в спячку и выключать экран мне показалось не интересно, поэтому решил пусть уж тогда погоду хоть показывает. Поэтому прикрутил еще и поддержку получения текущих погодных параметров с Open Weather Map

Использовал Wemos D1 mini так что названия пинов будут с него
1.8 TFT Wemos
LED 3V3
SCK D5
SDA D7
A0 D1
RESET D6
CS D8
GND GND
VCC 5V

Тач кнопка
VCC 5V(можно и 3V3. Говорят работать будет стабильнее)
GND GND
OUT D2

Настройка перед компиляцией осуществляется в скетче
2022-11-10_22-02-22.png
В целом если вдруг пропустили этот шаг, то ничего страшного не произойдет. При первом запуске если устройство не сможет подключиться ни к одной известной сети, то оно перейдет в режим в точки доступа с именем PCDisplay. После чего подключившись к ней через смартфон и перейдя по адресу 192.168.4.1 можно настроить подключение к интернету
В переменной dataServer нужно прописать ip адрес вашего пк с запущенным Libre Hardware Monitor и обязательно удостовериться, что данная галочка стоит на месте
2022-11-10_22-10-24.png
А также не забыть в настройках брэндмауэра ПК разрешить доступ для входящих подключений в локальной сети по 8085 порту
Также изменение значения переменной dataServer возможно и через Web интерфейс по адресу http:\\ip.ad.re.ss Сам IP выданный устройству можно посмотреть либо в настройках роутера, либо на экране устройства после перезагрузки при удачном подключении к WiFi
Чтобы отображалась погода необходимо прежде всего получить ключ API Open Weather Map. Это не сложно. Нужно просто зарегистрироваться на сайте https://openweathermap.org, перейти в личный кабинет, на вкладке API keys ввести имя ключа и нажать Generate. Полученное значение вставить в скетч как значение константы const String api_key = "xxxxxxxxxxxxxxxxxx"; вместо xxxxxxxxxxxxx в кавычках. В значении константы qLocation указать свой город. На этом настройка закончена
Ядро ESP8266 использовать 3.0 и выше!
ArduinoJSON 6 версии

IMG_20221110_210303.jpg
IMG_20221110_210313.jpgIMG_20221110_210322.jpgIMG_20221110_210334.jpg
Скачать архив со скетчем и 3d моделью корпуса можно во вложении

Скетч обновлен. Просьба перекачать файл во вложении. Список изменений в постах данной темы
 

Вложения

Изменено:

Mishanya TS

★★★★✩✩✩
11 Дек 2019
358
283
Здравствуйте, решил проверить прошивку, пока дисплей идет, библиотеки закинул, но ошибку пишет
call of overloaded 'String(ArduinoJson6194_F1::enable_if<true, ArduinoJson6194_F1::MemberProxy<ArduinoJson6194_F1::ElementProxy<ArduinoJson6194_F1::MemberProxy<ArduinoJson6194_F1::ElementProxy<ArduinoJson6194_F1::MemberProxy<ArduinoJson6194_F1::JsonDocument&, const char*> >, const char*> >, const char*> >::type)' is ambiguous
и выделяет срочку
Ошибка:
   cpuName = String(doc["Children"][0]["Children"][1]["Text"]);
   cpuTempPackage = String(doc["Children"][0]["Children"][1]["Children"][1]["Children"][8]["Value"]);
   cpuLoad = String(doc["Children"][0]["Children"][1]["Children"][2]["Children"][0]["Value"]);
   gpuName = String(doc["Children"][0]["Children"][3]["Text"]);
   gpuHotSpot = String(doc["Children"][0]["Children"][3]["Children"][1]["Children"][0]["Value"]);
   gpuLoad = String(doc["Children"][0]["Children"][3]["Children"][2]["Children"][0]["Value"]);
 
Изменено:

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
Удалил уже у себя все настройки связанные с проектом, и не могу вспомнить почему у меня это все компилировалось и работало без проблем, но в целом могу предложить вот такое костыльное решение. Замените файл в проекте на аналогичный из вложения
 

Вложения

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

Mishanya TS

★★★★✩✩✩
11 Дек 2019
358
283
Спасибо, все завелось, осталось подождать дисплей
 

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
В общем все работет и без костылей. Просто в менеджере плат версия esp8266 должна быть выше 3.0. На 3.1.1 полет нормальный. Компилируется и работает. Как раз немного код допилил на днях. Плюс экран статистики по доходу в РСЯ еще добавил. Но это кроме меня мало кому нужно, так что выкладывать не буду
 
  • Лойс +1
Реакции: Mishanya TS

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
Доход от рекламы на сайте. Сбор ее отключить можно. Но в целом никому кроме меня не нужно
 
  • Лойс +1
Реакции: Mishanya TS

Mishanya TS

★★★★✩✩✩
11 Дек 2019
358
283
Если что то еще меняли в прошивке, можете выкладывать, без статистики
 

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
Ладно. Чуть позже выложу обновленную версию. По сути там слегка причесал код и немного оптимизировал потребление памяти. Интервалы опросов датчиков увеличил на экранах, где вывод их значений не требуется. В общем ничего кардинально не менял.Ну и сам экран статистики добавил
IMG_20230124_102035.jpg
 
  • Лойс +1
Реакции: Mishanya TS

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
Новая версия
  • Оптимизировал парсинг JSON файла. Теперь ест не так много ресурсов и работает существенно быстрее.
  • Добавил информер Рекламной сети Яндекс на отдельный экран. Показывает статистику дохода за месяц, строит графики и т.п. По умолчанию отключен.
Чтобы включить новый информер необходимо произвести несколько нехитрых действий
1. На вкладке PCdisplay находим строку вида
String token="OAuth xxxxxxxxxxxxxxxxxxxxxx";
Меняем xxxxxxxxxxxxxxxxxxxxxxxxxxx на токен РСЯ. Как его получить можно узнать здесь - Получение данных о доходе РСЯ через API на ESP8266
2. Далее находим функцию:
C++:
IRAM_ATTR void btn_read(){
   if (butt1.click()) {
    tft.fillScreen(ST77XX_BLACK);
  screen++;
  if (screen>3) screen=0;
  }
 }
И меняем значение в условии screen>3 на screen>4
3. Находим и раскомментируем строку
//refmoney.setInterval(600000); //10 минут
И, наконец, раскомментируем следующий код
C++:
/*if (refmoney.isReady()){
 moneycheck(); //синхронизация партнерки яндекс
 }*/
Как, в итоге, это будет выглядеть, можно увидеть постом выше

И чуть не забыл. Ядро ESP8266 в менеджере плат выбираем 3.0 и выше. ArduinoJSON 6 версии
 

Вложения

  • Лойс +1
Реакции: Mishanya TS

Mishanya TS

★★★★✩✩✩
11 Дек 2019
358
283
Пришел дисплей, все спаял по схеме, горит просто белый экран, версия платы 3.1.1
PcDisplay.png
 

Mishanya TS

★★★★✩✩✩
11 Дек 2019
358
283
Заработало. А где в прошивке поковырять настройки, значения CPU и GPU RAM не отображает, или это в программе надо настраивать?
 

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
Сначала в браузере по этому адресу перейдите http://вашIP:8085/data.json
Откроется JSON. Скопируте весь текст что он выдаст в буфер обмена затем зайдите на сайт
В левое окно вставьте текст. В правом ищите значение CPU package
Кликните мышью на значении Value и вверху окна появится полный путь к этому параметру
2023-02-01_12-25-47.png
Его значение и вбейте в процедуре парсинга json функции HardwareMonitor. Например значение температуры процессора читается здесь
Код:
String cpuTempPackage = doc["Children"][0]["Children"][1]["Children"][1]["Children"][10]["Value"];
Сверяемся с картинкой и пишем значения Children в квадратных скобках. Также и остальные параметры исправить, которые не отображаются
 
  • Лойс +1
Реакции: Mishanya TS

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
Загрузка процессора CPU Total
температура и загрузка видеокарты Находится по GPU Core
GPU RAM по GPU Memory Free и GPU Memory Used
короче в поиске в правом окне вбиваете и ищите то что нужно отображать. Потом полный путь из всех Children вбиваете в скетч в парсинге Json
 
  • Лойс +1
Реакции: Mishanya TS

Mishanya TS

★★★★✩✩✩
11 Дек 2019
358
283
Спасибо, настроил под себя все параметры. Буду заказывать побольше экран
 

alserk3

✩✩✩✩✩✩✩
14 Фев 2023
3
0
Здравствуйте, интересный проект. Подскажите, почему не подключается к точке доступа, ssid и пароль прописан в скетче.. После настройки черерез веб получает адрес и снова запись на экране подключиться к адресу 192.168.4..1
 

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
SSID и PASS точно правильно прописаны? И попробуйте через WiFi менеджер по 192.168.4.1 настроить подключение. Или прошивку залейте с полным форматированием флеш памяти. Если. Esp не новая возможно хвосты от предыдущего проекта остались
 

alserk3

✩✩✩✩✩✩✩
14 Фев 2023
3
0
Ssid пароль точно правильные, через веб временами подключается, делал полное форматирование. Если получается подключится чере веб, то после ресета, просит опять зайти на адрес 192.168.4.1, хотя она подключается к домашней сети, через роутер её видно, подключиться не получается
 

altJSV

★✩✩✩✩✩✩
23 Фев 2021
29
21
38
projectalt.ru
А что насчет разбивки файловой системы? FS 2mb, OTA 1мб

Так то на 3 esp тестировал. 2 wemos Mimi и один NodeMCU. Код рабочий. Плюс некоторые участки кода в других своих проектах использовал.