Build your product faster.

Tessel 2 is a development platform you can embed in a product. Build fast with Node.js/io.js, then optimize the hardware and build thousands.

Tessel 2 Features

Everything you need to get up and running.

  • 2 Tessel Module ports
    add sensors and actuators in one step
  • 2 USB ports
    use peripherals like cameras and 3G/4G dongles
  • 802.11bgn Wifi
    connected out of the box and wirelessly programmable
  • Ethernet
    an ultra-reliable, wired connection
  • 580MHz Mediatek MT7620n
    execute your program faster
  • 64 MB DDR2 RAM & 32 MB Flash
    plenty of space for your code
  • 48MHz Atmel SAMD21 coprocessor
    realtime I/O and better power management
  • microUSB
    power and tethered programming

Plug & Play Module Ecosystem

Prototype fast with modular hardware.

Interact with the physical world from sensing to actuation to connecting with other devices. Each module has an open source library on NPM, with instructions and tutorials available online. It's literally plug, npm install, and play.

High Level Hardware APIs

Build your application in minutes.

Tessel 2 runs JavaScript and supports NPM (the Node package manager)— that's HTTP, Twitter, web server, color, and async right out of the box.

npm install tessel -g

Add Library
npm install ambient-attx4  

Get Online
tessel wifi -n [ssid] -p [password] 

Tessel 2 also has the capacity to support multiple languages– see samples of Rust and Python in the tabs below.

/* ambient.js example */
// this example streams sound data from // the ambient sensor every 0.5 seconds var tessel = require('tessel'); var ambientlib = require('ambient-attx4'); var WebSocket = require('ws'); // Connect to our ambient sensor. var ambient = ambientlib.use(tessel.port['A']); // Open a websocket to our app. var ws = new WebSocket('ws://'); // When the connection is established ws.on('open', function () { setInterval(function () { // read some sound level data ambient.getSoundLevel(function(err, sdata) { if (err) throw err; sdata.pipe(ws); }) }, 500); // The readings will happen every .5 seconds });
## example
import tessel import ambient_attx4 port = tessel.port('a') ambient = ambient_attx4.Ambient(port) for sound_level in ambient: print "Sound: {}".format(sound_level)
/* example */
extern crate tessel; extern crate ambient_attx4; fn main() { let port = tessel::port("a").unwrap(); let mut ambient = ambient_attx4::Ambient::new(&port).unwrap(); loop { let sound_level = ambient.sound_level().unwrap(); println!("Sound: {}", sound_level); } }

Use your favorite text editor and libraries to program Tessel 2, just like any web development environment. Uploading new code is as easy as tessel run!

Run Code
tessel run ambient.js

USB Modules

Tessel has two USB ports. Plug in USB modules and control them with a simple script.

/* ambient-camera.js example */
// this example records video from a camera // when a certain sound level is reached var tessel = require('tessel'); var http = require('http'); // set up camera var cameralib = require('camera-usb'); // set up ambient sensor on port A var ambient = require('ambient-attx4').use(tessel.port['A']); // set a sound trigger ambient.setSoundTrigger(0.6); cameralib.find(function(camera) { // stream some video when sound is sensed ambient.on('sound-trigger', function(){ var req = http.request({ hostname: '', path: '/upload', method: 'POST' }, function (res) { res.pipe(process.stdout) }); camera.captureStream(2000, 'mjpg').pipe(req); }); });
## example
import camera_usb import requests import tessel import ambient_attx4 ambient = ambient_attx4.Ambient(tessel.port('a')) camera = camera_usb.find() while True: ambient.wait_for_sound_trigger(0.6) video = camera.capture_stream(500, "mjpg")'', data=video)
/* example */
extern crate hyper; extern crate camera_usb; extern crate tessel; extern crate ambient_attx4; fn main() { let mut camera = camera_usb::find().expect("Could not find camera"); let port = tessel::port("a").unwrap(); let mut ambient = ambient_attx4::Ambient::new(&port).unwrap(); let mut client = hyper::Client::new(); loop { ambient.wait_for_sound_trigger(0.6); let mut video = camera.capture_stream(2000, camera_usb::Format::MJPG); let mut res ="") .body(&mut video).send().unwrap(); } }

Combine USB and 10-pin modules and run them with the same script.

Run Code
tessel run ambient-camera.js

Clap to trigger camera
Camera is off

Trusted by

Open Source

Just like the original Tessel, Tessel 2 is open source software and hardware. Contributions are welcome!

The Nitty

  • Programmable in JavaScript
  • Planned support for Rust and other languages
  • Tessel Modules for added hardware capabilities
  • Runs io.js and Node.js
  • Deploy over USB or remotely by WiFi
  • CE and FCC certified
  • MicroUSB programming and power
  • Supports 10/100 ethernet

The Gritty

  • 580MHz Mediatek MT7620n
  • Linux built on OpenWRT
  • 802.11bgn WiFi
  • WEP, WPA, WPA2-PSK, WPA2-Enterprise
  • 64MB DDR2 RAM
  • 32MB Flash
  • 16 pins GPIO, 7 of which support analog in
  • 2 USB 2.0 ports with per-port power switching