Lithuanian company 8devices has come up with the Carambola, a small circuit board (35 x 45mm) with a 320MHz processor, some memory and a built-in Wi-Fi connectivity. It runs on a flavour of Linux: OpenWrt. Now you might think this sounds a lot like an underpowered computer, but actually it is more like a supercharged Arduino. Let me explain…
I am currently working on the design of an internet-enabled linear clock that connects to your online calendar: Stripe. The clock requires electronics that keep track of time, connect to the internet and process the input (buttons etc.) and output (clock face, in this case LEDs). The Stripe prototype uses the Carambola as its main electronics. In this blog post I will explain what Carambola is and how it compares to a very popular embedded platform: the Arduino.
Anyone who has worked with interactive electronics over the past few years has undoubtedly heard of the Arduino:
It’s a circuit board that allows you to easily create interactive prototypes with buttons, sensors, LEDs, motors and much more. It connects to your computer using a USB cable, allowing you to program it using an easy-to-install application. The Atmel microcontroller chip on the board is programmed in the C/C++ programming language with some extensions to make it practical to use by people who don’t have much programming experience. The Arduino hardware and software are both released under an open source license, having led to a huge number of code libraries, hardware add-ons (called ‘shields’), cheap Arduino clones and tons of tutorials.
At Nut & Bolt, I often use the Arduino to get something working quickly. Often I end up using an Atmel microcontroller and the Arduino software in the final product just because there are so many example projects and libraries available for the Arduino. When you want to hook things up to the internet, however, the Arduino starts showing its weakness.
Internet of Things
Interesting things can happen when physical objects are hooked up to the internet. In the future, many of the objects that surround us will be networked – the Internet of Things. For the Internet of Things to happen, we need electronics that allow us to easily connect physical objects to digital data.
8devices have designed Carambola as a platform that allows people to create devices for the Internet of Things. Like the Arduino, it can digitally communicate with sensors and actuators. But unlike the Arduino, it has extensive networking capabilities and a powerful Linux software stack.
First some specifications:
- Dimensions: 35 x 45 x 12 mm
- Interfaces: 2x100Mbit/s LAN, 2x 3.3V Serial interface, I2C, SPI, USB and GPIO
- Wi-Fi 802.11n with built-in antenna
- System-on-chip: 320MHz
- 8MB flash, 32MB RAM
- Supply voltage: 3.3V
- Price: € 22
The cheerful yellow pcb houses some truly tiny components to keep the overall size small. The heart of Carambola is a Ralink 320MHz System-on-chip. It’s a chip that is often found in routers which immediately explains the network capabilities. Compared to Arduino’s 16MHz processor, the 320MHz Ralink chip should be able to deal with complex calculations a lot faster. Flash memory and RAM should be large enough for most applications.
Pins, inputs and outputs
In contrast to the Arduino, Carambola cannot deal with 5V input levels and doesn’t have any analog inputs. It does make up for that with two serial interfaces, USB host capability and networking. The pins on Carambola are spaced 2mm apart. If you want to use Carambola in a bread board, you need a special adapter (which isn’t available as of writing). This is not an issue if you use the supplied development board or design a circuit board yourself.
The development board provides 5V and 3.3V power, two ethernet ports, a USB host/slave port and an (almost vintage) RS-232 serial port.
Carambola runs a flavor of Linux called OpenWrt. Like the main chip, this Linux distribution is mainly targeted at routers. It’s a popular open source Linux distribution with a nice wiki and an active community.
When booting up Carambola and connecting to it via a serial connection or over the network you are greeted with a cocktail recipe:
Using a package manager called ‘opkg’ you can install applications and drivers, much like a simple version of the App Store or Android Market. The selection of Carambola-specific applications is still quite small but I guess this will grow as more developers hop on board.
Applications for Carambola can be programmed in any programming language that has a compiler for the platform. Also, as opposed to the Arduino, it is possible to program using a scripting language like Lua or Python. This means you can change your program without having to recompile or reflash the firmware. Being based on Linux, you can use all the built-in commands and niceties: you can show elaborate debug messages, have more than one thing happen at the same time and use cron for scheduling things to happen at a certain time.
More Carambola to come
In this post I’ve given you an overview of the capabilities of a Linux-based internet-connectable platform in comparison with a simpler system like the Arduino. As the design of Stripe progresses further, I will go more in-depth on various aspects of the Carambola and designing for the Internet of Things. So please check back soon, share and leave comments below!