Building The Internet of Things, With Tessel: The Node.js Development Board

James Bruce 25-07-2014

Tessel is a new breed of development board that runs entirely on Node.js What is Node.JS and Why Should I Care? [Web Development] JavaScript is a just a client-side programming language that runs in the browser, right? Not any more. Node.js is a way of running JavaScript on the server; but it's so much more as well. If... Read More , 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 Try Out Sublime Text 2 For Your Cross-Platform Code Editing Needs Sublime Text 2 is a cross-platform code editor I only recently heard about, and I have to say I'm really impressed despite the beta label. You can download the full app without paying a penny... Read More ) 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).



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-boardsComparison to Raspberry Pi

Much of what the Tessel can do can already be achieved with a Raspberry Pi Just Bought A Raspberry Pi? 11 Things You Need To Know In this video, we explain everything you might need to know if you've just bought a Raspberry Pi, or are thinking of buying one. Read More : a Pi can run Node.js, for instance, albeit very slowly (we tried in the Heimcontrol home automation project Home Automation Guide With Raspberry Pi and Arduino The home automation market is flooded with expensive consumer systems, incompatible with one another and costly to install. If you have a Raspberry Pi and an Arduino, you can basically achieve the same thing at... Read More ); 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 Setting Up Wireless Networking on Your Raspberry Pi Virtually every Raspberry Pi project will require a network connection, and considerable flexibility can be gained by ignoring the Ethernet port in favour of a wireless USB dongle. Read More .

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 What is Arduino: Everything You Need to Know (In Video) What is an Arduino and why should you care? In this video, I attempt to answer that question, and more. Read More 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.


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 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 Introducing the TV Devil, An Easy Remote Control Arduino Prank Read More – 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.

Explore more about: JavaScript, Programming.

Whatsapp Pinterest

Enjoyed this article? Stay informed by joining our newsletter!

Enter your Email

Leave a Reply

Your email address will not be published. Required fields are marked *

  1. Habib Alamin
    July 25, 2014 at 6:10 pm

    This reminds me of the talk, "The Birth and Death of JavaScript" -

  2. Leonardo
    July 25, 2014 at 5:43 pm

    I'd like to compare the Tessel with the Intel Galileo. Since the Galileo runs Linux, you should be able to install Node on it. Then, you would have the power of Node/Javascript together with the versatility of an Arduino board.

    I think I'm going to make this my next project.