M5Stack Cardputer — компактный компьютер размером с кредитную карту на базе ESP32-S3 с экраном 1,14″, механической клавиатурой из 54 клавиш, Wi-Fi, Bluetooth и GPIO для расширений. Он идеален для умного дома: как портативный пульт, датчик или мини-HMI в Home Assistant (HA). Интеграция через ESPHome делает его нативным устройством HA для автоматизаций, дашбордов и сценариев.reddit+2
Преимущества для умного дома
Cardputer сочетает портативность и мощь: отображает статус HA-сущностей на LCD, управляет светом/розетками кнопками, интегрируется с Zigbee (как у ваших EZVIZ-камер). Поддерживает MQTT, OTA-обновления и расширения (датчики I2C, IR-передатчик). Для разработчиков вроде вас — MicroPython/Arduino + API HA.manuals+2
Требования
- Home Assistant с аддоном ESPHome (Установка > Аддоны > ESPHome).
- Cardputer (Adv-версия с StampS3A рекомендуется).
- USB-C кабель с данными, Wi-Fi SSID/пароль, токен HA API (Профиль > Долгосрочный токен).
- Компьютер/HA-хост для прошивки.openelab+1
Пошаговая настройка
- Установите ESPHome: В HA > Настройки > Аддоны > Добавить репозиторий
https://github.com/esphome/esphome. Запустите аддон. - Создайте устройство: В ESPHome Dashboard > Новый девайс. Имя: «cardputer-ha». Плата: ESP32-S3 (M5Stack Cardputer). Подтвердите.
- Настройте YAML: text
esphome: name: cardputer-ha esp32: board: m5stack-generic # Или esp32-s3-devkitc-1 variant: esp32s3 wifi: !include wifi.yaml # SSID/password api: encryption: !secret ha_token ota: i2c: sda: GPIO8 scl: GPIO9 # Для клавиатуры/экрана display: - platform: st7735 model: INITR_144_GFX cs_pin: GPIO10 dc_pin: GPIO6 reset_pin: GPIO7 rotation: 270 binary_sensor: - platform: gpio_matrix_keyboard rows: [GPIO1, GPIO2...] # 54 клавиши по матрице, шаблон с форума HA columns: [...] keys: [...] # Маппинг на HA-действияСекреты вsecrets.yaml:ha_token: "ваш_токен". Копируйте шаблоны с HA Community/Reddit. - Прошейте: CONNECT > USB. Держите G0 для download-mode. Выберите порт, Установить. После — авто-соединение по Wi-Fi.reddit+1
- Добавьте в HA: Устройства > ESPHome. Настройте сущности (кнопки как триггеры, экран для текста).
Кастомизация и примеры
- Кнопки:
on_press: then: - light.toggle: bedroom_light. 54 клавиши — полноценный пульт. - Экран: LVGL для дашбордов (температура, CO2). YAML:
lambda: it.printf(0,0,"Свет: %s", id(light).state ? "ON" : "OFF");. - Расширения: Подключите Zigbee-модуль к Grove-порту, IR для ТВ. Интегрируйте с вашими скриптами (Puppeteer для HA-API).
- Автоматизации: Клавиша A — сцена «Вечерний свет», B — уведомление на телефон.
M5Stack Cardputer: Пошаговая интеграция портативного контроллера в Home Assistant через ESPHome
Введение: Компактный мозг для вашего умного дома
Представьте себе устройство размером с кредитную карту, которое сочетает в себе мощь ESP32-S3, полноценную клавиатуру на 54 клавиши, информативный цветной экран и возможность расширения. Это не фантастика, а реальность под названием M5Stack Cardputer. Этот удивительный гаджет выходит за рамки стандартных DIY-проектов, предлагая уникальное решение для интеграции в экосистему Home Assistant (HA).
В этой статье мы детально разберем, как превратить Cardputer в универсальный инструмент для вашего умного дома. Мы будем использовать ESPHome – мощный и удобный фреймворк, который позволяет кастомизировать прошивку под ваши задачи без глубокого погружения в программирование. В итоге вы получите портативный пульт управления, интерфейс (HMI) для домашней автоматизации или независимый сенсорный узел с возможностью подключения модулей Zigbee, EZVIZ и других через GPIO. Ключевые преимущества такого подхода: полная автономия от облачных сервисов, низкая стоимость владения и неограниченная гибкость в настройке.
Детальный обзор M5Stack Cardputer: Аппаратная основа
Прежде чем переходить к интеграции, важно понять, с каким «железом» мы работаем. M5Stack Cardputer – это тщательно сбалансированное устройство, где каждая компонента имеет свое стратегическое значение.
- Сердце устройства: ESP32-S3. Двухъядерный процессор Xtensa LX7 с поддержкой Wi-Fi 802.11 b/g/n и Bluetooth 5 (LE). Это обеспечивает стабильное сетевое подключение и достаточную производительность для обработки данных с датчиков, работы с дисплеем и взаимодействия с Home Assistant API.
- Интерфейс ввода: Матричная клавиатура. Клавиатура формата 6×9 (54 клавиши) включает алфавитно-цифровой блок, функциональные клавиши и навигацию. Это главное тактильное преимущество Cardputer перед кнопочными контроллерами.
- Окно в систему: 1.14″ LCD дисплей. Дисплей на контроллере ST7735 с разрешением 135×240 пикселей. Через ESPHome он легко управляется с помощью библиотеки LVGL, позволяя создавать сложные интерфейсы с графиками, иконками и текстом.
- Связь и расширение: Порт ввода-вывода. Наличие GPIO (I2C, SPI, UART, аналоговые входы) открывает путь для подключения огромного количества внешних модулей M5Stack (известных как «Unit»): датчики температуры/влажности, RFID/NFC считыватели, инфракрасные передатчики, GPS-модули и, что особенно важно, координаторы Zigbee (например, на базе CC2652). Это превращает Cardputer в полноценный хабы для различных протоколов.
- Автономность: Встроенный аккумулятор. Наличие литий-полимерного аккумулятора делает устройство мобильным, что идеально для использования в качестве портативного пульта.
Программная совместимость устройства обширна: помимо ESPHome, вы можете использовать Arduino IDE или MicroPython для более специфичных задач. Однако для бесшовной интеграции с Home Assistant ESPHome является оптимальным выбором.
Варианты применения в Home Assistant:
- Пульт дистанционного управления. Управление светом, сценами, климатом, медиа с помощью назначенных клавиш.
- Станция мониторинга (HMI). Отображение на дисплее ключевых метрик: температура в комнатах, статус охраны, прогноз погоды, графики энергопотребления.
- Сенсорный узел и шлюз. Сбор данных с подключенных I2C-датчиков (например, в теплице или на кухне) и их передача в HA. Возможность работы в качестве Zigbee-координатора.
Что потребуется: Подготовка к интеграции
Убедитесь, что у вас есть все необходимое перед началом работы:
- Программная среда:
- Установленный и работающий Home Assistant (предпочтительно в виде Home Assistant OS, Supervised или в виртуальной машине).
- Установленный аддон ESPHome Dashboard. Если его нет, добавьте репозиторий ESPHome через раздел «Настройки» -> «Дополнения» -> «Магазин дополнений» (три точки в правом верхнем углу).
- Редактор кода (например, Visual Studio Code или встроенный редактор в ESPHome).
- Оборудование и данные:
- M5Stack Cardputer (рекомендуется версия Adv с большим объемом PSRAM для работы с дисплеем).
- Кабель USB-C для питания и прошивки.
- Данные от вашей Wi-Fi сети (SSID и пароль).
- Долгосрочный токен доступа Home Assistant API. Его можно создать в профиле пользователя (в самом низу страницы).
- Настройка ESPHome:
- Создайте файл
secrets.yamlв директории ESPHome. В него вынесем конфиденциальные данные:yaml wifi_ssid: "ВАШ_SSID" wifi_password: "ВАШ_ПАРОЛЬ" api_encryption_key: "ВАШ_API_КЛЮЧ_HA"
Это защитит ваши данные и позволит делиться конфигурацией без риска.
- Создайте файл
Пошаговая инструкция: От прошивки к первому нажатию клавиши
Шаг 1: Создание проекта в ESPHome Dashboard
Откройте веб-интерфейс ESPHome через аддон в Home Assistant. Нажмите «NEW DEVICE» -> «Continue». Дайте устройству понятное имя (например, cardputer-livingroom). В качестве платы выберите ESP32-S3. ESPHome автоматически сгенерирует базовый конфигурационный файл (cardputer-livingroom.yaml). Нажмите «EDIT» для перехода к его редактированию.
Шаг 2: Настройка конфигурационного файла YAML
Это самый важный этап. Замените содержимое сгенерированного файла на расширенную конфигурацию. Приведем ключевые секции:
# Основные настройки платформы
esphome:
name: cardputer-livingroom
friendly_name: Cardputer Livingroom
esp32:
board: m5stack-core-s3
framework:
type: arduino
version: recommended
# Включение поддержки Wi-Fi и API Home Assistant
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap: {} # На случай потери Wi-Fi - создаст свою точку доступа
api:
encryption:
key: !secret api_encryption_key
ota:
password: "придумайте_свой_надежный_пароль_для_ota"
# Включение веб-сервера для отладки
web_server:
port: 80
# Логгирование
logger:
# Отключение встроенного светодиода (по желанию)
switch:
- platform: gpio
pin: GPIO21
id: led
inverted: true
internal: true
# --- КОНФИГУРАЦИЯ КЛАВИАТУРЫ ---
# Используем компонент для матричной клавиатуры 6x9
matrix_keypad:
- id: cardputer_keypad
columns:
- {pin: GPIO1, mode: INPUT_PULLUP}
- {pin: GPIO2, mode: INPUT_PULLUP}
- {pin: GPIO3, mode: INPUT_PULLUP}
- {pin: GPIO4, mode: INPUT_PULLUP}
- {pin: GPIO5, mode: INPUT_PULLUP}
- {pin: GPIO6, mode: INPUT_PULLUP}
rows:
- {pin: GPIO7, mode: OUTPUT}
- {pin: GPIO8, mode: OUTPUT}
- {pin: GPIO9, mode: OUTPUT}
- {pin: GPIO10, mode: OUTPUT}
- {pin: GPIO11, mode: OUTPUT}
- {pin: GPIO12, mode: OUTPUT}
- {pin: GPIO13, mode: OUTPUT}
- {pin: GPIO14, mode: OUTPUT}
- {pin: GPIO15, mode: OUTPUT}
keys:
# Пример маппинга для первых нескольких клавиш.
# Полную матрицу можно найти в документации сообщества.
- key: {row: 0, col: 0, key_id: '1'}
- key: {row: 0, col: 1, key_id: '2'}
- key: {row: 0, col: 2, key_id: '3'}
- ... # и так далее для всех 54 клавиш
# Создаем бинарные сенсоры (кнопки) для каждой клавиши
binary_sensor:
- platform: matrix_keypad
matrix_keypad_id: cardputer_keypad
key_id: '1' # Пример для клавиши '1'
name: "Cardputer Key 1"
internal: true # Скрываем из HA, если не нужна как отдельная сущность
on_press:
then:
- logger.log: "Key 1 pressed"
# Здесь позже будут действия HA
# ... Повторить для всех нужных клавиш
# --- КОНФИГУРАЦИЯ ДИСПЛЕЯ ---
display:
- platform: st7735
model: M5STACK_CARDPUTER
cs_pin: GPIO38
dc_pin: GPIO37
reset_pin: GPIO39
backlight_pin: GPIO45
rotation: 270 # Ориентация для альбомного режима
lambda: |-
# Базовая инициализация LVGL
static lv_obj_t *label = lv_label_create(lv_scr_act());
lv_label_set_text(label, "Cardputer\nЗагрузка...");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
Важно: Полная карта матрицы клавиш (соответствие пинов и символов) требует дополнительной настройки. Готовые примеры можно найти в сообществах Home Assistant Community и r/Esphome на Reddit (ссылки в конце статьи).
Шаг 3: Прошивка устройства
- Подключите Cardputer к компьютеру с Home Assistant или к любой машине в той же сети через USB-C.
- В интерфейсе ESPHome Dashboard нажмите «INSTALL» на вашем устройстве.
- Выберите Plug into the computer running ESPHome Dashboard.
- Вам будет предложено перевести устройство в режим загрузки (download-mode). Для этого на Cardputer необходимо зажать кнопку G0 (расположена слева на плате) и, не отпуская, нажать и отпустить кнопку RST (справа). После этого отпустите G0. Устройство будет обнаружено как последовательный порт.
- Выберите соответствующий порт и дождитесь окончания компиляции и загрузки прошивки.
Шаг 4: Обнаружение и проверка
- После успешной прошивки устройство перезагрузится и подключится к Wi-Fi.
- В Home Assistant перейдите в раздел «Настройки» -> «Устройства и службы». На вкладке «Устройства» должно появиться новое устройство ESPHome с именем
cardputer-livingroom. - Нажмите «НАСТРОИТЬ», чтобы добавить созданные сущности (в нашем примере пока только кнопки). Они появятся в HA и будут готовы к использованию в автоматизациях.
- Для первичного тестирования проверьте логи в ESPHome Dashboard (
LOGS) и убедитесь, что при нажатии клавиш в лог выводятся соответствующие сообщения. Также можно проверить доступность устройства командойping.
Кастомизация: Превращаем карточку в интеллектуальный контроллер
Теперь, когда основа работает, можно реализовать полезные сценарии.
1. Управление освещением и сценами через клавиатуру
Добавим в конфигурацию клавиши прямое действие на выключение света в гостиной. Модифицируем секцию binary_sensor для клавиши, например, ‘A’ (предположим, она имеет key_id: 'a'):
binary_sensor:
- platform: matrix_keypad
matrix_keypad_id: cardputer_keypad
key_id: 'a'
name: "Cardputer Key A - Light Toggle"
on_press:
then:
- homeassistant.service:
service: light.toggle
data:
entity_id: light.guestroom_main
2. Динамический интерфейс на дисплее с LVGL
Используя lambda-функции в секции display, можно получать данные из HA и отображать их. Для этого нужна интеграция homeassistant.sensor в ESPHome.
# Сначала запрашиваем данные из HA
homeassistant:
sensor:
- entity_id: sensor.living_room_temperature
id: living_temp_ha
- entity_id: binary_sensor.front_door
id: door_status_ha
display:
... # Пины и настройки как ранее
update_interval: 10s # Обновляем экран каждые 10 секунд
lambda: |-
// Получаем значения
float temp = id(living_temp_ha).state;
bool door_open = id(door_status_ha).state;
// Очищаем экран
lv_obj_clean(lv_scr_act());
// Создаем стиль для заголовка
static lv_style_t style_title;
lv_style_init(&style_title);
lv_style_set_text_font(&style_title, &lv_font_montserrat_20);
// Виджет - заголовок
lv_obj_t *title = lv_label_create(lv_scr_act());
lv_obj_add_style(title, &style_title, 0);
lv_label_set_text(title, "Умный Дом");
lv_obj_align(title, LV_ALIGN_TOP_MID, 0, 10);
// Виджет - температура
lv_obj_t *label_temp = lv_label_create(lv_scr_act());
lv_label_set_text_fmt(label_temp, "Гостиная: %.1f C", temp);
lv_obj_align_to(label_temp, title, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);
// Виджет - статус двери
lv_obj_t *label_door = lv_label_create(lv_scr_act());
lv_label_set_text_fmt(label_door, "Дверь: %s", door_open ? "ОТКРЫТА!" : "закрыта");
lv_obj_align_to(label_door, label_temp, LV_ALIGN_OUT_BOTTOM_MID, 0, 10);
if (door_open) {
lv_obj_set_style_text_color(label_door, lv_color_hex(0xFF0000), 0);
}
3. Расширение функционала через GPIO
Подключим внешний датчик температуры BME280 по I2C:
i2c:
sda: GPIO41
scl: GPIO42
scan: true
sensor:
- platform: bme280
temperature:
name: "Cardputer Temperature"
id: temp_local
pressure:
name: "Cardputer Pressure"
humidity:
name: "Cardputer Humidity"
address: 0x76
update_interval: 60s
Данные с этого датчика сразу станут доступны в Home Assistant как сенсоры, и их также можно вывести на дисплей Cardputer.
4. Автоматизации в Home Assistant на основе действий с Cardputer
Используйте сущности-кнопки, созданные ESPHome, как триггеры в редакторе автоматизаций HA. Например, можно отправить уведомление на телефон, если была нажата определенная комбинация клавиш («тревожная кнопка»).
Полезные советы и решение частых проблем
- OTA-обновления: После первой прошивки по USB все последующие обновления конфигурации можно заливать «по воздуху», выбрав в ESPHome Dashboard опцию Wireless. Убедитесь, что пароль OTA задан.
- Валидация YAML: Всегда используйте кнопку «VALIDATE» в ESPHome Dashboard перед установкой. Это сэкономит время на отладке синтаксических ошибок.
- Частые проблемы:
- Устройство не переходит в режим загрузки: Точная последовательность нажатия G0 и RST критична. Попробуйте несколько раз.
- Не работают некоторые клавиши: Внимательно проверьте матрицу строк и столбцов в
matrix_keypad. Возможно, потребуется калибровка или поиск готового конфига в сообществе. - Нет связи с HA: Проверьте правильность API-токена в
secrets.yaml, убедитесь, что устройство подключилось к Wi-Fi (логи).
- Интеграция в ваши проекты: Используя компонент
apiв ESPHome, вы можете отправлять данные на внешние веб-серверы. Комбинируйте сhttp_requestдля запуска сторонних скриптов (на PHP, Node.js, Python).
Заключение
M5Stack Cardputer в связке с ESPHome и Home Assistant — это не просто гаджет, а мощная и портативная платформа для краевых вычислений (edge computing) в вашем умном доме. Он стирает границу между стационарными сенсорными панелями и пультами управления, предлагая уникальную комбинацию интерфейсов в минимальном форм-факторе.
Не бойтесь экспериментировать. Начните с управления одним светильником, затем добавьте вывод температуры на экран, подключите внешний датчик, превратите устройство в Zigbee-координатор. Сообщество активно развивается, и новые примеры конфигураций появляются регулярно.
Полезные ресурсы для продолжения пути:
- Официальная документация M5Stack: M5Stack Cardputer Docs
- Форум сообщества Home Assistant: Обсуждение Cardputer
- Сообщество на Reddit: r/Esphome
- База знаний и проектов: OpenE-Lab
Присоединяйтесь к обсуждениям, делитесь своими конфигурациями и открывайте новые грани автоматизации дома с этим удивительным устройством. Удачной настройки



