In the first part of the walkthrough, we learned some basic operations and hello world type programs to get the 900 LR board up and running. In this walkthrough, we’ll be building on what we learned previously and moving on to more advanced topics like radio configuration and power management.

Adding Commands to the Command Line

In the last section of the walkthrough, part 1, I introduced the cmdArduino command line library. It allows you to make sketches interactive from the serial terminal. Now, let’s expand on that a bit and add custom commands that we can call from the command line.

First, we’re going to write the command function that we’ll be calling from the command line. The function needs to be in a specific format but otherwise, the actual functionality is left up to you. The format is as follows:

void funcName(int argCnt, char **args)

I'm happy to announce that I just released the chibiArduino library v1.03. The library functionality is very stable these days and the main changes were minor bug fixes and updates. The main change is that settings for the Freakduino long range wireless board were added and tuned. I also did a major update to the chibiArduino usage documentation which hadn't been updated since 2010. It was painful reading through it and I really need to be more disciplined about maintaining documentation, especially since the design releases will be accelerating. For a full list of the changes for the latest release, you can go to the chibiArduino project page.

I'm also starting a new tutorial series called "walkthroughs" which are designed to be board specific and get people up and running on each board quickly. The first walkthroughs will be for the Freakduino 900 MHz Long Range Wireless boards and cover basic setup/usage, radio configuration, and power management. I'll be adding walkthroughs for the 2.4 GHz and 900 MHz boards soon since they're all cover the same topics and should be fairly similar.

That's about it for the announcements. Things are busy and exciting these days. Hope you enjoy :)

This is a walkthrough of the basic setup and usage of the Freakduino long range wireless boards. I originally designed the Freakduino board series and chibiArduino software stack so that it could be a simple way to setup a wireless connection without having to understand complex protocol details. This was a big drawback in many of the more advanced protocol stacks I've worked on where there was complex and detailed knowledge required just to send simple packets. I tried to be minimalistic in the design of the chibiArduino stack so that people who just wanted to do simple wireless communications could do it with many of the protocol details handled in the background.

In this walkthrough, we're going to go through a few examples to set up the boards and write simple code to start transmitting and receiving wireless data.

I just got back from my vacation in Shenzhen yesterday and was going to relax a bit until Monday when I’d start working on some new designs. When I was reading the New York Times this morning, a particular article caught my attention. Hiroko Tabuchi wrote an interesting article about the worsening crisis going on at the Fukushima Dai-Ichi nuclear power plant.

The radioactive waste water is leaking into the ocean and the leaks seem to be getting larger. There are nearly 1000 tanks at the plant to store the radiated water which are prone to leaks. Also, there are no water level gauges in the tanks and only two men patrol the tanks every day to check for leaks. What caught my attention in the article was when it mentioned TEPCO had no reliable way to check the storage tanks for leaks. That was actually one of those “hmmm….really” moments for me.

With the latest release of chibiArduino, it's probably best to have a short tutorial on installing things. The library installation is a standard library installation, however I've gotten a lot of questions in the past about library installation. I figure it's probably best to take care of it in this tutorial. Also, there's an additional component which is optional if you're using the Freakduino, but you're really going to want if you're using one of the other boards I'll be releasing soon or rolling your own board. This is a boards.txt file which is a board description file. Inside the board description, it's possible to set #defines that allow the chibiArduino stack to identify the type of board being used and adapt itself accordingly. This allows the chibiArduino stack to be more flexible in accomodating different board configurations without having to involve the user in too much other than the board selection menu.

So let's get this tutorial underway...

It's been a while since I posted anything and that deserves another post just to talk about everything that happened in the last 8 months since the March earthquake and tsunami here in Japan. I'm a little bit tired of heavy topics and serious projects so I thought I'd put together a little something that's kind of fun and also timely. Now that we're moving into the holiday season, we're about to start seeing the hard core Christmas people setting up the elaborate light displays. The equipment to switch all the lighting channels and sequence everything is usually a bit costly but it doesn't have to be. If you're familiar with the Arduino environment and willing to put in a bit of elbow grease, blinging out your lawn is just a couple of mouse clicks away :)

I put this three part video tutorial together on how to use the Arduino platform to decode the DMX protocol. The DMX protocol is a standard protocol for stage lighting displays and it happens to be supported by a nice freeware light sequencer called Vixen. In the first part, I go over the DMX-512 protocol and the Arduino source code to decode it. In the second part, I show how to configure a lighting sequence with Vixen, some hardware implementations, and the whole system working together. And in the final part, I show how some simple changes to the code can enable you to control your lights wirelessly.

One of the most powerful tools to have when doing any type of design that involves communication protocols is a protocol analyzer. It allows you to see exactly what the communicating devices are seeing which is very useful for troubleshooting many types of problems that might come up. This is especially important for wireless communications because this is often the only way to see what type of data is going over the air. It also allows the user to see if there are any rogue frames, check for breaches of the communication protocol, analyze traffic, or reverse engineer a proprietary protocol. And of course, it’s extremely useful for learning about how a protocol operates and behaves in real-life.