Version 2 of my homebrew controller


 
Regarding the USB->Serial cable: There are a variety of options available on this front as Ed has demonstrated. This is a one-time cost that can be used on as many Arduino/RBBB/Boardadino/SingleChip you want to build yourself
-- I prefer the $15 FTDI Basic Breakout from SparkFun because it supports the auto-reset-to-program feature. PRO: Fast, Easy, Premade. CON: Cost $15
-- I also have a cellphone cable (left over from an old project) which works if you don't mind hitting the reset button. PRO: Fast, Cheap. CON: Manual reset, 5 minutes to cut it up to make it work
-- Of course I also have USBTinyISP, mainly for burning bootloaders. PRO: Works, can burn bootloaders on blank chips. CON: Slow, must be assembled, costs $22.

Why Go Wireless?
ApartmentGrilling.jpg

If you lived in my old apartment, you'd have to run up and down the stairs all the time to attend the grill. I suppose you can throw a serial line out the back window and down to the grill but that seems needlessly complicated compared to writing a webserver that runs in 2KB of RAM. As I said in my original blog post about it too, I used to walk down the street to the World of Beer while BBQing and a self-contained solution seemed like the way to go.

The WiShield adds: the ability to poll the current temperatures/fan speed via html+json or one line of CSV. You can also enable dataflash logging, which saves the last... 30? or so points. I can't remember because it didn't work properly. Because it takes so long for the webserver to serve the log request the log is getting overwritten as it is being served, and locking it has its issues too. I would recommend against using the DFLASH_LOGGING code, which is why it is #defined out by default.

The graphs and full log come from another machine on my network which polls HeaterMeter and uses gnuplot to build a graph. Arduino can't do graphing mainly because it only has enough RAM to store a truecolor image of about 11 pixels square assuming we used all the RAM to make the image, which we can't. That's where we got the idea for RouterMeter (or what's it called again, Ed?)

A modern (or not-so-modern even) home networking router is many many many orders of magnitude more powerful than an Arduino, has WiFi, and usually costs less than a WiShield. Therefore we reasoned that it would make sense to let a DD-WRT router do the web serving and just use the Arduino as a serial-controlled PID controller that spit out regular status updates back to the host system. This solution is much quicker at serving the basic web needs of HeaterMeter, and can have plenty of expanded storage to store log files. Even a 512MB SD card or USB stick could store close to 5 years of continuous log data uncompressed.

Unfortunately, building graphs with gnuplot takes a pretty long time even on this quick hardware. Somewhere on the order of 10-20seconds, which I feel is too slow to generate a new image that I want updated every 30 seconds. That doesn't rule out the router-based idea though. It just means that some other means will have to be employed to generate graphs. I've done some work with rrdtool and it can generate a graph in under 5 seconds (IIRC) which is promising. There's also the option of building the graph in the client browser. Anyway, that's as far as I've gotten with playing with that.

Regarding building your own WiShield, I started messing with that myself last night. The only issue so far is that the WiFi component is only available in surface mount, so it isn't very easy to work with. After trying a variety of methods to connect things to it, I eventually just flipped it over and soldered wires to the bottom contact points. So far they're holding but it doesn't seem like a very good solution. I'm open to ideas.
 
Originally posted by Bryan Mayland:
Regarding the USB->Serial cable: There are a variety of options available on this front as Ed has demonstrated. This is a one-time cost that can be used on as many Arduino/RBBB/Boardadino/SingleChip you want to build yourself
-- I prefer the $15 FTDI Basic Breakout from SparkFun because it supports the auto-reset-to-program feature. PRO: Fast, Easy, Premade. CON: Cost $15
-- I also have a cellphone cable (left over from an old project) which works if you don't mind hitting the reset button. PRO: Fast, Cheap. CON: Manual reset, 5 minutes to cut it up to make it work
-- Of course I also have USBTinyISP, mainly for burning bootloaders. PRO: Works, can burn bootloaders on blank chips. CON: Slow, must be assembled, costs $22.

Why Go Wireless?
ApartmentGrilling.jpg

If you lived in my old apartment, you'd have to run up and down the stairs all the time to attend the grill. I suppose you can throw a serial line out the back window and down to the grill but that seems needlessly complicated compared to writing a webserver that runs in 2KB of RAM. As I said in my original blog post about it too, I used to walk down the street to the World of Beer while BBQing and a self-contained solution seemed like the way to go.

