# ESP32 + ESPHome - problem z I2C

**URL:** <https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099>\
**Category:** ESPHome\
**Tags:** bme280, i2c, esphome, esp32\
**Created:** [29 Grudzień 2021 08:43 UTC](https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099 "2021-12-29T08:43:51Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Autor:** ![Graffy](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/g/da6949/32.png) [@Graffy](https://forum.arturhome.pl/u/Graffy)\
**Data wpisu:** [29 Grudzień 2021 08:43 UTC](https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099/1 "2021-12-29T08:43:51Z")

</div>

Styczność z modułami ESPx mam od niedawna.  
Przez pół roku RPi obsługiwało:

- 8x przekaźnik
- 2x PWM do LEDów
- BME280 + BMP180 po I2C

Całość działała sprawnie ale był problem po zaniku zasilania, zacząłem szukać alternatywy.  
Padło na ESP32 ze względu na ilość potrzebnych wyprowadzeń.  
Mam problem z czujnikami po I2C, jeśli zaczną już działać to “świrują”

 ![bme280.resized](https://forum.arturhome.pl/uploads/default/original/2X/3/3196bc36ef03c1607f0ed25e477bace19b52866c.jpeg)

Piny wg. dokumentacji dla I2C - 21 i 22, zasilanie 3,3V.  
Często czujniki nie są w ogóle wykrywane, albo wykrywany jest tylko jeden.  
Pojawiają się wpisy w logach “Recovery: failed, SDA is held low on the bus”  
Testowałem różne konfiguracje, zmniejszałem i zwiększałem częstotliwość ale bez skutku.

Wczoraj dla testu uruchomiłem czujniki na ESP8266 z tym samym kodem w ESPHome.  
Od kilkunastu godzin działają bez żadnych błędów.

```auto
i2c:
  sda: D2
  scl: D1
  frequency: 50kHz
  scan: true
  
sensor:
  - platform: bme280
    temperature:
      name: "BME280_2 Temperature"
      oversampling: 8x
    pressure:
      name: "BME280_2 Pressure"
      oversampling: 8x
    humidity:
      name: "BME280_2 Humidity"
      oversampling: 8x
    address: 0x76
    iir_filter: 4x
    update_interval: 30s
  - platform: bmp085
    address: 0x77
    temperature:
      name: "BMP180_2 Temperature"
    pressure:
      name: "BMP180_2 Pressure"
    update_interval: 60s

```

No i teraz mam zagwozdkę, w czym problem?  
Trafił się felerny ESP32 a może obsługa w ESPHome kuleje?  
Macie jakieś pomysły gdzie szukać i jak zdiagnozować problem?

---

<div class="post-metadata">

**Autor:** ![wileu](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/wileu/32/898_2.png) [@wileu](https://forum.arturhome.pl/u/wileu)\
**Data wpisu:** [29 Grudzień 2021 11:54 UTC](https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099/2 "2021-12-29T11:54:21Z")

</div>

Podłącz sensory pojedynczo i zobacz , który przytrzymuje linie danych w niskim stanie.

---

<div class="post-metadata">

**Autor:** ![szopen](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/szopen/32/1093_2.png) [@szopen](https://forum.arturhome.pl/u/szopen)\
**Data wpisu:** [29 Grudzień 2021 11:59 UTC](https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099/3 "2021-12-29T11:59:03Z")

</div>

> [@Graffy](#):
>
> Pojawiają się wpisy w logach “Recovery: failed, SDA is held low on the bus”

To sugeruje problem ze sprzętem, a konkretniej zwarcie/upływność do masy na SDA (czyli jak rozumiem pinie GPIO21 skoro użyłeś domyślnych pinów).  
Może to też sugerować zbyt wysoką rezystancję pullup’u na tej szynie.  
Generalnie jako piny I2C w ESP32 można zdefiniować każdy “normalny” pin GPIO, więc podejrzewając uszkodzenie układu możesz zdefiniować jakiś inny pin, który ma w tabelce spod linka

> **[ESP32 Pinout Reference: Which GPIO pins should you use? | Random Nerd Tutorials](https://randomnerdtutorials.com/esp32-pinout-reference-gpios/)**
>
> The ESP32 comes with 48 GPIOs with multiple functions. This article intends to be a simple and easy to follow reference guide for the ESP32 GPIOs.

2x zielone OK oraz brak uwag

PS nie wiem jakiego modułu użyłeś, ale to

```auto
i2c:
  sda: D2
  scl: D1

```

mi pasuje tylko do takiego klona Wemosa

> **[GitHub - r0oland/ESP32\_mini\_KiCad\_Library: KiCad symbol and footprint for the...](https://github.com/r0oland/ESP32_mini_KiCad_Library)**
>
> KiCad symbol and footprint for the ESP32 Mini, the ESP32 clone of the Wemos D1 mini with more pins and more power! - GitHub - r0oland/ESP32\_mini\_KiCad\_Library: KiCad symbol and footprint for the ES...

---

<div class="post-metadata">

**Autor:** ![Graffy](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/g/da6949/32.png) [@Graffy](https://forum.arturhome.pl/u/Graffy)\
**Data wpisu:** [29 Grudzień 2021 13:01 UTC](https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099/4 "2021-12-29T13:01:15Z")

</div>

Czujniki sprawne, jaki pisałem z ESP8266 i RPi działają bezbłędnie.

Podepnę i sprawdzę dzisiaj jakieś inne piny niż GPIO21/22 w ESP32.

```auto
i2c:
  sda: D2
  scl: D1

```

Te wpisy tyczą się [NodeMCU ESP8266](https://i2.wp.com/randomnerdtutorials.com/wp-content/uploads/2019/05/ESP8266-NodeMCU-kit-12-E-pinout-gpio-pin.png), odpowiadają GPIO5 i GPIO4.

---

<div class="post-metadata">

**Autor:** ![angler](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/angler/32/31484_2.png) [@angler](https://forum.arturhome.pl/u/angler)\
**Data wpisu:** [29 Grudzień 2021 13:14 UTC](https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099/5 "2021-12-29T13:14:49Z")

</div>

ESP32 ma dwa kontrolery I2C i tu może być jakiś problem, nie znam ESPHome więc tylko zgaduję, po Twojej informacji, że z ESP8266 działa OK.  
Ta notatka myślę, że nie znalazła się w dokumentacji bez przyczyny:

 ![obraz](https://forum.arturhome.pl/uploads/default/original/2X/e/e8a16df6d60b821143dc1497bfece0612afdb77d.png)

Nie zaszkodzi pewnie dodać pull up na liniach sda, scl (jeśli nie ma ich na płytkach czujników).

 ![obraz](https://forum.arturhome.pl/uploads/default/original/2X/c/c67a4d5b8d818d496c04b0a3195ccca67858a0fb.png)

---

<div class="post-metadata">

**Autor:** ![Graffy](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/g/da6949/32.png) [@Graffy](https://forum.arturhome.pl/u/Graffy)\
**Data wpisu:** [29 Grudzień 2021 13:29 UTC](https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099/6 "2021-12-29T13:29:57Z")

</div>

Widziałem to przy tworzeniu koniga dla ESP32 ale ja zrozumiałem to tak, że jeśli korzystasz z jednej to nie musisz tego podawać.

Tak jest w opisie I2C na ESPHome:

```auto
# Example configuration entry for ESP32
i2c:
  sda: 21
  scl: 22
  scan: true
  id: bus_a

```

a poniżej

```auto
id (Optional, ID): Manually specify the ID for this I²C bus if you need multiple I²C buses.

```

Co do rezystorów to ponoć te gotowe płytki(takowe posiadam), mają już je wlutowane.

Dzięki za propozycje, dam znać czy coś pomogło.

---

<div class="post-metadata">

**Autor:** ![Graffy](https://forum.arturhome.pl/letter_avatar_proxy/v4/letter/g/da6949/32.png) [@Graffy](https://forum.arturhome.pl/u/Graffy)\
**Data wpisu:** [3 Styczeń 2022 08:17 UTC](https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099/7 "2022-01-03T08:17:50Z")

</div>

Testowałem różne konfiguracje z ESP32, zmieniałem piny na inne niż domyślne 21/22 dla I2C. Podpinałem rezystory 2.2k i 4.7k.  
Kupiłem inny egzemplarz ESP32…  
Nic nie pomogło, cały czas “wariowały” odczyty z BME280/BMP180.  
Podejrzewam kable od czujników bo są nieekranowane, zwykłe telefoniczne.  
Ewentualnie jakość wykonania tych klonów devkit-ów ESP32.  
Środowisko nie jest idealne, cewki od przekaźników, zasilacz impulsowy od TV w pobliżu.

Co nie zmienia faktu, że RPi działało w tym miejscu bez zająknięcia.  
Poddałem się i uruchomiłem ESP8266 z PCF8574, który obsługuje 8 przekaźników przez I2C.  
Odczyty z czujników od ponad 12h bez żadnych błędów.

---

<div class="post-metadata">

**Autor:** ![szopen](https://forum.arturhome.pl/user_avatar/forum.arturhome.pl/szopen/32/1093_2.png) [@szopen](https://forum.arturhome.pl/u/szopen)\
**Data wpisu:** [11 Styczeń 2024 18:17 UTC](https://forum.arturhome.pl/t/esp32-esphome-problem-z-i2c/4099/8 "2024-01-11T18:17:54Z")

</div>

Post został podzielony na nowy temat: [ESPHome oraz ESP8266 z PCF8574](https://forum.arturhome.pl/t/esphome-oraz-esp8266-z-pcf8574/11324)
