About SBC Reviews

Welcome! At Bocoup, we’ve been doing a lot of thinking about different Single-Board Computer (SBC) platforms.

Open Web Technologies and Web-Connected Devices

We see SBCs as part of a Web-Connected Devices ecosystem that also includes the web itself, “traditional” web clients and browsers, home automation technologies, microcontroller-based devices, mesh-networked sensors and (much) more. The connective tissues are open, standards-based technologies.

There are a lot of boards out there, and they’re arriving on the market thick and fast. While it’s easy enough to Google for specs—how many USB ports does this one have? What’s the processor in that one?—it’s harder to get a sense of how to really use one. How to get from point A to point B on a particular device. Which devices make sense for which kind of project. Subjective stuff. Examples.

This site is a resource for people who build the web: JavaScript and Node.js developers, IoT dreamers, those curious about the advances of web technologies in the physical world.

Maybe you’re just learning electronics. Maybe you’ve graduated past basic microcontroller-based boards like the Arduino family and are curious. Or maybe you’re building something and thinking of moving it on to production as a web-connected device. We hope these reviews and explorations can shed some light on how these boards really tick.

What’s with all the JavaScript?

We’ve trended toward controlling each of the reviewed platforms with JavaScript. JavaScript is the world’s most popular programming language (accepted as “the language of the Web”). Using it as a lingua franca for our explorations helps us bring each platform into a similar frame of reference, making cross-comparisons more relevant.

These are capable bits of hardware, tiny computers of their own right. They’re up to the task of running JavaScript (and Node.js)—in fact, some are even designed for it. This is not a situation of having a JavaScript hammer and thinking everything IoT is a nail to whack with it or a campaign to support full-fledged Node.js on every last bit of embedded hardware out there. But JavaScript and concomitant open web technologies do converge on a natural sweet spot on SBCs: orchestrating and communicating with sensors or mesh networks, integrating with APIs, running web servers and bringing the breadth of the Node.js and other ecosystems into our web-connected worlds.

What’s an SBC?

The definition of Single-Board Computer is fuzzy. From our vantage, they slot between highly-constrained microcontroller-based development boards (like Arduino-compatible boards) and general-purpose computers (though the Raspberry Pis are pushing that boundary).

SBCs—though not all of them—are typically capable of running a full-blown OS and have processors that are 32-bit or better. Often they provide interconnects for peripherals or other devices. Many have on-board WiFi and solid-state storage. SBCs for web-connected devices have at least some on-board GPIO (general-purpose I/O pins). All here are capable, in one way or another, of running JavaScript (or a subset danged close to JavaScript) natively.

About the Reviews

Each of the platforms we evaluated has an in-depth standalone review. These are narratives following our progress through getting the platform set up and making first forays into developing for it.

A collection of factors—ease of setup, quality of documentation, flexibility of development workflow, etc.—are summarized for all platforms on the results page.

Representative Tasks

In each review, we’ve attempted to perform some basic tasks that represent core hardware I/O and functionality.

For these tasks on most (but not all) platforms, we use the open-source johnny-five JavaScript framework. Johnny-Five provides an abstraction of hardware components so that prototyping is fast and can be portable across different platforms. Johnny-Five supports Arduino-compatible boards “out of the box”, as it were. For other platforms, we’ve made use of community-built I/O plugins with Johnny-Five to adapt for the hardware differences. In cases where Node.js and/or npm were unavailable, we wrote some of these tasks from scratch using a supported framework.

What’s the point? We feel that being able to have portable logic in the software layer and an abstracted hardware I/O can help with speedy prototyping, a boon to software-familiar devs!

1. Controlling an LED with a button

Use a pushbutton (momentary switch) to toggle an LED on and off. Demonstrates digital input and digital output and logic levels—controlling a single LED is, after all, the hello, world of hardware.

2. An Automatic “Nightlight”

Use a photoresistor to gauge brightness in the room and fade an LED to an appropriate brightness. This demonstrates analog-to-digital (ACD) conversion of varying voltages from the photoresistor circuit and PWM (pulse-width modulation) output.

3. Realtime Web Compass

Uses readings from a common serial I2C (Wikipedia) magnetometer (i.e. compass) and a webserver with websockets (MDN) to provide real-time compass heading information in a connected browser.

The code for this example creates a web server available at port 3000 (by default) on the device’s local IP. Visiting that URL with a browser on the same network will show real-time compass headings.

4. Pomlet

A small application built on top of a more complex circuit (LCD, five input buttons and a PWM-pulsed LED). The logic is handled on the software layer and is adapted (via configuration) for different boards and I/O.

More about Pomlet