I started thinking of a physical display, and have an LCD desktop monitor planned. But, I thought having a weather station display that physically moved things to indicated current conditions would make a unique and fun project.
Here’s a picture of something I slapped together in few minutes to mount some motors to, and work on the Arduino code to indicate conditions. I’ll play with different motors and decide how to go there.
I thought of using factory bought panel meters, but had a few problems with that idea. They’re expensive in small quantities, and it’s really hard to find a style that would look good for a weather station, and getting an attractive and appropriately scaled background looked to be challenging.
But, you can get servos and stepper motors for pocket change, and you can print really nice looking scale templates, and it’s trivial to control these using an Arduino.
Servos are the easiest from a design point of view, they auto-center, and you just give it a degree to point to, and you can drive a ton of them directly with an Arduino, but they can be noisy, and sometimes hum even when they’re not moving, depending on the motor and the position. I want something silent that you can put on a desk. But, perhaps if I have the servo in a sound-dampening wooden case, it’ll be quiet enough. Have to do some experimentation.
Steppers are virtually silent and can be moved very accurately, but since they rotate continuously, I don’t have a way of reading a position. I have no way of knowing where the power-on starting point is, so if I unplugged and plugged a unit back in, I don’t know where the indicator is pointing. I can create a “calibration” mode, releasing the motors to free-spin, and requiring movement the indicators to a known position on power-up, or add a potentiometer that can move the stepper left and right, but that means it’ll only be fun for hardcore hobbyists. I can’t make one and give it to a friend and expect them to be impressed unless it’s a “plug in and it just works” unit. It also really requires the use of a motor controller. You can only control one stepper per L293D, and my favorite driver board, the Adafruit motor shield, only drives two steppers. I could design a stepper circuit daisy chaining 74HC595N serial to parallel latches driving a bank of L293D’s, but seems like finding quiet servos will be a lot more cost-effective in terms of parts cost, circuit design, and the resulting time writing driver software. And, if I make this into a kit, simplicity is also a good thing.
My initial thought was to simply plug an XBee into the same Arduino, have it parse the output from my sensor pack, and display it. It’s still going to do that, but when I mocked this up, I didn’t have a spare XBee lying around, UPS is still driving them across the country.
Right now, this is driven by a laptop reading the instantaneous weather data from a file. I’m writing the datafile in a Dropbox directory. This is cool because if I picked up and moved the laptop and display box to a friends house, it would continue to just work, displaying the sensor data from home.
I’m going to have to think of a configuration where the station can display multiple sensor pack outputs. I think if I use an Arduino Mega, given it has 3 serial ports, I can make it all work.
I think the final version will have at least 7 indicators:
- Temp (internal/external)
- Humidity (internal/external)
- Barometric pressure
- Wind speed
- Wind direction
- Rainfall rate
- Daily rainfall
I may double some of these up, so you flip a switch or press a button and it’ll indicate internal/external temperatures, and might supplement some of them with LED’s. Also considering continuing with the Fabulous Five project, and having a dollhead spin when the wind really picks up.
I may also add an LCD, especially if I display remote sensor pack data. Doing all of this using one Arduino may be a challenge. I think the Mega has enough horsepower to do everything I want, though, if I can’t do it all through a regular Arduino.
Did a lot of work over the last few days using Processing to communicate via USB to an receiving XBee, and then taking the resulting information from the sensors I’ve got installed so far and publishing it in a bunch of different places.
I have the information going to several places. First, it’s going to the Weather Underground, which is where I publish my Davis Weatherstation data. This has a few big benefits, they keep track of all my data for me, and show it in pretty graphs over time. You can check out the results here.
Next, I got used twitter4j to post status to Twitter, which I also do with my Davis Weatherstation Data. But, I’m not a big fan of Twitter (or any third party site) being the only place that has my data, it’s not very easy to get it back out again.
I installed my very own microblog, using StatusNet, and am simultaneously posting updates here, so now I’ll have all the entries, and be able to archive them or review them as I see fit, without having to try to get historical information back from Twitter.
Next, I’ll use exported graphics from Processing (my primitive first version of starts this blog), and will publish a webpage with current conditions, and possibly do a little work to show a daily graph.
Got a lot of things working that were really poorly documented (or not documented at all). The results are deceptively simple, but came from lots of trial and error. I’ll be publishing all the code when I’m further along, with specific excerpts on some “how to’s”. (like how to post to twitter in Processing, and how to setup non-twitter microblogs). The software supports it all, and is really flexible, just not well documented.
Of course, that also goes for the Arduino code I’ve worked on for all the sensor data gathering. There’s some excellent starting points of working code that does all the basic setup. Using that plus the data sheets, I’m customizing it for low-power sensor operation.
After I’ve got this all working well with the right hardware and software, I’ll be putting together a kit of all the components to build your own in the soon-to-be-opening store! I plan to have several versions of this sensor pack, a basic temperature/pressure unit, a more complete weather station, and a few other kits as well.
Using a batch of parts from SparkFun I set out to create a basic, but adaptable environmental sensor that could sit outside and be portable. The initial parts I put together were:
- XBee Explorer Regulated
- XBee 1mW Chip Antenna
- MEMs Barometric Pressure Sensor – SCP1000 Breakout
- Humidity and Temperature Sensor – SHT15 Breakout
- Solar Cell Small – 0.45W
- Polymer Lithium Ion Batteries – 1000mAh
- LiPoly Charger – Single Cell 3.7-7V Input
Which I attached to an Arduino duemilanove and a simple protype shield:
Using code I found from around the net, I got the SP1000 and the SHT15 talking, and thanks to both the Making things talk book, and some more web research, not only got the XBee’s chatting, but got the remote XBee going to sleep between transmissions.
Next stage was to use a 3.3v Arduino board, which would work better with the LiPo battery, since the duemilanove expects 5V+ in, and was getting 4V, degrading over time. Without the voltage reduction circuitry, I’d be able to get everything humming along for much longer before the voltage dropped enough for things to start shutting off. Here’s a fuzzy picture of that setup on a breadboard:
This worked quite well, except I couldn’t get the software reset to work on the Arduino Pro Mini, but I probably screwed up when I soldered the bottom connector. I can still download sketches to it, I just have to hit the reset button manually when I do. So, I made it a breadboard Arduino. I’m going to experiment with a few other Arduino boards as well, there are several nice compact boards to try out.
Currently, I’m working on power management, battery sizing, and simple logging/display software on the receiving end. I’ll update as the project progresses!]]>