Digital Temperature DS18B20 Shield for WeMos D1 mini

  • RM13.00

  • Product Code: DS18B20 D1 Mini
  • Availability: In Stock

Easily add a temperature and humidity sensor to your WeMos D1 Mini ESP8266 project with this DHT12 shield from Tronixlabs Australia. You can detach the sensor module from the shield and attach it remotely if required.

Pins headers are included with the shield but not soldered

 

Applications

  • Thermostatic controls, industrial systems, consumer products, thermometers, or any thermally sensitive system
  • User-definable nonvolatile (NV) alarm settings

 

Features

  • Temperature: –55°C to +125°C (–67°F to +257°F)
  • ±0.5°C accuracy from –10°C to +85°C
  • Each device has a unique 64-bit serial code stored in an onboard ROM
  • Multidrop capability simplifies distributed temperature sensing applications
  • Requires no external components
  • Can be powered from data line. Power supply range is 3.0V to 5.5V
  • Thermometer resolution is user-selectable from 9 to 12 bits
  • Converts temperature to 12-bit digital word in 750ms (max.)
  • Alarm search command identifies and addresses devices whose temperature is outside of programmed limits (temperature alarm condition)

 

Package included

  • 1 x DS18B20 Shield
  • 2 x Pin headers
  • 4 x Female pin headers

 

Coding

#include <OneWire.h>
 
// OneWire DS18S20, DS18B20, DS1822 Temperature Example
 
OneWire  ds(D2);  // on pin D4 (a 4.7K resistor is necessary)
 
void setup(void) 
{
  Serial.begin(9600);
}
 
void loop(void) 
{
  byte i;
  byte present = 0;
  byte type_s;
  byte data[12];
  byte addr[8];
  float celsius, fahrenheit;
 
  if ( !ds.search(addr)) 
  {
    ds.reset_search();
    delay(250);
    return;
  }
 
  if (OneWire::crc8(addr, 7) != addr[7]) 
  {
      Serial.println("CRC is not valid!");
      return;
  }
 
  // the first ROM byte indicates which chip
  switch (addr[0]) 
  {
    case 0x10:
      type_s = 1;
      break;
    case 0x28:
      type_s = 0;
      break;
    case 0x22:
      type_s = 0;
      break;
    default:
      Serial.println("Device is not a DS18x20 family device.");
      return;
  } 
 
  ds.reset();
  ds.select(addr);
  ds.write(0x44, 1);        // start conversion, with parasite power on at the end  
  delay(1000);
  present = ds.reset();
  ds.select(addr);    
  ds.write(0xBE);         // Read Scratchpad
 
  for ( i = 0; i < 9; i++) 
  {           
    data[i] = ds.read();
  }
 
  // Convert the data to actual temperature
  int16_t raw = (data[1] << 8) | data[0];
  if (type_s) {
    raw = raw << 3; // 9 bit resolution default
    if (data[7] == 0x10) 
    {
      raw = (raw & 0xFFF0) + 12 - data[6];
    }
  } 
  else 
  {
    byte cfg = (data[4] & 0x60);
    if (cfg == 0x00) raw = raw & ~7;  // 9 bit resolution, 93.75 ms
    else if (cfg == 0x20) raw = raw & ~3; // 10 bit res, 187.5 ms
    else if (cfg == 0x40) raw = raw & ~1; // 11 bit res, 375 ms
 
  }
  celsius = (float)raw / 16.0;
  fahrenheit = celsius * 1.8 + 32.0;
  Serial.print("  Temperature = ");
  Serial.print(celsius);
  Serial.print(" Celsius, ");
  Serial.print(fahrenheit);
  Serial.println(" Fahrenheit");
}

Open the serial monitor

Temperature = 26.56 Celsius, 79.81 Fahrenheit
Temperature = 26.81 Celsius, 80.26 Fahrenheit
Temperature = 27.81 Celsius, 82.06 Fahrenheit
Temperature = 28.44 Celsius, 83.19 Fahrenheit
Temperature = 28.81 Celsius, 83.86 Fahrenheit
Temperature = 29.19 Celsius, 84.54 Fahrenheit
Temperature = 29.44 Celsius, 84.99 Fahrenheit
Temperature = 29.62 Celsius, 85.32 Fahrenheit
Temperature = 29.81 Celsius, 85.66 Fahrenheit
Temperature = 29.94 Celsius, 85.89 Fahrenheit
Temperature = 29.75 Celsius, 85.55 Fahrenheit

 

Write a review

Note: HTML is not translated!
    Bad           Good

 

Related Products