
Waterproof DS18B20 Temperature Sensor
PKR 290.00
Waterproof DS18B20 Temperature Sensor is 1 meter long, sealed and pre-wired Waterproof DS18B20 temperature sensor probe based on the DS18B20 sensor. It is very handy for when you need to measure something far away.
Description
Accurately measure temperature in challenging environments with our waterproof DS18B20 temperature sensor. This reliable sensor offers precise readings and a durable design.
Key Features:
- Waterproof and moisture proof construction
- Stainless steel housing
- 1-meter long cable
- Accurate temperature measurement (±0.5°C)
- 12-bit resolution
- Compatible with various microcontrollers
- Easy to install and use
Specifications:
- Usable temperature range: -55°C to 125°C
- Resolution: 9 to 12 bits selectable
- 1-Wire interface
- Unique 64-bit ID
- Power supply: 3.0V to 5.5V
Applications:
- Outdoor temperature monitoring
- Industrial process control
- Environmental monitoring
- Scientific research
- HVAC systems

Example code
#include <OneWire.h>
#include <DallasTemperature.h>
const int ONE_WIRE_BUS = 2;
const int GND_PIN = 8;
const int VCC_PIN = 7;
const int LED_PIN = LED_BUILTIN; // Pin 13 on Uno/Nano
const int REQUIRED_SAMPLES = 2;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);
DeviceAddress deviceAddress;
// Result status
bool testPassed = false;
void powerDownSocket() {
pinMode(ONE_WIRE_BUS, OUTPUT);
digitalWrite(ONE_WIRE_BUS, LOW);
digitalWrite(VCC_PIN, LOW);
digitalWrite(GND_PIN, LOW);
pinMode(VCC_PIN, OUTPUT);
pinMode(GND_PIN, OUTPUT);
}
void powerUpSocket() {
pinMode(GND_PIN, OUTPUT);
digitalWrite(GND_PIN, LOW);
pinMode(VCC_PIN, OUTPUT);
digitalWrite(VCC_PIN, HIGH);
pinMode(ONE_WIRE_BUS, INPUT);
delay(150); // Power-on stabilization delay
}
void printAddress(DeviceAddress addr) {
for (uint8_t i = 0; i < 8; i++) {
if (addr[i] < 16) Serial.print("0");
Serial.print(addr[i], HEX);
if (i < 7) Serial.print(":");
}
}
void setup() {
pinMode(LED_PIN, OUTPUT);
digitalWrite(LED_PIN, LOW);
Serial.begin(115200);
delay(100);
Serial.println("\n----------------------------------------");
Serial.println("Starting Test...");
powerUpSocket();
sensors.begin();
sensors.setWaitForConversion(true);
uint8_t count = sensors.getDeviceCount();
if (count == 0) {
Serial.println("[FAIL] -> No sensor detected. Check wiring/pull-up/orientation.");
powerDownSocket();
testPassed = false;
return;
}
if (!sensors.getAddress(deviceAddress, 0)) {
Serial.println("[FAIL] -> Address / CRC Error.");
powerDownSocket();
testPassed = false;
return;
}
Serial.print("ROM ID: ");
printAddress(deviceAddress);
Serial.println("\nTaking Samples:");
bool allSamplesValid = true;
float samples[REQUIRED_SAMPLES];
for (int i = 0; i < REQUIRED_SAMPLES; i++) {
sensors.requestTemperatures();
float tempC = sensors.getTempC(deviceAddress);
samples[i] = tempC;
Serial.print(" Sample ");
Serial.print(i + 1);
Serial.print("/");
Serial.print(REQUIRED_SAMPLES);
Serial.print(": ");
Serial.print(tempC, 2);
Serial.println(" °C");
if (tempC == DEVICE_DISCONNECTED_C || tempC == 85.0 || tempC < -50.0 || tempC > 120.0) {
allSamplesValid = false;
}
delay(100);
}
Serial.println("----------------------------------------");
if (allSamplesValid) {
Serial.println("RESULT: [OK] Sensor is Healthy.");
testPassed = true;
} else {
Serial.println("RESULT: [FAIL] Inconsistent or invalid temperature readings.");
testPassed = false;
}
Serial.println("----------------------------------------");
powerDownSocket();
}
void loop() {
if (testPassed) {
// FAST BLINK (OK): Rapid flash (80ms ON / 80ms OFF)
digitalWrite(LED_PIN, HIGH);
delay(80);
digitalWrite(LED_PIN, LOW);
delay(80);
} else {
// SOLID ON (FAULTY): Continuous solid light
digitalWrite(LED_PIN, HIGH);
}
}




