Moddable Zero

Moddable Zero is part of an experiment. We believe adding displays to IoT devices will make them easier to use and the improved user interface will allow the product to offer more features. If you have ever had to configure Wi-Fi on a device without a touch screen, it is easy to understand why we believe in screens.

Touch screens are hard

Unfortunately, adding a touch screen to an IoT device today is impractical. To start, the hardware is too expensive. If the product can sustain a high price display, the next problem is software. The CPUs typically used to drive screens are more powerful, and consequently more expensive, than what most IoT devices can tolerate. Beyond that, the graphics software available to render a user interface on these devices typically gives results that look like poor imitations of the PC in the 1980s. And finally, the application frameworks for building the user interface are equally primitive. The result is an expensive product that works like an antique.


Our first experiments with small touch screens and inexpensive microcontrollers were built by wiring them together with jumpers. This worked, the results were interesting, but it was fragile. We moved on to soldering smaller jumper wires directly to the components. This too worked, and the resulting device was self contained and less fragile. But they are time consuming to properly assemble and the large number of wires was still fragile.

Finally we arrived at Moddable Zero. We replaced the wires with a custom printed circuit board. Assembling the components is considerably faster and easier, and the result has proven sturdy enough to carry around in a backpack.


All the components in Moddable Zero have been selected to keep the cost low. The two main components are the NodeMCU board and the touch screen. The NodeMCU module carries the ESP8266, Wi-Fi antenna, Flash ROM, FTDI chip, and USB connector. The touch screen is an unbranded QVGA (240 x 320) display with 16-bit pixels driven by an ILI9341 display controller and an XPT2046 resistive touch controller. We’d like to use a capacitive touch display, but the prices are still considerably higher. That said, our touch driver delivers reliable touch input with the XPT2046.


The Moddable SDK has four key features that make it realistic to build modern user experiences on Moddable Zero.

  1. Tools. Getting images that look good onto an inexpensive microcontroller is challenging. The Moddable SDK contains tools that convert PNG, JPEG, BMP, and animated GIFs into formats that can be rendered efficiently and stored compact on the microcontroller. There are also tools to compress anti-aliased fonts for use on the device.

  2. Graphics library. The Commodetto graphics library is used for all image loading and rendering in the Moddable SDK. It contains the Poco rendering engine which provides high speed rendering, with alpha channel support, blending, and clipping.

  3. UI framework. The Piu user interface framework is a true object oriented user interface library that tightly integrates with Poco to provide cascading styles, timeline animations, text layout, localization, touch handling, and more.

  4. JavaScript. Most developers find implementing a user interface in JavaScript to be faster and easier than using C or C++ as is common today on microcontrollers. Both Piu and Commodetto are designed to work efficiently with the XS JavaScript engine at the core of the Moddable SDK.


If you are comfortable assembling components yourself, whether with jumpers or soldering, we’ve published instructions on how to wire together an ESP8266 and display in a way that is easily compatible with the Moddable SDK.

Get your own Moddable Zero

The Moddable Zero has been replaced by the new Moddable One and is no longer for sale.