Creating a functional device of your own isn’t exactly easy if you start with a blank piece of paper. Development systems are tools that make it easier to try out an idea, but they can hardly be stuﬀed into a functional product. With its devices, LilyGO tries to guide users one step closer to the ﬁnished product, but not without some sacriﬁces in the form of a vastly reduced GPIO. TEmbed is a uniﬁed system consisting of an ST7789 1.9′′ 320-by-170 TFT color LCD, a rotary encoder, an array of 7 RGB APA102 diodes, a microphone, a speaker, one Grove connector for external sensors, an SD card slot, and a battery connector. The backbone of the T-Embed is the Espressif ESP32S3 SoC, with 16 MB of Flash and 8 MB of PSRAM memory. The Wroom-1 module it’s situated in also provides WiFi 802.11 b/g/n and BLE 5 support.
Our LilyGO T-Embed was sent to us by the manufacturer for review purposes. It shipped in a nice, sturdy clear plastic box, protected by a sponge insert. The included fold-out instructions were a handy reminder of all the essential port pinouts. Included in the box were also a header and a ribbon cable for the IDC3 connector meant for debugging (the usual way of ﬂashing and powering the board is through the built-in USB-C). Finally, a JST-GH cable for connecting a battery is included, which is a nifty feature for building standalone devices.
We wanted to dig a little deeper into the possibilities of the T-Embed and also get a feel for the intended workﬂow. We downloaded several ready-made applications from LilyGO’s GitHub and compiled them without problems in the Arduino environment (1.8.19). We had a little hiccup here because we realized that 2.x releases of the Arduino IDE do not know how to ﬂash the ESP32S3, so we were forced to downgrade. Although the manufacturer recommends using the newer IDE for development and then transferring code to the older one for ﬂashing, we found these steps superﬂuous and just stuck to using the trusty 1.8.19 version, especially due to its compatibility with the widest range of software libraries.
We’ve also created a simple textbook example that reads values from a Grove sensor board (featuring a BME289 humidity, pressure, and temperature sensor) and displays the results on the screen. It also allows for selecting a single parameter to display prominently using the encoder. We wrote this app quite easily and felt like a beginner could have also done it without much fuss; there’s no high programming or hardware skill barrier to be crossed here.
To pack this project up as a nice gadget, we 3D printed a protective clear case for the T-Embed on our Formlabs Form 3+ printer. The ﬁle for the case is available on LilyGO’s GitHub.
Finally, after a few days of playing around and testing with the T-Embed, our opinion about this small all-in-one kit is positive. By putting it in a purpose-built box, we ended up with a portable and attractive multi-purpose device. We have to take some points of view due to the existence of only a single Grove port and pitch in a serious complaint about the encoder, which in this case had to have been of the highest possible quality since it is the main way of interacting with the device. It was a constant source of frustration, as it didn’t always immediately respond to interaction, even in the demo apps that come with T-Embed. Despite that ﬂaw, the entire system is generally worth it, especially given the fair $32 price.