The "How-to" for making an Arduino controlled smoker

Discussion in 'Fridge/Freezer Builds' started by bob the noob, Mar 2, 2010.

  1. bob the noob

    bob the noob Smoke Blower

    Okay.... This is probly as close as I'm going to get to being complete with the "how-to". Much of what's left is someone being brave (crazy?) enough to try using the information here and let us know how it went and what we need to change. I've tried to put in all the info I can remember about what I had to change to get things working. *deep breath* So with that disclaimer, here it is:

    (I listed where I got the parts, in case someone had trouble finding it)
    1 Arduino board (Mega Used) – eBay
    1 wifi shield – Async Labs
    1 proto board – Cute Digi
    Several jumper wires - eBay
    220V relay - eBay
    Several Maverick Probes - eBay
    Several 2.5mm jacks – BG Micro
    Project case – Radio Shack
    9V power supply – Cute Digi
    220V oven element – eBay

    Wiring Schematic:

    You'll also need a wireless router/access point device, but it's a fairly common thing to have these days so the instructions assume you have one.

    Base Arduino code:
    PS Pad:
    Wishield drivers:
    Smoker code:
    Extra stuff to modify:

    Note: The base Smoker Code is calibrated to use Maverick probes, like from the ET-7 or ET-73. I haven't tested with other model probes but it's possible that you could change the code to use different probes.
    "Mega" related changes

    Mega Hack:
    Mega Hack Jumpers:

    Installing/Modifying Software

    1) Install PS Pad (optional)
    This is a great text editing program that can read/write almost anything out there. I like to use it because it offers a lot of bonus features vs. the editor in the Arduino code thing.
    2) Download the Arduino code, extract it.
    3) Download the wishield drivers, extract it.
    4) Go to the arduino-0018\libraries folder and create a folder called WiShield
    5) Open the wishield drivers folder until you see a bunch of files.
    6) CTRL-A to select all files in the folder, CTRL-C to copy all files.
    7) Open the WiShield folder you created, and paste all the driver files in it.
    8) The Smoker Code has a few things to modify in the WiShield directory also:
    [font=&quot] Edit apps-conf.h:[/font]
    [font=&quot] //Here we include the header file for the application(s) we use in our project.[/font]
    [font=&quot] //#define APP_WEBSERVER[/font]
    [font=&quot] //#define APP_WEBCLIENT[/font]
    [font=&quot] //#define APP_SOCKAPP[/font]
    [font=&quot] //#define APP_UDPAPP[/font]
    [font=&quot] #define APP_WISERVER[/font]

    9) Go to the "extra stuff to modify" link.

    · Go to arduino-0018\libraries\WiShield and open the WiServer.h file with PSPad or Notepad, and add the two highlighted lines.

    * Inits the server with the provided page serving function
    * @param pageServerFunc name of the sketch's page serving function
    void init(pageServingFunction function);
    int async_init(pageServingFunction function, int restart);
    int connection_up(void);

    * Enables or disables verbose mode. If verbose mode is true, then WiServer
    * will output log info via the Serial class. Verbose mode is disabled by
    * default, but is automatically enabled if DEBUG is defined

    · Go to arduino-0018\libraries\WiShield and open the WiServer.cpp file with PSPad or Notepad, and add the "And add the implementation of them in WiServer.cpp:" code at the very bottom, like this:

    [font=&quot] #endif /* APP_WISERVER */[/font]
    int Server::connection_up(void) { if(zg_get_conn_state() != 1) { return(0); } else { return(1); }}#define INIT_STATE_ZG_INIT 0#define INIT_STATE_CONNECT 1#define INIT_STATE_STACK_INIT 2#define INIT_STATE_COMPLETE 3/* Call this repeatedly in your loop() and it will return

    10) Mega Hack Jumpers (if needed)
    11) Mega Hack software (if needed)
    12) Start the Arduino Software (Arduino.exe)
    13) Go to Tools > Board > select the board you have
    14) Go to Smoker Code URL, copy all text (CTRL-A) and paste it (CTRL-C) into the big white area of the Arduino program.

    From here, there's a few things to modify in the Code.

    These items at the top are set up so it's easy to "shut off" parts of the code below. Anything preceeded by a // is treated as a comment and ignored by the program. If you're not going to use an LCD or the "keep alive" function, just put a // in front of it like this.

    #define USE_WISHIELD//#define USE_LCD//#define USE_KEEPALIVE

    The wireless settings are fairly easy to change. The items highlighted in blue are things you'll need to change, and the green is where to change them. The "SSID" is the name of your router which you can find by going through the router settings.

    //Wireless configuration parameters ----------------------------------------unsigned char local_ip[] = { 10, 1, 2, 125 };
    // IP address of WiShieldunsigned char gateway_ip[] = { 10, 1, 2, 1 };
    // router or gateway IP addressunsigned char subnet_mask[] = { 255, 255, 255, 0 };
    // subnet mask for the local networkunsigned char security_type = 1;
    // 0 - open; 1 - WEP; 2 - WPA; 3 - WPA2// setup the wireless mode
    // infrastructure - connect to AP
    // adhoc - connect to another WiFi deviceunsigned char wireless_mode = WIRELESS_MODE_INFRA;unsigned char ssid_len;unsigned char security_passphrase_len;
    //NOTE: I have found that if I have an odd number of bytes of PROGMEM here then the board does not init
    //at all. If you don't get a "Setup" message on the serial port, add a character to one of the
    //PROGMEM fields and see if it helps......sigh
    // WPA/WPA2 passphrase\
    const prog_char ssid[] PROGMEM = { "mine" };
    // max 32 bytes

    There's sections under this about security settings for WPA and stuff but I don't use them. Feel free to modify them if you want to use them.

    If you want to add more probes, just duplicate where you see "food_temp" like this"

    unsigned int food_temp = 0;

    unsigned int food_temp1 = 0;
    unsigned int food_temp2 = 0;

    There's quite a few spots that have it so do a CTRL-F find for it.

    That should be it from the software standpoint... Try compiling the software by clicking what looks like a "Play" but ton on the upper left of the software. It will tell you if there's errors at the bottom, and if there aren't it'll say how many bytes the code is. If there's no errors you can plug in your Arduino board if you haven't already and click the "Upload" button which is second from the last and is an arrow pointing to the right.

    You should see some little LEDs flash and after a few minutes if you go to the IP you designated in the code in your browser. Like if you used, you'll see a basic web page with black text with things about Set Point, Pit Temp and some other stuff.


    The hardware should be fairly easy if you follow the wiring diagram at the bottom of the page mentioned above (
    For the probes, I used this jack to allow easy plug-in without having to cut wires:

    Any 2.5mm jack should work, but it was fairly cheap to order a bunch of these so I'd have more on hand to do other projects with. The wiring diagram says to ground the shield, not the tip. This means the ground goes to the single tab that sticks out the side and power goes to the one farthest from that. If you look at the bottom you can even see that there's a little tab that the tip contacts, which is the one you want to use for power.

    From here, you have two paths. Follow the wiring diagram and set it up with a blower motor for use with a UDS or offset charcoal, or alter things to be used with electric.

    If you want to use electric, you can use my version of the Smoker Code located here:
  2. bob the noob

    bob the noob Smoke Blower

    Hmmmm... several days and no comments. I had posted this in the "Smoker Builds" forum because it applies to all types of smokers, not just fridge/freezer builds as the post has been moved to.

    Does it read okay? Anyone have questions?
  3. tlzimmerman

    tlzimmerman Meat Mopper

    It looks really well explained, and I am sure people will use it, if not now then down the road. [​IMG]
  4. brohnson

    brohnson Smoking Fanatic

    Maybe some pictures :)
  5. Hey Bob, this is almost exactly what I wwas looking for as I am building my own electric smoker and I want to automate it a bit but I am trying to decide between PID or Arduino. problem is I never heard of Arduino till this week and am not sure about the programming part.

    I hope you don't mine butI have a few questions hopefully you could answer.

    1, Can you have more than one smoke program loaded in the Arduino and pick which one to use? so when I turn everything on I could pick a regular smoke temp and monitor like you have done, or I could pick a sausage program so it would do 120 for two hours then increase 10 degrees per hour till it reaches the final temp.

    2, how hard would it be to modify the program to use the input from two probes. so if I am cooking a brisket, the one probe is for cabnet temp the second is for meat temp, but have a couple alarms at the temp you want to foil the meat, and then say when you hit 200 or which ever meat temp it drops the cabnet temp to a hold temp?

    3, is there some online webpage or pdf that some one can learn the programming side from, not only writing the programing but what to do with it after you write it.

    and finaly is there anything you would recomend for some one just starting out with this?

  6. deltadude

    deltadude Master of the Pit OTBS Member

    Great Tutorial Bob, I don't know how I missed this before....

    Sure is a lot to chew on.

    If time and labor are not an issue it looks like a way to add all kinds of extra features without having to buy expensive controls.

    Thanks of taking the time to write up a detailed description and instructions.
  7. bob the noob

    bob the noob Smoke Blower

    Hi Steve,

    I'll try to answer your questions below...

    1, Can you have more than one smoke program loaded in the Arduino and pick which one to use? so when I turn everything on I could pick a regular smoke temp and monitor like you have done, or I could pick a sausage program so it would do 120 for two hours then increase 10 degrees per hour till it reaches the final temp.

    I believe you can only have one program loaded at a time, but it's easy enough to plug it into your home PC and flash the program you want to use into it. Only takes a few minutes. There's probly a way to have a "landing page" in the webserver and be able to click which loop of code you want to use but I haven't tried anything like that yet.

    For an X hours at Y temp and then up Z degrees kinda thing, it shouldn't be to hard to do. You'd just need to set a counter in the code and have the temperature work off of that so if the counter = 02:00:00 it would start upping the temperature. You could do this by having a long if/elseif/else statement which would be potentially buggy but easy to modify or adding +10 to the pit temp when the counter was +00:10:00. There's several ways to do it...

    2, how hard would it be to modify the program to use the input from two probes. so if I am cooking a brisket, the one probe is for cabnet temp the second is for meat temp, but have a couple alarms at the temp you want to foil the meat, and then say when you hit 200 or which ever meat temp it drops the cabnet temp to a hold temp?

    You can have lots of probes. Currently I have 5 total, one for pit and 4 for food. I could put many more on if I had the probes to use. I'm going to try and set up an email function soon if I can find the time. For the time being you could do something like this for a foil reminder:

    if (food_temp < 170) {
    sprintf(line, "<h2>Foil: <font color=\"red\">Not yet! </font> </h2>");
    } else {
    sprintf(line, "<h2>Foil: <font color=\"green\">Foil me! </font </h2>");

    For a hold temp, it'd be something like it, but in a different spot. You'd just tell the program that if the food temp was X drop the temperature to Y. Then if the food temp dropped below X for some reason it would kick back in to heating to raise it.

    3, is there some online webpage or pdf that some one can learn the programming side from, not only writing the programing but what to do with it after you write it.

    Here's some pages for reference:

    Arduino uses C I believe, so if you have a coder friend it should be easy for them to help you also.

    and finaly is there anything you would recomend for some one just starting out with this?

    Try getting the Arduino board and making an LED blink a few times. I had some problems with it at first when I got mine but after an hour or so (I'm not a programmer) I was able to get two lights blinking at different rates. There's some default sketches in the Arduino software also, so you can practice modifying them.

    Lemme know if you have other questions.
  8. bob the noob

    bob the noob Smoke Blower

    Not a problem... I had some rather frustrating moments and didn't want others to go through the same stuff. And there's not to much to building it really. You could probly build one in a day or two with it all hashed out here.

    Not to say there won't be a few problems here and there, but it should prevent the "WHAT THE.... Why doesn't this work? What is it talking about with can't find that thing in Global?!" moments :)
  9. Bob,

    What's the total cost on this project hardware wise including probes, blowers, project box, etc... I know someone into Aurdinos who is attempting to do this himself.

  10. bob the noob

    bob the noob Smoke Blower

    Well, it depends on what you have laying around and what way you go with it (electric or charcoal).

    Arduinos range from 30 bucks to 55-60+ for the Mega (more ports/inputs/outputs)
    The wifi shield is about 55, but the company that makes it just came out with their own Arduino board with integrated wifi.
    Protoshield to solder things to... maybe 10-20 depending where you find it and what board you need it for.
    Many small power supplies will work 'cause the Arduino can take a range of voltages for input. I got mine for 6 bucks I think from
    The ports for the probes (2.5mm mono) can be found at BGmicro for cheap or other electronics suppliers.

    These are just ballparks, you may find different prices so you may have a different total.

    Is it cheaper than ordering a pre-made solution? Maybe a little. I'd say the total cost could be done for $100 if you have some parts or shop around, maybe $150 on the high end.

    Does it give you a heck of a lot more options into what you measure, how you do it, what you do with the data, and how it shows it to you? Heck yes. [​IMG]
  11. nickelmore

    nickelmore Smoking Fanatic

    I messed around with a PID last fall and really like it. I was thinking about making some mods to it, but this may be a little better.

    So it looks like I could monitor and change my smoker wirelessly from laptop, is that true?

    The code thing is the only thing that I have a challenge with.
  12. bob the noob

    bob the noob Smoke Blower

    Right, you'd just put the IP address of the Arduino board, like or whatever you set it to. If you were out of the house you could just set port forwarding on your router to connect to it.
  13. Hey Bob, the element you used are you running it off 220 or 110? I have been looking for a cheep heating element but all I can find are 220v ones that will be over 1000watts if I make the smoker run on 220 then I can get a 1600 watt stove element for 15 bucks, would be about 28 bucks with all the rest of the stuff i figure. but then I would need to take a 110 tap off to power everything else.....

    I ordered an arduino kit today so I may have some more questions for ya later [​IMG]

  14. bob the noob

    bob the noob Smoke Blower

    I'm using a 220 element. At the time of the build I figured more power was better but I've since found that's not the case. The element heats so well and the fridge holds heat so well that once it's up to temperature it doesn't turn on often/long enough to make the wood smoke. I'm gonna set up an external smoke generator soon to fix this.

    I got the 220V element I'm using off of eBay for... I think it was under 40 bucks. There's a LOT of them on there. You can use either 110 or 220 as long as the relay you have is capable of it. My relay (eBay again) used 3-32V for the trigger which is fine because the Arduino outputs 5V from the digital line I have configured, and could handle up to 240.

    I'll try to answer them as best I can [​IMG]
  15. thanks Bob. I was reading that some people are running a 220 element with 110 power, is the wattage output just cut in half when you do this or is there some other factors? I was thinking a bigger stove element that is about 2200 watts would be good on 110 if its resistance stays the same as it would be 1/2 the output. but then I read somewhere else that it isn't like that..

    oh and for temp probes is there something we are looking for when we want to use them with these boards?

    I got my Arduino kit today, overnight shipping for 9 bucks.. not bad at all.
    I am surprised by how small it is.. might be a bit of a challange by ham fisted people like myself

    I got it installed and comunicating with my lap top and i uploaded a test program to make a led flash on the board.. rather underwhelming but it confirms that everything is working properly. and I could make a self contained fake car alarm light with how it is set up now

    anyways better go outside and get my welder tested now that I got the right liner for the gun and i'll play with electronics later.

  16. bob the noob

    bob the noob Smoke Blower

    I'm not sure about the 220 vs. 110 thing, I've got a 220V element running on 220V. I was talking about the Relay and was trying to say that the arduino puts out 5V so as long as your input trigger on the Relay can take that it doesn't matter what you control on the other side of the Relay as long as you don't run 220 through a 110 Relay. If you have a 110V element you'd just need a relay that connects the circuit for 110.

    For the probes, yes, the software is calibrated to Maverick probes. Many of us on here have them already so it works out okay. You can get replacements on eBay for a decent price, like $40 for two 6 foot probes. You could try using other probes if you want, worst case it doesn't report as accurately. Who knows, they may work the same. I know I've got some at home I keep forgetting to try...

    As for the board, I managed to put all mine together and I'm not a tiny guy. I'm 6' 3" or so, size 15 shoe. I did have to use tweezers once or twice but it wasn't to hard.

    Try connecting a spare LED to the board and alter the blink to have two of them blinking at different rates. It'll help you get used to the code and how it works.

    Lemme know if you need anything, I'll be here [​IMG]
  17. Hey Bob, just a question.. I have been looking at code the last couple days and am starting to get a little bit of understanding whats going on.. you are running a PID code in your smoker code, did you need to do this? I ask as when we use a SSR to switch the element on/off we are not taking advantage of the variable output from the PID code.. is there a way to use a varable output SSR so the out put from the arduino can actualy control the amount of power the element recives so it can actualy function properly?

    so the output from the arduino to the relay will be a variable signal controling the amount of power let through the other side. this will allow the element not to cycle but remain on at a reduced power and provide the most accurate tempature control.

  18. So the question that the rest of us idiots are wondering is...

    how much for a turn-key setup for plug-n-play?
  19. okie joe

    okie joe Smoking Fanatic OTBS Member SMF Premier Member

    Man that is good info...

    what you are doing,,
    Way over my head,,,,I have know idea what you have said....
    it is better to remain quite and be thought a fool than to open my mouth and remove all dought.[​IMG]

    I am sure that there are many here that this will or later. Thanks for the post.
  20. bob the noob

    bob the noob Smoke Blower

    I believe the original code that I started with had a blower motor that would turn on at varying percentages to keep the temperature with a charcoal system. It might be possible to use that code to control an extra piece of hardware to vary the voltage to the element, but honestly that's a little out of my realm. [​IMG]

    A lot of how often the element cycles is dependent on several things like the size of the element, how big of an area it's heating, how well the smoker holds heat, etc... The problem I'm having with the wood not smoking 'cause the element doesn't stay on long enough could be solved if I could use half the element so it cycled more and thus burned the wood.

    You could also change some of the code if you need to adjust temperatures/when the element heats.

    ((setPoint - 5) > pit_temp)

    That's the code in mine that says if the pit temp is 5 deg's lower than the temperature I set, turn on the element. And come to think of it, that's probly why I haven't been able to get smoke outta the wood. I was so worried about keeping exact temperatures I didn't give the element enough room to burn the wood. I think I'm gonna work on the code today and make that difference a variable I can change in my set-up program from the web.

Share This Page