2012/02/12

Tracking Humidity and Temperature with an Arduino

Having added a realtime clock to my Boarduino, I'm now on to measuring the humidity and temperature inside the vivarium.  This iteration displays the current reading along with the time on the LCD.  Eventually, I plan to capture the data so I can graph how these are changing over the course of the day.

Masdevallia with AM2302 Temperature / Humidity Sensor
Incremental Bill of Materials
New to this step is a temperature / humidity sensor from Adafruit Industries.  I went with the AM2302 since I think the DHT22 will give a reasonable amount of accuracy and I liked the larger plastic housing.  I did end up soldering a scrap length of CAT5 cable to the sensor's wires to make the wires long enough to get out of the vivarium to the board.

Description Cost
AM2302 (Wired DHT22) Temperature-Humidity Sensor $15.00
(The full bill of materials is provided at the end of this post)

Wiring
Components with Logical Connections

  1. The AM2302 runs on 5V along with the LCD and RTC.
  2. The ground line is connected to common ground.
  3. The data line is connected to digital pin 2 on the Boarduino.

Code
Initial setup of the sensor involves creating a new DHT object and passing in the data pin and sensor type as parameters.
Each pass through the loop, read the values from the sensor. The sensor only produces readings every two seconds, so this might be better reduced to only reading every 5 seconds or some other arbitrary interval.
Full source code is available on github:
https://github.com/dmalec/Project-Masdev/tree/master/masdev_temp_humid

LCD Showing Time, Humidity, & Temperature
Full Bill of Materials
Description Cost
AM2302 (Wired DHT22) Temperature-Humidity Sensor $15.00
Boarduino $17.50
FTDI To USB Adapter $14.75
16x2 LCD $9.95
LCD Backpack $10.00
Real Time Clock (DS1307) $9.00
12V 6A Power Supply $8.62
Total $84.82


The next step is recording the temperature and humidity readings to an SD card and graphing the data using RRDTool.

2 comments:

  1. Replies
    1. The code sets the date and time to the date and time the sketch was compiled:

      // initialize the RTC
      rtc.begin();
      if (!rtc.isrunning()) {
      // if this is the first time talking to the RTC,
      // set the time to the sketch compile time
      rtc.adjust(DateTime(__DATE__, __TIME__));
      }

      After that, there's no was to adjust date and time. I found that this worked for my project; but, there are other projects that it might not work as well for.

      Delete