Introduction: Tweeting, Wireless, Ugly Drum Smoker (UDS) Temperature Controller Using Android
(Last updated: Oct. 2014. See last step for details on changes.)
This is the UDS Digital Supervisor, an Android app and hardware for remotely maintaining the temperature of your UDS like a thermostat. Your phone monitors the temperatures inside the UDS and adjusts a blower to keep the temperature to the setting you decide. Don't have a UDS? You can build one yourself!
What cool stuff can the UDS Digital Supervisor do?
The Supervisor app has the following functionality:
- Maintains a constant temperature inside your smoker (duh).
- Sounds an alarm if a thermometer temperature falls outside a configurable range. Very handy for overnight cooks so you can sleep worry-free.
- Records the temperatures in a database and displays a graphical chart showing the progress of your cook.
- Periodically tweets the status of your smoker so you can monitor your cook from anywhere in the world. Requires an internet connection (double duh). If you need something to put yourself to sleep you can follow my smoker's twitter account.
- A companion app running on another Android device can monitor the Twitter feed and sound an alarm if there is an error. Go see a movie in peace knowing that your smoker is purring like a kitten in a basket full of warm socks.
- Can monitor up to eight thermometers and measures in Fahrenheit, Celsius, or Kelvin.
How It Works
The app monitors the temperature using thermometers inside your smoker and compares it to your target temperature. If the temperature is too low the app will turn on a blower to force more air into the UDS, which will stoke the coals and increase the temperature. The app uses a PID algorithm to determine when to turn on the blower. Your phone uses Bluetooth to communicate with the hardware attached to the blower and the thermometers.
This project is made up of three main parts:
- Blower The temperature of the smoker is ultimately determined by the amount of air the coals get. The more air the blower pushes into the smoker the hotter it will get.
- IOIO controller The IOIO (pronounced yo-yo) is a microcontroller specially made for Android and acts as the connection between the blower/thermometers and the Android app. The blower and thermometers plug into the controller and it sends signals to your phone using Bluetooth. Check out the IOIO home page for more information.
- Android app The app monitors the thermometer temperatures and adjusts the blower speed accordingly by sending a signal to the IOIO controller. The app uses a PID algorithm to determine the correct blower speed. The temperatures and the blower speed are recorded in a DB (database) which can then be used to display a chart of the entire cook. The app is free to download and is Open Source, which means it will always be free.
Step 1: Parts and Supplies
Not including the Android device, you can expect to pay approximately $120 to build the controller and blower that you see here (this includes two Maverick thermometers). The battery I used is ~$40 but you can probably get away with a much cheaper option, especially if you don't plan on running 12-hour cooks.
You'll need an Android phone. You do not need a cell or internet connection (unless you want to use the Twitter functionality) but it must have Bluetooth. This app should run on any 2.3.4+ Android device but I can't guarantee it will work until someone tries it. The following platform/OS combos have been tested. If you build one using a different combo let me know and I'll add it.
|Device||Android OS Version|
|Motorola Droid (original)||2.3.7|
|Samsung Galaxy S III||4.0.4|
|Motorola Droid 3||Minimoto v1.7|
|Samsung Note 3||4.4.2|
|IOIO||This is the hardware that links your Android to the blower using Bluetooth. I used an older version of the IOIO but the new one should work fine. The main difference is that you need an adapter (supplied) to connect the Bluetooth dongle. If you don't want to use the new one you can get the older version on ebay.||1||SparkFun||$40|
|Bluetooth dongle||The Bluetooth dongles proved to be tempermental. The two dongles linked here work but have a short range. See extended discussion later in this page.||1||$5-10|
|Maverick ET-73 probes|| You want at least two probes, one for the pit temperature and one for the food. The pit probe looks different from the food probe so look at the pictures above to get one of each.|
Be sure to get ET-73 probes, not ET-732 probes. They have slightly different plugs and are not compatible.
|2+, max of 6||Search Amazon and Ebay||$10-15 each|
|2.50mm mono jacks||2.50mm mono female jacks for connecting the thermometers. You need one per thermometer. I bought one jack in a different color to indicate which one is the pit thermometer.||Multiple||DigiKey|
|Standoffs||For attaching the IOIO to the enclosure. Any standoffs will do as long as the screws for attaching the IOIO fit through them.||4||All-Electronics||$0.40 for 10|
|3.5mm stereo jack||Used to connect power between the IOIO board and the blower. Another one is required for the blower.(listed below)||1||All-Electronics 1*|
|3.5mm male stereo cable||Used to connect the IOIO to the blower. A 3' cable is fine.||1||All-Electronics||$1.50|
|2.1MM power jack||Double-check to make sure it fits with whatever power supply you buy.||1||All-Electronics|
|TIP41C||Switching transistor for controlling the blower via PWM.||1||Digi-Key||$1|
|1N4004 diode||Protects the IOIO electronics from blower.||1||All-Electronics|
|#4-40 screws + nuts||Attaches the IOIO to the enclosure. Half-inch screws are just barely long enough so longer ones might be good.||4||Local hardware||$5|
|Breadboard||I soldered all the components to a breadboard that I bought at a local electronics supply. The one linked to the right should work although you may need to trim it down.||1||All-Electronics||$5-10|
|22.1k ohm resistors||One needed for each thermometer. It would be a good idea to get twice as many as needed and measure them with a multimeter. The closer they are to 22.1k ohm the more accurate the measured temperature will be. Don't obsess about it: being off by 100-200 ohms is fine.||Multiple||All-Electronics|
|830 ohm resistor||Part of the PWM circuitry.||1||All-Electronics||$0.50|
|Enclosure||You can use any enclosure that will hold the IOIO and parts. I used a food storage container from the Container Store. A clear plastic box not only looks cool but lets you see the LEDs to verify that your IOIO is powered and working. Electric project boxes might not work as well--they have slots on the interior that make it harder to install panel-mount components.||1||The Container Store||$5|
|Headers||I soldered headers to the IOIO. This allowed the breadboard (with the Arduino headers) to be plugged into the IOIO instead of soldered directly.||Digi-Key||$2.50|
|Arduino Headers||I used Aurduino headers to connect the circuit board to the IOIO. Arduino headers have a longer pin. This let me replace the circuit board or the IOIO without having to unsolder anything.||1 pkg||All-Electronics||$1.50|
|Total price w/ two thermometers (including optional headers)||$100-$110|
* - The first jack from All-Electronics is the jack I used. However, the second one is probably easier to use.
There are a few options for supplying power:
Using a battery for power means you can use your controller anywhere, which is convenient. I use a 10 amp-hour sealed lead-acid battery because I want to be able to run the smoker for 10-12 hours. This appears to be much more power than necessary because the battery hardly drained after 8 hours, so you may be able to get by with something cheaper.
|12 volt battery||10 amp-hour battery||1||RadioShack|
|Battery charger||You'll need a charger if you use the battery above.||1||RadioShack|
|Alligator clips||Alligator clips to connect the cable to the battery leads.||2 (one pair)||All-Electronics|
|Power plug||Power plug for connecting battery to the controller.||1||All-Electronics|
|Rectifier diode (Optional)||If you follow my build then it's possible to accidentally reverse the polarity when you hook up the battery, which will fry your IOIO. A rectifying diode will prevent this at the cost of a bit of voltage. A 1-amp diode such as the 1N4007 should do.||1||All-Electronics|
AC Power adaptor (i.e. wall-wart)
You can buy an AC adaptor but you can probably find one at a thrift shop for cheap. The one I used for testing was a power supply from an old laptop that I bought for 50 cents. You can use any adaptor as long as:
- It's 12 volts.
- At least 1 amp. More amps is fine. If you want to be overly anal get one that can supply 2 amps. When the blower starts up it will momentarily take more power.
If you still want to buy an adaptor:
|12v adaptor||12 volt / 1amp adaptor||1||All-Electronics|
Cigarette 12 volt adaptor
One other option is to use a 12-volt adaptor that fits into the cigarette lighter of your car. I haven't tried it but it should work fine.
Blue Tooth Dongle
The IOIO can be persnickety on what dongle it will accept. The IOIO has a dongle page that lists dongles that have been shown to work with the IOIO but it varies by phone and you may have to purchase multiple dongles before you find one that works with your setup. DealExtreme has lots of dongles cheap but they can take 4-5 weeks to ship. The dongles linked in the list above are known to work with the phones I've used.
Class 1 dongles are better because those have a longer range but I haven't found one yet that works. If you do, send me a message so I can try it too.
These are the parts required for the blower assembly. The nipple that I used fits into the 1/2" ball valve on my smoker. You may have to adapt your blower to fit your smoker.
|Enclosure||Any enclosure that can house the blower and the PCB connection can be used. The one I used is linked here.||1||All-Electronics|
|3.5mm stereo jack||Used to connect the power cable from the controller. Another one is required for the controller.||1||All-Electronics 1*|
|12v blower||The blower I used has a tachometer sensor which isn't currently being used.||1||Digi-Key||$14|
|M20 Washer||M20 washer. I bought it at a local Ace Hardware.||1||HomeDepot||$0.60|
|Nipple||1/2 x 3 pipe nipple.||1||HomeDepot||$2|
|PVC bushing||3/4 x 1/2 PVC bushing. I had to cut off the end to get it to fit in my enclosure.||1||HomeDepot||$0.66|
|Screws + nuts||For attaching the blower to the enclosure.|
- Drill and bits, preferably a drill press.
- If you build a blower like the one above you'll need a drill bit for cutting 7/8" holes, like this one.
- Soldering iron and solder.
- X-Acto knife or similar.
- Wire cutters, pliers, etc.
Not necessary but helpful:
- Heat gun and shrink tubing to protect your wiring.
The most difficult skills for this project are soldering and the ability to read simple schematics. You'll likely need some patience, too. :)
Step 2: Power the IOIO and Pair the Bluetooth Dongle
Some advice and tips for building the Digital Supervisor:
- Go slow and test test test at every stage. You don't want to be near completion only to realize you soldered a part wrong back in step 2.
- It helps to use the headers instead of soldering the wires directly to the IOIO. This makes wiring mistakes temporary instead of permanent.
Attach Power Supply
- If you decide to use them, solder the headers along the long edges of the IOIO. When testing you can plug in wires like a breadboard.
- Solder two wires to your power jack. Attach the +/- wires from your jack to the VCC and GND pins on your IOIO and connect your 12v power supply. If you've done it correctly the red LED should light up. WARNING: If you reverse the polarity of the power supply then you WILL fry your IOIO. (Don't ask how I know this.)
- Disconnect the power and insert your Bluetooth dongle into the IOIO and reconnect. When the IOIO starts up it will put the dongle into discovery mode and you should be able to see it from your Android device. Pair them together using '4545' as the pass code. For more information see the IOIO Bluetooth page. If you have problems see the Trouble Shooting page in this Instructable.
Step 3: Install Software
Now install the UDS on your Android device. This allows you to test the Bluetooth connection between the IOIO and Android.
The app is not in the Google Play store; you have to download/install it yourself. The app can be found on the SourceForge site here. Download the latest .apk file to your phone. There are multiple ways to install the app on your Android phone:
The first time you start the app it will take some time to unpack and start the database. Once that is done it should work without any long delay. To test press the "Start Supervisor" button. This will start up the supervisor service on Android and attempt to connect to the IOIO. If it works you should see something like the second screenshot shown above.
If Android has connected to the IOIO you should see a yellow light on the IOIO blinking four times a second. Since you haven't wired up any of the thermometers they should say "Not detected". If you see temperatures then you've had little fairies visit your home during the night. See the step later on for a quick primer on using the software.
You can download the source for the Digital Supervisor here and compile it yourself.
Step 4: Schematics and Wiring
Now comes the hard part: soldering and wiring the thermometer and power jacks to the IOIO. To make it easier I soldered the Arduino headers to the circuit board. The pins on the Arduino headers are longer and they fit snugly into the headers that are soldered on to the IOIO. See the pictures. When you insert the Arduino pins into the header on the IOIO make sure they line up correctly. You may have to trim your circuit board; if so leave some room on one end for holding the blower circuitry.
Start by adding the circuitry for one or two thermometers. When you have them wired up you can start the Supervisor and connect it to the IOIO. You should be able to correctly read the thermometers. Once they work add the wiring for the other thermometers. You should have at least two thermometers and can have a maximum of six. The "pit" thermometer is the one wired to pin 46; this is the one that the controller will use for matching to the target temperature. Pins 45-41 correspond to thermometers 2-6.
The Supervisor should display an accurate temperature for the thermometers. You can test the accuracy by dropping the thermometers in hot water and compare to another thermometer. If you don't have other thermometers, boil the water; the Supervisor should record temperatures of 212 degrees.
Step 5: Blower Assembly
Assembling the blower and housing is straight forward. It's easiest to drill all the holes in the lid for attaching the blower. Start by laying out everything in the lid to make sure they're evenly spaced and then drill away. Make sure you have the blower positioned so that it pulls air from the air holes.
The only thing to be concerned about is drilling too many holes for the air-intake. If there are too many holes then too much air will leak into the smoker even when the blower is off.
Step 6: Install IOIO Into Enclosure
You've tested everything and it works, right? Replacing/fixing the controller becomes harder once you've put it all in the box.
Put everything together in this order:
- Position the IOIO in the box and drill the holes on the bottom. When measuring the holes make sure you've left room for the other parts that you will install.
- Drill the holes for the thermometer jacks, the power cable, and the blower jack.
- Attach the IOIO with the spacers and screws.
- Insert all the plugs. This is easier if you don't have the circuit board plugged into the IOIO.
- Once all the peripherals are attached, plug in the circuit board.
- Lastly plug the wires into the circuit board.
Congratulations! The hardware should now all be done!
Step 7: Make Side Items
If you normally won't have a table near the smoker then make a holder for the controller. The one shown here is made from a piece of steel and some rare-earth magnets. Glue the magnets to the piece of metal and stick on felt furniture pads to the magnets.
Solder the alligator cips to a two-conductor wire with a power-jack on the other end. Use this for connecting the batter to the controller.
Step 8: Running the Software
This is a quick walk-through for using the Supervisor app:
Opening the Supervisor brings up the main screen. This is where you set the options for your smoker and start a session for controlling your smoker.
Start Supervisor - Press this button when you are ready to start a new session to control the temperature of your smoker.
Continue - This button will continue the previous Supervisor session. Use this if you stop a session to change a value (like the target temperature).
View Session - This button will show a list of all the smoker sessions you have started. See the View Sessions section for more.
Configurations - This is a drop-down box that allows you to select one of your configurations. The Supervisor is installed with a single configuration named "Default Config".
New - This will create a new configuration.
Config name - Name of the current configuration.
Number of Thermometers - The number of thermometers for this configuration.
Thermometer list - Each thermometer can be given a name here. Note: the first thermometer is always used as the pit thermometer regardless of its name. Turn on the checkbox if you want this thermometer to fire off an alarm if the temperature falls outside a range.
Access this screen from the Menu button on the Main screen. This allows the user to change lesser-used settings.
Record Temperatures - If on, then the temperatures will be saved to the database and can be charted later. If off, the session can not be viewed.
Tweet On - If checked, then peridically tweet the status of the smoker.
Tweet Rate - Specifies (in minutes) how often to tweet the status.
Twitter info - Twitter handle and passwords necessary for tweeting the status.
Run webserver - If on, then starting a session will start the web server to handle HTML requests.
Max Blower PWM - Set this value lower for larger and more powerful blowers.
PID settings - These are the PID settings for the PID Algorithm used by the Supervisor. Change these only if you know how to tune a PID controller.
Monitor Session Screen
This screen is displayed when the Supervisor is monitoring the smoker and controlling the blower. It displays the target temperature, the thermometers, and the blower speed.
Chart Session - Press to view a running chart of the current session.
To stop the current session, press the menu button and select "Stop Monitor".
Example of a temperature error:
Chart of smoking session
List of previous Sessions
This lists previous smoker sessions. Click a session to see the chart. Hold-click to delete a session.
Step 9: Tips and Trouble Shooting
Practice. It will take some practice to consistently set up the Supervisor at the right temperature. Practice a few times before you smoke anything important.
The hardest part is learning how to adjust the various vents on your smoker and blower. If they are open too much the temperatures will continue to go up even when the blower is off. If they are closed too much then the blower won't be able to push in enough air to maintain the target temperature. The adjustments will be different each time, depending on conditions like how much food you have in your smoker, the target temperature, and how windy it is.
If your smoker has vents on the lid it is easier to start by adjusting them first. If that doesn't give you enough control you can try adjusting the opening to the blower, for example by covering some holes with tape.
Starting the coals. Use the Minion Method. When you first put your lit coals in the smoker keep the blower disconnected from the intake pipe. This will allow lots of air into the smoker to get the coals going. When the temperatures are about 50 degrees below your desired temperature attach the blower and let the Supervisor take over.
Bluetooth dongle doesn't show up on Android's list of devices.
There's not much you can do except try another dongle. You could try to plug in the dongle to another device, pair it with Android, and then plug it into the iOIO.
Pit temperature goes way above the target temperature.
Two likely things that might be going wrong:
- You're lighting too many coals to start off.
- The vents on your smoker are open too much and they are allowing too much air into the smoker when the blower is off. Try closing down the vents. You may have to put some tape over the blower intake holes if you drilled too many (see picture above).
Pit temperature never reaches target temperature.
The problem is almost certainly the result of not enough oxygen to your coals. You may not have drilled enough holes into your blower enclosure or your blower may be too weak. Try a test by running your smoker withOUT the blower attached and all vents open. If the temperatures go higher than the problem is with your blower or its enclosure.
If temperatures don't go higher than the problem is more likely your smoker. Is the opening into your smoker too small?
Step 10: Updates
Updated schematic (Oct 2014)
The schematic showed the thermometers being connected to the wrong voltage pin. They should be connected to the 3.3v pin.
UDS version 1.1.0 (June 2014)
This change changed the DB schema and requires that any previous versions be uninstalled. This will unfortunately erase all current data.
- Added Celsius and Kelvin as temperature unit options.
- A chart of the cook will be attached to every 5 tweets (only if session is recording the data).
- The Twitter Monitor will show the most recent chart.
- Button to delete configurations.
- 8 thermometers are supported.
- Removed webserver functionality. Nobody was using it and it reduced the .apk file by 30%.
- Some internal changes to prevent a new starting tweet if the screen was rotated.