Не знаю, как вам, а мне иногда хочется чего-нибудь красивого. Не практичного. Не удобного. Не технологичного. Именно красивого :)

В одном из таких позывов решил сделать таймер печати для своего Anycubic Kobra S1:

Да, в стиле Wordclock, как вы могли заметить :)

План

Все вордклоки, что я видел (каноничный пример: WordClock 16x16 LED matrix), похожи друг на друга:

  • фронтальная панель с трафаретными буквами и диффузором
  • за ней RGB-лента на WS2812B/SK6812/etc
  • MCU, управляющий подсветкой нужных букв

Я не стал мудрить и поступил схожим образом. Потому определил на пару с Claude Opus 4.6 нужный набор слов:

Специально втиснулся в 8x16, чтобы дать ладу двум 8x8 RGB-панелям на WS2812B:

В роли MCU подойдет что угодно, я заглянул в шкаф и взял ESP32-C3 PRO MINI:

Осталось дело за малым: сесть и сделать ;)

Дела паяльные

Начал с пайки, дабы было с чем играть. Не смотреть же на безжизненные буковки ^_^.

Получилась такая нехитрая схемка:

Не рискнул питать ленту через 5V-линию борда, потому воткнул отдельный type-c разъем, а уже от него отдельной линией 5V на MCU и отдельной на ленту со своим bulk-конденсатором. Data-линию ленты, недолго думая, подключил к GPIO3 ESP32-C3.

Пришла пора вывалить всё нужное добро на стол:

Немного запаха припоя, чуть изоленты, и вуаля:

Самое время озаботиться печатью ;)

Дела печатные

Открыл Fusion 360 и за пару итераций набросал модельку будущего таймера:

Котик прячет потрошки, добавляет устойчивости и бафает удачу на 20% (trust me). В остальном же:

  • серые фронтальная и задняя панели
  • белые буковки
  • чёрная сердцевинка

Дальше последовало около 5-6 часов печати корпуса:

И около получаса, чтобы собрать всё воедино:

Котика, как и планировал, аккуратно вклеил. Единственное, “аккуратно” от buglloc@ выглядит как-то так:

Нужно будет как-нить переделать, а пока время заняться софтовой частью ;)

Дела софтовые

По разным причинам я использую Anycubic Kobra S1 со стоковой прошивкой. Само собой, в LAN mode. В этом режиме он оттопыривает ручку (без авторизации, офк), из которой можно забрать координаты MQTT-сервера, запущенного на самом принтере, дабы получать события или управлять принтером.

А т.к. принтер у меня и так подключен к моему инстансу Home Assistant (спасибо доброму человеку за hass-anycubic), то софтовая часть вырисовалась сама собой:

  • написал компонент для ESPHomeheat_word
  • который, благодаря Native API, получает состояние принтера
  • “выводит” информацию о нём на ленту
  • та “зажигает” нужные буковки
  • профит :)

Финишная прямая! Пишу нехитрый конфиг:

esphome:
  name: h34tw0rd
  friendly_name: H34tW0rd

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: esp-idf

external_components:
  - source:
      type: git
      url: https://github.com/buglloc/esphome-components.git
    components: [heat_word]
    refresh: 600s

logger:

api:
  homeassistant_states: true
  encryption:
    key: "XXXXX"

ota:
  - platform: esphome
    password: "XXXXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  fast_connect: true
  power_save_mode: none
  output_power: 8.5dB

status_led:
  pin:
    number: GPIO8
    inverted: true

light:
  - platform: esp32_rmt_led_strip
    id: double_matrix
    internal: true
    pin: GPIO3
    num_leds: 128
    rgb_order: GRB
    chipset: WS2812

heat_word:
  id: hw
  backend: double_matrix
  homeassistant:
    entity_prefix: sensor.anycubic_kobra_s1

Прошиваю, включаю принтер, запускаю печать:

Паббааааам! На видео полный цикл печати от включения принтера и до самого финала. Скорее всего, стоит ещё чуть поиграть с цветами (вживую выглядит, как обычно, иначе) и добавить запас времени на окончание печати. Но это уже мелочи, потюнится в процессе эксплуатации.

А на сегодня у меня всё. Всем (づ˶•༝•˶)づ♡