Browse Source

add Sensoren auslesen

master
Ralf Behrens 4 years ago
parent
commit
a6084d8e44
  1. 4
      include/MessenSensoren.h
  2. 95
      src/MessenSensoren.cpp

4
include/MessenSensoren.h

@ -8,6 +8,10 @@ void MessenSensoren(void); @@ -8,6 +8,10 @@ void MessenSensoren(void);
// nicht schoen aber funktioniert
#include "hseSensorProtocol.h"
extern HseSP hse;

95
src/MessenSensoren.cpp

@ -6,25 +6,38 @@ @@ -6,25 +6,38 @@
#include "myi2c.h"
#include "bme280.h"
#include "bh1750.h"
#include "hseSensorProtocol.h"
#define I2C_POWER 5 // bei Feather M0
// hse-Protokoll Datensatz
HseSP hse(2, 60);
void init_Messen(void)
{
int i;
Serial.println("PowerOn I2C");
// I2C Power einschalten LoRa Transponder
pinMode(I2C_POWER,OUTPUT);
digitalWrite(I2C_POWER, HIGH);
delay(10/8);
delay(20);
Wire.begin();
// Hardware detection, liste was angeschlossen ist
Serial.println("I2C Hardware detection");
if ( I2C_Test(BME280_ADR) != 0xFF )
{
Serial.println("BME280 gefunden");
Set_I2C_Adresse(BME280_ADR);
i = I2C_read8(BME280_REGISTER_CHIPID);
Serial1.print(F("BMx280 Chip ID = 0x"));
Serial1.print(i,HEX);
if ( i== 0x58) Serial1.println(F(" = BMP280"));
if ( i== 0x60) Serial1.println(F(" = BME280"));
}
if ( I2C_Test(0x77) != 0xFF )
@ -49,11 +62,87 @@ if ( I2C_Test(0x23) != 0xFF ) @@ -49,11 +62,87 @@ if ( I2C_Test(0x23) != 0xFF )
Serial.println("BH1750 gefunden");
BH1750_Init();
}
Serial.println("ende");
}
//--------------------------
void MessenSensoren(void)
{
int i,status, error;
float t,p,h;
long lVisLux;
Set_I2C_Adresse(BME280_ADR);
i = I2C_read8(BME280_REGISTER_CHIPID);
bme280_readCoefficients();
if ( i== 0x58)
{
I2C_write8(BME280_REGISTER_CONTROL, 0x3F);
delay(50); // gib ihm Zeit zum messen
}
if ( i== 0x60)
{
//Set before CONTROL_meas (DS 5.4.3)
I2C_write8(BME280_REGISTER_CONTROLHUMID, 0x05); //16x oversampling
I2C_write8(BME280_REGISTER_CONTROL, 0xB7); // 16x ovesampling, normal mode
delay(100); // gib ihm Zeit zum messen
}
// 35ms reicht beim BMP280
// 75ms warten bis BME280 den Druck gemessen hat
//----------------
t = bme280_readTemperature();
p = bme280_readPressure()/100.0;
h = bme280_readHumidity();
I2C_write8(BME280_REGISTER_CONTROL, 0x3C); // Sleep Mode
*/
// such BH1730
if ( I2C_Test(0x29) != 0xFF )
{
BH1730_Init();
lVisLux = BH1730_ReadLux();
// BH1730_ReadIR(); will keiner mehr wissen
}
// such BH1750
if ( I2C_Test(0x23) != 0xFF )
{
// BH1750 = HY30 Licht Sensor
BH1750_Init();
lVisLux = BH1750_ReadLux();
}
if ( lVisLux > 65535) lVisLux = 654321;
Serial.print(F("Temp = "));
Serial.println(t);
Serial.print(F("Druck = "));
Serial.println(p);
Serial.print(F("Feuchte = "));
Serial.println(h);
Serial.print(F("Vis = "));
Serial.println(lVisLux);
hse.reset();
//Ein Klimasensor hinzufügen
HseSP::ClimateSensor_t cs;
cs.Temperature = t; //°C
cs.Humidity = h; //%
cs.Pressure = p; //hPa
cs.Illuminance = lVisLux; //lux
hse.addClimateSensor(&cs);
// hse.addVoltage(fUb/1000.0); // in Volt
// hse.addCounter(uiOnStd); // Zeit On
}

Loading…
Cancel
Save