Posts Tagged ‘node.js’

Microsoft Releases Raspberry Pi 3 Web Simulator Working with Azure IoT Cloud

July 11th, 2017 No comments

If you were already following this blog when the first Raspberry Pi launched, you may have tried to emulate a Raspberry Pi and run Fedora in QEMU, as getting a board was a challenge at that time. Microsoft has launched its own Raspberry Pi (3) simulator running in web browsers, connecting to virtual sensors and components using Fritzing, and interfacing with the company’s Azure IoT cloud service.

Click to Enlarge

The preview version of the simulator does not allow you customize components on the breadboard, something you’ll be able to do in the release version, so we are stuck with a BMP280 sensor and red LED in the assembly window. on the left. On the top right, we’ve got sample source code written using Node.js to read temperature data from the sensor, push it to an Azure IoT Hub, and blink the LED in the coding area, and finally the integrated console window can be seen on the bottom right corner.

To do anything useful, you’ll need to create a new IoT Hub in Azure, at which point you’ll need to register an account, and provide a mobile phone number and credit card info for authentication, so I stopped there. The company does say “you will not be charged unless you explicitly transition to a paid offer”, so it should be free to try.

You’ll find the full simulator doc here, and the project is open source with all files released in Github.

Via Eddy Lab’s G+ Community

Top Programming Languages & Operating Systems for the Internet of Things

May 19th, 2017 3 comments

The Eclipse foundation has recently done its IoT Developer Survey answered by 713 developers, where they asked  IoT programming languages, cloud platforms, IoT operating systems, messaging protocols (MQTT, HTTP), IoT hardware architectures and more.  The results have now been published. So let’s have a look at some of the slides, especially with regards to programming languages and operating systems bearing in mind that IoT is a general terms that may apply to sensors, gateways and the cloud, so the survey correctly separated languages for different segments of the IoT ecosystem.

Click to Enlarge

C and C++ are still the preferred languages for constrained devices, and developers are normally using more than one language as the total is well over 100%.

Click to Enlarge

IoT gateways are more powerful and resourceful (memory/storage) hardware, so it’s no surprise higher level languages like Java and Python join C and C++, with Java being the most used language with 40.8% of respondents.

Click to Enlarge

When it comes to the cloud with virtually unlimited resources, and no need to interface with hardware in most cases, higher level languages like Java, JavaScript, Node.js, and Python take the lead.

Click to Enlarge

When it comes to operating systems in constrained IoT devices, Linux takes the lead with 44.1%, in front of bare metal (27.6%) and FreeRTOS (15.0 %). Windows is also there in fourth place probably with a mix of Windows IoT core, Windows Embedded, and WinCE.

Click to Enlarge

Linux is the king of IoT gateways with 66.9% of respondent using it far ahead of Windows in second place with 20.5%. They have no chart for the cloud, probably because users just don’t run their own Cloud servers, but relies on providers. They did ask specifically about the Linux distributions used for IoT projects, and the results are a bit surprising with Raspbian taking the lead with 45.5%, with Ubuntu Core following closely at 44.4%.

Click to Enlarge

Maybe Raspbian has been used during the prototyping phase or for evaluation, as most developers (84%) have been using cheap development boards like Arduino, BeagleBone or Raspberry Pi. 20% also claim to have deployed such boards in IoT solutions.

Click to Enlarge

That’s only a few slides of the survey results, and you’ll find more details about Intel/ARM hardware share, messaging & industrial protocols, cloud solutions, wireless connectivity, and more in the slides below.

Via Ubuntu Insights

$80 BeagleBone Blue Board Targets Robots & Drones, Robotics Education

March 14th, 2017 3 comments

Last year, we reported that was working with the University of California San Diego on BeagleBone Blue board for robotics educational kits such as EduMiP self-balancing robot, and EduRover four wheel robot. The board has finally launched, so we know the full details, and it can be purchased for about $80 on Mouser, Element14 or Arrow websites.

Click to Enlarge

