Project Description

 

Author started this project for his wife Sue since she had so much interest in raising dart frogs. He wanted to build a survivable environment runs by automatic system for dart frogs which also can be monitored on the web. The system includes switch for lights on and off, plug in and unplug fans, monitor the temperature, and use a mist bottle to keep the environment at a desirable humidity level.

 

The tank, light hood, and cabinet

AutoFrog V1.0 made Sue’s life a lot easier, but it was not without flaws. We had to update the Boarduino with different schedules based on the time of the year, to give the frogs a more realistic feel of the seasons they should naturally experience. This was not too bad, but it was a hassle to update the program. Why? The original setup did not incorporate a real-time clock. It simply counted milliseconds and made decisions based on how many milliseconds had passed. Because of this method, if the power went out, the Boarduino thought it was now 8am again, and restarted an incorrect cycle. Additionally, the program was hard to modify because everything was pattern based, and every time we updated it, it was a puzzle to determine what numbers were needed in the code to make lights turn on and off at the right times.

 

Eventually, Sue determined that she would like a system that:
– Kept the time
– Had the option for knowing what to do based on what season it was (without reprogramming)
– Didn’t get off-schedule when the power flickered
– Controled a lot more things (she wanted control over a total of 7 “switches”)
– Had a mist button so that she could manually mist the frog tank using the built-in mister
– Retained the measurement of inside temperature and humidity, as well as outside temperature

Up for the challenge, I embarked on a mission to create AutoFrog V2.0.

The Completed Control Board

User Interface
AutoFrog V2.0 does incorporate a schedule for it’s main control. However, every once in a while, Sue wants to override what’s going on. Therefore, many things can be controlled with 2 buttons. Additionally, a lot of stuff is going on inside AutoFrog, so it’s nice to know all that stuff. The LCD display is great for this.

The interface is very simple. There are a total of 7 information screens that the user can see. They can cycle between them, in order, using the screen select button. The seven screens are:
1. Current time, inside temperature and humidity, outside temperature
2. The time the next programmed event will occur, and a countdown to that time
3. The current date, and the season program that is being used based on that date
4. The minimum temperatures and humidities that have been observed since last reset
5. The maximum temperatures and humidities that have been observed since last reset
6. The temperature of the Chronodot, and it’s battery voltage (a third button must be held to see this; prevents drain on Chronodot’s battery)
7. The version of the program that’s running, and it’s uptime (this one is just for fun really!)

A look inside the cabinet

i2c Bus
The us of the Arduino i2c bus for this project was really great. It allowed me to use 4 devices using just two pins!
– LCD
– Inside Temperature and Humidity Sensor
– Outside Temperature Sensor
– Chronodot

 

The way that many things are controlled with the one other button is that it’s function changes based on what screen you’re currently on. Here are the corresponding things that can be controlled:
1. Mist
2. Toggle Circulation Fan
3. Toggle Vent Fan
4. Reset Min/Max Temperatures and Humidity
5. Toggle Dusk/Dawn Lights
6. Toggle Day Lights
7. Toggle LCD Backlight

This is how the status is displayed on the web

The web interface is mainly for fun, but Sue says it does come in handy when she wants to see all of the information in one place without cycling through the LCD screens. She can just pull the page up on her phone, and see everything in one spot, all in real-time.

 

Author : Chris Bunch

URL: http://cbunch.com/view/autofrog-v2-0/

Source Code: http://cbunch.com/view/autofrog-v2-0-code/

null