I ordered a single PCB like 3 weeks ago, and it finally came today. BatchPCB threw in an extra one, for which I am very grateful, because I am probably going to mess up one board trying to put on the surface mount parts.
I ordered all the parts last week, and they came on Saturday.
Here are some pics:
Once I build the boards and test them out, I will post the results.
After being somewhat disorganized with Germination Station 1.0, I am making a better attempt to plan out future steps to address the problems that I ran into the first time around.
Currently, I am working on a pyQT Gui so that I can communicate and view the sensor data better. It took a while to figure out how to communicate asynchronously with the Arduino. I found an example of an asynchronous I/O program, and I added a pyserial read. Right now, I am reading the serial data and displaying it in a text box. I am messing around with graphing the data, but that is proving to be more difficult.
The next stage will be to develop a serial protocol on the Arduino that I can use to read all the sensors and change parameters.
Test new relay board circuit. Spin PCB design and order prototypes. It would be great to turn this into a little kit. I am going to look into the cost of the BOM and what kind of markup is feasible.
I want to get one variable working from top(gui) to bottom(sensor and variable control).
I plan on growing some blueberries, and I might create a little sub-project that will just water the plants in pots on the deck. That would just deal with moisture and pump control. (I would need to look into some cheap pumps/values.)
Integrate Fire, Wind, and Earth variables one at a time.
I am looking at a hard plastic for the roof so that I can fix some of the water run off issues, but the current quote that I have is pretty steep ($109 for a 4'x8'x 0.125" lexan.). I might try to put that off for as long as possible, but I think that having a hard roof is going to be a necessity.
I have not decided if I am going to implement Xbee on this version. Just the Xbee units would be about $40, and it could cost more if I decide not to use the Xbee arduino adapter boards that I already have. They might have been the reason that the last Xbee units got toasted.
I had fun naming my control variables. Earth = temperature of the soil, wind = temperature of the air, water = moisture, and fire = light.
The sensor stalk
I needed a way to connect all the sensors into the Arduino. I made my own shield and used a motherboard firewire cable. I used the heating pad (earth) from the previous project, a hair dryer, and a 12 DC fan (wind) and the two fluorescent lights (fire).
Finding the right layout was kind of a pain using a cheap board from radio shack (not so cheap).
Firewire cable had just the right amount of wires.
Three sensors: two thermistors and a photocell. This is the first version. The original plan was to be able to differentiate between daylight (higher) and the artificial lights (lower), but the photocell would get saturated and keep rising. I had to put an extension on it so that it was above the lights. I did not implement the water sensor because I did not have a pump.
Testing out the fan circuit. Used a TIP120.
Sensor Stalk header: I/O for the open squid, 2 pins for the the 12VDC, and 2 pins for the fan.
A little bit fuzzy, but everything hooked up.
The goal of the Fire (light) control was to turn on the lights at 6am and then turn the lights off when the sensor (sunlight) reached a specific point. The lights would turn on again if the sensor value dropped below the determined value and stay on until 8pm. As summer approached, the light would be used less and less.
I used the DateTime library. Syncing up the time with a pc and adjusting for a timezone were a pain.
I got the fire variable to work sporadically, but it never worked longer than a period of a couple days.
The lights are on!!! Having to haul my work laptop onto the porch did not help with debugging, especially when it is all software. I have really old Arduinos that still require the manual reset so that did not help either. I have not gotten around to modding them.
Here is a little clip from testing the photocell circuit. I sound ridiculous. That is Noelle's beautiful thumb at the end.
I used the FrequencyTimer2 library. Something wasn't running 100% correctly because the calculated overflow did not come out right, and I had to tweak it until it was approximately 1ms. I created an earth and wind PWM timer based off of the 1 ms tick. The wind period was 100sec, and the earth period was10sec broken into 100 increments with a divisor. This strategy needs to be evaluated because I was constantly troubleshooting the timers to see if they were correct.
Earth was almost the exact same algorithm that I used with the original PID controller. I cleaned up some of the calculations and added a larger range to the thermistor formula for both thermistors. The PID function producted a value from 0-100, which was used as the duty cycle of the earth PWM.
Wind was a bit more complicated. I designed the algorithm to turn off the hairdryer and turn on the 12VDC fan. The wind PID algorithm was allowed to go negative. The negative state would mean that the station had gotten too hot, and the fan needed to turn on. I think I got this working right at the end of the project, but I figured out that the fan did not have the CFM to cool down the germination station as the days got warmer. My original idea was to have one fan and a large heat sink with a film heater attached. I think that would have been a little neater, but the control algorithm would have been a little more complex.
In the end, I did not feel confident enough to leave some plants in the germination station. Whenever it rained hard, the plastic concaved a little and caught some water. I did not frame out the entire base of the station so the water leaked back inside. Thank goodness nothing got fried!
Here is some analysis of what problems I ran into and what I can do better next time. If anyone has additional input, I would be grateful.
Scope - I really wanted to have a GUI and a solid communications protocol so that I could read the data live. I hacked together a serial protocol, but it was not robust enough, and the fact that I had to sit outside on the deck did not help the whole development process.
One of the interesting philosophies that my boss has mentioned when developing our products (embedded systems) at work is to take a single slice of the project and make it work top to bottom. One of my goals going forward is to get a single element working (i.e. thermistor) and have it communicating with my new laptop (birthday present!!!!) with a pyQT UI. If I can get that to work, then I can slowly add the other variables.
I am going to have to adjust the Frame structure so that it is more stable. I plan on getting a sheet of lexan for the room. I would like to make the whole structure out of lexan but that might be cost prohibitive.
I have some really good ideas for the water sensor and pump. I am currently trying to figure out what method would be the cheapest and easiest to control (ac pump vs. dc pump).
The end game of this project is to have a system that will transmit the control data to a web server so that the station can be monitored remotely. Tweaking the PID values online would be kind of neat, but I don't think that is necessary.
Next post, whenever I get around to it, will be about the raised bed and garden that Noelle and I created this summer.
I have been working on this project all spring, and I am finally getting around to posting about it. Unfortunately, it did not turn out to be as successful as I would have liked it to be. A couple of years ago, I created a PID controller that controlled the soil temperature of a Biodome. Now that we own a home, I was hoping to be able to add a bunch of other variables. The variables were the following: soil temperature, air temperature, light, and moisture. I also wanted to have Xbee units to relay the information back to a Webserver so that I could view the system's status from the web.
The Xbee idea had to be postponed because 1 of my Xbee units got toasted. As a result, I had to be tethered to the project via a USB cable, and that caused some technical and logistical problems. I still got a lot done, but in the end, the entire system did not work.
The base: I wanted to see how much of the deck it took up.
The side supports. I will expand upon my rationale for this shape later.
I attached two fluorescent lights as part of the support structure. They were also the most costly part of the project.
Additional supports and hinges so that I would be able to easily lift the cover.
Cover attached to the base
You can see that I did not line up the cross supports. The whole structure was not as stable as I wanted it to be, which may have been responsible for water flow issues.
I took a 4" by 4' PVC pipe and cut it in half(horribly) and glued it together. Attaching it to the structure was very precarious, and I will need to think this out better the next time around. The pipe was to funnel water into the trash can. The plastic that was connected to the "roof" of the pipe was very leaky, so it did not work as efficiently as it could have.
Wiring the Lights
I took a basic extension cord and cut the end off, then wired the lights in parallel together.
I planned on using the Arduino again. I had an extra one on hand, but I didn't need to use it for the system. It was useful for debugging basic code at lunch, though.
I needed to control multiple AC devices (hair dryer, heating pad, and lights). Last time, I hacked a digital AC timer. That would have been a little too costly this time. I found the relay squid by Liquidware, but it was a little out of my price range, and I figured I could build one cheaper.
Got these from Mouser. Really cheap. Just cut the ends off of them. Time for some soldering!!!
I spent a good 2 hours working on the circuit in the top left corner, and it just would not work. I found out that the relays that I had picked could be driven with just the output current of the Arduino. (After examining the Atmega and relay documentation, the relays should have blown out the IO on the board, but for some reason that did not happen) I am working on redesigning the circuit now.
I wired the ground and neutral straight through to all the plugs and switched the hot.
Soldering the AC lines on the board was tedious. I am surprised it all worked. I put some hot glue down to protect the connections and keep everything in place.
All done! Time to get it in the box (project box from radio shack).
Everything hooked up to the Open Squid.
I have created a schematic in Eagle with the correct transistor switching circuit. I have laid out the PCB, but I want to do some testing of the circuit before I ordered the PCBs. All the schematics and gerbers will be available after I do a system test.
Next time, I will go into the Sensor Stalk and the Arduino program and the problems that I ran into while working on this project.
Well my Dad wanted to buy some of those tomato plant holders that allow you to hang the plant upside down. Since he is an independent contractor and has a whole bunch of tools I suggested that he make them. I found a couple of tutorials and an instructable online, but I never thought he would follow through with it. I was really surprised to hear that he actually made 4 of them. He went a bit overboard and made this huge setup that suspends the plants. Its pretty cool. I told him he was a hacker/maker, but he did not get it.
Here are some pics:
Plastic container with cloth to hold the soil.
The posts are supported by the deck and they are tall enough to walk under.
Well, I have made some serious progress with the germination station, and I hope to get it all put together sometime this week. I did a full integration test and got all the major systems working outside. I want to add some sort of real time monitoring but getting a USB cable through a sliding glass door is going to be difficult.
Here is an interesting breakdown of what and how I watch my TV. Sunday:
Family Time:) Noelle and I watch Amazing Race on CBS. Monday:
Chuck, Heroes and Big Bang Theory.
Chuck/Heroes sometimes live, but most of the time on Hulu.
Big Bang Theory: CBS is a bunch of idiots, and they have not gotten on the Web TV train yet. They post 3, 2 minute clips from a 22 minute episode, so I bitorent this one.
24, but I am going to wait until it is all done then watch it on Hulu or bittorrent the whole season.
Noelle watches AI, but I usuallly sit on the couch with the laptop messing around.
Fringe a week or 2 later on Hulu.
Again, Noelle watches AI, but I usuallly sit on the couch with the laptop messing around.
Lost but same as 24.(no Hulu option)
The Office, 30 Rock on Hulu(usually fri/sat) bt CSI
Watch BSG and Dollhouse live unless we go out then watch them on Hulu.
Catch up on shows I missed during the week.
The Mentalist, Psych(USA) and BurnNotice(USA). Don't know what nights they are on, but I Hulu and bittorrent the Mentalist.
I really like time shifting. It is really good for the summer to find a show that you liked but missed a bunch of episodes. Late Spring additions: Reaper, Eureka, and maybe BBC Robinhood. It may seem like a lot but once you take out all the comercials, you reduce the length by a third.
NASA has published some great pictures(artwork) from the 70s.
I remember reading books similar to these in elementary school.
On the personal projects side, I spend 8 hours on Saturday toiling fruitlessly on my lastest Arduino/Garden project. I hope to get the atmega168 flashed today but we will see.
Woot, I brought some arduino stuff to work so I could mess with it during lunch. In 30 minutes, I had 4 chips flashed and 2 arduinos tested and running. I was missing a cable for my STK500 and I found one similar. It made flashing the chips trivial.
Now that I have work the boards working. I need to integrate two more control loops(lighting and air heating/cooling) into the current thermistor code.
One of the unexpected joys of home ownership, as well as the fact we live farther out in the "boonies," is the great view of the sky. We have a big sliding glass door on the back of our house that faces south. I am constantly amazed by the stars, the moon, and the planets that float above. My favorite constellation, Orion (I think that should be a requirement of a nerd.), can easily be seen almost all night. It was really cool seeing the Moon, Jupiter, and Venus all line up a couple months ago.
Honestly, just looking up at all the stars is mind blowing. I wonder what other people think when they look at those same stars. One of my goals in life is to capture an asteroid and return it to earth. If I last as long as my grandparents, I have a little under 60 years to pull this off. That's a huge amount of time, but it is a monstrous undertaking.
This could have been broken down into 3 posts but I did not get around to posting them.
In an attempt to further ensconce myself in the nerd hall of fame, I got a Tron poster. (No one got it for me for Christmas.) Noelle had a coupon for a frame at Michael's, so the poster will be safety preserved for future generations. In my enthusiasm for the poster, I watched the 20th anniversary edition (digitally remastered). It is amazing how good it looked, even more so if you take into consideration that it was released in '82. (Nerd moment: Just think how ridiculous Star Wars Episode I is going to look 20+ years after it was released; heck, it looks bad now.) The crazy and awesome thing is that they are going to make a sequel to Tron: TR2N. It's set to be release in 2011, 1 year short of Tron's 30 year anniversary...that's crazy!
Along with the Tron poster, I got By Schism Rent Asunder, which is the sequel to Off Armageddon Reef. David Webber is more known for his Honor Harrington series. The Honor Harrington books are the ones you see people reading on planes with the really cheesy covers. I have read the first 3, and they are better than the covers make them look, but there are 20 books in all, and I can see a pattern already in the first 3. Most of Webber's books have nautical themes, whether it be space navy battles or standard seafaring. I read the first book last year on one of my trips to Seattle. The main storyline is set in the world of Safehold ,which holds the remnants of human society. Safehold has been permanently restricted to a Medieval level of technology to avoid destruction from an alien race. The main hero/heroin is a cyborg (named Merlin) who was hidden in the mountains (for 800 years) by a sect of the original settlers. They wanted to advance human technology so that if the aliens find them, they will be able to defend themselves. The author does a wonderful job of endearing you, the reader, to the main characters. The one aspect that I like is the altering of technology. Merlin's task is to slowly transform the society into one that can defend itself if the aliens return. He does all this tweaking of the ships, cannons, and guns. I always wonder how an engineer could alter our existence if he were to go back and have a conversation with the Royal Society in England in the 1600s. I finished all of the first book while I was on the trip to Seatle, and I finished the second one in under a week. The one bad thing is that By Schism Rent Asunder and the 3rd book By Heresies Distressed are basically 1 book and were split up because it was going to be too big. So the ending of By Schism was not as clean as Off Armageddon Reef, and I have to wait until June for the Hardcover of By Heresies Distressed.