Negar Rafieedolatabadi
Published

Smart temperature lightening Watertap Using Sensirion SHT45

Smart water tap changing color of water based on water temperature build using Sensirion SHT45 temperature andu humidity sensor.

BeginnerShowcase (no instructions)1 hour679
Smart temperature lightening Watertap Using Sensirion SHT45

Things used in this project

Hardware components

SHT40
Sensirion SHT40
×1
Arduino UNO Wifi Rev.2
Arduino UNO Wifi Rev.2
×1
Adafruit Sensirion SHT45 Temperature & Humidity Sensors
×1
LED (generic)
LED (generic)
×1
Resistor 220 ohm
Resistor 220 ohm
×1

Software apps and online services

Arduino IDE
Arduino IDE

Hand tools and fabrication machines

Soldering Station Power Supply, For Weller WX Soldering System
Soldering Station Power Supply, For Weller WX Soldering System
Tape, Electrical Insulation
Tape, Electrical Insulation

Story

Read more

Schematics

schematic picture of sensor and LED conections to Arduino

Color vs Temperature

Code

Watertap.txt

C#
Reads temperature values from SHT45 and sets the status of LEDs based on temperature
#include "Adafruit_SHT4x.h"
#include <Wire.h> // Include the Wire library for I2C communication

Adafruit_SHT4x sht4 = Adafruit_SHT4x();

void setup() {
  Serial.begin(115200);
  while (!Serial)
    delay(10);

  Serial.println("Adafruit SHT4x test");
  if (!sht4.begin()) {
    Serial.println("Couldn't find SHT4x");
    while (1) delay(1);
  }
  Serial.println("Found SHT4x sensor");

  // Set LED pins as OUTPUT
  pinMode(10, OUTPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  pinMode(9, OUTPUT);
  pinMode(8, OUTPUT);
  pinMode(4, OUTPUT);
  pinMode(5, OUTPUT);
  pinMode(6, OUTPUT);
  pinMode(7, OUTPUT);
}

void loop() {
  // Variables to store humidity and temperature readings
  sensors_event_t humidity, temp;

  // Record the time before the sensor reading
  uint32_t timestamp = millis();

  // Read humidity and temperature from the sensor
  sht4.getEvent(&humidity, &temp);

  // Calculate the time taken for the sensor reading
  timestamp = millis() - timestamp;

  // Print temperature, humidity, and the time it took to read
  Serial.print("Temperature: "); Serial.print(temp.temperature); Serial.println(" degrees C");
  Serial.print("Humidity: "); Serial.print(humidity.relative_humidity); Serial.println("% rH");
  Serial.print("Read duration (ms): ");
  Serial.println(timestamp);

  // Control LEDs based on temperature
  if (temp.temperature < 27) {
    digitalWrite(4, HIGH);
    digitalWrite(5, HIGH);
    digitalWrite(6, HIGH);

    digitalWrite(12, LOW);
    digitalWrite(11, LOW);
    digitalWrite(10, LOW);
    digitalWrite(9, LOW);
    digitalWrite(8, LOW);
    digitalWrite(7, LOW);
  } else if (temp.temperature >= 27 && temp.temperature <= 35) {
    digitalWrite(4, LOW);
    digitalWrite(5, LOW);
    digitalWrite(6, LOW);

    digitalWrite(7, HIGH);
    digitalWrite(10, LOW);
    digitalWrite(8, HIGH);
    digitalWrite(11, LOW);
    digitalWrite(12, LOW);
    digitalWrite(9, HIGH);
  } else {
    digitalWrite(4, LOW);
    digitalWrite(10, HIGH);
    digitalWrite(5, LOW);
    digitalWrite(11, HIGH);
    digitalWrite(12, HIGH);
    digitalWrite(6, LOW);

    digitalWrite(7, LOW);
    digitalWrite(8, LOW);
    digitalWrite(9, LOW);
  }

  // Delay for 1 second before the next reading
  delay(1000);
}

Credits

Negar Rafieedolatabadi
4 projects • 4 followers
Contact

Comments

Please log in or sign up to comment.