Ich habe ein paar Luftdrucksenoren BMP280 gekauft. Ich verwende die Arduino IDE 1.6 die die Standard Libraries SPI und Wire behinhalten. Zuätzlich die Library Adafruit Bmp280 und Sensor Es funktioniert wunderbar am SPI-Bus. Leider wird am I2C kein Senso erkannt. Mein Testprogramm findet aber was an 0x76. Die Beschreibung auf ADAfruit sagt das die Software auf 0x77 abgestimmt ist. Das wird mein Problem sein, ich weis aber nicht wo ich was editieren muss damit es funzt. Für Eure Hilfe wäre ich dankbar.
Hallo, keine Ahnung, welche BME280-Lib Du benutzt: bme.begin(0x76) sollte helfen. Gruß aus Berlin Michael
Johannes schrieb: > Das wird mein Problem sein, ich weis aber nicht wo ich was editieren > muss damit es funzt. In deinem Programm bzw. deiner Bibliothek. Das kommt drauf an, wie die aussehen. Du kannst auch den Pegel am SDO-Pin ändern.
bme.begin(0x76) Den hatte ich schon probiert. Das wars nich. Ich werd aber mal den SD0 auf Ground ziehen. Mal sehen was passiert.
Hallo, wenn es die Adafruit_BME280_Library-master ist, sollte es klappen. Falls es die BME280-master ist, da hat wohl jemand etwas gepfuscht. In der BME280_MOD-1022.h die Adresse von Hand ändern. SDO auf GND geht natürlich auch, bei meinem BME280 ist SDO nicht rausgeführt, da hätte ich erst rumkratzen müssen. Gruß aus Berlin Michael
:
Bearbeitet durch User
Johannes K. schrieb: > Ich werd aber mal den SD0 auf Ground ziehen. Mal sehen was passiert. Nichts. Falls dein Testprogramm nicht irgendwelchen Unfug ausspuckt oder du nicht noch irgendein anderes I2C-Device mit Adresse 0x76 dem Bus liegen hast, liegt der SDO vom BMP280 bereits auf Gnd. Sonst würde er nicht auf der Adresse 0x76 reagieren. Zitat aus dem Datenblatt: "Connecting SDO to GND results in slave address 1110110 (0x76);" Johannes schrieb: > Mein Testprogramm findet aber was an 0x76.
Wolfgang schrieb: > Falls dein Testprogramm nicht irgendwelchen Unfug ausspuckt oder du > nicht noch irgendein anderes I2C-Device mit Adresse 0x76 dem Bus liegen > hast, liegt der SDO vom BMP280 bereits auf Gnd. Sonst würde er nicht > auf der Adresse 0x76 reagieren. Ist nur der BMP dran. SD0 kann auch nicht von Haus aus auf GND liegen weil die SPI SChnittstelle wunderbar funzt. Ich hasse es wenn man sich über dieses Chinesenzeug für 1,50€ tagelang Gedanken machen muss. Vermutlich werde ich auf I2C verzichen und mal andere bestellen.
:
Bearbeitet durch User
Johannes K. schrieb: > SD0 kann auch nicht von Haus aus auf GND liegen > weil die SPI SChnittstelle wunderbar funzt. Das ist doch kein Argument. Warum soll auf deinem Board SDO nicht z.B. über einen Pull-Down auf Gnd gezogen sein. Guck einfach mal auf den Schaltplan oder miss nach, auf welchem Pegel SDO liegt. > Ich hasse es wenn man sich über dieses Chinesenzeug für 1,50€ tagelang > Gedanken machen muss. Da können doch die Chinesen nichts für, wenn du tagelang brauchst, um in deiner Software die I2C-Adresse auf 0x76 zu setzen.
Hallo, Wolfgang schrieb: > Johannes K. schrieb: >> Ich hasse es wenn man sich über dieses Chinesenzeug für 1,50€ tagelang >> Gedanken machen muss. > > Da können doch die Chinesen nichts für, wenn du tagelang brauchst, um in > deiner Software die I2C-Adresse auf 0x76 zu setzen. da kann ich nur zustimmen. Meist gibt es mehrere Modulvarianten aus China, Displays mit anderen Controllern und unsinnigen Beschriftungen. Meine BME280-Module haben SDO garnicht rausgeführt, Adresse ist fest 0x76, steht auch nirgends. I2C-Scan und Datenblatt des BME280 haben es mir genauso gesagt wie ihm. Ich habe 2 Libs gefunden, die Adafruit sollte bme.begin(I2C-Adresse) eigentlich kennen, default ist aber 0x77. Ich habe noch eine zweite von einer BME-Modulseite mit etwas anderen Funktionen, die habe ich letztlich genommen, weil die für den ESP8266 sauber compilierte. Die stammt von https://www.embeddedadventures.com/bme280_weather_multi_sensor_mod-1022.html Allerdings ist dort die Adresse per #define im headerfile der lib eingetragen und dort war auch die 0x77 hinterlegt. Geändert und gut. PS: Die meiste Zeit habe ich damit verbracht, ein I2C-Scan für den ESP8266 zum Laufen zu bekommen, a) weil ich zu faul war, einen Arduino rauszukramen und b) weil ich sicher sein wollte, daß der Wire-Kram auf dem ESP lief. Entweder billige China-Module kaufen und Spaß am Dazulernen haben oder "Originale" kaufen und hoffen, daß das auf Anhieb klappt. Gruß aus Berlin Michael
Danke, das wars Es steht gleich oben zwischen den auskommentierten Zeilen in der Adafruit_BMP280.h
Hallo, schön, wenn es jetzt klappt. Trotzdem etwas eigenartig: #define BME280_ADDRESS (0x77) Das ist die Vorbelegung der I2C-Adresse. bool begin(uint8_t addr = BME280_ADDRESS); Das ist die Deklaration der Funktion begin() Es wird also entweder nichts begin() erwartet, dann wird addr auf BME280_ADDRESS gesetzt oder begin(addr) dann wird addr auf den Wert gesetzt. In der Funktion wird dann mit bool Adafruit_BME280::begin(uint8_t a) { _i2caddr = a; die interne Varuable gesetzt. Ein Aufruf von begin(0x76) hätte hier also eigentlich funktionieren müssen. Aber egal... Gruß aus Berlin Michael
:
Bearbeitet durch User
Da ich eben auch vor dem Problem stand und falls es noch jemanden irgendwann interessieren sollte. Neben der I2C-Adresse wird in der Funktion: bool Adafruit_BME280::init() auch die ChipID auf 0x60 (für BME280) gelesen&geprüft. Beim BMP280 (ohne Hydrosensor) ist die ChipID aber 0x58, weshalb init() mit false abbricht. Will man den BMP280 mit der AdafruitLib für den BME280 betreiben, muss man die Library dahingehend ändern, dass die andere ChipID akzeptiert wird.
Super Romy, genau diese Info habe ich gerde gesucht... Danke, Michael aus Leverkusen
Öhm, wenn die Library heist ja nicht grundlos ... BME ... und ihr verwendet den BMP ;)
Gibt es dann auch die Möglichkeit zwei BMx280 am I2C-Bus zu betreiben, also mit Adresse 0x76 und ox77?
Hi >Gibt es dann auch die Möglichkeit zwei BMx280 am I2C-Bus zu betreiben, >also mit Adresse 0x76 und ox77? Macht es so viel Mühe im Datenblatt vom BMP280 nach zu sehen? -> 5.2 I²C Interface MfG Spess
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.