Sean Gallagher





















A while back, Ars took our first step into building the Internet of Extra Creepy Things (IoECT) with BearDuino, a hardware-hacked Teddy Ruxpin combined with an Arduino Uno and some desktop software. We have not yet turned BearDuino into a cloud-connected, mobile journey down the uncanny valley. But since we've started testing Particle's Electron, a cellular-connected Arduino-like device that wirelessly tethers sensors, servos, lights, and other electronics to a cloud-based service, that goal is within our grasp.

When we first heard about the Electron in February, we were eager to get our hands on a kit to see what was possible. Now that we've tested it out a bit—turning lights on and off across the Internet and diving into the code a bit—we're preparing to push it further. Like many "maker" kits, Electron starts off with a relatively mild learning curve that suddenly becomes more severe as you push toward doing anything practical beyond the tutorial samples. But unlike others we've laid hands on recently, it comes with a well-polished set of tools and services behind it that takes some of the sting off the harder climbing.

The main concern most hardware developers will have, however, is whether the Web-based consoles and services and the one-stop supply of global cellular connectivity is worth it to get locked into Particle's ecosystem—which can also become expensive. That's not something we can effectively answer for everyone based on this test drive. But we can say that if you're looking for a reasonable way to remotely manipulate an animatronic teddy bear wherever it is in the world, Electron is perfectly capable of doing that.

Particle, the company formerly known as Spark Devices, is one of a number of entrants into the wireless Internet of Things maker world, with its ARM-based platform already available in a Wi-Fi connected version called Photon. Photon and Electron are connected to the cloud through a simple set of APIs that can be added to existing Arduino sketch code, as well as to C and C++ code. (Additional code can also be written in ARM assembler.) There are also libraries for iOS and Android to build applications that connect to the Particle platform.

Electron is not intended to be used for big, fat, noisy applications that generate a constant data stream. That would become very expensive with Particle's built-in data plan, available over 2G or 3G GSM networks worldwide. Instead, it's designed for applications that poll remote devices periodically for specific bits of data—or push discrete commands to them when required.

The Electron kit comes with the board itself, a 3.7 volt 2000 milliamp-hour lithium battery, a cellular antenna, a USB cable, a breakout board for prototyping, and a small collection of electronic components for demo applications. There are two resistors, an LED, and a photoresistor included in the kit for getting feet wet, as well as a card that fits over the breadboard to show where to plug everything in. Also included is a SIM card for the Electron's built-in cellular modem.

While the Electron, like the Photon, is Arduino-like, it is not exactly Arduino. Arduino .INO-format sketches can be ported over to Electron, but not without some changes; the I/O port labeling is different to some degree, and there's not a direct correlation of libraries. That said, the Electron is not intended to be a simple Arduino clone, and it does a very good job of incorporating cloud connectivity into sketch code with Particle-specific functions (sometimes labeled in older samples of code as Spark functions).

It took just a few minutes to get our Electron set up and registered through Particle's website, and we configured the board to receive commands from the cloud. From there, it was a quick dive into the Web development environment—from which it's possible to do almost all of what we needed to do in the development cycle. The desktop IDE for Particle's platform, based on GitHub's Atom project, is nearly identical to the Web IDE. But you'll want to have the command-line interface tools, based on Node.js, to add code to the Electron without doing an over-the-air "flash" (and expending cellular data in the process).

You don't even really need to write any code to get an idea of what Electron is capable of, since it comes with a basic application called "Tinker" already flashed into its memory. Tinker works with a mobile app of the same name and allows you to send digital (HIGH or LOW) or analog data to Electron. It also allows you to read digital and analog output values from the devices wired to each input-output port. (See the animated GIF in the gallery for a demonstration.)

While much of Particle's documentation and tooling is pretty polished, there are some places where a little cleanup is still required. The name change of the company and of the cloud functions from Spark to Particle and some other versioning issues have left some library code and samples in mind-the-gap condition. Tutorials sort of drop off a cliff once you get past getting your first LED blinking and using the included photoresistor to publish an alert when a light beam is cut off.

There's also the issue of how much working with Electron will cost once a project moves past prototyping. The 3G version of the starter kit costs $69, with a global 2G kit priced at $49; Particle's basic data plan starts at $2.99 per month for 1 megabyte of data and 99 cents for each additional megabyte. Obviously, the price of the hardware comes down in volume, but the mobile rates don't drop nearly as much. Of course, given the applications for cellular-connected things—such as asset trackers with GPS or field equipment self-diagnostics—the amount of data consumed in a production environment might not be overly prohibitive. However, using Electron to move a Teddy Ruxpin's eyes and mouth in synchronization with the voice of someone on a teleconference is a different story.

We did not get a chance to play remote bear puppetry yet, largely because of a simple issue of physics: the Electron runs at 3.3 volts, and most servos require at least 5. So we'll need to pull power for the servo from elsewhere to get BearDuino lip-synching from outside of Wi-Fi range. We promise to share video when we do.

Listing image by Sean Gallagher