Hobbybotics SHT1x Breakout V1.0

Introduction

Documentation

Build It

Use It

Related Links

Disclaimer

Introduction

I designed a breakout board for the Sensirion SHT1x Humidty/Temperature Sensor.  The breakout board for this project has a SHT15 mounted.  This project details a finished PCB design along with some sample Arduino sketches for demonstration.

The specifications for the SHT15 are:

  • Energy consumption: 80uW (at 12bit, 3V, 1 measurement/s)
  • Relative Humidity (RH) operating range: 0 – 100%
  • Temperature Range: -40 – +125°C (-40 – +257°F)
  • RH response time: 8 sec (tau 63%)
  • Operating voltage: +3V
  • Output 2-wire digital interface

According to Wikipedia, Relative Humidity is a term used to describe the amount of water vapor in a mixture of air and water vapor.  It is basically the ratio of the partial pressure of the air-water mixture at the prescribed temperature.

Relative Humidity plays an important role in most climate control systems.  Climate control refers to the control of temperature and relative humidity for the benefit of environmental control in HVAC and production environments.

Below is a picture of a SHT1x Humidity Sensor:

Here are some pictures of the final breakout board (Production Boards not finished yet):

  

Documentation

The board files was developed with the freely available DesignSpark PCB.

Files and updates are available on the associated github page.

Build It

Reference the B.O.M above for a list of the parts necessary to complete the Hobbybotics SHT1x Breakout.

Reference the below schematic and layout file for component locations.

Use It

I developed a couple of Arduino libraries to support the SHT1x breakout board.  The files are available on the associated github page.

The SHT15 library provides Humidity, Celsius and Fahrenheit temperature functions.  The LCD I2C library provides an interface to an HD44780 parallel LCD using an MCP23008 I2C I/O Expander.  The LCD library is not needed if you intend to only use the serial monitor for output.  The MCP23008_SDA and MCP23008_SCL pins of the I/O Expander are connected to the SDA (Analog 4, pin 27) and SCL (Analog 5, pin 28) on the Arduino.  The BKLT pin is connected to one of the I/O pins on the MCP23008 but, it can be connected to one of the PWM pins on the Arduino if you want to vary the LCD brightness with PWM.
Connect the below pins of the SHT1x to the Arduino.  DO and CLK can be connected to any of the Arduino pins.  I would recommend not using the default I2C pins on the Arduino if you intend to use other I2C devices (Such as the above I2C LCD circuit).
SHT1x Breakout
Pin Pin Name Function Arduino Pin
1 GND Ground GND
2 VCC 3V Source Voltage 3V
3 CLK Serial Clock, input only D17 (A3)
4 DO Serial Data, bidirectional D16 (A2)
The first example sketch prints humidity and temperature in Celsius/Fahrenheit to the Serial Monitor:
 
/*
Demonstration sketch for Hobbybotics SHT1x humidity/temperature sensor
breakout V1.o.
Reads humidity, temperature (Celsius) and temperature (Fahrenheit).
Displays results to Serial Monitor.
*/
#include <SHT15.h>
SHT15 sensor;
void setup()
{
// Init SHT15 sensor. SDA = D16 (Analog 2), SCL = D17 (Analog 3)
sensor.init(16, 17);
Serial.begin(9600);
Serial.println("--SHT15 Demo--");
}
void loop()
{
int temp_c;
int temp_f;
int humidity;
// Read values from the sensor
temp_c = sensor.measure(TEMPC);
temp_f = sensor.measure(TEMPF);
humidity = sensor.measure(HUMI);
// Print the values to the serial port
Serial.print("Temperature: ");
Serial.print(temp_c, DEC);
Serial.print("C / ");
Serial.print(temp_f, DEC);
Serial.print("F. Humidity: ");
Serial.print(humidity, DEC);
Serial.println("%");
delay(2000);
}
 
The second example sketch prints humidity and temperature in Celsius/Fahrenheit to an I2C connected LCD:
 
/*
Demonstration sketch for Hobbybotics SHT1x humidity/temperature sensor
breakout V1.o.
Reads humidity, temperature (Celsius) and temperature (Fahrenheit).
Displays results to LCD.
*/
#include <LCD.h>
#include <SHT15.h>
#include <Wire.h>
// Create LCD object. LCD address can be 0 through 7 based on setup
LCD lcd(0);
SHT15 sensor;
// degree symbol
const char degree = 223;
void setup()
{
// Init SHT15 sensor. SDA = D16 (Analog 2), SCL = D17 (Analog 3)
sensor.init(16, 17);
lcd.begin(20, 4);
lcd.clear();
lcd.print("--SHT15 Demo--");
lcd.setCursor(0, 1);
lcd.print("Temp C: ");
lcd.setCursor(0, 2);
lcd.print("Temp F: ");
lcd.setCursor(0, 3);
lcd.print("Humidity: ");
}
void loop()
{
float temp_c;
float temp_f;
float humidity;
// Read values from the sensor
temp_c = sensor.measure(TEMPC);
temp_f = sensor.measure(TEMPF);
humidity = sensor.measure(HUMI);
lcd.setCursor(10, 1);
lcd.print(temp_c);
lcd.print(degree);
lcd.print("C");
lcd.setCursor(10, 2);
lcd.print(temp_f);
lcd.print(degree);
lcd.print("F");
lcd.setCursor(10, 3);
lcd.print(humidity);
lcd.print("%");
delay(1000);
}
view raw SHT15_LCD.ino hosted with ❤ by GitHub
 Below are pictures of the output from the LCD test sketch.

Related Links

Hobbybotics SHT1x Breakout V1.0 Gallery

Disclaimer

This example shows hardware and software used to implement the design.  It is recommended the viewer use sound judgment in determining and/or implementing this example for any particular application.  This example may include information from 3rd parties and/or information which may require further licensing or otherwise.  Additional hardware or software may be required.  Hobbybotics or any affiliates does not support or warrant this information for any purpose other than a design example and takes no responsibility for any mishaps (none being implied).

Leave a comment