Мультиинформер. Проект универсального информера на базе ESP32
Мультиинформер. Проект универсального информера на базе ESP32
Мультиинформер. Проект универсального информера на базе ESP32
Версия для печати

Мультиинформер. Проект универсального информера на базе ESP32

logo

Основные возможности

  • Отображение календаря с актуальными праздниками
  • Отображение точного времени, даты с инхронизированных с NTP сервером
  • Поддержка модулей BME/BMP280 и BME680 для отображения информации о температуре, влажности, атмосферном давлении и качестве воздуха в помещении
  • Беспроводной монитор параметров ПК (температура и загрузка процессора и видеокарты, закруженность оперативной и видеопамяти, данные о сети) через программу Libre Hardware Monitor
  • Отображение погодной сводки с сайта Open Weather Maps
  • Отображение курсов валют по данным ММВБ
  • Онлайн радио плеер

Используемые компоненты

При создании проекта были использованы следующие компоненты:

Для проекта не на макетной плате Sunton-3.5inch_ESP32-3248S035, а, например, на обычном модуле ESP32 S3 dev, с любым другим внешним дисплеем в папке sunton_schemes содержатся принципиальные схемы всех элементов платы. Также если ваш дисплей имеет тач панель отличную от GT911, например XPT2046, в той же папке располагается файл touch.h с настройками для наиболее популярных тач панелей таких как GT911, XPT2046 и FT6X36. Раскоментируйте нужный вам драйвер и закоментируйте ненужные, после чего замените этим файлом одноименный в папке с проектом. И, разумеется, внесите необходимые изменения в TFT_eSPI.h Дополнительно вам понадобятся следующие компоненты:

Компиляция проекта

Сборка проекта осуществляется в Arduino IDE версии 2.x

Используемые библиотеки и ядра

В проекте используется форк библиотеки ESP32Audio I2S за авторством esphome. Стандартная версия без psram работает не очень плавно. Звук часто заикается. Так что используйте версию по ссылке выше. Также библиотека при остановке воспроизведения не совсем корректно освобождала ресурсы. Из=за чего возникали проблемы при работе устройства. Мною эта билиотека так же была немного модифицирована. В папке library_replacement_files/ESP32-audioI2S-dev содержатся модифицированные файлы библиотеки. Замените ими оригинальные. Библиотека lvgl также была немного модифицирована. Добавлено несколько новых шрифтов со спецсимволами и русскими буквами. Также добавлен файл lv_conf.h с настройками конкретно под этот проект. Для корректной компиляции проекта добавьте файлы из папки library_replacement_files/lvgl в директорию с библиотекой lvlg сохраняя всю структуру папок. Также в папке library_replacement_files\TFT_eSPI содержится файл TFT_eSPI.h с настройками дисплея макетной платы Sunton. Скопируйте его в папку библиотеки TFT_eSPI. В проекте в качестве файлового менеджера используется библиотека ESPxWebFlMgr. По умолчанию она имеет английский интерфейс. Для его частичной руссификации скопируйте в корень файловой системы устройства из папки data проекта следующие файлы: fm.css, fm.js, fm.html. Затем закомментируйте строку fileManagerServerStaticsInternally в файле ESPxWebFlMgr.h библиотеки.

Ввод персональных данных

Шаблон файла персональных данных находится в example_secrets.h. Переименуйте его в secrets.h и отредактируйте. Содержимое его выглядит так: String pc_server_path="http://ip вашего пк:8085/data.json";//адрес сервера пк //Погода String api_key = "apikey; //ваш api ключ погоды String qLocation = "Gubkin,ru"; //город для погоды //Wifi String SSID = "ssid"; String PASS = "pass";

pc_server_path= - ip адрес сервера Libre Hardware Monitor api_key = - ваш персональный ключ Open Weather Maps qLocation = - данные о вашем местоположении для Open Weather Maps SSID = - название вашей точки доступа WiFi для подключения к интернету PASS = - пароль вашей точки доступа WiFi для подключения к интернету

Эти данные нужны лишь для прошивки и первичной инициализации устройства. Позже их можно изменить в настройках мультиинформера.

Настройки компилятора

Для более комфортного прослушивания радио без фризов необходимо произвести некоторые настройки компилятора. Для этого необходимо внести изменения в файл C:\Users\ имя_пользователя \AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.9\tools\sdk\esp32\sdkconfig. Найдите и измените следующие строки:

CONFIG_LWIP_MAX_ACTIVE_TCP=512
CONFIG_LWIP_MAX_LISTENING_TCP=512
#CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
CONFIG_LWIP_TCP_MAXRTX=12
CONFIG_LWIP_TCP_SYNMAXRTX=12
CONFIG_LWIP_TCP_MSS=1460
CONFIG_LWIP_TCP_TMR_INTERVAL=200
CONFIG_LWIP_TCP_MSL=60000
CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000
CONFIG_LWIP_TCP_SND_BUF_DEFAULT=8192
CONFIG_LWIP_TCP_WND_DEFAULT=32768
CONFIG_LWIP_TCP_RECVMBOX_SIZE=32

