DIY: UDS temp controller using Android

Are there any Android UI developers out there? I could use a hand in making the screens look more professional. I don't have any problem with the logic and algorithm stuff but my UI skills suck.

Update: I'm still waiting for my IOIO to arrive so I'm focusing on the Android programming. I've written some of the UI code and a service to monitor the smoker. I couldn't find a PID algorithm written in Java so I'm converting the one written for the Arduino. I'm getting help from the author but it'll take a few more days.

Once I get all the basic screens finished I'll post some screen shots to get some feedback (assuming I can figure out how to get screen shots on Android).

The cost so far is $80 (including shipping--thanks Amazon!). I still need to get the probes which I figure will cost $30. Anybody know a cheap source for Maverick probes? The last major item that I haven't bought yet are the parts that will be needed to attach the fan to the smoker; I still have no idea how I'm going to do that. Not including the Android (which is perhaps not fair) the total cost should be $120-$130.
 
Are there any Android UI developers out there? I could use a hand in making the screens look more professional. I don't have any problem with the logic and algorithm stuff but my UI skills suck.

Update: I'm still waiting for my IOIO to arrive so I'm focusing on the Android programming. I've written some of the UI code and a service to monitor the smoker. I couldn't find a PID algorithm written in Java so I'm converting the one written for the Arduino. I'm getting help from the author but it'll take a few more days.

Once I get all the basic screens finished I'll post some screen shots to get some feedback (assuming I can figure out how to get screen shots on Android).

The cost so far is $80 (including shipping--thanks Amazon!). I still need to get the probes which I figure will cost $30. Anybody know a cheap source for Maverick probes? The last major item that I haven't bought yet are the parts that will be needed to attach the fan to the smoker; I still have no idea how I'm going to do that. Not including the Android (which is perhaps not fair) the total cost should be $120-$130.

I might have time to help you out if you have some idea of layout and what screen functions you need. Do you have a wireframe or something you can send me to give an idea of complexity of the screen and number of screens?
 
Hey moontz, thanks for the offer! My current plan is to create all the screens with the required controls, then I can pass that part to you for improvement. You can do as little as just making sure everything lines up or you can go crazy with sliders and icons or whatever else you think improves the interface. Then we can post screen shots here to get some feedback.

Once I get the PID stuff working I'll put the code up on github or SourceForge. Do you have a preference? If you don't care I'm leaning towards SourceForge since that's where most of my projects are. I'm hoping to have it up by the end of this weekend.

Edit: Forgot to answer your complexity question. Right now there are 3 screens:
1) Initial screen with multiple settings (i.e. text boxes) and a button to initiate the Android smoker service.
2) Status screen for displaying current temps, fan speed, and input to change thermostat setting.
3) "Settings" screen for shutting down server. In the future it will have other little-used settings like PID values.

Some day I'd like to add more functionality like graphing the temperatures, setting alarms, and automatically changing the temperature after a certain time. Or maybe something that turns down the heat after the meat hits a certain temperature. If/when I add wireless functionality there will no doubt be more screens. There's all sorts of crazy things we could add in the future.
 
Last edited:
Hey moontz, thanks for the offer! My current plan is to create all the screens with the required controls, then I can pass that part to you for improvement. You can do as little as just making sure everything lines up or you can go crazy with sliders and icons or whatever else you think improves the interface. Then we can post screen shots here to get some feedback.

Once I get the PID stuff working I'll put the code up on github or SourceForge. Do you have a preference? If you don't care I'm leaning towards SourceForge since that's where most of my projects are. I'm hoping to have it up by the end of this weekend.

Edit: Forgot to answer your complexity question. Right now there are 3 screens:
1) Initial screen with multiple settings (i.e. text boxes) and a button to initiate the Android smoker service.
2) Status screen for displaying current temps, fan speed, and input to change thermostat setting.
3) "Settings" screen for shutting down server. In the future it will have other little-used settings like PID values.

Some day I'd like to add more functionality like graphing the temperatures, setting alarms, and automatically changing the temperature after a certain time. Or maybe something that turns down the heat after the meat hits a certain temperature. If/when I add wireless functionality there will no doubt be more screens. There's all sorts of crazy things we could add in the future.