The WiShield adds: the ability to poll the current temperatures/fan speed via html+json or one line of CSV. You can also enable dataflash logging, which saves the last... 30? or so points. I can't remember because it didn't work properly. Because it takes so long for the webserver to serve the log request the log is getting overwritten as it is being served, and locking it has its issues too. I would recommend against using the DFLASH_LOGGING code, which is why it is #defined out by default.

The graphs and full log come from another machine on my network which polls HeaterMeter and uses gnuplot to build a graph. Arduino can't do graphing mainly because it only has enough RAM to store a truecolor image of about 11 pixels square assuming we used all the RAM to make the image, which we can't. That's where we got the idea for RouterMeter (or what's it called again, Ed?)

A modern (or not-so-modern even) home networking router is many many many orders of magnitude more powerful than an Arduino, has WiFi, and usually costs less than a WiShield. Therefore we reasoned that it would make sense to let a DD-WRT router do the web serving and just use the Arduino as a serial-controlled PID controller that spit out regular status updates back to the host system. This solution is much quicker at serving the basic web needs of HeaterMeter, and can have plenty of expanded storage to store log files. Even a 512MB SD card or USB stick could store close to 5 years of continuous log data uncompressed.

Unfortunately, building graphs with gnuplot takes a pretty long time even on this quick hardware. Somewhere on the order of 10-20seconds, which I feel is too slow to generate a new image that I want updated every 30 seconds. That doesn't rule out the router-based idea though. It just means that some other means will have to be employed to generate graphs. I've done some work with rrdtool and it can generate a graph in under 5 seconds (IIRC) which is promising. There's also the option of building the graph in the client browser. Anyway, that's as far as I've gotten with playing with that.

Regarding building your own WiShield, I started messing with that myself last night. The only issue so far is that the WiFi component is only available in surface mount, so it isn't very easy to work with. After trying a variety of methods to connect things to it, I eventually just flipped it over and soldered wires to the bottom contact points. So far they're holding but it doesn't seem like a very good solution. I'm open to ideas.

I really am liking the the WRT route but.... There was an arduino wifi adapter on ebay that used the wishield libraries. it was pricey and needed an additional SPI adapter card but it is available.

Nice illustration btw, makes much more sense now
icon_wink.gif
 
Hey guys, I'm still alive. Watching the very active thread here. I LOVE some of the improvements that Gerry has made to the project.

I still plan to document all of this in a "Instructable" to share the knowledge in a more concise and tested package, but that has been a lot slower coming that I had expected, partly due to the troubles I had with Rev 1 of my own build. I hope to get back on this soon.

- John
 
Hey Bryan, do you think newer routers with a faster processor would render the graphs faster? Newegg has the WPN824N-100NAR for $19.95.

Did we ever discuss rendering them client side instead with something like flot? This would totally remove that from the router as they are processed on demand by the browser. Sorry, I'm sure as a dev you know all this, just curious as to what the downside is.

http://code.google.com/p/flot/
 
Originally posted by Ed Pinnell:
I've deleted most of my old posts to try to keep this thread at a manageable/digestible level, but it's still at 23 pages, more than enough I think to adequately cover the evolution of HeaterMeter v2.

I want to chime in and say that I hope you don't delete any more posts. I've read the whole thing, and when I went back to find some pieces of information things got really confusing because it looked like people were replying to posts taht don't exist. Its a monster let it be :)
 
Did my first test with my new heater meter tonight. Didn't cook anything just wanted to see how well it would hold temp. Well here it is about 3 hours into the test:
196894_10150164417847603_696732602_8149408_29766_n.jpg


I tried cranking it up to 300 but i don't think the blower is big enough to push enough air through my offset cooker.
 
Originally posted by JD Siegrist:
<BLOCKQUOTE class="ip-ubbcode-quote"><div class="ip-ubbcode-quote-title">quote:</div><div class="ip-ubbcode-quote-content">Originally posted by Ed Pinnell:
I've deleted most of my old posts to try to keep this thread at a manageable/digestible level, but it's still at 23 pages, more than enough I think to adequately cover the evolution of HeaterMeter v2.

I want to chime in and say that I hope you don't delete any more posts. I've read the whole thing, and when I went back to find some pieces of information things got really confusing because it looked like people were replying to posts taht don't exist. Its a monster let it be :) </div></BLOCKQUOTE>

