Video created using the Time Lapse Camera Controller project

Mon, Oct 4 2010: Filed under Projects

Posted by Jonathan Oxer

Reader Jacob Ried constructed the Time Lapse Camera Controller project from the book and used it to create a cool video of his yard.

Time Lapse (Using Practical Arduino Circuit) from Jacob Ried on Vimeo.

Nice work, Jacob!

Joystick shield for Arduino MAME controller

Tue, Apr 27 2010: Filed under Projects

Posted by Jonathan Oxer

I have a Google Alert set on the term "Practical Arduino", and it often finds me very cool things that people have done using projects described in the book. One of those tidbits was this:

I don't know anything much about it other than what's shown on that page, but from what I can deduce it's the circuit from the Virtual USB Keyboard project converted into a nice PCB with a bunch of buttons included for controlling games running under the arcade machine emulator MAME. I love seeing stuff like this, so if you've created anything based on things you've learnt from Practical Arduino please send me an email and tell me all about it! 

Weather Station Receiver project modified for La Crosse TX4U

Fri, Apr 9 2010: Filed under Projects

Posted by Jonathan Oxer

When whittling down the list of projects for Practical Arduino I never expected the Weather Station Receiver project to be one that gained so much attention. To be honest I was dubious about whether enough people would build it to justify its inclusion, but felt that even if it wasn't built very often it was still worthwhile as an example of how to do signal timing analysis and bitstream decoding. I'm glad we put it in, because it seems to be one of the more popular projects!

Reader Kelsey Jordahl contacted me yesterday with details of a modified version that reads data from a La Crosse TX4U system, using the circuit from Practical Arduino but with modified software to deal with the different data format.

Kelsey's system logs the data and generates nice-looking graphs that are displayed online. For more information (including the modified source code) check out:

Oh yeah, and this is probably a good time to mention that Freetronics is now stocking fully pre-assembled Arduino shields for the Weather Station Receiver project. The very first one was sold and shipped to a reader in Queensland, Australia, yesterday morning.

The shield implements exactly the same circuit as shown in Practical Arduino, but with a dedicated PCB design rather than using a protoshield. There's more info on the 433MHz Receiver Shield for Arduino page at the Freetronics site. 

Project kits from Toys Down Under - with a twist

Mon, Feb 8 2010: Filed under Projects

Posted by Jonathan Oxer

This morning while looking for other things on the Toys Down Under site I discovered that they've now listed kits for a few Practical Arduino projects: the Appliance Remote Control, the Virtual USB Keyboard, the PS/2 Keyboard / Mouse, the Touch Control Panel, and the Speech Synthesizer. That in itself is quite cool but what's really interesting is that they're offering them as "spec your own kit" fully customisable packages.

Rather than just a regular kit containing every part as you'd expect, they've set a base price of $0 for every kit and then made all the parts in the kits optional. They've also listed a few extras such as a Duemilanove and an Arduino Starter Kit as optional parts. That's really cool because it gives you lots of flexibility. If you already have an Arduino and most of the parts required for a specific project you can order just what you're missing, or at the other end of the scale you can start with nothing and order every single part plus an Arduino, giving you everything you need all in one convenient package.

Clever. Check it out:

It must be a total pain for them to manage inventory (not to mention pick-n-pack) when doing it this way, but from the customer's point of view it's brilliant. 

Weather Station Receiver project modified for Jaycar weather station

Thu, Feb 4 2010: Filed under Projects

Posted by Jonathan Oxer

Reader Kayne Richens from Melbourne/Australia built the Weather Station Receiver hardware as described in the book, but because he has a different type of weather station the original software wouldn't work. With the assistance of Marc Alexander (one of our Tech Reviewers for the book and author of the original Weather Station Receiver software) he modified the software to allow it to process data from a BIOS/Thermor DG950R weather station purchased from Jaycar.

You can learn more about it on his blog at Great work, Kayne! 

Watchdog Timer

Fri, Oct 30 2009: Filed under Projects

After 7+ months of working on Practical Arduino I'm so into the habit of documenting things as I go that it feels like a waste to build something and *not* write it up as a project. It just doesn't seem natural.

So recently I was working on a work-related project that needed a hardware watchdog timer, and I couldn't help but write it up even though Practical Arduino (Volume 1, at least!) is now set in stone and almost ready for printing.

A hardware watchdog timer is a device attached to a computer that watches it for signs of life and if it doesn't detect anything happening for a defined timeout period it forces the computer to reset. In this case the computer was an Arduino that needed to be deployed over 1000Km away and if anything went wrong I'd have no way to reset it, so a simple watchdog timer was the answer.

The circuit is pretty simple - just a 555 and a few supporting components, so it doesn't take up too much space on a shield. In fact not everything you see on the shield below is even part of the watchdog since there were already other parts in place related to the other stuff this project will be doing.

Sorry about the poor quality pics - I had to take them with a webcam since I don't have a real camera handy, and it doesn't do macro very well!

