Nicholas SekulichErik PozorskiCorey Drummond
Published

Fireplace Temperature Monitor

If you've ever wondered how hot your fireplace is, with this project you can monitor the temperature of your fireplace in real-time.

BeginnerFull instructions provided4 hours292
Fireplace Temperature Monitor

Things used in this project

Hardware components

Microchip MCP9700
×1
Bryne Mica High Temperature Wire
×1
Argon
Particle Argon
×3

Software apps and online services

ThingSpeak API
ThingSpeak API
Particle Build Web IDE
Particle Build Web IDE

Hand tools and fabrication machines

Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires
Wire Stripper & Cutter, 18-10 AWG / 0.75-4mm² Capacity Wires

Story

Read more

Schematics

Temperature Reading Particle Schematic

Both Remote / Receiving Particles

MCP 9700 Sensor Pinout Setup

Code

Temperature Reading Particle Code

C/C++
int B = A5;
int C = D7;
int previouschecktime = 0;
double temperature_celcius() {
    return (analogRead(B) *(3.3/4096) -.5)/ .01;
    // conversion from analog reading to millivolts, and manufacturer offset
} 
// Should be direct connection
#define Data_Upload_Frequency 10000

void setup() {
Particle.variable("outputTemperatureCelcius153171",temperature_celcius);
Particle.subscribe("recievedconfirmation",clean);
Particle.subscribe("ithasbeenconfirmed2",sweep);
pinMode(C, OUTPUT);
}

void loop() {
temperature_celcius();
if (previouschecktime + Data_Upload_Frequency < millis()){
    previouschecktime = millis();
    Particle.publish("temperatureproject15megr3171distinct", String(temperature_celcius()));
    }
}

void clean(const char *event, const char *data){
    if (data){
    digitalWrite(C, HIGH);
    delay(2000);
    digitalWrite(C, LOW);
    delay(8000);
    }
}

void sweep(const char *event, const char *data){
    if (data){
    delay(5000);
    digitalWrite(C, HIGH);
    delay(2000);
    digitalWrite(C, LOW);
    }
}

First Reading Particle

C/C++
int B = D7;
int previouschecktime = 0;
#define Data_Upload_Frequency 10000

void setup() {
  Particle.subscribe("temperatureproject15megr3171distinct", tempsubscribe);
  pinMode(B, OUTPUT);
}

void loop() {
}

void tempsubscribe(const char *event, String data){
    int dataval;
    dataval=String(data).toInt();
    if (dataval > 80){
    digitalWrite(B, HIGH);
    }
    else{
    digitalWrite(B, HIGH);
    delay(1000);
    digitalWrite(B, LOW);
    }
    if ((previouschecktime + Data_Upload_Frequency < millis()) && (dataval)) {
    int previouschecktime = millis();
    delay(4000);
    publishdata();
    }
}

void publishdata() {
    Particle.publish("recievedconfirmation", "TemperatureRecieved1", PRIVATE); 
    }

Second Reading Particle

C/C++
int B = D7;
int previouschecktime = 0;
#define Data_Upload_Frequency 10000

void setup() {
  Particle.subscribe("temperatureproject15megr3171distinct", tempsubscribe);
  pinMode(B, OUTPUT);
}

void loop() {
}

void tempsubscribe(const char *event, String data){
    int dataval;
    dataval=String(data).toInt();
    if (dataval > 80){
    digitalWrite(B, HIGH);
    }
    else{
    digitalWrite(B, HIGH);
    delay(1000);
    digitalWrite(B, LOW);
    }
    if ((previouschecktime + Data_Upload_Frequency < millis()) && (dataval)) {
    int previouschecktime = millis();
    delay(7000);
    publishdata();
    }
}

void publishdata() {
    Particle.publish("ithasbeenconfirmed2", "TemperatureRecieved2", PRIVATE); 
    }

Credits

Nicholas Sekulich
1 project • 0 followers
Contact
Erik Pozorski
0 projects • 0 followers
Contact
Corey Drummond
0 projects • 0 followers
Contact

Comments

Please log in or sign up to comment.