Sounds good. Just let me know when you get things uploaded and I can take a look as needed.

Brian
 
Update: Still moving forward and working on the PID and the screen communication. Moontz, I should have something by tomorrow night. Do you have have suggestions on what to use to plot graphs on Android? I've been looking at http://androidplot.com and it appears to be simple but maybe you have experience with something else.

CapnBry, how steady have your temperatures been using the HeaterMeter? I'm just curious as to what my ceiling will be.

Version 1 of the UDS controller will expect the phone to be tethered to the controller. The IOIO can use a bluetooth dongle for communication so theoretically someone can use an Android phone to connect wirelessly but that will not be my initial focus. Right now the lowest OS version that will be supported is 2.2. I don't see a need for that to change.

For version 2 I have an old Motorola Droid that will spend the rest of its life connected to the UDS. At some point the Droid will act as a web server so I can monitor the UDS when I'm away from home (and also taunt my friends with "look what I'm cooking!").

This road map may change on a whim as I get new cool ideas or lose interest. :)
 
I have been looking at doing something very similar. I will be watching this closely as I have 0 experiece with these things!
 
I applaud you guys for this, time, money and knowledge. It's awesome but it kinda takes something away from what BBQ is in my opinion. After all it is BBQ not BBIQ. Maybe I'm a little jealous which I can admit. I'm an electrician by trade so yes I have put some thought into it. I guess I like the Nostalgia of the lack of technology.
Keep up the good work, can't wait to see you guys get it figured out.
 
I applaud you guys for this, time, money and knowledge. It's awesome but it kinda takes something away from what BBQ is in my opinion. After all it is BBQ not BBIQ. Maybe I'm a little jealous which I can admit. I'm an electrician by trade so yes I have put some thought into it. I guess I like the Nostalgia of the lack of technology.
I understand what you're saying. The next step is just to buy it pre-cooked at the grocery store. :) It takes all kinds. For me, I kinda' like the challenge of making the controller and seeing if I can get it to work. Besides, it impresses the chicks. Well, the nerdy ones, anyway, which is fine by me.

Watching this one since I have an arduino coming just for this.
Just so you know, I don't plan on using an Arduino. This build is using an Android device and a couple of break-out boards. See CapnBry's excellent HeaterMeter if you want to use Arduino.
 
Moontz, the current code is on sourceforge at http://sourceforge.net/p/udssupervisor/wiki/Home/ . As you'll see below the screens are ugly and there's a bug where the screen displaying the thermometer temperatures isn't updating with the new values. I assume something needs to be done to tell Android to repaint the screens but my efforts have failed so far. If it's easier for you just send me the files you update/create. Otherwise give me your SourceForge ID and I'll add you to the list of committers. Let me know if there's anything else you need or have questions on the code. Feel free to add your name to the files if you want credit for your work.

To all: here are the screens as they currently look. The end result should look much better but this will give you an idea at how it should flow.

The initial screen looks like this. You can set your smoker temperature and PID settings (which will someday be saved in the DB).
uds1.jpg
Press "New Monitor Session" to start up the monitor. This creates an Android service that will continue to run when you run other apps. This brings up the screen that will display the thermometer temperatures:
uds2.jpg
As you can see there's currently a bug but pretend there are numbers there. :)

Note the icon up near the top which is supposed to look like a drum with flames on it. (Yeah, yeah, it needs work.) That is a notification symbol to indicate that the smoker is being monitored:
uds3.jpg
To shut down the monitor, you select the menu and then press "Stop Monitor"
uds4.jpg

Things I plan to add in the near future:
1) Display a timer.
2) Make # of thermometers and their names configurable.

I'm looking for suggestions on what you'd like to see added/changed.
 
Just so you know, I don't plan on using an Arduino. This build is using an Android device and a couple of break-out boards. See CapnBry's excellent HeaterMeter if you want to use Arduino.

Yeah, I saw that your doing PID but I am interested in all the other aspects as well.

Jeff
 
Update: I've reconfigured the code to use Maven as the build manager.

