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

altJSV

✩✩✩✩✩✩✩
23 Фев 2021
20
4
37
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 D7
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 моделью корпуса можно во вложении

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

Вложения

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

altJSV

✩✩✩✩✩✩✩
23 Фев 2021
20
4
37
projectalt.ru
@Mishanya TS, библиотека то поддерживает, но весь интерфейс под тот дисплей, что у меня под рукой был рисовал
 

Mishanya TS

★★★✩✩✩✩
11 Дек 2019
198
142
Здравствуйте, решил проверить прошивку, пока дисплей идет, библиотеки закинул, но ошибку пишет
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
20
4
37
projectalt.ru
Удалил уже у себя все настройки связанные с проектом, и не могу вспомнить почему у меня это все компилировалось и работало без проблем, но в целом могу предложить вот такое костыльное решение. Замените файл в проекте на аналогичный из вложения
 

Вложения

Изменено:

Mishanya TS

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

altJSV

✩✩✩✩✩✩✩
23 Фев 2021
20
4
37
projectalt.ru
В общем все работет и без костылей. Просто в менеджере плат версия esp8266 должна быть выше 3.0. На 3.1.1 полет нормальный. Компилируется и работает. Как раз немного код допилил на днях. Плюс экран статистики по доходу в РСЯ еще добавил. Но это кроме меня мало кому нужно, так что выкладывать не буду
 

Mishanya TS

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

altJSV

✩✩✩✩✩✩✩
23 Фев 2021
20
4
37
projectalt.ru
Ладно. Чуть позже выложу обновленную версию. По сути там слегка причесал код и немного оптимизировал потребление памяти. Интервалы опросов датчиков увеличил на экранах, где вывод их значений не требуется. В общем ничего кардинально не менял.Ну и сам экран статистики добавил
IMG_20230124_102035.jpg
 

altJSV

✩✩✩✩✩✩✩
23 Фев 2021
20
4
37
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(); //синхронизация партнерки яндекс
 }*/
Как, в итоге, это будет выглядеть, можно увидеть постом выше
 

Вложения