BeagleBone Blue specifications:

  • SiP (System-in-Package) – Octavo Systems OSD3358 with TI Sitara AM3358 ARM Cortex-A8 processor @ up to 1 GHz,  2×32-bit 200-MHz programmable real-time units (PRUs), PowerVR SGX530 GPU, PMIC, and 512MB DDR3
  • Storage – 4GB eMMC flash, micro SD slot
  • Connectivity – WiFi 802.11 b/g/n, Bluetooth 4.1 LE (TI Wilink 8) with two antennas
  • USB – 1x USB 2.0 client and host port
  • Sensors – 9 axis IMU, barometer
  • Expansion
    • Motor control – 8x 6V servo out, 4x DC motor out, 4x quadrature encoder in
    • Other interfaces – GPIOs, 5x UARTs, 2x SPI, 1x I2C, 4x ADC, CAN bus
  • Misc – Power, reset and 2x user buttons; power, battery level & charger LEDs; 6x user LEDs; boot select switch
  • Power Supply – 9-18V DC input via power barrel; 5V via micro USB port; 2-cell LiPo support with balancing,
  • Dimensions & Weight – TBD

The board ships pre-loaded with Debian, but it also supports the Robot Operating System (ROS) & Ardupilot, as well as graphical programming via Cloud9 IDE on Node.js. You’ll find more details, such as documentation, hardware design files, and examples projects on BeagleBone Blue product page, and github.

The board is formally launched at Embedded World 2017, and Jason Kridner, Open Platforms Technologist/Evangelist at Texas Instruments, and co-founder and board member at Foundation, uploaded a video starting with a demo of various robotics and UAV projects, before giving a presentation & demo of the board at the 2:10 mark using Cloud 9 IDE.

If you attend Embedded World 2017, you should be able to check out of the board and demos at Hall 3A Booth 219a.

How to use Sonoff POW with ESPurna Firmware and Domoticz Home Automation System

January 21st, 2017 12 comments

Sonoff POW is an ESP8266 based wireless switch with a power meter that comes pre-loaded with a closed-source firmware that works with eWelink app for Android or iOS by default. But we’ve also seen Sonoff POW, and other Sonoff wireless switches from the same family, can be flash with open source firmware supporting MQTT (Message Queuing Telemetry Transport) lightweight messaging protocol such as ESPurna, and I initially sent data from Sonoff POW to ThingSpeak via an MQTT broker (mosquitto) to draw some pretty charts. I did that with the switch connected to a lightbulb, but I’ve since installed Sonoff POW in my office to measure the room’s power consumption minus the ceiling light and aircon as shown below.

Wall Mounted Sonoff POW WiFi Switch – Click to Enlarge

Sonoff cable mechanism is really a pain for hard copper wires, as they are hard to push inside the mechanism, and something come out. I finally managed by it took longer than expected to install. I had to cut the mains cable, and rewire the gang box too. The good thing is that I did not need to drill a hole in my wall, as the device is very light.

I could see the power value updated in ESPurna web interface, depending on the load on my computer, and whether I turned on or off other devices. That’s all good, but instead of using ThingSpeak, whose open source implementation is not updated, I decided to try Domoticz, and already wrote a short guide showing how install Domoticz in NanoPi NEO ARM Linux development board. I had not gone through the setup yet, as I had to study a little more, and upgrade Sonoff POW firmware first. I also planned to use vThings CO2 monitor with Domoticz, but canceled since it can’t be configured remotely, and a USB connection is needed.

ESPurna OTA Firmware Update

So I’ll focus only on Sonoff POW in this post, and first we need to update the firmware since Domoticz support is only recent. I’ll assume you have already followed the post entitled How to Build and Flash ESPurna Open Source Firmware to Sonoff POW Wireless Switch.

First we need to update platformio and ESP8266 development platform to the latest version otherwise we’ll get some build issues:

I updated the source code with git pull, but for whatever reasons the build failed, even after cleaning the code. So I did what any developer with enough experience would do in that case: start with a fresh check out ;), and rebuild the OTA firmware from there:

In order to update the firmware over the network, you’ll need to change sonoff-pow-debug-ota section in platformio.ini with your own IP address (upload_port) and password (in upload_flags) used in ESPurna web interface:

Once it’s done, you can upgrade the firmware, and then the file system as follows:

