avatar
Макар Акула

LilyGO T-Embed для визуализации данных

kak-ispolzovat-lilygo-t-embed-dlya-vizualizacii-dannyh

В мире IoT-проектов сбор данных — это только половина задачи. Гораздо важнее сделать эти данные понятными и доступными. LilyGO T-Embed, с его встроенным 2.8-дюймовым IPS-дисплеем, является идеальным инструментом для визуализации данных в реальном времени.

Основы: сбор данных

Перед визуализацией необходимо собрать данные. LilyGO T-Embed, построенный на базе ESP32-S3, легко интегрируется с различными датчиками. Например, вы можете подключить:

  • Датчик температуры и влажности (BME280 или DHT11) для метеостанции.
  • Датчик качества воздуха (MQ-135) для мониторинга окружающей среды.
  • Датчик освещенности (BH1750) для отслеживания уровня света.

Данные с этих датчиков можно считывать по протоколам I2C или SPI, а затем обрабатывать с помощью T-Embed.

Инструменты для визуализации

Для отрисовки графиков на дисплее LilyGO T-Embed вам понадобится библиотека TFT_eSPI. Она поддерживает функции для рисования линий, окружностей, прямоугольников и, самое главное, для построения графиков.

Установка и настройка:

  • Установите библиотеку TFT_eSPI через Менеджер библиотек в Arduino IDE.
  • Настройте User_Setup.h, как описано в предыдущих статьях, чтобы библиотека знала, с каким дисплеем она работает.
  • Для более сложных графиков, таких как круговые диаграммы, можно использовать дополнительные библиотеки или написать код самостоятельно.

Примеры визуализации данных

График в реальном времени 📈

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

  • Логика: Каждые несколько секунд считывайте показания датчика температуры.
  • Отрисовка: Рисуйте точку на экране, соответствующую текущей температуре и времени. По мере появления новых данных, сдвигайте график влево.
  • Функции TFT_eSPI: Используйте tft.drawLine() для соединения точек, создавая плавную кривую. Также можно использовать tft.drawFastHLine() и tft.drawFastVLine() для создания осей графика.
#include <TFT_eSPI.h>
#include <SPI.h>

TFT_eSPI tft = TFT_eSPI();

void drawGraph(float value, uint16_t color) {
  // Код для отрисовки графика температуры
}

void loop() {
  float currentTemp = 25.5; // Замените на реальное чтение с датчика
  drawGraph(currentTemp, TFT_RED);
  delay(1000);
}

Круговая диаграмма Pie Chart 🍕

Круговые диаграммы отлично подходят для отображения долей или соотношений, например, занятого и свободного места на MicroSD-карте.

  • Логика: Получите общее и свободное пространство на карте. Рассчитайте процентное соотношение.

Используйте tft.fillArc() или tft.fillSmoothCircle() (если они доступны в вашей версии библиотеки) для отрисовки секторов круга. Каждый сектор будет соответствовать определенной доле.

Добавьте метки и процентные значения с помощью tft.drawString(), чтобы сделать диаграмму более информативной.

Индикаторы и виджеты ⚙️

Иногда не нужно строить полный график. Для отображения одного значения можно использовать простые виджеты.

  • Прогресс-бар: Отлично подходит для отображения уровня заряда батареи или процента выполнения задачи. Используйте tft.drawRect() и tft.fillRect() для отрисовки рамки и заполненной части прогресс-бара.
  • Стрелочный индикатор: Если вы отслеживаете параметр, имеющий диапазон (например, уровень шума), можно нарисовать стрелку на шкале. Это можно сделать с помощью tft.drawLine().

Оптимизация и советы

  • Избегайте мерцания: При отрисовке на дисплее могут появляться мерцания. Чтобы их минимизировать, обновляйте только те области экрана, которые изменились. Не очищайте весь экран при каждом обновлении.
  • Буферизация: Для сложных анимаций можно использовать буферы памяти, чтобы отрисовывать изображение в памяти, а затем быстро выводить его на экран.
  • Шрифты: Используйте моноширинные шрифты (например, шрифт 2), чтобы текст не "прыгал" при изменении чисел.
  • Используйте MicroSD: Для хранения фоновых изображений или значков используйте MicroSD-карту, чтобы не занимать ограниченную память ESP32-S3.

LilyGO T-Embed делает визуализацию данных простой и доступной. Сочетая мощь ESP32-S3 с его интегрированным дисплеем, вы можете создавать профессиональные и функциональные проекты, которые не только собирают данные, но и предоставляют их в удобной для восприятия форме.