Software source code is available on my github
GitHub master branch
I suppose it is past time for me to chime in after Ed has already gotten the thread rolling with all the great pictures descriptions. Makes me feel like I need to go back in time and take more photos of my build process on HeaterMeter.
On the software side of things, let's talk about the differences between HeaterMeter and LinkMeter. The obvious advantages of using a DD-WRT router as a WiShield replacement are two-fold:
1) Power! I'm talking about raw CPU power, memory, storage, and bandwidth. The CPU of even the lowest end routers are 10x more powerful than an Arduino. The Arduino only has 32K to store code in, the router has 128x that and it is easily extended by adding either an SD card or USB storage. There is also a full TCP/IP stack which means you're not limited to sending 250byte payload packets 5/second to only one host at a time.
2) Cost (if your time is free). The beauty of the WiShield is that you plugged it in, uploaded your web pages and you were done. The downside of that is you paid $70 shipped for pretty limited functionality. WRT54GLs can be had for $10-50 and are in ready supply. However, you'll need a little more work to modify it to suit your needs as Ed has demonstrated.
Instead of the Arduino controlling the WiShield and the Grill, the Router controls the Arduino which has the sole purpose of controlling the grill, buttons and display.
What enhancements can we now provide?
Now that we can remove the TCP/IP and webserver code from HeaterMeter, we now have lots of code space available again, available to enhance the operation of the PID controller. The extra storage space means in addition to providing the instantaneous readings of temperatures and fan speeds, we can now maintain logs. I'd like to have the ability to archive these to SD/USB so you can go back and look at them for reference.
The best way to do that is via
graphs. I've already got some beautiful history graphs being generated and stored directly on the router. No external Linux box / gnuplot / curl needed.
Wireless probes. Ed is on the forefront of this one. Using RFM12B wireless modules (~$7 each), allow for probes to be paired wirelessly. Uses include food probes attached to a rotisserie, easier pit probe access, or an ambient sensor that isn't mounted inside a box of electronics.
Wireless display. I haven't thought too much about this but I've considered making unit with the LCD wireless. This could give you a small form factor for easily checking temperature remotely without using a web browser, or physically getting up. This is pretty low on my priority list.
The auditory alarm code is now back on the table. High/low alarm points to sound an alarm or beeper. Used for when your food is done or your fire is going out.
PID enhancements like "ramp down" mode. If you set your probe target temperature to a value, the pit temperature can be ramped down to meet that target temperature.
Better web configuration pages and finer control over the algorithms and data produced.
Unknown probe Steinhart-Hart calibration. Just plug it in with a known probe in a pot of cold water on the stove and let us do the math for you. Ideally LinkMeter would not have the Steinhart constants and biasing resistor values stored in code space too. They should be able to be changed on the fly.
Percentage based lid detect. Instead of a fixed number of degrees vary it based on setpoint.
Proportional PID bias. Adjust the "baseline" amount the fan has to run based on setpoint. Something like 5% per 100F over 100F or something?
Probe blending. The ability to take multiple probes and make one virtual probe out of them. This could be used if you want a probe at grill level and one in the dome and want their average to be the setpoint. I don't know if that will work but it is something I'd like to try.
Multiple grill outputs? I'm not sure about that one.