Now that I think about it, I agree with JD.

Unless the comment is simply a compliment or something like that with no added value, I say leave it.

This thread will never be a concise guide for building one of these things as we've changed directions several times, added features, parts, mods, etc. That's the whole reason that I want to finish that Instructable to at least document one tested version that everyone can easily make. I won't be able to do that without help from several of you, especially Ed & Bryan.
 
I have a question
I have a stoker with the small power supply 5volt 2amp and 5cfm blower.I might be getting a larger blower. Does anyone have the large power supply from Rocks and know what it is rated at? Also would the stoker be hurt just running the 5cfm blower with the larger power supply?
 
Originally posted by RJ Riememsnider:
Hey Bryan, do you think newer routers with a faster processor would render the graphs faster?
The router I was using for testing was a semi-modern ASUS WL-500W 264MHz 32MB of RAM, so I don't see it getting too much better that that.

I'm pretty sure that rendering them client-side is the key and then you can even use the ajax updates to keep the graph up to date. I just haven't worked out how the bulk data for building the graph initially would work best. The rrdtool databases seems nice because they're self-rolling-- you only have to store say a couple hundred points per resolution. There's a small problem of the data exploding in size (like a 10-20x factor) when passed back via JSON which is a bit of an issue too.

Not that these are problems, just issues that need to be considered when developing the solution.
 
hey easy question for you guys, what are you using to drill the whole for the female receiver of the barrel jack? to my surprise, its larger than any drill bit I have! Also, any tips for drilling the holes for the buttons in such a way that everything lines up right?
 
To drill the barrel jack hole, I used a drill bit that was smaller than needed and then used a triangular file to file it to the right dimensions. As for where to drill for the buttons, I applied a small amount of latex paint (which I had conveniently from just painting one of my rooms) to all four of them and then pressed them against the plastic enclosure. Quickly wiped off the paint before it had a chance to dry and it worked almost perfectly. The buttons were larger than any drill bit I had too so I had to sort of wallow them out a bit which made them somewhat messy and oblong.

I've spent the morning messing with Flot and generated this lovely graph client-side which pulls the initial data from the RRD database and then uses the AJAX polls to keep it up to current. HeaterMeter can't pull history but at least can graph updates. RouterHeaterMeter can do both and this was in fact served by my ASUS router and loads in a second.
qhvwU.png


Disregard the fact that it is not grill temperatures, I don't have a current rrd filled with HeaterMeter data but this is coming from my Zigbee air conditioner. If I can do this in a couple of hours I really am interested in seeing how awesome it can be once I put some more thought into it.

I only used DD-WRT, plus the optware packages rrdtool and lighttpd.
 
Aaaaaand running off the router after backloading one of my log files into the RRD:
WEB BROWSER SCREENSHOT

The initial load takes about 2 seconds for 24 hours of 2 minute average data. I might be able to to squeeze that down a bit too.
 
Originally posted by Bryan Mayland:
Aaaaaand running off the router after backloading one of my log files into the RRD:
WEB BROWSER SCREENSHOT

The initial load takes about 2 seconds for 24 hours of 2 minute average data. I might be able to to squeeze that down a bit too.

Very nice sir! Where are you storing the data? SD? USB? Flash?
 
Originally posted by RJ Riememsnider:
Very nice sir! Where are you storing the data? SD? USB? Flash?
Both the RRD and the latest update (up to a second old) are stored in a ramdisk. I was thinking it could be "backed up" to more permanent storage every few minutes without putting too much stress on the flash wear then on bootup it can copy the latest backup back to the ramdisk. The files are pretty small though, like 170kB total and I'll probably reduce that as soon as I figure out exactly the best resolution of data to be stored.
 
Originally posted by Bryan Mayland:
<BLOCKQUOTE class="ip-ubbcode-quote"><div class="ip-ubbcode-quote-title">quote:</div><div class="ip-ubbcode-quote-content">Originally posted by RJ Riememsnider:
Very nice sir! Where are you storing the data? SD? USB? Flash?
Both the RRD and the latest update (up to a second old) are stored in a ramdisk. I was thinking it could be "backed up" to more permanent storage every few minutes without putting too much stress on the flash wear then on bootup it can copy the latest backup back to the ramdisk. The files are pretty small though, like 170kB total and I'll probably reduce that as soon as I figure out exactly the best resolution of data to be stored. </div></BLOCKQUOTE>

