Tessel is a new breed of development board that runs entirely on Node.js, and after a successful Kickstarter, they've now the reached the point of being available to everyone. What is it exactly, how does it differ from other hobby boards, and what potential uses does it have?

What is Tessel?

Tessel is a pure Node.js development board, so everything is written in JavaScript and run using a super fast Node engine developed by Google. It's $99 including your choice of a basic module, or $125 with an advanced module like RFID.

In terms of hardware, Tessel has:

  • 180 MHz ARM processor
  • 32 MB SDRAM
  • 32 MB flash storage
  • 20 GPIO pins
  • Built-in WiFi (though the signal is weak, so it's recommended you add your own antenna)

The built-in WiFi is an admirable feature: in one simple command, I had my Tessel connected to my home network, the details of which are then saved separately to any programs you add, so it'll automatically reconnect each time.

Currently, there is no special IDE required (or provided) to program for the Tessel. Since it's standard JavaScript, you can use any text editor, or a programming-oriented editor like Sublime Text (check out my review) for syntax highlighting. Uploading code to the Tessel is done via the command line in one simple command. As with any Node application, there are thousands of programming libraries available - such as a simple Web server - available to drop into your application using NPM (the Node Package Manager).

tessel-example

There are 14 different hardware modules to add extra features such as infra-red or RFID, though some are not yet shipping. They work in a similar way to Arduino shields, slotting into one of the four module plugs on the Tessel. If it takes off in the same way Arduino has, we should expect to see third party add-ins fairly soon.

Pictured below: the RFID and IR modules plugged into the Tessel via 3 of the 4 expansion ports.

tessel-expansion-boards

Comparison to Raspberry Pi

Much of what the Tessel can do can already be achieved with a Raspberry Pi: a Pi can run Node.js, for instance, albeit very slowly (we tried in the Heimcontrol home automation project); and it has a set of GPIO pins for interacting with sensors. Similarly to the Pi, Tessel's GPIO pins operate at a maximum 3.3 volts, though the board provides power for 5 volts.

The ease of use is the main differing factor. Installing Node.js on a Raspberry Pi isn't an easy task, and even with graphical desktop functions disabled, Node runs at a snail's pace. You'll need to SSH in to the Pi remotely to edit files, and then there's the issue of configuring wireless networking.

Uploading your Node.js code to the Tessel is a single command, as is connecting to WiFi. And by running Node natively, it's a lot faster.

Of course, you can't use the Tessel as a general purpose cheap computer like the Pi. The Pi is a jack-of-all-trades and a master of none; the Tessel is a master at just running Node. The Pi also has considerably more RAM, and more drive space for your apps thanks to its SD card storage.

Comparison to Arduino

Arduino is an extremely low cost micro-controller (you can even build one yourself), available in a variety of form factors. With a mind-blowing number of tutorials and additional functionality available via standard components as well as breakout boards, it makes an ideal low cost starter in the world of electronics. It uses a special programming language that's derived from C and a custom development environment application (IDE), but it's no less difficult to pick up than Node/JavaScript, particularly if you already have a little experience.

arduino-feat

Programming in Node is easier for things like reacting to sensors, thanks to the event-based paradigm. With Arduino, reacting to sensors means adding a function to read the value each loop cycle. With Node, you simply attach to an event, which is then fired when a signal is detected.

The processing power and memory of the Arduino is rather limited compared to Tessel - it won't handle anything software-heavy. Even the largest of the true Arduino boards only offers 128KB of flash memory with 8KB of RAM.

That said, if your project is heavily electronics-based or you require more fundamental access to things like interrupts and timings, you might want to stick to an Arduino. The cost is also a big difference, of course.

The Bad

In theory, Tessel should be working with most NPM packages. In practice, it's buggy, and at the time of writing neither Express nor Sockets.io were fully-functional due to incompatibilities in core HTTP modules. I have no doubt these will be fixed in time, but right now it's a bit limiting.

Although the expansion module hardware is a nice package, the Infra-Red functionality isn't nearly as simple to work with as the Arduino one - it requires the use of decoded buffers, rather than the standard signal type + Hex code we're used to. Again, improvements are promised here later down the line.

The WiFi antenna also has a terrible range - we're talking same room, ideally - and improving it involves a nasty bit of small-scale soldering (though instructions on how to do the hack are very clear). Documentation also suggests the WiFi chip may have issues with 802.11n speeds, and 5GHz networks, though I was at least able to get it connected to my 802.11n 2.4GHz network. Including a switch for the antenna hack with the external socket pre-soldered would been much appreciated, and not everyone is confident with a soldering iron.

What's Tessel Good For Then?

The Internet of Things. Tessel has a lot to like about it, but it's early days yet. On-board WiFi means it's perfect for a new generation of interconnected devices; whilst Node support from the ground up should ensure fast and easy implementation of JSON APIs or simple server stacks.

Tessel is one to watch - a potential contender to take the crown from Arduino, even - but I'd hold out for now until some the wrinkles have been ironed out. And if you decide to buy one, you'll find some great Tessel DIY tutorials from us to look out for on the horizon.