[ 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 :)

az esphome kvazi egy python script, ami az altalad valasztott template-ekbol osszerak egy .c forras file-t, es aztan az mar ugyanugy fordul es toltodik fel, mint amit te csinalsz.

tehat pont, hogy tanulni marha jo lehet. plusz, automatikus ingyen integraciot kapsz melle homeassistant-ba, ami a mai connected vilagban igen kellemes.

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. :(

Azt vettem észre, hogy ha az ESP USB-ről megy, és onnan kap tápot, akkor egészen pontos a DHT22. Olyan 0.1-0.2 fokkal tér el a többitől. De ha egy feltöltött 16850-es celláról megy, akkor jön ki ez a fél és egy fok közötti különbség. Pedig elvileg a 22-es a pontos. (Sajna csak egy volt itthon, csereberélni nem tudom.) Inkább az a kérdés, mit vegyek helyette, ami majd megbízható lesz, akár 3.7V-ról is? 

Túl nagy a feszültségesés a stabilizátoron vagy nem bír elég áramot szolgáltatni. Próbáld ki, hogy először mérsz egy hőmérsékletet, majd csatlakozol a Wifi-hez és elküldöd a mérést. A kapcsolódásnál maximalizálódik az áramfogyasztás.

Nekem akkuról egy másik LDO-val ment, nem a szokásos AMS1117-tel, mert neki nagyobb a dropja. Inkább BMP/BME vagy valamelyik SHT. Nekem kb. 6 éve megy egy BME280 külső hőmérőként, de már a páratartalom mérése télen mindig 100%-ot mutat folyamatosan.

Dell Optiplex 3060 Micro, Arch Linux & Niri

Én egy HDC1080-at használok egy pár éve, egészen jó egyezést mutat egy profi kalibrált műszerhez, mivel infra alapú a hőmérője, villámgyorsan reagál a legparányibb hőingadozásra. A másik az SHT31 ami remekül végzi a dolgát. (egyetlen szépséghibája a modulnak, hogy lefelejtettek róla egy felhúzó ellenállást.) A legújabb játékszerem az SHT45 ez elvileg mindegyiken túltesz pontosságban és felbontásban. Ha felszabadul a laborban a mérőkamra, akkor ezt is letesztelem alaposan. 

Jogos, én csak felhoztam még néhány példát amivel van tapasztalatom, mindegyik a hőmérséklet mellett meglepően pontosan méri a páratartalmat is, talán ezt nem hangsúlyoztam ki eléggé. Sőt az SHT sorozatból láttam már Midea és Daikin klímákban is mint elsődleges szenzort. Aliról rendelt cuccoknál volt olyan, hogy teljesen mást küldtek, vissza is kértem az árát.