↓ Skip to main content
  1. Home projects/

iDotMatrix client and ESP32 bridge

··Index: 6·
Table of Contents

iDotMatrix panels are cheap LED pixel displays (16×16, 32×32 or 64×64) that you’re supposed to control over Bluetooth Low Energy from a phone app. This project drives them from a computer instead, through a Wi-Fi bridge to make this work on machines without Bluetooth too.

The code started as a fork of the community python3-idotmatrix-library, whose authors reverse-engineered the protocol. I reworked it into a Python package built around an IDotMatrixClient with a connection manager and feature modules for text, images, GIFs, clock, countdown, stopwatch, effects, scoreboard, graffiti, eco mode and system commands. On top of that there are helpers to convert images and GIFs, a digital picture-frame mode watching a folder, and work/rest (pomodoro-style) timer with a small web interface.

The ESP32 bridge
#

Next to the Python code sits Rust firmware for ESP32 boards. The board joins the Wi-Fi network, announces itself over mDNS as idotmatrix.local and exposes a small HTTP API, while updates to the panel keep going over BLE. Rendering and timer state live on the ESP32, which lets computers on the network can drive the display, and the firmware core can be tested on the host.

Two ways to reach an iDotMatrix panel: Bluetooth directly from Python, or HTTP to an ESP32 bridge that talks BLEPython clientIDotMatrixClientComputerwithout BluetoothESP32 bridgeRust, mDNS, HTTP APILED panel16, 32 or 64 pxBLEWi-FiBLErendering and timer state live on the ESP32
Direct Bluetooth from Python, or Wi-Fi through the ESP32 bridge

Licence: GPL. Source on GitHub.

Related