I'm a bit of a data junkie. When I've run across opportunities to really dig into the data at work it's been a highlight. I've always wished I had some data to do that with at home. A while back I started playing with the Arduino open hardware environment. Using Arduinos to record data that I could play with seemed like a natural fit.
Eventually, I'll want to record all sorts of data. For now I want to gather temperature data from a bunch of places around my house and compare those temperatures to each other. It seems like I'm always feeling hot or cold and this will let me know if I'm imagining things. I want to be able to make a graph something like the image at right.
Before starting work on a project, it helps to have a clear idea of what you're trying to accomplish. Here's what I came up with:
- I'm going to want quite a few sensors (10 is a nice number) so they need to be reasonably inexpensive.
- I don't want to pull wires all over the house, so they need to report back wirelessly.
- I won't be able to plug them all into wall power, so they need to be able to run for a good while on batteries (several weeks minimum, months would be better).
- I want to be able to see the effects of things like the thermostat cycling on and off, so they need to report back every minute or so.
- I want a web interface for viewing the data.
- I'll want to measure temperatures other than room temperatures (like the temperature in my smoker and my wine fridge) so the server app needs to be able to handle that kind of range, even if the first sensors can't.
- I plan on logging other data, so the application needs to be flexible enough to handle things other than temperatures without too much trouble.
Just so you know, I'm also making a few assumptions:
- I'll have more fun if I design my own for a lot of things, so I'm not just going to go shopping for some commercial solution. If I was doing this for a job, I'd lean towards buying someone else's solution first.
- I like the Arduino platform, so I'll go with something Arduino compatible. I'm not going to try my hand at learning a whole new hardware environment while designing my first serious PCBs.
- Oh yeah... building things on protoboard sucks, so I'm going to want custom PCBs for this.
- The server app will be written using Ruby on Rails because that's what I do for a living and this will be a good opportunity to try some stuff that hasn't come up at the office.
At this point, I've got rev 1 of my custom hardware working. Three sensors are recording data in different rooms and reporting it back to the Mac Mini that's part of my home theater. The graph you can see above is from that data. They can run for a good long time on 4 x AA batteries (one prototype ran for 3 months). All the hardware and software is available from the project's git repository.