Very nice so no need to use external storage on the router. Very very nice work and thank you for your dedication to getting this done. Just to make sure how this will operate, the RouterHeaterMeter would be able to function with a standard arduino and not need the wishield or the flash? All that is needed is just an Arduino, the buttons, the PID stuff, the probes, the display, and serial connection to a WWRT capable router. Any plans to be able to change PID settings through the browser from the router or just use as a data logger?

Thanks again for your efforts, this would not have gotten done without you.
 
Yeah you can currently set the PID settings through HTTP->Serial now but there is no webui for it, you just have to know the URLs
/set?pidA=X.XXX
where A is b, p, i, or d for the respective setting. At some point there will be a separate config subpage that will allow you to set those settings as well but that's sort of last on the agenda.

You've also got the hardware specs right. You just build the Arduino part and connect it serially then optionally add an LCD and buttons. No WiShield or dflash or anything required. The only downside I see to this solution is the long boot up time of the router. The HeaterMeter portion will boot in a second or two and start its job but the router and all of the logging and configuration part doesn't boot up until DD-WRT does, which takes a minute or two.

I'd also like the ability to archive your cooks to USB/SD Card which basically is just copying the RRD database off to external storage and adding the date, description and some notes which should be pretty easy to just associate a text file with each database.

If anyone has some better ideas for how the graph should look (colors, positioning, and whatnot) I'm open. I've added the fan speed to it but I think I'll move that to an adjacent graph underneath then do add an overview graph you can use to zoom in like I did for the A/C thermostat.

EDIT: You can see a sort of live demo running on my Linux box if it is up.
 
I'm in the very starting stages of planning my own version of a controller, and have been mining this thread extensively.

I was wondering two things - first, I've seen several fans suggested here. Since I have a BUNCH of fans in my junkbox (mostly off old computers), I was wondering if anyone had an ball park estimate of how much flow (how many CFM's) I would really need for this project?

Secondly, I saw this on the Async Labs site this morning:

The End of the Journey
Written by AsyncLabs
Saturday, 26 March 2011 20:34

As I'm sure that most people have figured out, things are changing at AsyncLabs. So instead of beating around the bush, I'll just come out and say it. After much consideration and thought, AsyncLabs will be shutting it's doors. A lot of it boils down to just not having enough time to really devote to AsyncLabs, and what it takes to continue innovating future products for the community. It's something that has been brewing for the past few months, and it's best that we let everybody know instead of just keeping everybody on edge, hoping that we will come out with some more WiShield, BlackWidow, and YellowJacket parts soon. (post contines, but you get the idea)

I suspected as much - I had been looking to buy a WiShield for a different Arduino project (a remote wx station) for some time now with no luck/availability. Too bad, really - it appears to be a neat product. Here's hoping they can sell the design to someone (are you listening, Sparkfun?) who can support it.

Anyway, looking forward to working with you all on this project down the road.
 
Originally posted by Bryan Mayland:
Yeah you can currently set the PID settings through HTTP->Serial now but there is no webui for it, you just have to know the URLs
/set?pidA=X.XXX
where A is b, p, i, or d for the respective setting. At some point there will be a separate config subpage that will allow you to set those settings as well but that's sort of last on the agenda.

You've also got the hardware specs right. You just build the Arduino part and connect it serially then optionally add an LCD and buttons. No WiShield or dflash or anything required. The only downside I see to this solution is the long boot up time of the router. The HeaterMeter portion will boot in a second or two and start its job but the router and all of the logging and configuration part doesn't boot up until DD-WRT does, which takes a minute or two.

I'd also like the ability to archive your cooks to USB/SD Card which basically is just copying the RRD database off to external storage and adding the date, description and some notes which should be pretty easy to just associate a text file with each database.

If anyone has some better ideas for how the graph should look (colors, positioning, and whatnot) I'm open. I've added the fan speed to it but I think I'll move that to an adjacent graph underneath then do add an overview graph you can use to zoom in like I did for the A/C thermostat.

EDIT: You can see a sort of live demo running on my Linux box if it is up.

IIRC, with flot, you can place a check box on the interface to determine if that dataset is plotted. That way you could turn it on/off as you want.(Meaning turn on or off the fan plot)
 

 

Back
Top