Feuchtigkeitsmessung mit Honeywell HIH Sensor - Z-Uno - SmartHome Z-Wave Modul

Direkt zum Seiteninhalt

Feuchtigkeitsmessung mit Honeywell HIH Sensor

-> Feuchtigkeitssensor
Beschreibung:
Diese Z-Wave-Baugruppe realisiert eine Temperatur-/ Feuchtigkeitsmessung über einen Honeywell HIHxx I²C Sensor, der sich mehrere Meter vom Z-Uno entfernt befinden kann.
Einige Honeywell 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)
 /*     Honeywell Sensors
  *     Sensor HIH 61xx
  *     front:
  *     1       -> ZUNO(digital pin 9) SCL
  *     2       -> 3v3   
  *     3       -> GND 
  *     4       -> ZUNO(digital pin 10) SDA
  *     
  *     Used Honeywell datasheet, modified and published
  *     by Michael Pruefer http://z-uno.smarthome.work
  *     V 0.9 (Library will be done soon) 12.12.2016
  */
  
#include "Wire.h"
#define HIH_I2CADDRESS  0x27

long hih_temperature10=0;
long hih_humidity=0;

int temp, hum;

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

 
void setup()
{
 Wire.begin(); // wake up I2C bus, init sensor
 Serial.begin();
}
 
void loop()
{
  int ccd_status=readHIH();
  if (ccd_status==0){
    temp=hih_temperature10;
    Serial.print("temp:");Serial.println(hih_temperature10/10.0);
    hum=hih_humidity;
    Serial.print("Hum:");Serial.println(hih_humidity);
    zunoSendReport(1);
    zunoSendReport(2);
  }
  else
  {
    Serial.print("Status: failed ");Serial.println(ccd_status);
  }  
  delay(30000);  // send once in 30 seconds
}

int getterTemp() {
    return temp;
}

int getterHumidity() {
    return hum;
}

// Read value of sensor
byte readHIH(){
 Wire.beginTransmission(HIH_I2CADDRESS );
 Wire.write(HIH_I2CADDRESS);
 Wire.endTransmission(); 
 delay(150);
  byte c0,c1,c2,c3;
  Wire.requestFrom(HIH_I2CADDRESS ,4); //send data read request
    while(Wire.available()){
      c0=Wire.read();
      c1=Wire.read();
      c2=Wire.read();
      c3=Wire.read();
      Wire.endTransmission();
  }  
/* for debugging
  Serial.println("----");
  Serial.println(c0,HEX);
  Serial.println(c1,HEX);
  Serial.println(c2,HEX);
  Serial.println(c3,HEX);
  Serial.println("----");
*/  
  hih_temperature10=(((long)((c2 << 6) + (c3 >> 2))* 1650) >>14 )  - 400;
//  Serial.println(hih_temperature10);
  hih_humidity=(((long)(((c0 & 0x3f) << 8) + c1)*100) >>14) ;
//  Serial.println(hih_humidity);
  byte hih_status=(c0 & 0xc0) >> 6;
  return hih_status;
}

Copyright 2018 Michael Prüfer
Zurück zum Seiteninhalt