Skip to content

Проект мультиинформера микроклимата в квартире, погодных данный, параметров ПК, курсов валют и веб радио

Notifications You must be signed in to change notification settings

altJSV/multiinformer

Repository files navigation

Мультиинформер

Лого](https://github.com/altJSV/multiinformer/blob/main/additional_info/logo.png "Лого")

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

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

  • Отображение календаря с актуальными праздниками
  • Отображение точного времени, даты с инхронизированных с 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"; //Настройки MQTT String mqtt_login="login"; //логин String mqtt_pass="pass"; //пароль String clientID="Multiinformer"; //ID клиента String cmdTopic="multiinformer/cmd/"; //топик управления String statusTopic="multiinformer/status/"; //топик статуса String tempTopic="multiinformer/temp/"; //топик температуры String humidTopic="multiinformer/humid/"; //топик влажности String pressureTopic="multiinformer/pressure/"; //топик давления String airTopic="multiinformer/air/"; //топик качества воздуха String mqtt_server = "192.168.1.1"; //ip или http адрес int mqtt_port = 1883; //порт

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 как на скриншоте ниже:

Параметры платы

Интерфейс

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

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

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

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

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

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

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

Видеокарта

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

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

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

Видеопамять

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

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

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

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

Экран погоды

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

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

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

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

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

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

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

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

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

Для добавления новых радиостанций создайте на 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 карта Переключение категорий настроек осуществляется свайпами вверх и вниз, а также тапами по имени категории в левой части экрана. Сохранение настроек производится автоматически при закрытии панели настроек.

Основные

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

WiFi

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

Монитор ПК

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

Погода

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

Датчик BME

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

SD карта

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

Дополнительная информация

Ниже приведена информация по дополнительным функциям устройства.

MQTT

Устройство через определенные промежутки времени отправляет данные, полученные с датчика BME680 в различные MQTT топики. Ниже список по умолчанию. Названия топиков могут быть изменены в конфигурационном файле secrets.h.

  • "multiinformer/temp/"- топик температуры
  • "multiinformer/humid/" -топик влажности
  • "multiinformer/pressure/" - топик атмосферного давления
  • "multiinformer/air/" - топик уровня качества воздуха

About

Проект мультиинформера микроклимата в квартире, погодных данный, параметров ПК, курсов валют и веб радио

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages