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.

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.