Mpu6050 na esp32-s3

esp32:
  board: esp32-s3-devkitc1-n16r8
  framework:
    type: arduino

tylko jak pisałem wcześniej - po tej zmianie minimalne czynności to

  1. Clean Build Files (kebab menu kafelka)
  2. flashowanie po kabelku (NIE można użyć OTA

jeśli 1. będzie nieskuteczne to w głównym menu GUI ESPHome buildera CLEAN ALL i oczywiście 2. pozostaje w mocy


dzięki zdjęciom wiemy, że zastosowano stabilizator LDO (a nie przetwornicę)

konkretniej to jest Torex XC6204 w wersji 3.3V (to wynika z oznaczenia 4B2K)

ale skoro napięcie jest OK to nie ma co wydziwiać, jakkolwiek w pełni bezpiecznie można zasilać płytkę napięciem 5V i jeśli nic nie pomoże jest to do rozważenia.
(ze zdjęć nie wyśledziłem wprawdzie przebiegu ścieżek, ale bazując na schemacie GY-521 wyżej i dość podobnej PCB GY-521 sądzę, że pullupy magistrali I2C są dociągnięte do 3.3V, swoją drogą sugeruje to też niska wartość ich rezystancji)

Nie mogłem wcześniej odpisywać. Sytuacja nadal bez zmian po tych informacjach. Spróbuję dzisiaj przepiąć się na inną płytkę ESP i zamówię sobie inny model czujnika. Może coś jest nie tak z czujnikiem. Zastanawiam się czy piny 8 i 9 to na pewno odpowiednie piny tej płytki dla i2c.

Też się nad tym zastanawiałem, ale w S3 nie ma szczególnych ograniczeń co do lokalizacji magistrali I2C, a wręcz GPIO8 i GPIO9 są akurat domyślne dla tego MCU w natywnym arduino.

Niestety nie udało mi się wyczarować sprzętu (szczerze mówiąc myślałem, że mam MPU6050 gdzieś w szpargałach, ale znalazłem tylko magnetometr).

możesz zwiększyć poziom logowania

logger:
  level: VERY_VERBOSE

to powinno pokazać w logu całą komunikację
żyroskop/akcelereometr się zgłasza na szynie przy jej skanowaniu (przynajmniej w starym logu) więc jakaś komunikacja jest

wrzuć aktualne logi i YAML

Z innej beczki - ja bym wyrzucił w obu miejscach z YAMLa to (nie musisz definiować id szyny, bo jest tylko jedna)

    i2c_id: MPU6050_i2c
INFO ESPHome 2026.1.3
INFO Reading configuration /config/esphome/esp32-2102.yaml...
WARNING The 'custom_components' folder is deprecated and will be removed in 2026.6.0. Please use 'external_components' instead. See https://esphome.io/components/external_components.html for more information.
INFO Starting log output from esp32-2102.local using esphome API
INFO Successfully resolved esp32-2102.local in 0.183s
INFO Successfully connected to esp32-2102 @ 192.168.0.45 in 0.008s
INFO Successful handshake with esp32-2102 @ 192.168.0.45 in 0.104s
[19:35:36.094][I][app:206]: ESPHome version 2026.1.3 compiled on 2026-02-03 19:31:48 +0100
[19:35:36.104][I][app:213]: ESP32 Chip: ESP32 r3.1, 2 core(s)
[19:35:36.104][W][app:222]: Set minimum_chip_revision: "3.1" to reduce binary size
[19:35:36.108][C][logger:316]: Logger:
[19:35:36.108][C][logger:316]:   Max Level: VERY_VERBOSE
[19:35:36.108][C][logger:316]:   Initial Level: VERY_VERBOSE
[19:35:36.125][C][logger:322]:   Log Baud Rate: 115200
[19:35:36.125][C][logger:322]:   Hardware UART: UART0
[19:35:36.126][C][logger:332]:   Task Log Buffer Size: 768 bytes
[19:35:36.168][C][i2c.idf:093]: I2C Bus:
[19:35:36.187][C][i2c.idf:094]:   SDA Pin: GPIO21
[19:35:36.187][C][i2c.idf:094]:   SCL Pin: GPIO22
[19:35:36.187][C][i2c.idf:094]:   Frequency: 200000 Hz
[19:35:36.187][C][i2c.idf:104]:   Recovery: bus successfully recovered
[19:35:36.187][C][i2c.idf:114]: Results from bus scan:
[19:35:36.187][C][i2c.idf:120]: Found device at address 0x68
[19:35:36.187][C][template.number:016]: Template Number 'Offset Pitch'
[19:35:36.205][C][template.number:049]:   Optimistic: YES
[19:35:36.206][C][template.number:452]:   Update Interval: 60.0s
[19:35:36.206][C][template.number:016]: Template Number 'Offset Roll'
[19:35:36.208][C][template.number:049]:   Optimistic: YES
[19:35:36.208][C][template.number:452]:   Update Interval: 60.0s
[19:35:36.208][C][mpu6050:085]: MPU6050:
[19:35:36.208][C][mpu6050:086]:   Address: 0x68
[19:35:36.209][E][mpu6050:088]: Communication failed
[19:35:36.209][C][mpu6050:450]:   Update Interval: 0.050s
[19:35:36.220][C][mpu6050:016]:   Acceleration X 'MPU6050 Accel X'
[19:35:36.220][C][mpu6050:016]:     State Class: 'measurement'
[19:35:36.220][C][mpu6050:016]:     Unit of Measurement: 'm/s²'
[19:35:36.220][C][mpu6050:016]:     Accuracy Decimals: 2
[19:35:36.226][C][mpu6050:030]:     Icon: 'mdi:briefcase-download'
[19:35:36.226][C][mpu6050:016]:   Acceleration Y 'MPU6050 Accel Y'
[19:35:36.226][C][mpu6050:016]:     State Class: 'measurement'
[19:35:36.226][C][mpu6050:016]:     Unit of Measurement: 'm/s²'
[19:35:36.226][C][mpu6050:016]:     Accuracy Decimals: 2
[19:35:36.240][C][mpu6050:030]:     Icon: 'mdi:briefcase-download'
[19:35:36.261][C][mpu6050:016]:   Acceleration Z 'MPU6050 Accel Z'
[19:35:36.261][C][mpu6050:016]:     State Class: 'measurement'
[19:35:36.261][C][mpu6050:016]:     Unit of Measurement: 'm/s²'
[19:35:36.261][C][mpu6050:016]:     Accuracy Decimals: 2
[19:35:36.261][C][mpu6050:030]:     Icon: 'mdi:briefcase-download'
[19:35:36.272][C][mpu6050:016]:   Gyro X 'MPU6050 Gyro X'
[19:35:36.272][C][mpu6050:016]:     State Class: 'measurement'
[19:35:36.272][C][mpu6050:016]:     Unit of Measurement: '°/s'
[19:35:36.272][C][mpu6050:016]:     Accuracy Decimals: 2
[19:35:36.276][C][mpu6050:030]:     Icon: 'mdi:screen-rotation'
[19:35:36.277][C][mpu6050:016]:   Gyro Y 'MPU6050 Gyro Y'
[19:35:36.277][C][mpu6050:016]:     State Class: 'measurement'
[19:35:36.277][C][mpu6050:016]:     Unit of Measurement: '°/s'
[19:35:36.277][C][mpu6050:016]:     Accuracy Decimals: 2
[19:35:36.286][C][mpu6050:030]:     Icon: 'mdi:screen-rotation'
[19:35:36.308][C][mpu6050:016]:   Gyro Z 'MPU6050 Gyro Z'
[19:35:36.308][C][mpu6050:016]:     State Class: 'measurement'
[19:35:36.308][C][mpu6050:016]:     Unit of Measurement: '°/s'
[19:35:36.308][C][mpu6050:016]:     Accuracy Decimals: 2
[19:35:36.308][C][mpu6050:030]:     Icon: 'mdi:screen-rotation'
[19:35:36.318][C][mpu6050:016]:   Temperature 'MPU6050 Temperature'
[19:35:36.318][C][mpu6050:016]:     State Class: 'measurement'
[19:35:36.318][C][mpu6050:016]:     Unit of Measurement: '°C'
[19:35:36.318][C][mpu6050:016]:     Accuracy Decimals: 1
[19:35:36.329][C][mpu6050:026]:     Device Class: 'temperature'
[19:35:36.329][E][component:226]:   mpu6050.sensor is marked FAILED: unspecified
[19:35:36.379][C][captive_portal:128]: Captive Portal:
[19:35:36.379][C][wifi:1304]: WiFi:
[19:35:36.379][C][wifi:1304]:   Local MAC: 20:E7:C8:68:5F:E4
[19:35:36.379][C][wifi:1304]:   Connected: YES
[19:35:36.379][C][wifi:1037]:   IP Address: 192.168.0.45
[19:35:36.383][C][wifi:1048]:   SSID: [redacted]
[19:35:36.383][C][wifi:1048]:   BSSID: [redacted]
[19:35:36.383][C][wifi:1048]:   Hostname: 'esp32-2102'
[19:35:36.383][C][wifi:1048]:   Signal strength: -57 dB ▂▄▆█
[19:35:36.383][C][wifi:1048]:   Channel: 6
[19:35:36.383][C][wifi:1048]:   Subnet: 255.255.255.0
[19:35:36.383][C][wifi:1048]:   Gateway: 192.168.0.1
[19:35:36.383][C][wifi:1048]:   DNS1: 193.47.158.254
[19:35:36.383][C][wifi:1048]:   DNS2: 193.47.158.255
[19:35:36.384][C][esphome.ota:075]: Over-The-Air updates:
[19:35:36.384][C][esphome.ota:075]:   Address: esp32-2102.local:3232
[19:35:36.384][C][esphome.ota:075]:   Version: 2
[19:35:36.384][C][esphome.ota:082]:   Password configured
[19:35:36.416][C][safe_mode:021]: Safe Mode:
[19:35:36.416][C][safe_mode:021]:   Successful after: 60s
[19:35:36.416][C][safe_mode:021]:   Invoke after: 10 attempts
[19:35:36.416][C][safe_mode:021]:   Duration: 300s
[19:35:36.416][C][safe_mode:038]:   Bootloader rollback: support unknown
[19:35:36.416][C][web_server.ota:231]: Web Server OTA
[19:35:36.436][C][api:221]: Server:
[19:35:36.436][C][api:221]:   Address: esp32-2102.local:6053
[19:35:36.436][C][api:221]:   Listen backlog: 4
[19:35:36.436][C][api:221]:   Max connections: 8
[19:35:36.441][C][api:228]:   Noise encryption: YES
[19:35:36.441][C][mdns:177]: mDNS:
[19:35:36.441][C][mdns:177]:   Hostname: esp32-2102
[19:35:36.441][V][mdns:182]:   Services:
[19:35:36.441][V][mdns:184]:   - _esphomelib, _tcp, 6053
[19:35:36.441][V][mdns:187]:     TXT: friendly_name = ESP32-2102
[19:35:36.451][V][mdns:187]:     TXT: version = 2026.1.3
[19:35:36.468][V][mdns:187]:     TXT: mac = 20e7c8685fe4
[19:35:36.468][V][mdns:187]:     TXT: platform = ESP32
[19:35:36.468][V][mdns:187]:     TXT: board = esp32dev
[19:35:36.468][V][mdns:187]:     TXT: network = wifi
[19:35:36.468][V][mdns:187]:     TXT: api_encryption = Noise_NNpsk0_25519_ChaChaPoly_SHA256
[19:35:38.522][VV][api.service:016]: on_ping_request: PingRequest {}
[19:35:38.566][VV][api.service:012]: send_message ping_response: PingResponse {}

Dalej lipa a zmieniłem płytke esp. Moze ten czujnik jest walniety?

10s to nie za długo, nie powinno być w ms?

Może i za długo (do takiego zastosowania jakie jest planowane to naprawdę zdecydowanie za długo - by wskazanie było jako-tako responsywne dla człowieka, to aktualizacje nie mogą być rzadziej niż co sekundę), ale domyślnie jest bodajże 60 sekund?

Nie wnikałem w to jak jest napisany komponent (nie jestem programistą, a w dodatku czytanie kodu nie jest czymś co uwielbiam), ale przyjąłem śmiałe założenie, że to dla sensora różnicy nie robi jak jest często czytany, a nam generowanie mniej zaśmieconego loga ułatwi debugowanie.
W dokumentacji ESPHome jest nawet zastrzeżenie, że do realnie elastycznego wykorzystania tego sprzętu trzeba napisać własny komponent…

Jakkolwiek w sieci widziałem przykłady, gdzie ktoś czyta ten sensor co 200ms i to przy magistrali zaledwie 100kHz (może policzył?, mi się nie chciało) i to na MCU ESP8266 (o jakieś 2 generacje starszym niż S3; jakkolwiek moc obliczeniowa ESP8266 i tak przekracza możliwości wczesnych komputerów osobistych) i skoro to działa (a chyba tak, skoro publikuje), to oczywiście można czytać częściej.
Tu taka dygresja - finalnie wręcz należy czytać możliwie często by móc filtrować szum wskazań i nadal mieć wyjściowe wskazanie niezbyt opóźnione względem rzeczywistości. No ale najpierw potrzeba by to w ogóle działało.

W dodatku tam, gdzie to widziałem jest ładnie opisana integracja z HA
https://van-automation.com/adding_van_tilt_sensor.html
ale w zasadzie zamiast w HA można to wszystko liczyć wewnątrz ESPHome
przykłady na zaawansowaną matematykę


a tak z innej beczki - dzięki świetnemu zdjęciu OPa widać, że płytka jest wykonana bardzo przyzwoicie, za to teraz gdy oglądałem to zdjęcie jeszcze raz by właśnie sprawdzić jakość wykonania zauważyłem to


to w ramce wygląda jak jakieś zanieczyszczenie metaliczne (opiłek?)
sugeruję więc by przedmuchać płytkę sprężonym powietrzem do elektroniki (de facto gazem w aerozolu, zwykle palnym!), ale NIE powietrzem z kompresora (które może zawierać zanieczyszczenia, które tu bardziej zaszkodzą niż pomogą!), albo nawet użyć delikatnej szczoteczki (miękkie szczoteczki do zębów są idealne do elektroniki smd).

Możesz spróbować z Tasmota

Spróbuję oczywiście waszych sugestii. Obecnie czekam na inny czujnik BMI160 bo podejrzewam że obecny jest walnięty. Co do waszych sugestii jutro nad tym siądę i podeślę logi. Dziękuję za zaangażowanie i liczę na dalszą pomoc.