XIAO variety ESP32 chips recently received a new addition, the ESP32-C5 entered the fray. It is the first device to support dual-band 2.4 GHz and 5 GHz Wi-Fi 6 along with Bluetooth 5 LE, Zigbee and Thread. This is a very “typical” XIAO ESP32 chip in terms of its compactness, integrated battery management and support for low-power operation. Seeed Studio sent me a set of Grove sensors and an expansion board for review, so I created my own personal desktop friend to see what it was capable of.
I bought the following Grove sensors: Digital Infrared Temperature Sensor, Piezo Vibration Sensor, Gesture Sensor (PAJ7620U2) and Button. The temperature sensor can pick up both the ambient temperature and the temperature of whatever it’s pointing at, while the vibration sensor and gesture sensor do exactly what they sound like. Finally, thanks to the small OLED screen brought by the expansion board, the button can be used to control the device. It’s a simple setup, but I got a lot of mileage out of it.
The C5 is a subtle upgrade, but it’s the right one
Wi-Fi 6 on a thumb-sized board
If you’ve used any XIAO ESP32 board before, the C5 will feel instantly familiar. It’s the same small footprint, same USB-C connector, same set of GPIO pins broken along the edges. Physically, there’s nothing here that screams “next generation.” But the differences are under the hood, and they’re more important than you might think.
The headline feature is dual-band Wi-Fi 6. For most ESP32 projects, 2.4GHz Wi-Fi is fine, but if you’ve ever tried to run an ESP32 in a house full of smart plugs, Zigbee coordinators, and Bluetooth peripherals, you’ll know how congested it can be. The C5 allows you to switch to 5GHz instead, which in some cases can mean a noticeably more stable connection with less dropped packets. It runs on a 240 MHz RISC-V processor with 384 KB of SRAM, which is more than enough for sensor polling and a small web server.
Another thing to note is protocol support. Zigbee and Thread baked, which means that this board could theoretically act as a Matter bridge or a line-to-line yarn boundary diverter. I didn’t explore this for this project, but it’s nice to know the option is there. For under $7, that’s a lot of radio packed into a board barely bigger than my miniature.
Three sensors and an expansion board go a long way
Grove makes the hard part easy
The XIAO Expansion Board is what ties everything together here. It gives you an OLED screen, a microSD card slot, a beeper and a few Grove connectors without having to solder anything. The Grove system is one of those things that, until you actually use it, seems like a basic nicety and nothing else…. Then you realize how much time it saves. Each sensor simply clicks into a connector and you’re done.
The two I2C ports on the expansion board control the temperature sensor and the gesture sensor, while the button takes up the digital socket. All three connected without any address conflicts, which is one of the advantages of having sensors designed working together in the same ecosystem. I got two of the three working within the first hour, and the third took some work to get the gesture sensor working properly. The piezo vibration sensor is next on my list to connect to the analog port, and I plan to use it to turn on my computer with Wake-on-LAN. when he slapped my desk.
The gesture sensor is the star of the show for me. It recognizes nine gestures, including left, right, up, down and several circular movements, and the recognition is surprisingly responsive. I was testing it to scroll between pages on an OLED display: a wave to the right goes to the next screen, a wave to the left goes back. I ported the PAJ7620 Grove library to use ESPHome’s I2C instead of Arudino Wire, so this is the current work, but I like what it’s doing so far, even though I don’t want much better. I’m not quite sure what that “something better” is yet, but I’m experimenting with a few different things, and it will likely involve a 3D printed box. I have already printed the top part This event from Seeed Studio it was a little tricky to get it in place, but getting the connectors on the side corner to fit the way I wanted.
Meanwhile, the button still has a role in page scrolling, and I could use it to turn the screen on and off when combined with the gesture sensor. Because honestly, waving my hand at a blank screen to wake him up felt a little too much like talking to my cat who was ignoring me.
A table friend that has earned its place
It’s not bright, but it’s mine
The end result of all this is a small device that sits next to my monitor and rotates between several screens: ambient and surface temperature readings and a general status page. None of this is particularly advanced, and I could probably get something similar with a store-bought gadget and software. But that is not the point.
What I like about building something like this is the control. If I want to add a screen that shows my next calendar event, I can. If you want the buzzer to go off when the temperature in my office reaches 28 degrees, it’s just a few lines of code. The OLED on the expansion board is small, just 0.96 inches, but sharp enough for the information at a glance I want from it. I don’t read articles on this topic. I see that my office is hot and I go back to work.
Gesture control, while not improved, is the part that makes it feel like more than just a touchscreen readout. Being able to wave between screens without picking anything up or reaching for a button makes the whole interaction passive, almost ambient. I found myself waving my hand to check the temperature page more often than I expected, which is either a sign that it’s well designed or that I’m easily entertained. Probably both.
Of course there are limitations. OLED is small enough that putting more than a few lines of information on a page requires some creative formatting. While the C5’s Wi-Fi 6 support is great, I’ve yet to build any networking features in this project that really take advantage of it. Currently, it is completely local, built through ESPHome. That’s fine for a desk buddy, but it means the dual-band connection is sitting there waiting for a future use case. Also, until I put it in a proper case (current case still leaves trailing wires), it looks a bit messy.
That’s the thing about projects like this, though. They are never finished. The XIAO ESP32-C5 has enough to keep me busy, and the Grove ecosystem means I can plug in a new sensor whenever I want to expand what this thing can do. For now, it sits on my desk, tells me the temperature, and I can wave like I’m conducting a very small orchestra. And that’s enough to entertain me.



