Monday, October 24, 2011

Filling In A Few Gaps

I broke my blogging log jam earlier this week with a bit of advice on How To Feed A Rabbit.  As informative as that post was, I wanted to get back to something else I've been digging in to on this blog: exploring the innards of the Davis Weather Station console.  There are a couple things that have been figured out since I last wrote about the thing, so let's fill in a few gaps.

Some time ago, I opened the console up and worked out the pinout on the console's expansion connector.  Remember this picture?  Of course you do.

Back when I published this pinout
, I was left scratching my head as to what TXD1 and RXD1 did after successfully getting data out of TXD0 and RXD0.  Leave it to wxforum member C2520, the guy who successfully disassembled the Davis firmware and then poured over it for a couple years to figure out how it all works (I AM NOT WORTHY!).  He wrote on this post:
That's easy, USART1 is used for the cabled version. Just look at the interrupt vector table, only the cabled firmware version has an interrupt vector for USART1.
These things are obvious once you know the answer, I guess.

While we are filling in the gaps, here is another one.  When I first opened up the console, I found this mysterious character:

Later on we figured out that this was the atmospheric pressure sensor, but didn't know much more than that.  But we know more now.  Thanks to the keen eyes of wxforum member adnadeau, the mystery was solved in this post.  Borrowing some of my own verbiage from that thread...
The part is a Measurement Specialties 5534CM.  Applications include "Weather control systems" according to its product page (man, I'd love to be able to control the weather). Here is its product page, here is where you can buy it, and here is some Arduino code to drive it!

The cool thing about this part is that it has a digital interface rather than an analog one I had originally guessed at.  It also is factory calibrated.  Davis was smart and kept things simple: the amount of A/D they have to do in the console is exactly zero.  But there seems to be a price to pay for this simplicity: $27.27 for a single piece, to be exact.  Good thing they are cheaper by the 1,000.
This all goes to show how good things can happen when you put some information out there.  Other people either know something as well and are willing to share, or somebody sees something that you missed.  I get a kick out of it every time a new piece of the puzzle gets put in place.

Speaking of which, I put in an order to Mouser Electronics last night for a new Davis-related project.  So hopefully there will be some good news to share in the next two or three weeks.  I already have my blog post mostly written: I'm banking on success!


  1. I have a Davis VP2 and I'm looking forward to seeing it reversed engineered. I'm no where near qualified to do it myself. I'd like to take the data and send it to an Arduino (then to or something). My first choice would be to tap into the wireless from the weather station's transmitter and not even need a console. Second best would be to get the data from the console.

  2. Keep poking around this blog, and you'll find that both the comms interface and the datalogger interface have already been reverse engineered. You have your second best option available already.

    You'll obviously need more hardware than just an Arduino to tap in to the wireless interface.

  3. Hi DeKay, I'm working on a homebuilt dive computer, and I stumbled on your blog because I'm considering using the Measurement Specialties MS5535C as my pressure (depth) sensor. I'm hoping you can clarify something for me...

    Can the MS5535C (or the MS5534CM you mention) be read from a standard digital pin on the Arduino? I'm using the serial pins 0 (Rx) and 1 (Tx) to drive a little OLED display, but I don't know enough yet to know whether the MS55XX series sensors can be read using the digital pins 2 to 13.

    Grateful for any advice :) I'll check back periodically for your response.


  4. Anonymous: I know squat about the Arduino. I suggest you post on an Arduino forum where someone more knowledgeable could help you. The link to the datasheet and the sample code should be all someone needs to answer your question.