ESPHome on Tidbyt Gen 2

I backed the Tidbyt Gen 2 on Kickstarter but was disappointed by its limited Home Assistant integration. So, I decided to flash it with ESPHome. I managed to get the matrix display, audio, and touchpad working. It might still need some fine-tuning, but I wanted to share this to save others some time.

If anyone makes improvements, please share!

tidbyt

esphome:
  name: tidbyt
  friendly_name: tidbyt

esp32:
  board: esp32dev
  framework:
    type: arduino

external_components:
  - source: github://TillFleisch/ESPHome-HUB75-MatrixDisplayWrapper@main

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:

ota:
  - platform: esphome

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

media_player:
  - platform: i2s_audio
    name: ESPHome I2S Media Player
    dac_type: external
    i2s_dout_pin: GPIO14
    mode: mono

i2s_audio:
  - id: i2s_out
    i2s_lrclk_pin: GPIO13  #WS / LRC
    i2s_bclk_pin: GPIO12 #SCK /BCLK      

font:
  # gfonts://family[@weight]
  - file: "gfonts://Roboto"
    id: roboto
    size: 10 

esp32_touch:
  setup_mode: false

binary_sensor:
  - platform: esp32_touch
    name: "Touch Pad"
    id: esp32_touch_pad
    pin: GPIO33
    threshold: 1200
    filters:
      - delayed_on: 10ms    

display:
  - platform: hub75_matrix_display
    show_test_card: false
    id: matrix
    driver: FM6126A
    i2sspeed: HZ_10M
    clock_phase: false
    latch_blanking: 1
    width: 64
    height: 32
    R1_pin: 5
    G1_pin: 23
    B1_pin: 4
    R2_pin: 2
    G2_pin: 22
    B2_pin: 32
    A_pin: 25
    B_pin: 21
    C_pin: 26
    D_pin: 19
    #E_pin: -1 assign to pin 14 if using more than two panels
    LAT_pin: 18
    OE_pin: 27
    CLK_pin: 15

    lambda: |-
      it.print(0, 0, id(roboto), "Hello World!");

switch:
  - platform: hub75_matrix_display
    matrix_id: matrix
    name: "Power"
    restore_mode: ALWAYS_ON
    id: power

number:
  - platform: hub75_matrix_display
    matrix_id: matrix
    name: "Brightness"  
3 Likes

Very cool!

could it be Tidbyt 1 and 2 or they are too different?

This will work with the Tidbyt 1, but the pins are different and it obviously lacks the touch and audio.

A configuration that I just installed on my Tidbit 1:

esphome:
  name: tidbyt-display
  friendly_name: tidbyt-display

esp32:
  board: esp32dev
  framework:
    type: arduino

external_components:
  - source: github://TillFleisch/ESPHome-HUB75-MatrixDisplayWrapper@main

# Enable logging
logger:

# Enable Home Assistant API
api:
  encryption:
    key: !secret tidbyt-display-key

ota:
  - platform: esphome
    password: !secret tidbyt-display-ota

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "tidbyt-display"
    password: !secret fallback_wifi_password

font:
  # gfonts://family[@weight]
  - file: "gfonts://Roboto"
    id: roboto
    size: 10 

display:
  - platform: hub75_matrix_display
    show_test_card: false
    id: matrix
    driver: FM6126A
    i2sspeed: HZ_10M
    clock_phase: false
    latch_blanking: 1
    width: 64
    height: 32
    R1_pin: 21
    G1_pin: 2
    B1_pin: 22
    R2_pin: 23
    G2_pin: 4
    B2_pin: 27
    A_pin: 26
    B_pin: 5
    C_pin: 25
    D_pin: 18
    #E_pin: -1 assign to pin 14 if using more than two panels
    LAT_pin: 19
    OE_pin: 32
    CLK_pin: 33

    lambda: |-
      it.print(0, 0, id(roboto), "Hello World!");

switch:
  - platform: hub75_matrix_display
    matrix_id: matrix
    name: "Power"
    restore_mode: ALWAYS_ON
    id: power

number:
  - platform: hub75_matrix_display
    matrix_id: matrix
    name: "Brightness"  

Now, what should we actually use this for? Saying hello world is just the beginning. Anyone have any thoughts on what to show?

1 Like

This project as an add-on and an integration would be great - it would be a local way to display any of the pixlet apps.

I think it needs to be updated to an external component instead of a custom component as well for the latest ESPHome.

https://github.com/drudge/esphome-smartmatrix

1 Like

I was struggling to find a use within home assistant as well, so I installed WLED MoonModules project (HUB75 support) on it, so I still have control of it within home assistant.

In order to get to work on the tidbyt, you need to edit wled00/bus_manager.cpp to update the elif block and then build it. I ended up use the with esp32_4MB_V4_HUB75_forum env.

There are still a few things to work out, like the touchpad and MQTT.

#elif defined(ESP32_FORUM_PINOUT) // Common format for boards designed for SmartMatrix

  USER_PRINTLN("MatrixPanel_I2S_DMA - ESP32_FORUM_PINOUT");

  mxconfig.gpio.r1 = 5;
  mxconfig.gpio.g1 = 23;
  mxconfig.gpio.b1 = 4;
  mxconfig.gpio.r2 = 2;
  mxconfig.gpio.g2 = 22;
  mxconfig.gpio.b2 = 32; 

  mxconfig.gpio.lat = 18;
  mxconfig.gpio.oe  = 27;
  mxconfig.gpio.clk = 15;

  mxconfig.gpio.a = 25;
  mxconfig.gpio.b = 21;
  mxconfig.gpio.c = 26;
  mxconfig.gpio.d = 19;
  mxconfig.gpio.e = -1;

Wow - this looks awesome. Did you manage to get the rest to work?