March 31, 2026
Description
I've seen a lot of people toying with these touchscreen Guition 4" screens lately, so I picked a couple up to mess around with. The screen by itself was a little boring, so I decided to do what any normal, well-adjusted human would do and designed a fun midecentury modern-inspired (and an 80s/90s-style) TV case for it. Also, because touchscreens are boring, I really wanted to add a couple of rotary encoders for tactile controls so there were functional channel/volume (or UHF/VFH if you're really old) knobs. Given this screen's really disappointing lack of accessible GPIO, I needed to add a couple of additional components to make that possible.
It's entirely possible this would work for any other 480x480 screen with similar dimensions with some minor modification, the Guition is just what I had to design around at the time.
Having said all that, I realize this is more involved than just printing out some tiny plastic gizmo. You probably have to really want this in order to actually print and assemble it. I personally think the juice was worth the squeeze, and I'm enjoying it. I've done harder work for dumber stuff. This was mostly an excuse to tinker with electronics and produce something unique. YMMV.
Depending on the path you take below, you may not need all of this. This is a total BOM for all paths.
Note: None of the BOM links below are affiliate links, and are included only for reference to what I used. I urge you to purchase from any other retailer than Amazon if one is available to you, especially if you can source parts locally.
2x KY-040 brick sensor (rotary encoder knob)
1x PCF8574 I2C expansion board (for rotary encoder knob expansion)
1x TCA9548A I2C multiplexer (for rotary encoder knob expansion)
1x 2x6 Position Wiring Board Distribution Module (for power distribution)
1x 8-bit ws2812 LED panel (because why not)
1x little wifi antenna (totally optional, but gets better Wifi reception than the flexible antenna the board comes with, especially once inside the case)
1x 20mm speaker
12x M2x3x3.2 threaded inserts
9x M2x4x3.2 threaded inserts (can be shorter)
12x M2x4 screws
10x M2x8 screws
1x M2x16 screw
2x M2 nuts
You can just print everything out and just use the screen by itself. This enables the option to use the onboard speaker, as well, if that's something you're interested in.
Your screen now looks like an old TV
You use the touchscreen to navigate
Components
1x USB-C breakout module
Find some rotary encoder knob to print
Hardware
8x M2x6x3.2 threaded inserts
10x M2x8 screws
2x M2 nuts
Print everything out, do a little light soldering, and connect everything together. Functional rotary encoder (brick sensor) knobs, and a front LED indicator. Because whoever designed this board obviously hates having fun, the onboard speaker uses the existing accessible relay pins for I2S, so you cannot use the speaker with this option (because we will be using the relay pins for cooler stuff). If you're smarter than me and find some way to take this path and have a functional speaker using the existing relay pins, please humble me with your greater mastery of this wizardry.
Your screen now looks like an old TV
Functional direction/push-button dials for navigation and control - like we used to!
Touchscreen controls still available
Super sweet front LED indicator to dazzle and amaze
You have an excuse to tinker with stuff
You'll be the envy of everyone around you
The whole family can gather 'round the tiny TV to watch the weather
Full BOM (see above)
It's possible to take the Fun Way route AND still have a functional speaker if you're equipped to do (and capable of) some very fine soldering. You can solder 2 wires onto the SDA and SCL I2C pins of the chip itself and run those to the mux, freeing up the relay pins entirely. This does mean you'd have to run the LED from the mux (or leave it out), which might be kinda dicey without some tuning. There are also a pair of 3.3V/G and 5V/G points on the board itself you can tap into, as well. I attempted this and abandoned it almost immediately when I realized I didn't have the skill to pull it off without frying my board or shorting the chip pins. If you're up for it, there's a good write-up here. The trade-off didn't seem worthwhile to me, but it's worth mentioning as an option. At the end of the day, it'd probably make way more sense to just add a piezo buzzer in the mix instead if it's the alarm functionality you're after.
All the features of the Fun Way
A speaker
Full BOM (see above)
Some tiny wires
Steady hands
Nerves of steel
Sink the threaded inserts into the faceplate. The 4 threaded inserts for the rotary encoder knobs are theoretically optional, but included for extra stability for the push-button usage. If you hate pushing buttons, the model's built-in plastic washer is probably enough support by itself. If you're not using the speaker, you can skip that insert, as well. Use 4x M2x6x3.2 inserts on the screen retainer posts, everything else on the faceplate uses M2x3x3.2 (or M2x2x3.2) inserts.
Sink the threaded inserts in the outer casing. 4x M2x6x3.2 into the back (you can go shorter, but the longer inserts give better strength for these).
Sink the threaded inserts into the screen retainer/component mount. The top mounts need M2x3x3.2 inserts. The bottom triangle uses an M2x6x3.2 insert. If you're choosing The Easy Way, you can skip this step entirely.
Sink a M2x3x3.2 threaded insert into the antenna base
Insert the rotary encoders (without knobs attached) into the faceplate. Thread included nuts from the front to secure them to the faceplate. Screw down if desired. Once they're securely attached, press the knobs on from the front. Full disclosure, the encoders I bought had pins already soldered, so I had to desolder and resolder the pins in the correct orientation for this to work.
If you're using the speaker, now's a good time to mount it to the faceplate (along with the optional speaker box). Don't wait until you already have the screen retainer mounted before doing this step, because it covers the mounting point for the speaker box.
Mount the components to the screen retainer/component mount.
Press the LED into the LED mount with the LEDs positioned over the hole in the front of the faceplate, then drop the screen into place over it.
Mount the screen retainer/component mount over the screen and secure it with 4x M2x6 screws. Prior to securing it, ensure the all wires from the LED and wifi antenna (if you're using the external antenna) are threaded into the hollow spaces in the screen retainer, otherwise it's going to be impossible to push the faceplate in. The tolerances are tight on purpose.
Wire up the components. Refer to the wiring guide below.
Carefully position the front plate over the back of the outer casing and push it inward slowly and evenly. Ensure it's flush with the front of the outer shell, press in any areas as needed. Snap the LED diffuser into place. If you decided against using the LED, print the diffuser piece in the same color as the outer casing and press it in. It should sit flush with the front face.
With the faceplate push all the way into, place, screw an M2x8 screw in on the bottom from the outside. On the top, insert an M2x16 through the top triangular hole so that it pokes out of the top of the outer case - we'll thread the antenna on there in the next step.
Assemble the antenna by gluing the two antenna into the base. Tighten the antenna down on the top screw to secure the top retainer clip.
Thread 2 M2x8 (can be longer or a little bit shorter, but longer makes it easier to get the nuts started) screws in from the back of the rear cover, insert the USB-C module, and tighten 2x M2 nuts over them to secure it. Now's a good time to attach the wifi antenna too, if you chose to use an external one.
Screw in the back with 4x M2x8 screws. Stick some rubber feet on. Plug it in. Congrats, you made it!
Wiring
All 5V goes to the power side of the distribution module, all GND goes to the ground side of the distribution module. Primary VIN/GND goes from the distribution module to the Guition relay 5V/GND relay pins. A diagram of the Guition relay pins can be found here.
The wiring I used (and my pre-existing ESPHome/LVGL repository uses) is as follows:
Guition | LED |
|---|---|
GPIO2 (relay 2) | DIN |
VCC (Distribution module power) | |
GNF (Distribution module ground) |
Guition | PCA9548A |
|---|---|
GPIO40 (relay 1) | SDA |
GPIO1 (relay 3) | SCL |
-- | 5V (Distribution module power) |
-- | GND (Distribution module ground) |
-- | A0 (GND) |
-- | A1 (GND) |
-- | A2 (GND) |
PCA9548A | PCF8574 |
|---|---|
SD0 | SDA |
SC0 | SCL |
3.3V (Distribution module power) | -- |
GNDÂ 5V (Distribution module ground) | -- |
-- | A0 (GND) |
-- | A1 (GND) |
-- | A2 (GND) |
PCF8574 | Signal |
|---|---|
P0 | Encoder 1 CLK |
P1 | Encoder 1 DT |
P2 | Encoder 1 SW |
P3 | Encoder 2 CLK |
P4 | Encoder 2 DT |
P5 | Encoder 2 SW |
GND | GND (Distribution module ground) |
5V | 5V (Distribution module power) |
You can find my current ESPHome / LVGL configuration here.
Current time
Today's date
Outside temperature / humidity
Inside temperature / humidity
3-day forecast with conditions, high/low temperature
Pretty specific to my setup, but I have it tied to a shared Music Assistant speaker group. When that group is playing, it shows the current album art as the background, along with the title, artist, and album of the current track. May add some controls to this in the future.
LED shows a wipe pattern when media is playing
Takes a list of Home Assistant calendar entities as input
Shows an agenda view of today's calendar events
Shows upcoming alarms
I currently use Home Assistant's built-in companion app "next alarm" entity, but apparently you can pay a ridiculous amount of money for some other app that exposes all current alarms in HA. I just need to wake up in the morning, so.. Not the path I chose.
I'm sure that as I break this in, I'll find some more interesting uses for the various controls. Here's what I had in place at the time of this post:
Top knob
Press: Next LVGL screen
Left turn: Previous LVGL screen
Right turn: Next LVGL screen
Bottom knob:
Press: Silence alarm
Left turn: Lower backlight brightness
Right turn: Raise backlight brightness
Sky's the limit with LVGL configuration. If you come up with something cool I'd love to hear about it!
License:
Creative Commons — Attribution — Noncommercial