bsbrum
Ident...
This is the fifth generation of the Coop-O-Matic code.
* 1st Gen: A sophomoric effort on my part, and while it functioned in principle, it was basically a memory pig and not very sophisticated.
* 2nd Gen: Based largely on an automated smoker, called the QPID. That code was also a pig, no fault of Mark Patel's QPID code, and had a lot of memory related issues - crashes, and was too unreliable. I still hadn't learned what was going on - I was running the controller out of memory and didn't realize it.
*3rd Gen: Introduced the "Blackwidow" Arduino clone with built-in WiFi. The WiFi and web server code took up so much memory, that a second micro controller was needed to split the code, creating a master/slave configuration. It was very unreliable.
*4th Gen: Saw a complete rewrite of the Master controller, using a brilliant task scheduler design, allowing the controller to handle many concurrent tasks, running without all the memory issues of the previous design. The web/WiFi slave board still had issues, and I never quite got the master/slave sharing of information working as I wanted. However, at this point the two controllers were completely autonomous, and the Master could run and control the Coop-O-Matic without the slave being connected.
*5th Gen: This generation saw the introduction of WebSockets which would not run on the BlackWidow board. I purchased an Arduino Ethernet board, and while the WebSockets/Pusher libraries would work when I had the board plugged directly into my main network switch, when I placed it out on the WiFi spur (via a long-haul point-to-point antenna and a remote bridge NAT), it would not work. I did get the master/slave handshaking working very well, thanks to another new library.
I was relying on NTP to set the time of the controller, which would allow me to fire off commands at specific times - such as after Sunrise and Sunset to open and close the coop. The problems with the networking card made this impossibly unreliable though, and so I opted for the Adafruit RTC1307 battery backed-up real time clock. BRILLIANT!
There are a number of people and 3rd party libraries that helped make this project sing:
1. "Slinky" and his coop controller, that inspired me to undertake this project. slinkyx.blogspot.com/2010/04/wifi-chicken-coop-door-opene...
2. QPID by Mark Patel, let me handle the coop sensors, door position switches and motor controls in an object-oriented fashion. qpidproject.blogspot.com/
3. Timelord - calculates sunrise and sunset for me. www.swfltek.com/arduino/timelord.html
4. And last, but certainly not least - the stellar task manager architecture by Alan Burlison: "A very simple Arduino task manager" - bleaklow.com/2010/07/20/a_very_simple_arduino_task_manage...
Ident...
This is the fifth generation of the Coop-O-Matic code.
* 1st Gen: A sophomoric effort on my part, and while it functioned in principle, it was basically a memory pig and not very sophisticated.
* 2nd Gen: Based largely on an automated smoker, called the QPID. That code was also a pig, no fault of Mark Patel's QPID code, and had a lot of memory related issues - crashes, and was too unreliable. I still hadn't learned what was going on - I was running the controller out of memory and didn't realize it.
*3rd Gen: Introduced the "Blackwidow" Arduino clone with built-in WiFi. The WiFi and web server code took up so much memory, that a second micro controller was needed to split the code, creating a master/slave configuration. It was very unreliable.
*4th Gen: Saw a complete rewrite of the Master controller, using a brilliant task scheduler design, allowing the controller to handle many concurrent tasks, running without all the memory issues of the previous design. The web/WiFi slave board still had issues, and I never quite got the master/slave sharing of information working as I wanted. However, at this point the two controllers were completely autonomous, and the Master could run and control the Coop-O-Matic without the slave being connected.
*5th Gen: This generation saw the introduction of WebSockets which would not run on the BlackWidow board. I purchased an Arduino Ethernet board, and while the WebSockets/Pusher libraries would work when I had the board plugged directly into my main network switch, when I placed it out on the WiFi spur (via a long-haul point-to-point antenna and a remote bridge NAT), it would not work. I did get the master/slave handshaking working very well, thanks to another new library.
I was relying on NTP to set the time of the controller, which would allow me to fire off commands at specific times - such as after Sunrise and Sunset to open and close the coop. The problems with the networking card made this impossibly unreliable though, and so I opted for the Adafruit RTC1307 battery backed-up real time clock. BRILLIANT!
There are a number of people and 3rd party libraries that helped make this project sing:
1. "Slinky" and his coop controller, that inspired me to undertake this project. slinkyx.blogspot.com/2010/04/wifi-chicken-coop-door-opene...
2. QPID by Mark Patel, let me handle the coop sensors, door position switches and motor controls in an object-oriented fashion. qpidproject.blogspot.com/
3. Timelord - calculates sunrise and sunset for me. www.swfltek.com/arduino/timelord.html
4. And last, but certainly not least - the stellar task manager architecture by Alan Burlison: "A very simple Arduino task manager" - bleaklow.com/2010/07/20/a_very_simple_arduino_task_manage...