Bryan Mayland
TVWBB Hall of Fame
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?
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 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?
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.