Ulanzi Display TC001 with Awtrix-Light

I wrote a german review on my homepage about the Ulanzi Display TC001, which can be flashed with Awtrix-Light and then controlled by MQTT:
https://smarthome.sb242.de/hardware/ulanzi-display-tc001-mit-awtrix-light/

I will translate this text with Google, so I do not have to write it once again.

In issue 24/2023 of the german c’t magazine I found an article about the Ulanzi Display TC001, which can be controlled via MQTT or http using the alternative open source firmware Awtrix-Light.

The display consists of 8×32 pixels, i.e. 256 pixels with an edge length of 5 mm each, which can be controlled individually via RGB. The overall size of the display is 20×7 cm with a depth of 3 cm. It is powered via USB-C and has a battery that should last for around 5 hours. There are three control buttons at the top, all of which can be queried via MQTT, and a brightness sensor.

I bought the display from ulanzi.de, but don't be fooled: despite the German domain, the company itself is based in China and support is only available via email (service times GMT+8). But there is probably a German warehouse, in any case the delivery time of the display was an acceptable 10 days.

Well packaged, the display also looks solidly made and starts (after reading the English instructions) with the display “Ulanzi” by pressing the top left and right buttons simultaneously for three seconds.

Setting up the display with the original firmware works as usual with ESP32 by looking for a new WLAN (here “U-CLOCK”), logging in there without a password, using a web browser to go to the IP 192.168.4.1, insert there the internal WLAN including the password and then the new IP address of the display in the internal network is shown on the display itself. You can then change various settings via browser, whereby you can blindly switch the Chinese menu to English by changing the first entry. To save this setting, press the right button below. It immediately switches to English.

However, I didn't bother with the included firmware, instead I flashed AWTRIX-LIGHT straight away.
To do this, connect the display to the PC, start the online flasher with Chrome (AWTRIX LIGHT), select the USB/COM interface, which is automatically found and flash the new firmware. Here - described as a possible solution if flashing doesn't work - I had to reset the Ulanzi TC001 shortly before flashing by using a paper clip to press the reset button described in the instructions. The flashing process then started immediately.

After the restart, the display is much more colorful and has beautiful rainbow effects.

The integration into the internal WLAN is started by logging into the WLAN “Awtrix-xxxxx” with the password “12345678”, then switching back to 192.168.4.1 and entering the data for the internal WLAN.

The IP address received via DHCP is then displayed once, after which the standard modules run through in a continuous loop: temperature, humidity, battery charge status and time.

The MQTT broker and the desired topic (hereinafter referred to as [Prefix]) are specified in the web settings, then you can also control and operate the display via MQTT.

For control via MQTT, I recommend the detailed instructions at AWTRIX LIGHT.

You can deactivate the modules displayed by default in the onscreen menu.

By sending a JSON object to the MQTT topic [prefix]/custom/modulname

{
"text": "Hello World!",
"rainbow": true,
"duration": 5,
"icon": 6881
}

a new module called “module name” (this name can be freely chosen, but must be used again if text or settings are changed) is created for the display and displayed next to the other modules in a continuous loop until it is deleted or replaced by another JSON object to update text or other data.

The icon with this number must have been previously downloaded and saved in the web interface.

Alternatively, a notify text can be sent that is only displayed once, but optionally have to be confirmed by pressing a button before it disappears.

For example, I have a text sent to me via Telegram when it is raining in the area. I have adapted this text and am now sending it via MQTT with the topic [prefix]/notify to the display at the same time:

{
     "text": "It's raining in the area!",
     "rainbow": true,
     "duration": 10,
     "wakeup": true,
     "icon": 3361,
     "rtttl": "MahnaMahna:d=16,o=6,b=125:c#,c.,b5,8a#.5,8f.,4g#,a#,g.,4d#,8p,c#,c .,b5,8a#.5,8f.,g#.,8a#.,4g,8p,c#,c.,b5,8a#.5,8f.,4g#,f,g.,8d#., f,g.,8d#.,f,8g,8d#.,f,8g,d#,8c,a#5,8d#.,8d#.,4d#,8d#."
}

The internal buzzer can also be used to play songs using RTTTL syntax, but the quality is not great. After a few notify messages, I deactivated the above song again.