Hallo,
ich würde gerne die Temerpatur mehrere Räume messen mit BMP280 Sensoren.
Meine Idee war nun, einen Arduino mit EthernetShield zu verwenden und dann die Sensordaten auf einen Webserver zu schreiben und dann via FHEM diese auszulesen.
Mit dem DTH22 Sensor funktioniert das wunderbar.
Nun habe ich folgendes Problem:
Wie kann ich mehrere BMP280 Sensor auslesen, denn die haben ja immer die gleiche Adresse (0x76)
Jetzt war meine Überlegung jeden Sensor über einen digitalen Ausgang ein und auszuschalten, so dass immer nur einer der 4 Sensoren bestromt ist.
Habe nun das Problem, dass er meine Schleife durchläuft, mir aber unplausible Werte ausgibt und sogar ab den 2 Durchlauf immer den gleichen Wert, der aber zu keinen der beiden Sensoren passt.
Mein Aufbau:
BMP280 ---> Arduino Uno
SDA ---> A5
SCL --> A4
GND --> GND
VCC Sensor 1--> auf Pin 7,
VCC Sensor 2 --> auf Pin 8
Nutze die Bibliothek von Catus.io
Mit nur einem Sensor funktioniert alles perfekt.
Anbei mein Code für 2 Sensoren
/***************************************************************************
This is a library for the BME280 humidity, temperature & pressure sensor
Designed specifically to work with the BME280 Breakout board
----> http://www.adafruit.com/products/2650
This sketch only supports the I2C bus for connection.
***************************************************************************/
#include <Wire.h>
#include "cactus_io_BME280_I2C.h"
BME280_I2C bme(0x76); // I2C using address 0x76
int Sensor_1 = 7; // LED connected to digital pin 13
int Sensor_2 = 8; // LED connected to digital pin 13
int i =1;
void setup() {
pinMode(Sensor_1, OUTPUT);
digitalWrite(Sensor_1, HIGH);
pinMode(Sensor_2, OUTPUT);
digitalWrite(Sensor_2, LOW);
Serial.begin(9600);
Serial.println("BME280 Luftdruck, Luftfeuchtigkeit, Temperatur Sensor | cactus.io");
Serial.println("-----------------------------------------------------------------");
Serial.println("");
if (!bme.begin()) {
Serial.println("Es konnte kein BME280 Sensor gefunden werden!");
Serial.println("Bitte überprüfen Sie die Verkabelung!");
while (1);
}
bme.setTempCal(-1);
Serial.println("Luftdruck\tLuftfeuchtigkeit\t\tTemperatur(Celsius)\t\tTemperatur(Fahrenheit)");
}
void loop() {
if (i==1){
//bme.begin();
digitalWrite(Sensor_2, LOW);
digitalWrite(Sensor_1, HIGH);
delay(1000);
bme.readSensor();
Serial.print("1terSenor"); Serial.print("\t\t");
Serial.print(bme.getPressure_MB()); Serial.print("\t\t"); // Pressure in millibars
Serial.print(bme.getHumidity()); Serial.print("%\t\t\t\t");
Serial.print(bme.getTemperature_C()); Serial.print(" °C\t\t\t");
Serial.print(bme.getTemperature_F()); Serial.println(" °F");
delay(1000);
i=2;
Serial.println("i:");
Serial.print(i);
Serial.println("");
}
if (i==2){
//bme.begin();
digitalWrite(Sensor_1, LOW);
digitalWrite(Sensor_2, HIGH);
delay(1000);
bme.readSensor();
Serial.print("2terSenor"); Serial.print("\t\t");
Serial.print(bme.getPressure_MB()); Serial.print("\t\t"); // Pressure in millibars
Serial.print(bme.getHumidity()); Serial.print("%\t\t\t\t");
Serial.print(bme.getTemperature_C()); Serial.print(" °C\t\t\t");
Serial.print(bme.getTemperature_F()); Serial.println(" °F");
delay(1000);
i=1;
Serial.println("i:");
Serial.print(i);
Serial.println("");
}
}
Habt ihr Ideen, Anregungen wie ich dieses Problem lösen kann?
Danke & Gruß