The IOIO arrived and I've started the basic wiring. I can now hook up my old Droid to the IOIO and they both recognize each other. Next step is to hook up a Maverick probe and see if I can read a temperature.
droid.jpg
 
Update: Still moving forward and working on the PID and the screen communication. Moontz, I should have something by tomorrow night. Do you have have suggestions on what to use to plot graphs on Android? I've been looking at http://androidplot.com and it appears to be simple but maybe you have experience with something else.

CapnBry, how steady have your temperatures been using the HeaterMeter? I'm just curious as to what my ceiling will be.

Version 1 of the UDS controller will expect the phone to be tethered to the controller. The IOIO can use a bluetooth dongle for communication so theoretically someone can use an Android phone to connect wirelessly but that will not be my initial focus. Right now the lowest OS version that will be supported is 2.2. I don't see a need for that to change.

For version 2 I have an old Motorola Droid that will spend the rest of its life connected to the UDS. At some point the Droid will act as a web server so I can monitor the UDS when I'm away from home (and also taunt my friends with "look what I'm cooking!").

This road map may change on a whim as I get new cool ideas or lose interest. :)

I am using achartengine v1.0 in mine. It does a pretty good job of displaying graphs. I'm starting to wonder if maybe we should merge our code or maybe work together on the projects. I have graphing, alarms and all kinds of stuff in my project. The only real difference is that I am using an arduino, but all the heaving lifting is done on the phone. I have a server android app which runs on the phone and does all the conversion stuff and then a client app which runs on the user's real phone where you can set alarms and stuff.
 
lkspenser, I went back to look at your original post and your screens are way better than mine; as you can see I'm graphically challenged. :) I love what you did with the alarms and it would be cool to collaborate with you on this project. The only issue is that I plan on including another Java package I'm working on as a proof-of-concept on Android. I want to eventually write the temperature data to a Sqlite DB and make the data available from anywhere on the web, probably using Sinatra as the web server. If you're OK with me dictating how the data is stored and accessed then there shouldn't be any conflicts.
 
I was also planning on storing the data using sqlite, but that was more for being able to go back and look at smoking sessions kind of like a log. Provided that the table structure is mostly 3rd normal factor in its design then I don't think I would have any issues there. It sounds like we have a lot of similar ideas if not exactly for the same purposes.

I think these are the main differences between our ideas right now:

1) ioio board / arduiono + usb shield
2) method for remotely viewing the data and controlling the device
- I wrote my own server which runs on the phone connected to the arduino. It listens for socket connections and writes the temps out to any of the established connections every time it pulls a reading.
- The client app runs on my real phone. It connects to the socket server and if the device switches between wifi, 3g, 4g it seamlessly re-establishes a connection. I have heartbeat packets sent periodically to make sure the socket is still active. If a connection becomes inactive or is dropped it will sound an alarm.
- The client app can set alarms for upper, lower and target temperatures so any probe can be used as the smoker or meat probes.
3) others?

The logic (for me) behind using my own server code was that if either of the devices lost connectivity it would sound an alarm on the client device.

I use the Steinhart Hart equation to get the temperatures and this is done on the server android phone. I am working through providing a way to re-calibrate the probes but I am not too far down that road yet.

I've never done anything that can control a fan, so using stuff already written would be nice.

Maybe we can chat more about this over a more proper medium. feel free to pm me and we can connect there and exchange contact info if you're still interested.
 
Update: I can now read the temp from a Maverick probe. I still need to calibrate it but it can't be off by more than 5 degrees.

My main reason for this update is that the IOIO is on sale for $38 (dunno what the shipping is). Just in case anyone wants to get started.
 
The basic hardware is mostly done. I've put up some pictures at Instructables: http://www.instructables.com/id/E5X914VH7UR7LEK/

I've tested it so far with three thermometers and one blower and I intend to have 5 or 6 thermometers. I haven't put it in a box but hope to do so this weekend. The PID software is written but not tested. On the plus side I got wireless fully working. My focus now is on the software side which will take a few weeks at least.
 
This is beyond cool.
Although....I'm doing my best to keep at least one area of my life free from electronics.
I'm having a hard time though. This is just too neat.
 
Back
Top