The Sonoff POW will reboot, and cut the power for about 2 seconds after both updates. My Sonoff POW is controlling my computer power, but that’s OK since I’m behind a UPS. Now I can access the web interface, and one of the improvement is that you’re being asked to setup a new password right after the update.

Click to Enlarge

I was then redirected to the Status page showing power, voltage (a bit low?), current, and power factor.

Click to Enlarge

I then jumped to MQTT menu to set the IP address to my NanoPi NEO board, and clicked Update.

Click to Enlarge

There’s a new DOMOTICZ menu which we’ll check out a little later.

Installing and Configuring MQTT in Domoticz

ESPurna communicates with Domoticz via MQTT, so the first task was to follow and adapt Domoticz MQTT wiki.

First login to your Domoticz server (NanoPi NEO) and access a terminal window to update the packages, install npm, node.js, Node RED, and mosquitto:

We then need to go to the Hardware page in Domoticz and configure a new “MQTT Client Gateway with LAN Interface” as shown in the screenshot below.

Click to Enlarge

We can test whether it works or not by creating a new Dummy device in the same Hardware section

Then click on Create Virtual Sensors, to add a new Temperature sensor which we’ll call Fictive Temp.

Now go to the list of Devices (Setup->Devices) to check the idx value (1 in our case), and a publish a MQTT message to update the temperature value of our virtual sensor:

The temperature switch from 0 to 25°C. Our installation is working. Great!

Using Sonoff POW with Domoticz

In theory, we should be able to get two type of data for Sonoff POW: relay status and power levels. However, after looking at ESPurna source code, domoticz.ino only seems to handle the relay status that can be changed from Domoticz web interface, but the power values are only send in pow.ino to the MQTT server, with data not directly compatible with Domoticz. Maybe I missed something as Tinkerman – ESPurna developer – can use Sonoff SC to send temperature data to Domoticz. Alternatively, it might be possible to convert that data somehow with Node RED, but that’s something I’ll try later. So today, I’ll only try to control the switch from Domoticz.

To do so, I created another Dummy device called Sonoff POW Switch, and from there, another Virtual Sensor of Switch type.

Click to Enlarge

Click to Enlarge

We’ve already configured MQTT in ESPurna web interface, and from the screenshot above,we can see that “Sonoff POW Switch” Idx is 3, a value we need to update in the DOMOTICZ section of ESPurna web interface.

Now I can go Domoticz interface in my phone, and not my computer since my office’s Ethernet switch will be turned off, click on the Switch tab, and turn on and off Sonoff POW by clicking on the lightbulb as shown below.

Click to Enlarge

It works fine, however note that the initial switch status was wrong (off instead on on), despite the switch sending regular updates to the MQTT server.

NanoPi NEO Power Adjustments and Installation

Normally, at this stage, it should be easy simply install NanoPi NEO outside the office close to my router in the living room. But I’ve come across a few issues doing so, which I’m going to report.

First I decided to make a very short Ethernet cable to connect NanoPi NEO directly to my router. I have done a couple of Ethernet cables in the past a few meters long, and they all work. I tested my ultra short straight Ethernet cable connections with a multimeter, and the 8 wires were properly connected, however, when I connected NanoPi NEO to the router with that cable it failed to get a link. Maybe there was aonther issue with the cable, so I made another one just as short… Another fail. It turns out very short Ethernet cables may cause issues, which are normally solved by twister pairs, but with such short cables the length of the twisted pairs is also extremely short, maybe 2 to 3 cm which may not be sufficient. So I ended up using a “normal” 1.5 meter cable, not as neat but it works.

The power strip close to my router was full, and since I did not want to add another, I decided to use the spare USB port on my modem router in order to power NanoPi NEO board. A USB 2.0 port can only deliver 2.5W max, so I was clearly looking for problems here. In order to avoid an issues, I made use of h3consumption script to adjust the behavior of CPU cores and disable unused peripherals.

Let’s check NanoPi NEO current settings in a terminal:

h3consumption allows us to change the following settings:

So I decided to disable USB, and use two CPU cores at most in order to limit the board’s power consumption, and avoid random reboots:

