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);
// nicht schoen aber funktioniert
#include "hseSensorProtocol.h"
extern HseSP hse;

95
src/MessenSensoren.cpp

@ -6,25 +6,38 @@
#include "myi2c.h" #include "myi2c.h"
#include "bme280.h" #include "bme280.h"
#include "bh1750.h" #include "bh1750.h"
#include "hseSensorProtocol.h"
#define I2C_POWER 5 // bei Feather M0 #define I2C_POWER 5 // bei Feather M0
// hse-Protokoll Datensatz
HseSP hse(2, 60);
void init_Messen(void) void init_Messen(void)
{ {
int i;
Serial.println("PowerOn I2C");
// I2C Power einschalten LoRa Transponder // I2C Power einschalten LoRa Transponder
pinMode(I2C_POWER,OUTPUT); pinMode(I2C_POWER,OUTPUT);
digitalWrite(I2C_POWER, HIGH); digitalWrite(I2C_POWER, HIGH);
delay(10/8); delay(20);
Wire.begin(); Wire.begin();
// Hardware detection, liste was angeschlossen ist // Hardware detection, liste was angeschlossen ist
Serial.println("I2C Hardware detection");
if ( I2C_Test(BME280_ADR) != 0xFF ) 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 ) if ( I2C_Test(0x77) != 0xFF )
@ -49,11 +62,87 @@ if ( I2C_Test(0x23) != 0xFF )
Serial.println("BH1750 gefunden"); Serial.println("BH1750 gefunden");
BH1750_Init(); BH1750_Init();
} }
Serial.println("ende");
} }
//-------------------------- //--------------------------
void MessenSensoren(void) 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