[ Megoldva ] ESP32 (Heltec) BME280

Van egy Heltec Wifi Kit 32 eszközöm, amivel szeretnék egy BME280 szenzort életrekelteni.

Természetesen az összes példakód, amiket találtam mégcsak le sem fordulnak. Megpróbáltam a kóddarabokból összerakni egy működő programot, egyelőre sikertelenül.

Az OLED kijelsző  a 15-ös és 4-es GPIO-t használja az I2C kommunikációra. A BME280 is I2C-vel kommunikálna. Próbáltam itt is a 15 és 4-es GPIO-ra kötni, de próbáltam saját GPIO-kat is adni neki (5,17). Egyikkel sem sikerült életet lehelnem bele.

Próbáltam az I2C órajelét levenni 100000-ról 1000-re, de ez sem segített.

Mivel konkrét hibaüezenetem nincs, csak annyi, hogy nem tudja inicializálni a BME280-at, bárminemű ötletnek örülnék, ami előbbre vihet.

Megoldás: A szenzos nem BME280 hanem BMP280 volt :(

Hozzászólások

Alapvetően érdekelne, hogy miért nem megy, nem haragudnék, ha saját kódot össze tudnék rakni, de most még azzal is megelégednék, ha bárhogy elindulna.

Ezt az esphome cuccost csak feltöltöm a Heltec Wifi Kit 32-re, és már megy is vele minden? Mert ha ezt is ki kell tanulni, akkor nem látom még az előnyét a közvetlen programozáshoz képest.

feltoltod, aztan van egy webes interfesz, ami dockerben fut, a neve ESPHome Device Builder

 

https://esphome.io/guides/getting_started_command_line/#esphome-device-…

 

de van CLI opcio is (python az egesz): https://esphome.io/guides/cli/

 

Ha mar a firmware rajta van, onnantol szimpa yaml config fajlal allithatod be, hogy mit csinaljon. Ha lattat mar eletedben yaml -t (nyilvan lattal :) ) kb fel ora megerteni hogyan mukodik :)

Próbálj ki egy I2C scannert (BME280 kihúzva egyelőre): https://learn.adafruit.com/scanning-i2c-addresses/arduino

Ha az OLED címe 0x77 vagy 0x76, akkor valamelyik lábat a BME280-nál össze kell kötnöd egy másikkal, hogy megváltozzon a címe: https://www.bosch-sensortec.com/media/boschsensortec/downloads/datashee…

Bedugva a BME280-at (ugyanazokra a lábakra mint az OLED) látszania kell a scanneren.

Utána ezt a libet javaslom, faék egyszerű: https://docs.arduino.cc/libraries/pocketbme280/

Ha vannak nagyjából OK számaid ezzel, utána lehet kalibrálni: https://learn.adafruit.com/calibrating-sensors/so-how-do-we-calibrate

 

A fent említett i2s scannert és a pocketbme280 példáit is próbáltam, lefordulnak. Ha neked nem jó, vszeg a fordítód beállításaiban van a hiba.

Ezt kifelejtettem:

WIRE.begin();

helyett

WIRE.begin(SDA_PIN, SCL_PIN);

 

Ha jól látom, valamelyik libjükben meg is van adva, hogy melyek az SDA_OLED és SCL_OLED lábak, ezt lehet, hogy fel is tudod használni: https://docs.heltec.org/en/node/esp32/wifi_kit_32/example.html

Abból a példából az is látható, hogy SSD1306-os az OLED kijelző, annak a címe az interneten fellelhető "0x3C, but it can also be changed to 0x3D", tehát szinte kizárt, hogy az legyen a gond.

Inkább a lábkiosztás lesz, azzal annyi a szívás, hogy van az ESP32 szerint egy számozás a lábakra, aztán a dev board készítői elnevezik ezeket, pl. 8-> GPIO0, 9->GPIO21. 

Ebben mar van felhuzoellenallas? Ha nincs, 1-1, mondjuk 4k7-es ellenallast tennek a tap es a 2 adatlab koze. (konkret ertek a rendszer kapacitasatol is fugg, kiindulasnak jo lesz)

Ha a hardware layer jo, akkor mennek feljebb.

Oszcilloszkopod/logikai analizatorod van keznel? Abbol is kiderulhet, hogy egyaltalan probal-e kommunikalni.

A strange game. The only winning move is not to play. How about a nice game of chess?

Szerkesztve: 2025. 10. 17., p – 12:37

Ha a webes interfesz jobban fekszik neked, ott a Tasmota is, ott nem kell allitani semmit....

https://tasmota.github.io/docs/

 

Itt siman ratoltheted a board-ra:

https://tasmota.github.io/install/

 

A boardodhoz van template, csak rahuzod es kesz.

https://templates.blakadder.com/heltec_wifi_kit_32.html

 

Ha ez megvan, megy a display, akkor mar csak rahuzod az i2s buszra a BME280-at

 

https://tasmota.github.io/docs/BME280/

Ebben a doksiban (feltéve, hogy ugyanarról a panelről beszélünk) az OLED I2C vonalak az ESP32-S3 procin a GPIO17 - OLED_SDA és GPIO18 - OLED_SCL vonalakra van kötve ami csak két tesztpontra van kihozva, de nincs kihozva a J2/J3 tüskesorra. A második I2C port a GPIO36/37 már foglalt, mert ott a akkutöltő vezérlése van. 

Ha ráforrasztasz a tesztpontokra egy vezetékpárat, akkor osztozhat a BME280 a kijelzővel az I2C buszon, de a kijelzőnek kell valami fura Reset procedúra, hogy a scan folyamat sikeresen lefusson. Itt már van 2x10k felhúzó ellenállás.

A második lehetőség a "bitbang" I2C, vagy software emulated I2C amit bármelyik szabad GPIO lábra pakolhatsz. Kicsit lassabb, bizonytalanabb, de egy BME280-nak tökéletesen megfelel, csak ne feledd a két 10k felhúzó ellenállást.

Én a  WiFi LoRa V3 használom, ott még kevesebb szabad GPIO van.

Szerkesztve: 2025. 10. 18., szo – 07:44

Köszönöm a segítségeket.

Az I2C scannerrel sikerült a szenzor  címét megtalálni: 0x76. Ennek ellenére nem működött. Végül kiderült, hogy a baj az, hogy ez nem BME 280, hanem BMP 280. A páratartalmon kívül végül közvetlen I2C parancsokon keresztül életre kelt, de mivel nekem a páratartalommérés miatt kellett volna, így project lezárva. :(

Helyette DHT22 lesz.

Én ott rontottam el, hogy a felirat alapján kerestem rá, mi ez, és elhittem, hogy BME. Hát, nem az volt. de legalább a többi funkciója megy.

A nagyobb baj most meg az, hogy a DHT22 (klón persze) 1 fokkal magasabb hőmérsékletet mér, mint az összes többi hőmérő. Így persze a páratartalom értéke sem helyes. :(