An ESP32-S3-Box as a little desk dashboard
The ESP32-S3-Box is Espressif’s showcase dev kit. It’s a small plastic box with a 320×240 touchscreen, two microphones, a speaker and an S3 chip inside. It’s really meant to show off voice assistants. Mine has ended up on my desk showing the air quality instead.
What’s on the screen
It runs ESPHome, and the whole screen is drawn in one C++ lambda, a few lines per item:
- the date on the left and the time on the right, across the top;
- a one-line rain summary from AccuWeather’s MinuteCast (something like “rain starting soon”), via a sensor in Home Assistant;
- the CO₂ reading from my study’s air-quality sensor, in ppm, next to a graph of the last hour;
- the study temperature, with its own hour-long graph.
ESPHome’s graph component does the charts. You give it a sensor, a duration and a size, and it keeps the history in memory itself. The CO₂ graph runs from 400 to 2,000 ppm with a gridline every 500. The temperature one runs from 0 to 25 °C. Both are drawn in red on a black background.
It pulls in the Home Assistant weather forecast too, but hasn’t found a spot on the screen for it yet. At 320×240 you run out of room fast.
A couple of small extras came for free. Tapping the touch-sensitive home button under the screen turns the backlight on and off. And the box also acts as a Bluetooth proxy for Home Assistant, relaying any Bluetooth sensors nearby over Wi-Fi.
The bit that didn’t work: audio
The obvious thing to do with a box full of microphones is to talk to it. ESPHome didn’t support the S3-Box’s audio chips out of the box at the time. There’s the ES8311 for the speaker, and the ES7210 for the microphones. So I pulled in two unofficial components: an open ESPHome pull request for the ES8311, and a community fork with an ES7210 driver. Then I wired up the microphone, a media player and ESPHome’s voice_assistant, with a button on the box as push-to-talk and icons on the screen for “muted” and “listening”.
All of that is now commented out. The dashboard works, and the voice part doesn’t.
The config still has the leftovers of the first battle with the S3, too. The USB CDC logging was broken on the S3 at the time, so I log over the chip’s built-in USB serial/JTAG port instead.
Where it stands
It’s a dashboard that sits on the desk showing the CO₂, the temperature and whether rain is on the way. The microphones are just along for the ride.