Feuchtigkeitsmessung mit sht Sensirion Sensor - Z-Uno - SmartHome Z-Wave Modul

Direkt zum Seiteninhalt

Feuchtigkeitsmessung mit sht Sensirion Sensor

-> Feuchtigkeitssensor
Beschreibung:
Diese Z-Wave-Baugruppe realisiert eine Temperatur-/ Feuchtigkeitsmessung über einen Honeywell SHTxx I²C Sensor, der sich mehrere Meter vom Z-Uno entfernt befinden kann.
Einige Sensirion Sensoren sind auch für kondensierende Feuchtigkeit ausgelegt, wir verwenden ausschliesslich diese.
Die Sensoren eignen sich hervorragend für den Batteriebetrieb, da sie mit einer unteren Betriebsspannungsgrenze von 2,3V arbeiten.

Die Bibliotheken aus dem Projekt sollten vorerst im Projektordner bleiben (bis sie im Z-Uno integriert wurden), um bei einem Update diese nicht zu verlieren.

Weitere Beispiele findet man unter http://z-uno.z-wave.me/examples/
Aufbau
(Fritzing)

(folgt bald)

VCC: ab 2,7V !
batterietauglich
Schaltplan:
(Fritzing)
(folgt bald)

Arduino Code: (Arduino 1.6.5)

Download Code (folgt bald)
 /*     Sensirion Sensors
  *     Sensor SHT2x
  *     depending on the breakout...
  *     chip 1       -> ZUNO(digital pin 10) SDA + 4.7kOhm -> 3v3 !!
  *     chip 2       -> GND   
  *     chip 5       -> 3v3 
  *     chip 6       -> ZUNO(digital pin 9) SCL + 4.7kOhm -> 3v3 !!
  *     
  *     Used Sensirion datasheet, modified and published
  *     by Michael Pruefer http://z-uno.smarthome.work
  *     V 0.9 (Library will be done soon) 13.12.2016
  *     code not optimized for stack usage
  */


#include  "Wire.h"
#define Addr 0x40         // SHT25 I2C address

unsigned long data[2];  
int temp;
int hum;

void setup()
{  
Wire.begin();             // Initialise I2C
Serial.begin();  
}

ZUNO_SETUP_CHANNELS(
   ZUNO_SENSOR_MULTILEVEL(ZUNO_SENSOR_MULTILEVEL_TYPE_TEMPERATURE, 
                          SENSOR_MULTILEVEL_SCALE_CELSIUS, 
                          SENSOR_MULTILEVEL_SIZE_TWO_BYTES, 
                          SENSOR_MULTILEVEL_PRECISION_TWO_DECIMALS,
                          getterTemp),
   ZUNO_SENSOR_MULTILEVEL_HUMIDITY(getterHumidity)                       
);


void loop()
{  
  temp=ReadSensorVal(0xF3);
  hum=ReadSensorVal(0xF5);
  Serial.print("reported Temp value:");Serial.println(temp);
  Serial.print("reported Hum. value:");Serial.println(hum);
  delay(30000);
}

int getterTemp() {
    return temp;
}

int getterHumidity() {
    return hum;
}

long ReadSensorVal(byte mode){
  Wire.beginTransmission(Addr);     // Start transmission
  Wire.write(mode);                 // Send humidity/temp measurement command, NO HOLD
  Wire.endTransmission();  
  delay(100);                       // Wait while sensor is ready
  Wire.requestFrom(Addr, 2);        // Request 2 bytes of data
                    // MSB/LSB  
  if(Wire.available() == 2)  
  {    
    data[0] = Wire.read();    
    data[1] = Wire.read();
    // Convert data    
    if(mode == 0xF5){		   // humidity address
      float humidity = (((data[0] * 256.0 + data[1]) * 125.0) / 65536.0) - 6; 
      Serial.print("Relative Humidity :");
      Serial.print(humidity);Serial.println(" %RH");  
      return ((int)humidity);
    }
    if(mode == 0xF3){		  // temperature address
      float cTemp = (((data[0] * 256.0 + data[1]) * 175.72) / 65536.0) - 46.85;    
      float fTemp = (cTemp * 1.8) + 32;
      Serial.print("Temperature in Celsius :");    
      Serial.print(cTemp);Serial.println(" C");    
      return (int(cTemp*100));
    }
  }
}  

Copyright 2018 Michael Prüfer
Zurück zum Seiteninhalt