Project kits from Toys Down Under - with a twistMon, Feb 8 2010: Filed under ProjectsPosted 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: toysdownunder.com/arduino/kits/practical-arduino-kits.html 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 stationThu, Feb 4 2010: Filed under ProjectsPosted 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 kayno.net/2010/01/15/arduino-weather-station-receiver-shield/. Great work, Kayne! |
||
Watchdog TimerFri, Oct 30 2009: Filed under ProjectsAfter 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 updateSun, Sep 27 2009: Filed under ProjectsPosted 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 updateSun, Sep 13 2009: Filed under ProjectsPosted 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 appTue, Sep 1 2009: Filed under ProjectsPosted 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: www.github.com/practicalarduino/TouchControlPanelDisplay |
||
Oscilloscope hardware all doneSat, Aug 29 2009: Filed under ProjectsPosted 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! |
||
Oscilloscope / logic analyzer project updateFri, Aug 28 2009: Filed under ProjectsPosted by Jonathan Oxer A last-minute addition to the book has been an oscilloscope / logic analyzer project, inspired by the cool work done by a few enterprising people including Arduin-O-Scope, Poorman's Oscilloscope, and in particular the Arduinoscope. It's a conceptually simple project from the Arduino side but it's also a good excuse to go into some detail about how successive-approximation ADC works, tweaking the ATmega's ADC pre-scaler to optimise the sample rate, and the limitations of bandwidth on serial comms. I'm also trying to make the hardware look pretty so I made a front panel design in GIMP and printed it onto a self-adhesive sheet using a colour laser printer. ![]() The hardware should be all assembled and photographed by tonight so I'll follow with an update on the end result. |
||
USB mass storage working with Vinculum chipThu, Aug 20 2009: Filed under ProjectsPosted by Jonathan Oxer With lots of assistance from Marc I now have an Arduino Mega connected to a Vinculum USB host chip on a VDIP1 breakout board, with the Mega running a little monitor program that lets me type filesystem commands and have it execute them on an attached memory stick. ![]() Yes, that's an MP3 player I'm using as a memory stick. The first 3 memory sticks I tried failed! Many hours were wasted chasing problems that didn't actually exist when the memory sticks were dodgy, but once I had one that the Vinculum chip was happy to talk to it was all smooth sailing. Full FAT32 support, and from the Arduino I can get a directory listing, create / delete directories, change directory, create / delete / open / close / write / read files, check disk space, etc. The Vinculum chip is nice enough to report events like insertion and removal of the memory stick, so you can have the program on the Arduino detect insertion of a stick and do appropriate things, and also detect removal. Many, many possibilities opened up by this. I'm using it in the car datalogging project but I can already think of a heap of other uses. Hmmm, time to fire up Eagle and do a USB memory stick shield I think! |
||
Geek My Ride talk and car datalogger projectWed, Aug 5 2009: Filed under ProjectsPosted by Jonathan Oxer Last night I had the opportunity to do a talk at Linux Users Victoria about hacking automotive electronics (check out my car page on Geek My Ride for some of the other stuff I like to play with!) and one of the things I showed off was the fourth-generation in-car system that I'm putting together. It's also being featured as one of the projects in Practical Arduino. Right now it's fairly preliminary, but showing promise. ![]() The bottom layer is an Arduino Mega. Stacked on top of that are two Mega prototyping shields from NKC Electronics, with the bottom shield fitted with both male headers and female headers so the second shield can stack on top of it. The bottom shield will be for the control outputs that are used to start / stop the car, lock / unlock it, etc, and the top shield is for comms and other sensors. The two devices you can see are a Locosys LS20031 GPS module from SparkFun on the lower left and a hacked ELM327-based OBD-II interface on the top right to talk to the engine management system. Still to add are mass storage, networking, LCD, and a couple of other random bits. Oh, and if you're interested in the Geek My Ride talk I did, the slides are up now as a PDF on the talks page of my personal site. |
||
1 of 3 >
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.