The watchdog uses a 555 timer that slowly charges up a capacitor, and if the cap reaches a certain threshold the 555 then pulses the Arduino's reset line. Just for fun I connected a spare analog input to the capacitor and wrote a little sketch that reports the values, then put it into OpenOffice to plot it. This is the sawtooth waveform of the capacitor voltage when the Arduino is running normally, and you can see the voltage dropping each time it "pats" the watchdog to keep it happy and make it start the timeout again.

Because I'm building a bunch of these devices at the moment I set up a temporary workbench at the office (which is normally a "software only" zone) and got a bit of a production line happening.

The units themselves are simple power monitoring devices that use WiFi to connect to a 3G router and report their readings back to a web service.

Each of them will also have an LCD to display readings locally and report things like the API key used to access the web service, so I've spent way too much time stripping and soldering ribbon cable.

Overall it's come together quite nicely.

Car engine datalogger project update

Sun, Sep 27 2009: Filed under Projects

Posted by Jonathan Oxer

The final project of the book is turning out to be epic. It's taken me far longer than I expected, and I've hit quite a few snags along the way. I've also had to make quite a few compromises because if I implemented everything I wanted it would take up half the book.

The big problem initially was communications with OBD-II, which was a piece of cake for my previous car datalogger (running on Linux) but turned out to be more tricky on an Arduino. Eventually it got to the point where I just cried and twitched a little bit whenever I thought about working on it, so to save my sanity I ditched my original codebase and switched to working on OBDuino instead.

OBDuino is an offshoot of the MPGuino project, which is primarily intended to be a tool for helping people drive more economically by providing real-time engine performance and fuel consumption information. It's developed collaboratively on the EcoModder website and it's a perfect example of what Arduino is really good at: providing a cheap, simple, flexible platform to allow people to develop something to suit their own requirements. There is now dedicated MPGuino hardware that has grown beyond its Arduino origins, but that's a good thing. It shows Arduino did its job.

Anyway, the point is that in the end it's been easier to take the functional code I had for GPS, flash memory storage, and a serial console, and graft those features onto the existing OBDuino codebase rather than graft OBD support into my codebase. So now I have an OBDuino variant that requires a Mega to run (unlike the original, which will run on a Duemilanove) but adds GPS and datalogging.

The datalogging feature is really cool, because it logs GPS plus OBD-II data which can then be correlated and converted to other formats. This afternoon I went for a little drive and when I came back I wrote a script to parse the CSV file stored by OBDuino and generate a KML file to pass into Google Earth, with the result that I can now generate things like this:

(Click the image to see the whole thing full size)

The track is generated from the lat and lon stored from GPS, and the height indicates the speed of the car. By switching the columns selected by the script I can plot position against RPM, load, temperature, or any other value logged from the OBD-II data. The prototype hardware is still a total mess and the code is only half done, but as long as I don't sleep for about the next 5 days the project should just sneak in within the publishing deadline.

Water flow gauge project update

Sun, Sep 13 2009: Filed under Projects
Posted by Jonathan Oxer I "finished" the first draft of the water flow gauge project quite a while ago but I was never really satisfied with it. It's quite an important project in the book because it's used to demonstrate some critical concepts such as interrupts, but as a project it wasn't really that useful. It only reported values via the serial port so it needed a host connected to do anything, and it just didn't quite feel like it added enough value to the book. Over the last two days I've gone back and redone the project almost from scratch, leaving in place the original information about interrupts but expanding the project to include an LCD and buttons to allow it to be used as a stand-alone device. In its new form it feels much more like a complete project. The LiquidCrystal library was something I really wanted to cover in the book but it hadn't fitted into the other projects that made the final cut, so re-jigging this project gave me the perfect excuse to demonstrate it. And the final device fitted together so beautifully into the clear-fronted weatherproof case with splashproof pushbuttons that it almost feels like a work of art, even down to the exposed colorful PCB and wiring: something that I can feel proud to show people and tell them I built it.

Nintendo DS touch screen controlling a Processing app

Tue, Sep 1 2009: Filed under Projects

Posted by Jonathan Oxer

Finishing off the "Touch Control Panel" project today for the book I wrote a simple app in Processing that displays the status of virtual buttons on the touch screen. I've defined polygons on the touchscreen as buttons and put an underlay behind the screen to show their location, and the coordinates are sent 10 times / second to the host. The Processing app then displays the buttons and shows whether they are on or off.

The source code for the Processing app is up now on GitHub:

Oscilloscope hardware all done

Sat, Aug 29 2009: Filed under Projects
Posted by Jonathan Oxer The hardware came together quite nicely, but the software side of this project is giving me a surprising amount of trouble. The pic below shows it connected to the serial data line on an RFID shield mounted on a Mega: Hardware works just fine, but the problem is that my computer at home is an original eeeBox with a totally underpowered VIA CPU, and when I have Processing (which is Java based, so ridiculously overweight) on the host trying to process a data stream being thrown at it at 115,200bps it keeps freaking out and becoming unresponsive. Most of the time the serial port won't even come back, which means I've been rebooting the machine about every 10 minutes. It's driving me nuts so I've just taken some time off to play with a Seeed Studio pan / tilt servo mount which I'm controlling with a Sparkfun analog joystick and breakout board. At least *that* worked first time!

1 of 3 >