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 9.4k 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
      • G Offline
        G Offline
        gadu
        wrote on last edited by
        #3

        Cool project! Following.

        1 Reply Last reply
        0
        • B Offline
          B 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
          • B 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

                Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                With your input, this post could be even better 💗

                Register Login
                Reply
                • Reply as topic
                Log in to reply
                • Oldest to Newest
                • Newest to Oldest
                • Most Votes


                15

                Online

                12.0k

                Users

                11.2k

                Topics

                113.4k

                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