The Homebrew 1-Wire Weather Station Project

I've always been interested in being able to measure weather data - you know, try to find that perfect week statistically for vacation in the Pacific Northwest. After pricing the various stations on the market I found they were pretty much beyond my means for home and hobby use. Since I thought originally that I wanted to learn about assembly language programming on the 8051 (and its many cousins), I thought developing a stand-alone weather station based on a 8051 microcontroller (See Hardware Hacks tab) using assembly language would be a fun learning project. Well, it was fun for a while until I realized the scope of the project. I got the 8051 to address a 1-wire device, and as I remember, I got the 1-wire search algorithm to work also. But then doing all the other stuff in assembly would be NUTS!

The system requirements for my homebrew weather station ORIGINALLY were:
  • Be based on a 8051 family microcontroller variant with 64K of EPROM external program memory
  • CompactFlash card for storing data weather data when offline
  • 1-wire based, using the same components as the original Dallas Semiconductor Weather Station kit, that is no longer in production. The 1-wire scheme is clever in that only a single conductor (plus ground) is needed to transmit both data and power the devices on the "MicroLan" 1-wire bus.

Some time ago I saw this article (very dated now) about networked temperature monitoring and got jazzed about using the 80C400 TINI microcontroller (which was 8051-based) from Dallas/Maxim. This chip was impressive for its time:it had a TCP/IP stack in ROM, had a 1-wire master built in, and ran a Java virtual machine. The links above are unfortunately mostly empty for now; I'll be putting stuff
in them as the project continues (hopefully).

Well now, I got a Raspberry Pi Model B and, after doing the Massively Online Oracle Course (MOOC) on Java ME for the Rpi, I am now using that for the weather station. I'm pretty caught up in redoing the Maxim/Dallas 1-wire library so that it uses an I2C 1-wire bridge. Still more troubleshooting to do, but I will put the code on Github when I have it prettied up. (Please see the Development Blog Link