Настройте параметры платы Arduino IDE как на скриншоте ниже:

board settings

Интерфейс

Интерфейс проекта Мультиинформер разделен на несколько экранов. Перемещение по экранам осуществялеется либо свайпами влево и вправо, либо тапом по имени вкладки в нижней части экрана.

Главный экран

main screen

Является стартовым экраном при загрузке устройства. Отображает календарь с выделением текущей даты, а также знаменательных и праздничных дней.

Также на экране отображается текущее время, синхронизированное с ntp сервером и данные полученные с подключенного датчика BME680 (температура, влажность, атмосферное давление, качество воздуха). Если датчик не подключен, то отображаются данные о погоде полученные с сайта open weather maps.

main_screen_weather

Также в нижней части экрана, если текущий день совпадает с праздничным, появляется информация об этом дне. В правой верхней части экрана отображается информация о статусе WiFi и присвоенный устройству IP адрес в локальной сети.

Экран мониторинга параметров ПК

hardwaremon

Служит для мониторинга параметров ПК посредством программы Libre Hardware Monitor. Отображает следующие параметры Процессор:

  • Температура
  • Общий процент загруженности по всем ядрам
  • Потребляемая мощность

Видеокарта

  • Температура
  • Общий процент загруженности
  • Скорость работы вентилятора в процентах

Оперативная память

  • Общее колличество памяти
  • Использованная память
  • Оставшаяся память

Видеопамять

  • Общее колличество памяти
  • Использованная память
  • Оставшаяся память

Подключение по локальной сети

  • Скорость исходящего потока
  • Скорость входящего потока

Работа данного экрана требует предварительной настройки Libre Hardware Monitor и модификации исходников программы в файле hardwaremonitor.ino. Полная инструкция по настройке приведена в этой статье.

Экран погоды

weather_screen

Экран данных о погоде полученных с сайта Open Weather Maps. Отображает следующую информацию:

  • Город
  • Направление и силу ветра
  • Температуру на улице, ее фактическое ощущение, максимум и минимум за день
  • Относительную влажность воздуха
  • Атмосферное давление
  • Видимость
  • Время рассвета и заката
  • Иконку и описание текущей погоды за окном
  • Графики изменения атмосферного давления, температуры и влажности за сутки

Для получения данных о погоде вам предварительно нужно получить API ключ с сайта Open Weather Maps по этой инструкции.

Далее ввести его либо в файл secrets.h в поле api_key = "", либо воспользоваться экраном настроек Погода непосредственно на устройстве. Аналогично укажите название города латинскими буквами в формате "City,code". Например "Gubkin,ru".

Экран курса валют

currenncy

Отображает актуальную информацию различных курсов валют по отношению к рублю. Данный экран настроек не имеет. Пролистывание списка осуществляется свайпами вверх и вниз.

Экран онлайн радио проигрывателя

radio

Позволяет проигрывать онлайн аудиопоток различных интернет-радиостанций. Остановка и запуск воспроизведения, а также переключение треков осущесвляется с помощью соответствующих кнопок. Изменение громкости осуществляется тапом по слайдеру, либо по нажатию соответствующих кнопок. Имеется простенький визуализатор аудиопотока, но на данных момент он не привязан непосредственно к самому аудио. Ниже визуализатора располагается информация о воспроизводимом в данный момент треке, если радиостанция предоставляет данную информацию. Сохранение последней воспроиведенной радиостанции и установленного уровня громкости осуществляется автоматически после нажатия кнопки остановки воспроизведения. Реализовано обнаружение низкой скорости потока. При частых фризах и подвисаниях устройство автоматически переподключается к точке доступа WiFi. Вызов списка воспроизведения, имеющихся в памяти устройства радиостанций, осуществляется по кнопке в правом нижнем углу экрана. Первый запуск плейлиста занимает некоторое время из-за индексации списка станций. Далее список открывается мгновенно.

playlist

Переключение воспроизводимой радиостанции осуществляется тапом по ее названию. Пролистывание списка осуществляется свайпами вверх и вниз. Имеется возможность отредактировать список воспроизвдения прямо на устройстве, перейдя в режим редактирования вокне списка воспроизведения, нажав на кнопку в левом верхнем углу окна. Далее тапом выбирается изменяемый параметр и с помощью экранной клавиатуры редактируется. Сохранение правок осуществляется автоматически после закрытия окна списка воспроизведения.

Настройка списка радиостанций

Для добавления новых радиостанций создайте на sd карте файл playlist.txt примерно такого вида:

http://rusradio.hostingradio.ru/rusradio128.mp3*Русское радио
http://free.radioheart.ru:8000/RH54154*Перец FM
http://radio-holding.ru:9000/marusya_default*Маруся FM
http://vladfm.ru:8000/vfm*Владивосток FM