The changes were properly applied after a reboot.

I powered the board with my modem router, and could use it without issue. I’ll monitor NanoPi NEO’s uptime to check if this works.

Tibbo Project System is a Modular Linux IoT Prototyping Platform based on TI Sitara Cortex A8 Processor

April 28th, 2016 2 comments

If you’ve found yourself needing to quickly demo a system that does not look like a mess of wire to a customer, or your project is requires low production volumes, making the cost of designing your own and mass-producing the hardware prohibitive, Tibbo Project System might be worth looking into. It features an almost bare board powered by Texas Instruments Sitara processor, and a large area for Tibbit blocks to add features as needed, as well as an enclosure.

Tibbo_Modular_Linux_IoT_SystemSize 3 Linux Project PCB (LTPP3) specifications:

  • SoC – Texas Instruments Sitara AM335x Cortex A8 processor up to 1.0 GHz
  • System Memory – 512 MB DDR3
  • Storage – 512 MB NAND flash, 2KB EEPROM, optional micro SD slot
  • Connectivity – 10/100M Ethernet (RJ45), optional WiFi (via LW1000 module) and GPRS connectivity (via Tibbit #47)
  • Expansion – 51 I/Os:
    • 7x tiles
    • 14x sockets for Tibbit module including 4x with UART capability up to 921,600 bps, 2x for CAN socket, 8x for “interrupt” blocks, and 1x for PoE
    • 14x sockets for Tibbit connectors
    • 1x extra socket for Tibbit #37 (RF connector)
    • Support for up to 25 relays, up to 47 opto-inputs, PWM outputs, open-collector outputs, or other I/O.
  • Audio – Optional 96KHz stereo audio LINE Out, MIC In (via Tibbit #48).
  • Misc – 8x LEDs for status and connectivity; setup (MD) and reset buttons; buzzer
  • Power Supply – 5V via power barrel. Tibbit blocks allow for other power inputs such as rterminal block, PoE, etc…
  • Dimensions – 165×94 mm
  • Operating temperature range – -40 ~ +70C.

“Size 3” refers to the different size of Tippo Project System, as they also have older smaller systems based on Size 1 & 2 that do not run Linux. That’s what the bare board looks like.

LTPP3 Board

LTPP3 Board

Now to have a complete project as shown in the first picture, you need to get Size 3 Tibbo Project Box (TPB3) and purchase a few Tibbit blocks and connectors. Tibbit blocks have all their own number, and you can choose the ones you need among about 50 modules that include I/O terminals, serial ports, relays, isolated inputs, power supply blocks, DAC and ADC blocks, sensors and so on. For example, in the picture below I have Tibbit #19 (DB9M connector), #20 (9x terminal blocks), and #22 (Non-isolated PoE).

Tibbo_Tibbit_ModulesThere are four options on the software side:

  • Embedded AggreGate – Tibbo’s “Internet of Things integration platform that employs modern network technologies to control, configure, monitor and service different electronic devices.” with support for more than 100 supported communications protocols. A middleware C library allows to access  GPIO lines, serial ports, and Tibbit modules.
  • Run Node.js applications – Node.js is pre-installed with support with libraries such as serialport and, and the company’s own.
  • Execute TiOS applicationsThe company’s Tibbo OS (TiOS) is currently being ported to Linux, and once it’s done you’ll be able to run Tibbo BASIC and Tibbo C code with minor modifications. This is especially useful for customer who run such apps on previous platform. Tibbo IDE is used to develop such apps.
  • Use the LTPP3 as a generic Linux board – Since the board runs a Red Hat derived Linux distribution, it can be used as any Linux single board computer
System Configurator Example (Click to Enlarge)

Online Configurator Example (Click to Enlarge)

The company has also designed an Online Configurator to let customers design and order their own custom system.

LTPP3 board starts at $130, Size 3 Tibbo Project Box (TPB3) at $44, and Tibbit blocks and connectors go for between $2 to $44 (GPRS modem) each. The new system is scheduled to start shipping in May. More details can be found on Tibbo Technology website.

Via HackerBoards

Quick Start Guide for LinkIt Smart 7688 (Duo) Board

December 1st, 2015 2 comments

Mediatek Labs has announced LinkIt Smart 7688 development boards powered by Mediatek MT7688 WiSoC earlier today, but I was selected for a close beta several weeks before the launch, and I’ve had time to play a little with the boards, so today I’ll report my experience getting started with LinkIt Smart 7688 amd 7688 Duo by writing a Quick Start Guide showing how to setup the boards, upgrade firmware, access the serial console, run “Blink LED” sample applications with Python and JavaScript, as well as the Arduino IDE, and connect to the Internet.

Initial Setup

You’ll only need a micro USB cable and a computer with WiFi and USB ports to get started with the board. The green LED (top) for the MCU will turn on immediately, while the red LED (bottom) for WiFI will blink once, and only turn on continuously after 5 seconds, and within 30 seconds after that you should get WiFi connectivity.


Since you just need a web browser any operating system will do, and at first I used a desktop computer running Ubuntu 14.04 without WiFi (and not working WiFi dongle left), so I wondered if I could access the serial console via the USB connection, and ran dmesg:

The device is recognized as a USB modem, so it was not an option, and instead I fired up my Ubuntu laptop instead. You can still access the serial console over UART with your own USB to serial debug board by connecting TX and Rx to P8 and P9 pins of Smart Link 7688 (DUO) board. I’ll show that a little later in this guide.

The next step is to connect to LinkIt_Smart_7688_XXXXXX access point with your computer, where XXXXXX is your board’s MAC address suffix. Once you’ve connected to this open WiFi network, simply open a web browser, and type mylinkit.local to access LinkIt Smart 7688 webUI and input a root password of your choice.


Click to Enlarge

This step will work out of the box with Linux, Windows 8.1/10 and Mac OS X operating systems, but you’ll need to install Bonjour Print Service in Windows 7. If you don’t want mDNS, you can also use the default address:

SDK and Firmware Upgrade

Before upgrading the firmware, you’ll need to download the SDK, which Mediatek calls “LinkIt Smart 7688 SDT” from MediaTek Labs website which will contains the bootloader and firmware directories, documentation including a Getting Stated Guide and a developer’s guide, as well as the toolchain.

After signing to the web UI, you should find the “Software information” section where you can see the bootloader and firmware version, and an “Upgrade firmware” button.

Click to Enlarge

Click to Enlarge

Click to Enlarge

Click to Enlarge

Once you click Upgrade Firmware button, you’ll be able to browse for the lks7688.img file in firmware directory of the SDT, and click on Upgrade & Restart to complete the installation.

If for some reasons you can’t access your board anymore, you can also perform the upgrade by copying lks7688.img file to a USB flash drive and connect it via a USB OTG adapter.


LinkIt Smart 7688 Board with USB Flash and USB to TTL Board (Click to Enlarge)

While the board is running, keep pressing the WiFi button, while pressing the MPU button for a short time, and only release the WiFi button after it becomes solid after around 5 seconds, and the firmware update should start with the red WiFi LED blinking slowly until the update is complete (2 to 3 minutes).

Serial Console on LinkIt Smart 7688 (DUO)

If you don’t get any issues, the easiest way to connect to the board is via SSH:


But in case you encounter some problems with the configuration, and want to find out what’s going on you’ll need to connect a USB to TTL board as shown in the picture above. You’ll need to connect GND, Tx to P9 pin and Tx to P8 pin, and configure you favorite console program be it minicom, screen or putty to 57600 8N1.

Here’s the full boot log in LinkIt Smart 7688 board:

Running Sample Code in LinkIt Smart 7688

So now that you should have access the terminal either via SSH or UART, you can run some pre-loaded JavaScripts or Python sample in /IOT/examples/ directory:

Let’s blink the WiFi LED with the Python script:

The red LED should blink around twice per second. Press Ctrl+C to interrupt the program. So what’s the code like?

If Python is not your thing, but you’re quite happy coding with JavaScript (node.js), you can blink the LED too:

The program takes a little longer to start, but it works, and the LED blinks once a second. Here’s the code:

Running Sample Code in LinkIt Smart 7688 DUO

If you have a LinkIt Smart 7688 DUO, you’ll have want to install Arduino IDE. I could not perform this step fully, as I had troubles to connect and upgrade the firmware to the beta board. But here are the main steps:

  1. Download and install Arduino 1.6.5
  2. Start Arduino, and go to File->Preferences and add to Additional Boards Manager URLs.
  3. Click OK, and go to Tools->Boards->Board Manager, and scroll down to install Mediatek LinkIT Smart Boards by Seeed Studio and MediaTek Labs.

    Click to Enlarge

    Click to Enlarge

  4. Now select LinkIt Smart 7688 Duo in Tools->Boards, and the serial interface for LinkIt Smart 7688 in Tools->Serial. (It was /dev/ttyACM0 with my old firmware)
  5. Write a short sketch to blink D13 LED on the board:
  6. Click on verify, click on upload, but it’s not done yet as you have to run a python program to send command over the serial interface between MediaTek MT7688 and the Atmel AVR MCU. So connect to the board and write Python script using vi / vim:
  7. And now you can blink the LED with the script:

So LinkIt Smart 7688 Duo is more versatile thanks to its MCU, but it takes some efforts to blink a simple LED.

Connecting to the Internet and OpenWRT Configuration

So far we’ve done everything in the local network using the board as an access point, but many application will require some connection to the Internet. To connect your board to your WiFi router login to the webUI again, and select Network.


Now switch to Station mode, and click refresh.Mediatek_LinkIt_Smart_7688_Station_ConfigurationNothing will happen, but if you click again on the zone right above the Refresh button a list of access point will show up. LinkIt_Smart_7688 is listed here, as I had a LinkIt Smart 7688 DUO running at the same time. Select the access point you want to use, input the password, and click on Configure & Restart.

Now make you sure computer is connected to the same access point or at least is one the same subnet, and go again to linkit.local in your browser to access the webUI, or SSH to the board. In my case I had changed the device name to CNXSoft_linkit and neither mylinkit.local or CNXSoft_linkit.local, or cnxsoft_linkit.local would work, so there may still be a bug here… So instead I check the new IP address via the serial terminal: to make sure the connection was fine, but you can do so with your WiFi router client list too. I also pinged the Internet from the serial console:


If you want more control of your network configuration you can click on OpenWRT in the webUI, or go directly to http://IP_address/cgi-bin/luci to access LuCI’s web interface for OpenWRT.

Click to Enlarge

Click to Enlarge

That concludes this getting started guide for LinkIt Smart 7688 and Linkit Smart 7688 Duo boards, to go further you may want to read LinkIt Smart 7688 Developer’s Guide, and tutorials found in the SDT, and build your own OpenWRT image from source code. You can purchase the LinkIt Smart 7688 and 7688 DUO boards for respectively $12.90 and $15.90 on Seeed Studio.

Marvell EZ-Connect MW302 IoT Starter Kit Supports AWS IoT Cloud Services

October 9th, 2015 6 comments

Amazon has just launched AWS (Amazon Web Services) IoT (Beta), a cloud platform that lets connected devices securely interact with cloud applications and other IoT devices. As pasrt of the announcement, they also released AWS IoT SDK that comes in three flavors:

  • Embedded C SDK for C-based platforms such as Linux, RTOS, with variants for OpenSSL and mbed TLS.
  • JavaScript SDK in Node.js
  • Arduino Yún SDK.

Ten started kits are currently officially supported by AWT IoT, many of them being existing platforms such as LinkIt One, BeagleBone Green, Intel Edison, or TI LaunchPad CC3200,  with several of these kits including SeeedStudio’s Grove modules.

Marvell MW302 IoT Starter Kit (Click to Enlarge)

Marvell MW302 IoT Starter Kit (Click to Enlarge)

One of the kits that’s completely new, at least to me, is Marvell EZ-Connect MW302 IoT Starter Kit which include a mini USB to USB cable, and Marvell 88MW302 development board with the following (preliminary) specifications:

  • SoC – Marvell EZ-Connect MW302 ARM Cortex-M4 WiSoC with 512KB SRAM
  • Storage – No info
  • Connectivity – 2.4Ghz b/g/n Wi-Fi (built-in MW302 MCU
  • USB – 1x micro USB OTG,
  • Debugging – 1x mini USB for UART console and JTAG, 1x 10-pin JTAG connector
  • Expansion headers – 2x 32-pin header with access to SPI, I2C, UART, I2S, PWM, ADC, DAC, as well as power signals and GND.
  • Misc – Reset key, four buttons, various jumpers, two LEDs
  • Power Supply – 5V DC via power jack
  • Dimensions – N/A
Marvell 88MW302 Board (Click to Enlarge)

Marvell AB-88MW30X V2.0 Board (Click to Enlarge)

Information about Marvell MW302 SoC is limited to the product page, and more details require an NDA. Documentation for the kit is slightly better, with the SDK soon to be released on Github, and a getting started guide explains how to use AWS IoT dash with the board to monitor key presses, blink LEDs, and trigger actions with AWS IoT to AWS Lambda feature, which appears similar to what TI Connected LaunchPad does with Exosite cloud platform.

MW302 IoT Starter Kit is listed on Amazon for $49.90, but currently out of stock.

$35 Tessel 2 IoT Board Features Atmel SAMD21 MCU and Mediatek MT7620n WiSoC

March 10th, 2015 3 comments

Tessel is a Wi-Fi IoT board based on NXP LPC1830 Cortex M3 MCU and Texas Instruments CC3000 modules, that’s designed to bring embedded development to web programmers with a system that can be programmed with JavaScript and Node.js.  At the time of the crowdfunding campaign in 2013, the board was available with external modules (Relays, sensors, Bluetooth LE…) for $100 and up, but now Technical Machine, the company behind the project, has announced Tessel 2 combining Atmel SAMD21 Cortex M0+ to control I/O and Mediatek MT7260n for Wi-Fi connectivity, still programmable with JavaScript ot Node.js.

Tessel_2Tessel 2 specifications:

  • MCU – Atmel SAMD21G14A-MU Cortex M0+ MCU @ 48MHz with 16KB SRAM and 2KB Flash
  • SoC – Mediatek MT7260n MIPS24KEc Wi-Fi SoC @ 580 MHz
  • System Memory – 64MB DDR2
  • Storage – 32MB flash for firmware (OpenWRT)
  • Connectivity – 10/100M Ethernet, and Wi-Fi 802.11 b/g/n with dual PCB antennas
  • USB – 2x USB 2.0 host ports + 1x micro USB port for power and programming
  • Expansion – 2x Tessel module ports (10-pin headers) connected to SAMA21 MCU.
  • Power – 5V via micro USB.
  • Dimensions – N/A

OpenWRT (Linux) runs on MT7620n with io.js, an npm compatible platform originally based on node.js, which you can access with tessel command, or if you’re used to Linux, just as a standard OpenWRT router. While a custom firmware runs SAMD21, and both OpenWRT and Atmel firmware source code is available on github in respectively openwrt-tessel and v2-firmware repositories. Performance of the JavaScript engine is said to be 20 times better than on Tessel 1. Linux also brings more flexibility than the closed firmware found on CC3000, and Python and Rust programming languages have been added.

Rust Code Sample on Tessel 2

Rust Code Sample on Tessel 2

Most external modules for Tessel 1 are supported on Tessel 2, but the company has decided to get rid of some Tessel modules like Camera, Bluetooth LE, or micro SD card, as USB dongles with these functionalities already exist at a cheaper price, and only kept low speed Tessel module such as sensors, relays or servos since they are better suited to the I/O capabilities of an MCU. Check out the list of Tessel & USB modules for details.

Tessel 1 costs $75, and despite being more powerful Tessel 2 only costs $35 for single order. The great thing is that if you have a small scale project (10 units or more), they can customized manufacturing for example by leaving the Ethernet RJ45 connector and USB connectors unpopulated, and adding Tessel or USB modules. Price goes down with volume, and for order over 1,000 unit, Tessel 2 will cost less than $30.

Tessel 2 is up for pre-order until April 4 (for the first batch) on, but the downside is that the boards are only expected to ship in August 2015.