Industrial manufacturing
Industrial Internet of Things | Industrial materials | Equipment Maintenance and Repair | Industrial programming |
home  MfgRobots >> Industrial manufacturing >  >> Manufacturing Technology >> Manufacturing process

Multi‑Position Temperature Sensor System for Smart Home Integration

Components and supplies

DS18B20
×8
screws
×1
Multi‑Position Temperature Sensor System for Smart Home Integration
Arduino Nano R3
×1
experiment pcb
×1
resistor 4.7k
×1
2 port screwterminal
×1
Multi‑Position Temperature Sensor System for Smart Home Integration
SparkFun RS232 Shifter - SMD
×1
3D printed case
×1
wire
×1

Necessary tools and machines

Multi‑Position Temperature Sensor System for Smart Home Integration
3D Printer (generic)
screwdriver

Apps and online services

Multi‑Position Temperature Sensor System for Smart Home Integration
Arduino IDE

About this project

I needed to read out temperatures on several positions. The temperature should be parsed to a domotica system (Crestron/AMX). The solution shouldn't cost too much. This way I decided to use DS18B20 sensors because these are widely availlable and fairly cheap. Last but not least, it's a bus system.

The sensors are connected to an Arduino Nano. The Serial output of the Arduino (ttl) is converted to RS232 to make it compatible with the domotica system.

To make it all look nice I designed a case and printed it on my Zortrax M200 3D printer.

Multi‑Position Temperature Sensor System for Smart Home Integration

Multi‑Position Temperature Sensor System for Smart Home Integration

Multi‑Position Temperature Sensor System for Smart Home Integration

Questions? Feel free to ask! 

Code

  • MultiTempSensor v1.0.0
MultiTempSensor v1.0.0Arduino
Arduino Code
/*
MultiTempSensor code by WT040
The sensor code is based on the examples from Rik Kretzinger and some other snippets of code

History:
v0.1.1  27/11/2016
v0.1.5  04/12/2016 pre-release version
v1.0.0	04/12/2017 release version
*/

//Include's
#include <OneWire.h>
#include <DallasTemperature.h>

//Constants
#define SENSOR_PIN 12
#define READ_TIMER 10000  //10 seconds
//

OneWire oneWire(SENSOR_PIN);

// Pass our oneWire reference to Dallas Temperature.
DallasTemperature sensors(&oneWire);

//Sensor Adresses 
DeviceAddress Sensor1 = { 0x28, 0xFF, 0x89, 0x0F, 0x61, 0x16, 0x03, 0x40 };
DeviceAddress Sensor2 = { 0x28, 0xFF, 0xE2, 0x0F, 0x61, 0x16, 0x03, 0x21 };
DeviceAddress Sensor3 = { 0x28, 0xFF, 0x38, 0xB3, 0x60, 0x16, 0x03, 0xEA };
DeviceAddress Sensor4 = { 0x28, 0xFF, 0xA4, 0xBE, 0x60, 0x16, 0x03, 0xE1 };
DeviceAddress Sensor5 = { 0x28, 0xFF, 0xFE, 0x13, 0x61, 0x16, 0x03, 0x56 };
DeviceAddress Sensor6 = { 0x28, 0xFF, 0x89, 0xBA, 0x60, 0x16, 0x03, 0xFB };
DeviceAddress Sensor7 = { 0x28, 0xFF, 0xFA, 0xBC, 0x60, 0x16, 0x03, 0xD1 };
DeviceAddress Sensor8 = { 0x28, 0xFF, 0x57, 0xB1, 0x60, 0x16, 0x03, 0x93 };

int amountOfSensors = 8;


//variable to check amount of sensors on bus once in a while
int counterCheckBus = 0;

void setup()
{
	// start serial port to show results
	Serial.begin(9600);
	//display_Running_Sketch();
	printProgramName();
	Serial.print("Initializing Temperature Control Library Version ");
	Serial.println(DALLASTEMPLIBVERSION);

	Serial.print("Searching for ");
	Serial.print(amountOfSensors);
	Serial.println(" sensors...");

	// Initialize the Temperature measurement library
	sensors.begin();

	// set the resolution to 10 bit (Can be 9 to 12 bits .. lower is faster)
	sensors.setResolution(Sensor1, 10);
	sensors.setResolution(Sensor2, 10);
	sensors.setResolution(Sensor3, 10);
	sensors.setResolution(Sensor4, 10);
	sensors.setResolution(Sensor5, 10);
	sensors.setResolution(Sensor6, 10);
	sensors.setResolution(Sensor7, 10);
	sensors.setResolution(Sensor8, 10);

	getSensorsOnBus();
	Serial.println("System initialized");
}

void loop()
{
	counterCheckBus++;
	delay(READ_TIMER);
	Serial.println();

	if (counterCheckBus == 360)
	{
		getSensorsOnBus();
		counterCheckBus = 0;
	}


	sensors.requestTemperatures();

	Serial.print("Sensor 1:   ");
	printTemperature(Sensor1);
	Serial.println();

	Serial.print("Sensor 2:   ");
	printTemperature(Sensor2);
	Serial.println();

	Serial.print("Sensor 3:   ");
	printTemperature(Sensor3);
	Serial.println();

	Serial.print("Sensor 4:   ");
	printTemperature(Sensor4);
	Serial.println();

	Serial.print("Sensor 5:   ");
	printTemperature(Sensor5);
	Serial.println();

	Serial.print("Sensor 6:   ");
	printTemperature(Sensor6);
	Serial.println();

	Serial.print("Sensor 7:   ");
	printTemperature(Sensor7);
	Serial.println();

	Serial.print("Sensor 8:   ");
	printTemperature(Sensor8);
	Serial.println();


}

void printTemperature(DeviceAddress deviceAddress)
{

	float tempC = sensors.getTempC(deviceAddress);

	if (tempC == -127.00)
	{
		Serial.print("Sensor error!");
	}
	else
	{
		Serial.print("C: ");
		Serial.print(tempC);
	}
}

void printProgramName() {
	String path = __FILE__;
	int slash = path.lastIndexOf('\\');
	String programName = path.substring(slash + 1);
	int dot = programName.lastIndexOf('.');
	programName = programName.substring(0, dot);

	Serial.print("\nProgram version: ");
	Serial.println(programName);
}

void getSensorsOnBus() {
	Serial.print("Number of sensors found on bus: ");
	Serial.println(sensors.getDeviceCount());
}

Custom parts and enclosures

3D printable case - bottom3D printable case - top3D printable case - sub-d 9 mount

Schematics

basic schematic, without rs232 moduleMulti‑Position Temperature Sensor System for Smart Home Integration

Manufacturing process

  1. DS18B20 Temperature Sensor – Precise 1‑Wire Digital Thermometer for Industrial & Consumer Use
  2. Build a Raspberry Pi Temperature Logger with a $5 I2C Sensor
  3. Build a Raspberry Pi Home Temperature Monitor with MCP9808, InfluxDB & Grafana
  4. MotionSense: Smart Intrusion Detection with Arduino & ESP8266
  5. Advanced Microcontrollers Lab: ESP32, Arduino, PIC, and Sensor Modules
  6. Build an Arduino‑Based Air Quality Monitor Using the DSM501A Dust Sensor
  7. Build a Smart Wristband with Arduino MKR GSM 1400 & Hologram IoT
  8. Arduino Ultrasonic Distance & Temperature Monitor with LCD Alarm System
  9. Arduino Temperature Sensor Project: Read, Convert, and Display Fahrenheit
  10. Portable Arduino-Based Temperature & Humidity Monitor with 16x2 LCD Display