Monday, March 28, 2011

March 27th: Project TLC

Project TLC = Temperature Logging and Control

Well, technically Date, Time, Temperature, and Humidity Display and Logging to USB Flash Drive with Serial Control of a Z-Wave Thermostat to Keep My Wife in Her Perfect Temperature Zone at Night - but "Project DTTHDLUFDSCZWTKMWHPTZN" is a little harder to remember :)

Parts: Arduino Duemilanove, Web4Robot Serial LCD, Macetech Chronodot, TMP102 on sparkfun breakout, HH100D humidity sensor, VDIP2 USB Flash Drive interface, MAX232 to a VRC0P Z-wave serial adapter...

Goal is to monitor / log the temperature in our bedroom overnight and to adjust the thermostat setpoint (via Z-wave) as needed to keep Candy from waking up warm :)

I need to add a big "I'm Warm" button that will cool the room another few degrees, and some interface buttons for time / date set, etc.

Code is working for date / time + temp / humidity + logging. Next up is integrating the Z-wave proof-of-concept code.

Yes, this is massive overkill, but I wanted to learn each of the components, and I had most of these parts in the parts bin...

1) When learning a new device (VDIP2) update the firmware FIRST! Turns out certain functions (setting date / time of a file) only work in the newer firmware. (Lots about 2 hours on that one...)

2) The HH100D only needs I2C once - not once at powerup - ONCE. You read the 2 calibration values, then store them as constants in your code. I also wrote them on the PCB with a sharpie :)

3) Learn each new device with a small stand-alone test program and then integrate it. I know this, but seem to always want to jump straight to adding a new device to lots of existing code. 

4) The Web4Robot serial LCD is very nice. When I purchased them, I wanted the I2C capability and key matrix functions - I didn't use them here, but its a great little serial display to add to any circuit for debugging.

5) The Chronodot seemed like it wouldn't be usable on this size breadboard - until I realized that I only need the pins on one side of the dot. Moved it over a bit and it fits.

6) The VDIP + the flash drive are very touchy - it doesn't always see it and moving the flash drive a bit causes it to work. Not good in a production device. I'll need to try some other flash drives and the other VDIP that I have to see if it makes a difference.

7) RTCs (like the Chronodot) have a built-in temp sensor for calibration. It might allow me to ditch the TMP102 and simplify the final circuit. 

UPDATE: This messy breadboard contraption lived in our bedroom overnight - I did some basic masking of LEDs and threw socks over the LCD. Laying in bed I realized that this thing can really be simplified. If I read the configuration off the USB stick, I don't need the LCD or buttons for setup. (Its really handy during the debug stage, so I'm thinking i'll just put a nice switch on it for now...) 

After logging overnight, it appears our bedroom stays within 1 degree all night (at least last night)...which makes me think this isn't a temperature sensing issue (thermostat in the wrong place) or an airflow issue (causing temperature swings)...I may just need to drop the setpoint more during the middle of the night when she gets warm...but at least this way I'm verifying it isn't an A/C design issue.

More data can only help...and I have a nice little temp / humidity logger now - even if I don't spend lots of time trying to change the temp via serial -> z-wave :)


Annabanana said...

sadly, it probably has a lot more to do with metabolism and hormones than actual temperature fluctuations. If you can invent a sheet/blanket flinger on and off-er, I'll take one!

Anonymous said...
This comment has been removed by a blog administrator.
Ian Cole said...

@Annabanana - remind me to tell you about my bed cooling system that I hacked together one VERY hot summer. I may need to create a more permanent version - but at the moment, I'm hoping to figure out the peak biological temp and apply the technological temp to counteract :)