Remote Temperature Sensing

A simple project for remote temperature sensing of any environment. Provides live temperature readings to your phone and over the internet.

BeginnerFull instructions provided2 hours1,246
Remote Temperature Sensing

Things used in this project

Hardware components

Photon
Particle Photon
Since we had three remote temperature monitoring setups, we have three times as many materials.
×3
Temperature Sensor
Temperature Sensor
We used the DS18B20 uncovered and covered temperature sensors to make this project.
×3
Resistor 1k ohm
Resistor 1k ohm
4.7K ohm resistors are an option as well, we just noticed more issues with receiving proper temperature measurements when using them.
×3
Jumper wires (generic)
Jumper wires (generic)
×12

Software apps and online services

Ubidots
Ubidots

Story

Read more

Code

DS18B20 Temperature Sensor to Ubidots code

C/C++
This is a basic code using the Particle.io build app. We include the HTTPClient, OneWire and Spark-dallas-temperature libraries to read our DS18B20 temperature sensor. In order to get data to Ubidots, you need to find and include the VARIABLE_ID and TOKEN and insert into the code on lines 19 and 20 respectively. The only problem we ran into was that the spark-dallas-temperature library included in particle build was not updated. Line 27 in the spark-dallas-temperature.h file was changed to #include <OneWire.h> and added next to our original code.
// This #include statement was automatically added by the Particle IDE.
#include "spark-dallas-temperature.h"

// This #include statement was automatically added by the Spark IDE.
#include "HttpClient/HttpClient.h"
 
// This #include statement was automatically added by the Spark IDE.
#include "OneWire.h"
 
 
#define ONE_WIRE_BUS D2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensor(&oneWire);
float temperaturef = 0.0; 
float temperature = 0.0;
char resultstr[64];
HttpClient http;
 
#define VARIABLE_ID "58ecf2787625422c3a418de6"
#define TOKEN "TASZcmIv4eg1oS180p4kKHs31Zy81q"
 
http_header_t headers[] = {
      { "Content-Type", "application/json" },
      { "X-Auth-Token" , TOKEN },
    { NULL, NULL } // NOTE: Always terminate headers will NULL
};
 
http_request_t request;
http_response_t response;
 
void setup() {
    request.port = 80;
    request.hostname = "things.ubidots.com";
    request.path = "/api/v1.6/variables/"VARIABLE_ID"/values";
    Serial.begin(9600);
    sensor.begin();
}
 
void loop() {
 sensor.requestTemperatures();
 temperature=sensor.getTempCByIndex( 0 );
 temperaturef=((1.81*temperature)+32);
 sprintf(resultstr, "{\"value\":%.4f}",temperaturef); 
 request.body = resultstr;//Sending presence to Ubidots
 http.post(request, response, headers);
 Serial.println(response.status); //For debug only
 Serial.println(response.body);
 delay(1000);
}

Credits

Lazar Trifunovic

Lazar Trifunovic

1 project • 0 followers
Hung Pham

Hung Pham

1 project • 0 followers
William Schundlemire

William Schundlemire

1 project • 0 followers
Thanks to UbiMaker.

Comments