Moddable Four

Year-long operation on a coin cell with BLE and a fast, always-on screen

Designed and built for developers

Moddable Four is powered by the energy-efficient nRF52 microcontroller operating at 64 MHz with integrated BLE, 1 MB of flash memory, and 256 KB of RAM. Its high-contrast reflective 1.28" Sharp Memory display consumes negligible power. Create interactive projects using BLE and the built-in jog-wheel, back button, and accelerometer.

Moddable Four is so energy efficient that it runs for a year on a single coin cell battery. But it is also fast. Interactions with the built-in jog wheel are immediately visible on the smoothly animating display.

Moddable Four Specifications

  • Nordic nRF52840 microcontroller
    • 32-bit ARM® Cortex™-M4 CPU at 64MHz
    • BLE – both peripheral & central roles
    • Ultra low-energy
    • 256 KB RAM
    • 1 MB Flash
  • Sharp Memory 1.28" display
    • Reflective display
    • 128 x 128 pixels (square)
    • 1-bit with dithering for grayscale
    • 60 FPS animation
    • 0.1 uA to maintain display image
  • 12 pins for external components
    • Digital, I²C, SMBus, SPI, PWM, analog input
  • Accelerometer
    • LIS3DH by STMicroelectronics
    • Wake automatically on motion
    • Detect device orientation
    • Low power operation
  • Fits into your project design
    • Thin form factor
    • Optional frame with mounting holes contact us
  • Power
    • 3.3V and 5V outputs
    • 5V input
    • Power switch (battery cut-off)
  • USB port
    • Install project firmware
    • Connect to xsbug JavaScript debugger
    • External power
  • Moddable SDK
    • Modern, industry standard JavaScript for rapid development of robust, secure firmware
    • Native C code for performance and integrating existing libraries
    • BLE APIs for both central and peripheral roles
    • Piu UI framework for building interactive user interfaces
    • Poco graphics renderer for high performance text and animation
    • ECMA-419 APIs for I/O
    • Compatible with ECMA-419 sensor drivers
    • Rendering extensions for SVG outlines, QRCodes, and animated GIF
    • Automatic dithering delivers gray-scale images on monochrome display
    • Automatic optimization of any TrueType/OpenType font for monochrome display
    • Energy management APIs to maximize battery life
    • Industry standard Web Workers API for non-blocking asynchronous execution
    • Open source – available on GitHub
    • Thoroughly documented
    • Hundreds of example apps
    • Supports mods for fast development and quick updates
Brinno TLC300

Production ready

The nRF52 port of the Moddable SDK is ready for commercial consumer and industrial IoT projects. In fact, before being publicly launched it has already been shipping in Brinno's TLC300 time-lapse camera used to record progress at construction sites around the world. Operating on batteries, the Moddable SDK powers the full-color, animated user-interface of the TLC300 reliably and energy efficiently for up to 100 days.

The TLC300 is implemented in industry standard modern JavaScript. All IO is performed using standard ECMA-419 JavaScript APIs, including serial to communicate with the camera subsystem and high-speed SPI for the live camera preview. Using the localization capabilities of the Piu user interface framework, the TLC300 operates out-of-the-box in English, French, German, Spanish, Italian, Japanese, Traditional Chinese, and Simplified Chinese.

Moddable Four Pinouts

The expansion header on Moddable Four has twelve programmable pins that allow you to communicate with a variety of peripherals using digital, analog input, PWM, I²C, SMBus, and SPI. There are also 3.3V and ground pins to power your peripherals.

For convenience, there's also a built-in LED and programmable push button.

Moddable Four Dimensions

Working with Moddable Four


XS: Secure, Private JavaScript for Embedded IoT

The latest release of our XS JavaScript engine puts in place fundamental new capabilities to advance Moddable’s mission of safely opening IoT products to third party software. These new capabilities are implementations of proposals on track for standardization in Ecma TC39, the JavaScript language committee.

Continue reading...

Compiling JavaScript on Embedded Devices

We’ve recently enabled the JavaScript eval function on embedded devices using the XS JavaScript engine. Our long-held position is unchanged: it is almost always a bad idea to compile JavaScript on an embedded device. The reasons that eval are used on the web, for example, do not typically apply to embedded development.

Continue reading...

Best Practices for Accessing Memory Buffers from Native Code with the XS JavaScript Engine

JavaScript applications for embedded systems frequently work with memory buffers to perform a wide variety of tasks. Scripts gain tremendous power by being able to operate directly on the native data of the classes they use.

Continue reading...

View the Developer Guide

The hardware specific Developers Guides are part of the extensive documention available on the Moddable GitHub site.


Using More Fonts More Easily in IoT Products

The fonts displayed on the screen of an IoT product are a key part of its brand, establishing the overall feel of the product. All of Moddable’s commercial clients use the custom font support in the Moddable SDK to brand their products.

Continue reading...
Moddable SDK

Deliver High-Performance Products with the XS Profiler

Everyone involved in delivering software for resource-constrained hardware knows that performance is a key challenge. Low-cost hardware has just enough performance to make a great product possible, but only if the software is careful not to overwhelm the hardware. It is easy to notice that a product is performing slowly. What's difficult is figuring out why it is slow.

Continue reading...
Moddable SDK

Optimizing Life Using the XS Performance Profiler

Everyone involved in delivering software for resource-constrained hardware knows that performance is a key challenge. Low-cost hardware has just enough performance to make a great product possible, but only if the software is careful not to overwhelm the hardware. It is easy t o notice that a product is performing slowly. What's difficult is figuring out why it is slow.

Continue reading...

IoT Development with JavaScript

If you are new to Embedded JavaScript, our book is a great place to start. Originally written for ESP32, the majority of the text and example code also applies to the nRF52 in Moddable Four.

Continue reading...

Scalable Outlines: New Flexibility for Embedded UX

Delivering a modern user experience on low-cost embedded hardware has been a key focus of the Moddable SDK from the start. The Moddable SDK is regularly updated with new rendering capabilities to expand the kinds of user experiences that can be created.

Continue reading...

JavaScript for Embedded

Moddable is the only embedded engine provider on the JavaScript language committee. We joined to ensure JavaScript remains a great language for use in embedded. Here's our original presentation to the committee.

Continue reading...

Introducing Moddable Four

Moddable Four is the new ultra-low power development board for Embedded JavaScript developers from Moddable. Moddable Four pairs the ultra-low power Nordic nRF52 microcontroller with integrated BLE and an ultra-low power Sharp memory display in a compact module that can operate for up to a year, with the display on, using a coin cell battery.

Continue reading...

(Very Experimental) TypeScript Support in the Moddable SDK

Moddable believes JavaScript is the best language for building IoT products. We’ve heard from many developers that they agree with us, but that it is important to them to be able to use TypeScript.

Continue reading...
Moddable SDK

Going Deep with XS: deepEqual and structuredClone

Comparing and copying JavaScript objects are fundamental operations that are remarkably complex to implement correctly and efficiently. Because these operations are not built into the JavaScript language, various solutions have arisen to make life easier for developers. Web browsers provide the structuredClone function to make a deep copy of an object.

Continue reading...