Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Development
  3. BBQ Temp Controller Build

BBQ Temp Controller Build

Scheduled Pinned Locked Moved Development
7 Posts 4 Posters 8.7k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Offline
    T Offline
    Tango2
    wrote on last edited by
    #1

    I'm in the process of building a BBQ temp controller, and was trying to figure out the best way to remotely monitor/control it. After coming across this website a month or so ago, I'm now running OpenHAB on a RPi2 and have a couple temp sensors deployed around my house.

    This project is a little more involved, and I'm sure I'm going to run into roadblocks along the way. My goal is to have a sitemap in OpenHAB that will allow me to set and monitor my desired grill temp, which will control a small fan on my BBQ using a PID algorithm, as well as display the temps of the meat probes so I can know how things are going.

    I currently have the sitemap setup in OpenHAB, and have had the code working for the thermocouple temp probes that I will be using for the grill and meat temps. Today I will start trying to get the two to work together, based on the MySensors Serial API. I'll be using the NRF24L01+ radio modules for this. I'll post my code periodically, and hopefully will have some chime in on how to make it work or improve it.

    1 Reply Last reply
    1
    • T Offline
      T Offline
      Tango2
      wrote on last edited by
      #2

      Below is a very rough sketch of what I have so far. This is not working or tested even yet, but it does compile in Arduino IDE. I will breadboard the sensors I have in the next couple of days and get the basics working, then I will have to figure out how to send the temperatures over to my gateway. Next will be configuring for receiving commands from the gateway/controller to allow me to set my target temperature on the Arduino. Any recommendations are welcomed.

      This program is my attempt at creating a BBQ controller for my Big Green Egg using
      an arduino to monitor grill and meat temps as well as control a fan to
      regulate the grill temperature.
      
      Components used:
      - Arduino UNO
      - 10CFM Brushless DC Blower
      - Level Shifter
      - K-type Thermocouple
      - K-type Grill Probe
      - K-type Meat Probe
      
      
      Pin assignments:
      
      */
      
      /*
      Tasks:
      - Selftest
        - Fan 0-100-0
        - Check for Probes
      
      - Set Grill Temp
      
      - Setup Display
        - Grill Temp
        - Probe 1
        - Probe 2
        - Fan Status
        - Elapsed Time
      
      - Measure Temperature
        - Grill
        - Probe 1
        - Probe 2
      
      - Analyze Temperature
        - PID Contol
      
      - Control Fan
        - PWM Value
        - On/Off
      
      */
      
      //-------------------------------- Classes ------------------------
      
      
      //-------------------------------- Includes -----------------------
      
      #include <MySensor.h>
      #include <OneWire.h>
      #include <DallasTemperature.h>
      #include <SPI.h>
      #include <PID_v1.h>
      
      //-------------------------------- Defines ------------------------
      
      
      #define oneWirePin 9
      #define TempPrecision 9
      #define MAX_ATTACHED_DS18B20 16
      
      OneWire oneWire(oneWirePin); //Setup oneWire instance to communiate with any oneWire devices
      DallasTemperature sensors(&oneWire); //Pass our oneWire referenceto Dallas Temperature.
      DeviceAddress Probe0, Probe1, Probe2, Probe3; //Define arrays to hold device addresses.
      MySensor gw;
      unsigned long SLEEP_TIME = 15000;
      float lastTemperature[MAX_ATTACHED_DS18B20];
      int numSensors = 3;
      boolean receivedConfig = false;
      boolean metric = true;
      MyMessage msg(0,V_TEMP);
      
      void sketchInfo () {
        gw.begin();
        gw.sendSketchInfo("Temperature Sensor","1.0");
      }
      
      void setupProbes () {
        sensors.begin();
        sensors.getAddress(Probe0, 0);
        sensors.getAddress(Probe1, 1);
        sensors.setResolution(Probe0, TempPrecision);
        sensors.setResolution(Probe1, TempPrecision);
      }
      
      // Cycle fan from 0-100-0% power over 10 seconds.
      void selftestFan () {
      
      }
      
      // Verify which probes are connected and report status for 10 seconds
      void selftestProbes () {
      
      }
      
      void printTemperature(DeviceAddress deviceAddress)
      {
        float tempC = sensors.getTempC(deviceAddress);
        //Display Temp in °C
        //Serial.print("Temp C: ");
        //Serial.print(tempC);
        //Display Temp in °F
        Serial.print(DallasTemperature::toFahrenheit(tempC));
        Serial.print(" F ");
      }
      
      void printData(DeviceAddress deviceAddress)
      {
        //Serial.print("Device Address: ");
        //printAddress(deviceAddress);
        //Serial.print(" ");
        printTemperature(deviceAddress);
        //Serial.println();
      }
      
      void sendTemps () {
        for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) {
          float temperature = static_cast<float>(static_cast<int>((gw.getConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) /10.;
          gw.send(msg.setSensor(i).set(temperature,1));
          lastTemperature[i]=temperature;
        }
       gw.sleep(SLEEP_TIME);
      }
        
      void setup() {
      
        Serial.begin(9600);
        sketchInfo();
        setupProbes();
        //selftestFan();
        //selftestLCD();
      }
      
      
      
      void loop() {
        // put your main code here, to run repeatedly:
      
        gw.process();
        sensors.requestTemperatures();
        printTemperature(Probe1);
        printTemperature(Probe2);
        sendTemps();
        //readTemps(Probe0);
        //readTemps(Probe1);
      }
      
      
      1 Reply Last reply
      0
      • gaduG Offline
        gaduG Offline
        gadu
        wrote on last edited by
        #3

        Cool project! Following.

        1 Reply Last reply
        0
        • BulldogLowellB Offline
          BulldogLowellB Offline
          BulldogLowell
          Contest Winner
          wrote on last edited by
          #4

          I've been watching this one, but will watch this one evolve too.

          Waiting to see if they get a web app done.

          T 1 Reply Last reply
          0
          • BulldogLowellB BulldogLowell

            I've been watching this one, but will watch this one evolve too.

            Waiting to see if they get a web app done.

            T Offline
            T Offline
            Tango2
            wrote on last edited by
            #5

            @BulldogLowell
            That looks like an interesting project as well. This originally started very similar to that one, and I was planning on using a local LCD on it for the display. I quickly realized that the local LCD would not give me the "warm fuzzy" that checking this remotely would give me. When I started going towards a web interface design, I then realized that I really didn't need the local LCD at all.

            I'm not at all good with the programming piece, but I've gotten by so far. We'll see how this works out.

            1 Reply Last reply
            0
            • 5546dug5 Offline
              5546dug5 Offline
              5546dug
              wrote on last edited by
              #6

              @Tango2 Check this link, it is something I built for my Big Green Egg BBQ.
              It looks like it could be my sensors material.
              http://www.susanminor.org/forums/showthread.php?315-PID-Controller
              Maybe this may help.

              T 1 Reply Last reply
              0
              • 5546dug5 5546dug

                @Tango2 Check this link, it is something I built for my Big Green Egg BBQ.
                It looks like it could be my sensors material.
                http://www.susanminor.org/forums/showthread.php?315-PID-Controller
                Maybe this may help.

                T Offline
                T Offline
                Tango2
                wrote on last edited by
                #7

                @5546dug That's an interesting build. I've come across several using a PID controller similar to that, however they have mostly been on electric smokers. My original intent was to do a PWM fan that could be speed controlled, but it was very hard (impossible) for me to find a blower type fan that was PWM-capable. My very initial testing showed that an on/off model would work as well but I haven't tried this on the Big Green Egg yet.

                My main concern is being able to feed a temp from my phone back to the arduino controlling this, and being reliable if for some reason wireless connectivity was lost from the arduino. I don't think this should be too hard, but will probably take some trial and error on my part.

                1 Reply Last reply
                0
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                15

                Online

                11.7k

                Users

                11.2k

                Topics

                113.1k

                Posts


                Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                • Login

                • Don't have an account? Register

                • Login or register to search.
                • First post
                  Last post
                0
                • MySensors
                • OpenHardware.io
                • Categories
                • Recent
                • Tags
                • Popular