RadioBlock with SimpleMesh
So what’s different? Well the bones of our hardware is like most other products: we have a radio chip, and we have a microcontroller. The microcontroller handles all the complex stuff for you, so you just send it simple easy commands – Tell it the address to send data to and the network finds a path to to get it there.
The first major difference is we don’t hide the software in our microcontroller. It’s completely open-source. Most competitors don’t give that away – you are stuck with the features they chose. You can modify the software to your heart’s content, and we even make it easy to do so (see ‘debugging’ later). You can even implement your entire project on the RadioBlock device.
Second, we throw away everything we don’t need. Most protocols have different addressing modes, because they want you to be able to support networks of millions of nodes. Yeah, sure. We only have one address per node – you want to turn your toaster on? Alright, well just write down a 4-digit number. That is your toasters address. That’s it.
SimpleMesh doesn’t have a special ‘central’ node; you just send data to addresses. Sure one of those devices can be a computer that receives all the data, but there is nothing special about it according to SimpleMesh.
SimpleMesh is packed with more features – including security that doesn’t rely on sending an encryption key to your radio over the open SPI bus. So you can use SimpleMesh in real commercial products. You can use SimpleMesh on other hardware too, it’s not locked down to our product. But we’d really like you to buy our product, because then we can keep supporting SimpleMesh.
RadioBlock HW Features
First off – this product is FCC certified. We aren’t selling some fly-by-night product here you can only experiment with. You can install 10000 of these downtown tomorrow for your next great product.
The 4-pin header contains everything you need. Power + two serial lines. The on-board regulator means you can power the RadioBlock from 3V – 6V. The serial lines are 5V tolerant, making it easy to interface to whatever you want. You can plug this into a breadboard if you want. More on that later.
A programming header connects to the LPCLink boards. More on that later.
An expansion header provides I2C. Here you can connect some expansion boards to add in other things, such as accelerometers or extra I/O lines.
On-board LED can be used for blinking, always a hit at parties. Or, to give you a simple visual cue that things are working…
The antenna & Atmel radio chip provide the important RF functionality of the board. This gives it a range of about 100 or so meters and we have just begun testing – We’ll publish results soon.
If you want to run code on the RadioBlock, you’ll appreciate the LPC1114 microcontroller. It’s a 32-bit ARM Cortex M0 device with lots of handy peripherals. Best of all there are great low cost tools available and we’ve built a handy JTAG cable to make it easy to interface.
The board comes in two versions. One has a battery holder on the back – this version has female headers (so you won’t short out anything), and is designed so it can be deployed on it’s own.
RadioBlock & Arduino
You don’t need to plug this thing into a shield. You can just plug it into any four digital Arduino pins. This magic works because the device can be powered by setting the arduino pins high/low. The current consumption is low enough that it doesn’t stress the AVR, and the device has a regulator on-board so it isn’t bothered by the fact the voltage won’t be reliable this way.
Then the other two pins are the serial link. If you want of course you can just connect up power & the two serial lines in a more ‘classic’ way, which really means you only need two pins on any arudino to control the radio. You can use it with both 3.3V and 5V arduinos. The RadioBlock internally regulates the external power down to 3V, but the I/O lines can work with 5V logic.
The library leaves the hardware serial port on the Arudino free, so you can still use that to talk to your computer. You can even connect more than one RadioBlock to a single Arduino, if perhaps, you want to run several different networks from one device.
We have a basic library now. The idea is to make it easy – just plug your RadioBlock in, and send data somewhere. We’re expanding the library to add more functions, but of course it’s all open-source so you can help too.
Really, you don’t need a shield. You can just connect up a few wires. But we’re making a shield anyway. Not because we’re greedy mind you – but because we want to add more features. In particular we’ve designed a shield that adds a AAA battery pack, which can power the Arduino & RadioBlock. Critically this shield lets the RadioBlock shut down power to the Arduino, and later turn on the system when you receive data, or even just after some delay. Powering an Arudino directly with AAA batteries would only last a few days – with this shield, the batteries could last a year, since the system can be off most of the time. We’ve got a design & prototype, but need to finish testing and get some production levels. This board is not part of this offering or part of this kickstarter project!
RadioBlock & Computers
Many people aren’t into Ardunios. That’s fine – you don’t need them to use this product. You can directly interface a node to a computer using a serial-to-USB converter. Our example Python app sends data in the proper format & parses the responses.
You can use this sort of connection to add a RadioBlock to your Linux computer too – think about having a Raspberry Pi as one device on your network. This way you could easily connect your wireless network to the internet, and have it send you an e-mail when it detects something amiss. Even if you have a hacked router firmware (DD-WRT) you could interface to this, since most of those routers provide a few serial port lines.
RadioBlock & Other Devices
Most of our lives we’ve never used Arduinos, we’ve just used microcontroller development kits. The truth is that the RadioBlock can be connected to basically anything embedded. It works at both 3V, 3.3V, and 5V (common embedded power supplies) and just needs a serial link. The simple pin-out means you might need a few wires at most – sometimes it will plug directly into other boards with existing connectors!
We’re working on example C code to talk to the RadioBlock. So you don’t really need to implement anything – you just drop down our interface code, point it to your serial port, and you’re done. Remember the software in the RadioBlock is open source, so you might even just write code on the RadioBlock itself.
Here it is plugged into a FPGA board for example, the device happens to fit into Digilent Inc PMod connectors. AVRs, PICs, 8051s, ARMs…. “RadioBlock don’t care, it’ll plug into anything!” It’s a bit promiscuous like that.
The RadioBlock has some expansion ports. We’ve already designed a 3-axis accelerometer board & an IO expansion board to fit in here. The expansion ports will let you run code entirely on the RadioBlock without needing an external microcontroller.
The following shows the 3-axis accelerometer module on the left (yes it’s that small), and the I/O expansion module on the right. The I/O expansion includes 6 LEDs and a push-button along with 8 GPIO lines. Note only the ‘battery’ based boards include the female header that fits these. (But, based on your demand we can supply the headers…)
Debugging and Firmware Upgrades
The microprocessor on this board is a LPC1114. For $30 you can buy a ‘LPCXpresso’ kit which includes a USB JTAG & a compiler license. With that you can plug the RadioBlock into the JTAG and do full-blown debugging on the board itself:
The LPC1114 even has a hardware bootloader. That means you cannot brick the device – you can always upload a new image to the RadioBlock board itself. So get one now, and you’ll always be able to get new features we add to this same hardware.
RadioBlock & IEEE 802.15.4
The radio on the RadioBlock is a real Atmel IEEE 802.15.4 device. This means a few things: for one you can run all sorts of other software on the RadioBlock (you’ll want the $30 debugger for this) such as Contiki or TinyOS. The IEEE 802.15.4 standard also means you can use any IEEE 802.15.4 sniffer if you want, or you will be able to use our device as an IEEE 802.15.4 sniffer.
Or you could use the RadioBlock as a way to add an IEEE 802.15.4 device to an embedded Linux computer, think of having a 6LoWPAN router (again the Rasberry Pi comes to mind here). For now you’ll need to do some extra coding, because we’re focusing on the SimpleMesh software. But the hardware would fully support your endeavours.
Oh and it can directly plug into the Raspberry Pi with the current revision, or in the future may require a wire if 5V pin changes location.
We love documentation. Too many products have poor documentation. So we’re writing as much as we can. To give you an idea, here are some links to beta versions. We’ve got more coming though, so hold onto your seat.