I need to log the temperature of 42 points in a server rack, using 1-wire thermometers.
Arduino seams to be the perfect platform for a hobby programmer like me.
But I have 2 problems.
Can Arduino handle 42 1-wire devices, and how do I sort them so that I know their position in the rack. And will it have enough memory to store 96 measurements per thermometer a day (total of 4032 measurements every day)?
Can I transfer the data once a day via the USB or do I have to use the serial connector?
I don't know if you can handle 42 devices that way though.
Your biggest problem will be memory. Arduino only has 1 Kb (1024 bytes) of memory to store data, including all the variables you define in your program. You can use some of the Flash memory normally used for code to store data, but that will take away from the memory for your program. But storing 4032 readings is almost certanly not possible.
The easy solution would probably be to read a sensor and send the data to a PC connected to the Arduino baord . That way you could read sensor X and send the data with an identifier like "XX YYYY" where XX is the sensor number and YYYY is the data.
The USB connector on the Arduino board is really a serial port. It is easy to use it to send data back to a PC application. Any PC program that can listen to a serial port can recieve data from the Arduino board, including Hyperterminal that comes with Windows.
EDIT: i dont know how sensitive the 1 wire system / protocol is to electromagnetic intreference and noise. This is something you should check before installing anything in a rack with lots of that going on.
I'll find another project for an arduino, I definetly need to get one.
I wouldn't be so quick to drop the idea of using the Arduino...
I would think using I2C or SPI EEPROM would be totally achievable for storing the data... (There's even been some USB storage devices (VDIP?) used.)
Not sure about the maximum number of devices on the bus but looking in the OneWire code it seems plausible that 42 could be do-able. Also, the OneWire library seems to allow you to specify the Arduino pin to use for the bus so you could have multiple buses perhaps.
All of this is supposition on my part but I'd suggest looking into it...
Did some further research yesterday. 1-wire thermometers with memory exist. I could store the values locally in the thermometer and read them when I need them.
Since I have a cluster that nearly fills a 42U rack, I'll throw out a few observations (even though I don't know specifically what you are trying to do).
The 1-Wire sensors I'm used to using (DS1820/1821) aren't all that precise - +/- 1C at best, IIRC? Given that, there's not a lot of sense in putting these 1.75" apart, as the adjacent ones are going to read about the same (unless you are going to insert them inside the computer, or nearly inside). Anyway, my point is that you may be just as well off with half a dozen sensors as 42.
If you have another computer in the vicinity that you can use to access a serial port, you can connect the arduino to it and log to ther serial port.
If my air handler goes out (an all too frequent event) the temperature goes from 75F to 90+F in about 15 minutes.
I'm going to use it to log temps at the front and back of a rack. Mainly at the air intakes and outlets of serves mounted in a rack. I also want the temp in the top and bottom of the rack.
Reason. My company is building a new 300 square meters serverroom (small by american standarts, but big enough for us).
I want to prove to my boss and my two coworkers that having a plan for how we fill every rack will help us getting rid of the hotspots we see today.
The Racks will all be a mix of HP DL360G5 og HP DL580 (the new generation with 4 quadcores and 4 PSU's)
I've set up a rack as I belive it to work best, and want to compare it to one of our standart racks.
Analog measurements seam to prove my point, but they don't make a lot of sence in a meeting.
I have found a spot where the front temp of the racks will be the same, but I need to monitor the temp anyway (airflow is an odd thing).
+/- 1 or 2 deg cel will be good enough to prove my point.
BTW this summer we had a complete failure of a cooling plant for one of our existing server rooms. An error in the software running the cooling plant was to blame. The software sent out messages of an eminent failure in the secondary cooling curcuit. Not some thing to worry about, just some thing to fix with in a few hours. How ever the software decided that the error was a complete breakdown and shutdown the primary and the secondary cooling curcuits. Within 5 minutes we had the first servers in termal shutdown. And after 10 minutes we had a very hot and quiet serverroom.