As more and more every day objects are internet-enabled (the so-called Internet of Things), new resources for creating your own devices that connect to the web are increasingly available. However, coming from a software development perspective, sometimes the hardware can be somewhat obtuse (for the hardware developers too, apparently). That’s why I was excited to help crowd-fund Technical Machine’s Tessel project last year. No complex code understanding is required; you can push Javascript code (it’s Node-compatible) to the controller to create physical applications.

Example of Tessel code It’s just Node.js: Writing some ridiculous Javascript to turn LEDs on and off

The potentialities are intriguing. For example, at Typeoneerror this year, we received a number of requests to do work for trade shows where a software application either responds to or manipulates a physical environment. Without partnering with a engineer with a lot of hardware expertise, we would have trouble executing projects such as these (the software is no trouble for us, but how do we communicate with physical world easily without many months of work?).

The Tessel board makes responding to the physical environment a *snap*, literally—the plugin-and-play architecture allows you to connect different modules that add new capabilities to your system: cameras, light and sound sensors, even SIM cards for 2G internet. You could make your own phone! The technology is simple, but in the future, I could see people easily snapping together and programming their own devices and quickly adding them to their network of other custom devices.

Tessel with modules Image copyright: Technical Machine

I recently received my Tessel microcontroller with the Ambient module, and did some short learning and experimental exercises. The software that comprises the firmware(s) is somewhat volatile, but I was able to do some basic cool stuff without much effort. The ability to drop in existing Node modules makes the framework incredibly powerful. What will we make?

So Many Possibilities

“Turn your coffee maker on when the Ambient module detects light, or based on input from an app [with the Relay module].”

Immediately, I think of so many fun things to do with these microcontrollers…

  • Fermentation chamber monitoring with the Climate module.
  • Make a custom game controller with the Accelerometer module.
  • Create a lazer game that Mochi can activate herself with the RFID module.

Playing with the Tessel

I decided to testing out my Tessel Ambient module’s ability to respond to changes in ambient sound and light.

Prepping the Tessel

To start, follow along with the Tessel node module installation instructions. This includes installing the node package and then updating your Tessel board’s firmware while it’s plugged in via USB:

$ npm install -g tessel
$ tessel update

Easy enough. I ran some of the test scripts in the installation without issue, then plugged in my Ambient module and tried to run the test script, which failed. Turned out you need to first update the firmware for the module itself.

Updating firmware

I had to run this simple script which fixed the issue after pushing it to the Tessel (NOTE: Tessel should be plugged into “Port A” for this to work):

#!/usr/bin/env node

var tessel = require('tessel');
var ambientLib = require('ambient-attx4');

ambientLib.updateFirmware(tessel.port['A'], 'node_modules/ambient-attx4/firmware/src/ambient-attx4.hex');

Run the update with tessel:

$ tessel run firmware-update.js

Once the firmware was updated, I was able to run the sample Ambient script to see the changes in sound and light data in real-time logged to my console. Unfortunately, at first, the light-trigger was not firing. Turns out I’d discovered another bug in the firmware (did I mention that the software is somewhat volatile?)! After some back and forth in the forums, another patch was supplied and then the example worked flawlessly.

What do you think?

Are you building something with Tessel? Using Raspberry Pi or Arduino and think one of those is better. Let me know about it on Twitter. I’m definitely excited about potentially utilizing more hardware in our client work!