Каждая станция начинается с новой строки. Формат следующий: url_адрес_потока*Отображаемое_имя_станции Максимальное колличество радиостанций в плейлисте - 255! Поддерживаемые форматы воспроизведения MP3, AAC и FLAC После вставки SD карты и последующей перезагрузки playlist.txt будет скопирован с SD во внутреннюю память устройства. Также вы можете скопировать данный файл во внутренню память с помощью Arduino IDE, используя Sketch Data Upload. Пример готового файла playlist.txt c 76 онлайн-радиостанциями находится в папке \data проекта.

Добавление списка радиостанций через Файловый менеджер

Также playlist.txt можно переместить и редактировать прямо на устройстве с помощью встроенного файлового менеджера. Для этого введите в адресной строке браузера компьютера или смартфона IP адрес устройства и с помощью открывшегося файлового менеджера переместите playlist.txt во внутреннюю память устройства, либо отредактируйте его прямо в браузере.

Экран настроек

На данном экране представлены различные настройки устройства разделенные на 6 категорий:

  • Основные
  • Монитор ПК
  • Погода
  • Датчик BME
  • SD карта Переключение категорий настроек осуществляется свайпами вверх и вниз, а также тапами по имени категории в левой части экрана. Сохранение настроек производится автоматически при закрытии панели настроек.

Основные

main_settings

Здесь производится настройка яркости подсветки экрана, а также включение и отключение автоматической регулировки яркости подсветки в зависимости от внешнего освещения. Также здесь можно изменть время работы RGB индикатора раздичных состояний устройства, например для его отключения в ночное время, а также отключить его совсем. Также на данном экране настроек можно установить часовой пояс для отображаемого времени на экране.

WiFi

wifi_settings

На данном экране вы можете ввести учетные данные для подключения по WiFi к вашей точке доступа, а также просмотреть информацию об активном WiFi подключении.

wifi_settings2

Монитор ПК

pc_settings

На данном экране вы можете указать адрес веб сервера Libre Hardware Monitor для чтения информации о параметрах ПК, а также изменить интервал опроса датчиков.

Погода

weather_settings

На данном экране вы может настроить параметры подключения к погодному серверу Open Weather Maps. С помощью экранной клавиатуры вы можете ввести ваш API ключ для доступа к сервису, а также город и код страны для которого будт отображаться погода. С помощью слайдера вы можете установить временной интервал обновления данных о погоде.

Датчик BME

 

bme_settings

На данной вкладке настроек вы можете включить использование датчика BME680, для отображения различных параметров микроклимата в помещении на главном экране. Также вы можете с помощью слайдера изменить интервал опроса датчика.

SD карта

sd_settings

На этом экране вы можете импортировать/экспортировать файл настроек устройства, а также плейлист радиостанций с (на) SD карты(у) во(из) внутреннюю(ей) память(и) мультиинформера.

Фото устройства

Фотографию готового устройства находится ниже. Все необходимые файлы для печати корпуса на 3Д принтере будут выложены позже.

photo

Информация об обновлениях

На данный момент проект мультиинформер хоть и дошел до публичного релиза, но все ещё находится в стадии активной доработки. Возможны некоторые проблемы со стабильностью работы, фризами и перезагрузками. Некоторые элементы пользовательського интерфейса в дальнейшем будут полностью переделаны, какие-то дополнены и улучшены. Местами будет доработан и общий функционал. Свежую версию исходников прошивки вы всегда сможете скачать в моем Github репозитории.

Материал также доступен на моем канале: Яндекс Дзен и в группе ВК
Категория: ESP32 | Добавил: | Теги: Мультиинформер, ESP32 проект, Sunton ESP32, ESP32
Просмотров: 1778 | Загрузок: 154 | Комментарии: 3 | Рейтинг: 0.0/0
Ссылки:
Скачать файл
2.17 Mb
Скачать
Скачать файл
Неизвестно.
Скачать удаленно
Поделиться:
Всего комментариев: 3
avatar
0
esipovgubkin • 11:46, 17.12.2023
Здравствуйте! повторил Ваш проект, было интересно, возникли вопросы по функции курс валют и радио, по курсу валют по адресу, с ПК все читается, но на мультиинформере нет подключения, главная функция  работает связь с интернетом есть.
если не трудно посоветуйте. спасибо.
avatar
0
ALT • 00:01, 24.12.2023
Здравствуйте. По курсу валют надо будет дома проверить. Но скорее всего сайт, с которого данные беру, в очередной раз кодировку xml сменил. Я в программе с utf-8 работаю, а приходит cp1252. В общем проверю как-нибудь
avatar
0
esipovgubkin • 10:44, 02.01.2024
Здравствуйте! пока не могу понять почему один раз все таки считалось Попробую выяснить в какой кодировке сайт выдает данные. тогда и будет ясно что делать.
Ответ: Там в общем проблема с выделяемой памятью. Почему-то строка с xml загружается не до конца. Поэтому и не отображается ничего
avatar