AHT20+BMP280 Sensor - Communication with BMP280 failed

Hi,

Has anybody tried this board and managed to get it working?

The I2C scan can’t find either possible addresses for the BMP280 and I get the following errors.
[22:55:15][E][component:112]: Component bmp280.sensor was marked as failed.
[22:55:19][E][bmp280.sensor:102]: Communication with BMP280 failed!

The AHT20 can communicate, with a warning. That proves the I2C bus is ok.
[22:55:15][D][aht10:083]: AHT10 is busy, waiting...

My setup:

  • Home Assistant
    • Core: 2022.8.0
    • OS: 8.4
    • ESPHome: 2022.6.2
  • ESP8266: D1 Mini (known working board)
    • SCL on D1
    • SDA on D2
    • I2C at 100kHz
  • AHT20+BMP280
    • VCC: 3V3
    • Onboard 4k7Ω I2C pullups

Key points

  • My D1 Mini has been used before and I know it works.
  • I tried two different AHT20+BMP280 boards after seeing forum posts about faulty BMP280 chips, but both my boards failed.
  • The AHT20 is communicating so I know my I2C bus is configured correctly.
  • For the BMP280 address, I’ve tried 0x77 and 0x76. Nether addresses are found by the I2C scan in the logs.
  • I’ve also tried BME280 in case the E/P was a typo.
  • I started with 50kHz

Code

################################################################################
# Define variables
################################################################################

substitutions:
  # Device Properties
  devicename: dev-air-quality
  friendly_name: Dev-Air-Quality
  global_update_interval: 1min

  # Pinout
  # Wake        D0  # GPIO16  - Wake (deep sleep) - high at boot.
  pin_i2c_scl:  D1  # GPIO5
  pin_i2c_sda:  D2  # GPIO4
  # Reserved    D3  # GPIO0   - biased high - connected to flash button 
  # Reserved    D4  # GPIO2   - biased high - connected to on-board LED
  pin_rx:       D5  # GPIO14
  pin_tx:       D6  # GPIO12
  pin_dht:      D7  # GPIO13
  #             D8  # GPIO15  - biased low
  #             RX  # GPIO3
  #             TX  # GPIO1   - debug output at boot
  #             A0  # ADC0


################################################################################
# Define Device
################################################################################

esphome:
  name: $devicename
  
  on_boot:

esp8266:
  board: d1_mini

# Enable logging
logger:
  level: VERY_VERBOSE #DEBUG #WARN

# Enable Over-The-Air flashing
ota:
  #safe_mode: True
  password: !secret ota_password


################################################################################
# Wireless Access
################################################################################

wifi:
  id: wifi_client
  power_save_mode: LIGHT
  fast_connect: true # Skip wifi scan to save time.
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  
  # Set a static IP address.
  manual_ip:
    static_ip: < redacted >
    gateway: < redacted >
    subnet: < redacted >
  use_address: < redacted >



################################################################################
# Home Assistant Connection
################################################################################

api:
  id: api_client
  password: !secret api_password


################################################################################
# Communication Protocols
################################################################################

i2c:
  sda: $pin_i2c_sda
  scl: $pin_i2c_scl
  id: bus_i2c
  scan: True
  frequency: 100kHz # Defaults to 50kHz


################################################################################
# Functionality
################################################################################

# Air Quality, Temperature and Humidity.
sensor:
  # AHT20
  - platform: aht10
    temperature:
      name: "$friendly_name Temperature AHT"
    humidity:
      name: "$friendly_name Humidity AHT"
    update_interval: $global_update_interval
  
  # BMP280    (BMP doesn't have humidity but BME does.)
  - platform: bmp280
    temperature:
      name: "$friendly_name Temperature BMP"
      oversampling: 16x
    pressure:
      name: "$friendly_name Pressure BMP"
    address: 0x77
    update_interval: $global_update_interval

Logs (extracted relevant parts)

[22:55:13][I][i2c.arduino:161]: Performing I2C bus recovery
[22:55:13][V][i2c.arduino:033]: Scanning i2c bus for active devices...
...
[22:55:14][VV][i2c.arduino:126]: 0x38 TX 
...
[22:55:14][VV][i2c.arduino:126]: 0x76 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x77 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
...
[22:55:15][C][bmp280.sensor:056]: Setting up BMP280...
[22:55:15][VV][i2c.arduino:126]: 0x77 TX D0
[22:55:15][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:15][E][component:112]: Component bmp280.sensor was marked as failed.
...
[22:55:19][C][bmp280.sensor:098]: BMP280:
[22:55:19][C][bmp280.sensor:099]:   Address: 0x77
[22:55:19][E][bmp280.sensor:102]: Communication with BMP280 failed!
[22:55:19][C][bmp280.sensor:111]:   IIR Filter: OFF
[22:55:19][C][bmp280.sensor:112]:   Update Interval: 60.0s
[22:55:19][C][bmp280.sensor:114]:   Temperature 'Dev-Air-Quality Temperature BMP'
[22:55:19][C][bmp280.sensor:114]:     Device Class: 'temperature'
[22:55:19][C][bmp280.sensor:114]:     State Class: 'measurement'
[22:55:19][C][bmp280.sensor:114]:     Unit of Measurement: '°C'
[22:55:19][C][bmp280.sensor:114]:     Accuracy Decimals: 1
[22:55:19][C][bmp280.sensor:115]:     Oversampling: 16x
[22:55:19][C][bmp280.sensor:116]:   Pressure 'Dev-Air-Quality Pressure BMP'
[22:55:19][C][bmp280.sensor:116]:     Device Class: 'pressure'
[22:55:19][C][bmp280.sensor:116]:     State Class: 'measurement'
[22:55:19][C][bmp280.sensor:116]:     Unit of Measurement: 'hPa'
[22:55:19][C][bmp280.sensor:116]:     Accuracy Decimals: 1
[22:55:19][C][bmp280.sensor:117]:     Oversampling: 16x

Logs (VERY_Verbose)

INFO Reading configuration /config/esphome/dev-air-quality.yaml...
INFO Generating C++ source...
INFO Compiling app...
Processing dev-air-quality (board: d1_mini; framework: arduino; platform: platformio/espressif8266 @ 3.2.0)
--------------------------------------------------------------------------------
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
Dependency Graph
|-- <ESP8266WiFi> 1.0
|-- <ESP8266mDNS> 1.2
|-- <Wire> 1.0
Compiling /data/dev-air-quality/.pioenvs/dev-air-quality/src/main.cpp.o
Linking /data/dev-air-quality/.pioenvs/dev-air-quality/firmware.elf
RAM:   [====      ]  43.1% (used 35276 bytes from 81920 bytes)
Flash: [====      ]  38.0% (used 396601 bytes from 1044464 bytes)
Building /data/dev-air-quality/.pioenvs/dev-air-quality/firmware.bin
esp8266_copy_factory_bin(["/data/dev-air-quality/.pioenvs/dev-air-quality/firmware.bin"], ["/data/dev-air-quality/.pioenvs/dev-air-quality/firmware.elf"])
========================= [SUCCESS] Took 16.99 seconds =========================
INFO Successfully compiled program.
esptool.py v3.3.1
Serial port /dev/ttyUSB0
Connecting....
Chip is ESP8266EX
Features: WiFi
Crystal is 26MHz
MAC: [redacted]
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Flash will be erased from 0x00000000 to 0x00061fff...
Compressed 400752 bytes to 277659...
Wrote 400752 bytes (277659 compressed) at 0x00000000 in 6.8 seconds (effective 472.7 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...
INFO Successfully uploaded program.
INFO Starting log output from /dev/ttyUSB0 with baud rate 115200
[22:55:13]\x90nn$`nr\x8e\x92\x92nrr\x92`p\xf2n\x82r\x8cbbn\xe2nb\xc4\xf2nn'l`\x90nn$`nr\x8e\x92\x92nrl`r\x92\x92nrl`\x9c\x8c$\x9el`\xfc\x82n\x92`
[22:55:13]SDK:2.2.2-dev(38a443e)/Core:3.0.2=30002000/lwIP:STABLE-2_1_2_RELEASE/glue:1.2-48-g7421258/BearSSL:6105635
[22:55:13][I][logger:243]: Log initialized
[22:55:13][C][ota:461]: There have been 0 suspected unsuccessful boot attempts.
[22:55:13][I][app:029]: Running through setup()...
[22:55:13][V][app:030]: Sorting components by setup priority...
[22:55:13][I][i2c.arduino:161]: Performing I2C bus recovery
[22:55:13][V][i2c.arduino:033]: Scanning i2c bus for active devices...
[22:55:13][VV][i2c.arduino:126]: 0x08 TX 
[22:55:13][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:13][VV][i2c.arduino:126]: 0x09 TX 
[22:55:13][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:13][VV][i2c.arduino:126]: 0x0A TX 
[22:55:13][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:13][VV][i2c.arduino:126]: 0x0B TX 
[22:55:13][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:13][VV][i2c.arduino:126]: 0x0C TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x0D TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x0E TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x0F TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x10 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x11 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x12 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x13 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x14 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x15 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x16 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x17 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x18 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x19 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x1A TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x1B TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x1C TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x1D TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x1E TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x1F TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x20 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x21 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x22 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x23 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x24 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x25 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x26 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x27 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x28 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x29 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x2A TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x2B TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x2C TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x2D TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x2E TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x2F TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x30 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x31 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x32 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x33 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x34 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x35 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x36 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x37 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x38 TX 
[22:55:14][VV][i2c.arduino:126]: 0x39 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x3A TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x3B TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x3C TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x3D TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x3E TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x3F TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x40 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x41 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x42 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x43 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x44 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x45 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x46 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x47 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x48 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x49 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x4A TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x4B TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x4C TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x4D TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x4E TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x4F TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x50 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x51 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x52 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x53 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x54 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x55 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x56 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x57 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x58 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x59 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x5A TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x5B TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x5C TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x5D TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x5E TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x5F TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x60 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x61 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x62 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x63 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x64 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x65 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x66 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x67 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x68 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x69 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x6A TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x6B TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x6C TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x6D TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x6E TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x6F TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x70 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x71 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x72 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x73 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x74 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x75 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x76 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][i2c.arduino:126]: 0x77 TX 
[22:55:14][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:14][VV][scheduler:057]: set_interval(name='', interval=60000, offset=27946)
[22:55:15][E][main:191]: Booted
[22:55:15][C][aht10:030]: Setting up AHT10...
[22:55:15][VV][i2c.arduino:126]: 0x38 TX 00E1
[22:55:15][VV][i2c.arduino:126]: 0x38 TX 00
[22:55:15][VV][i2c.arduino:102]: 0x38 RX 18
[22:55:15][VV][i2c.arduino:102]: 0x38 RX 18
[22:55:15][V][aht10:060]: AHT10 calibrated
[22:55:15][VV][scheduler:057]: set_interval(name='update', interval=60000, offset=22824)
[22:55:15][C][bmp280.sensor:056]: Setting up BMP280...
[22:55:15][VV][i2c.arduino:126]: 0x77 TX D0
[22:55:15][VV][i2c.arduino:150]: TX failed: not acknowledged
[22:55:15][E][component:112]: Component bmp280.sensor was marked as failed.
[22:55:15][VV][scheduler:057]: set_interval(name='update', interval=60000, offset=1448)
[22:55:15][C][wifi:037]: Setting up WiFi...
[22:55:15][V][wifi_esp8266:058]: Enabling STA.
[22:55:15]mode : sta(ac:0b:fb:cf:ef:20)
[22:55:15]add if0
[22:55:15][V][wifi_esp8266:534]: Event: Changed Mode old=OFF new=STA
[22:55:15]wifi evt: 8
[22:55:15]sleep enable,type: 1
[22:55:15][I][wifi:248]: WiFi Connecting to 'Ghostwater'...
[22:55:15][V][wifi:250]: Connection Params:
[22:55:15][V][wifi:251]:   SSID: 'Ghostwater'
[22:55:15][V][wifi:256]:   BSSID: Not Set
[22:55:15][V][wifi:274]:   Password: [redacted]
[22:55:15][V][wifi:281]:   Channel: Not Set
[22:55:15][V][wifi:285]:   [redacted]
[22:55:15][V][wifi:290]:   Hidden: NO
[22:55:15][VV][scheduler:195]: Running interval '' with interval=60000 last_execution=4294880493 (now=1278)
[22:55:15][VV][scheduler:195]: Running interval 'update' with interval=60000 last_execution=4294885649 (now=1278)
[22:55:15][VV][i2c.arduino:126]: 0x38 TX 00AC3300
[22:55:15][VV][aht10:075]: Attempt 0 at   1301
[22:55:15][VV][i2c.arduino:102]: 0x38 RX 98000005E347
[22:55:15][D][aht10:083]: AHT10 is busy, waiting...
[22:55:15][VV][aht10:075]: Attempt 1 at   1336
[22:55:15][VV][i2c.arduino:102]: 0x38 RX 1C5E7CC5E336
[22:55:15][VV][aht10:099]: Answer at   1370
[22:55:15][V][sensor:074]: 'Dev-Air-Quality Temperature AHT': Received new state 23.594284
[22:55:15][D][sensor:124]: 'Dev-Air-Quality Temperature AHT': Sending state 23.59428 °C with 2 decimals of accuracy
[22:55:15][V][sensor:074]: 'Dev-Air-Quality Humidity AHT': Received new state 36.909103
[22:55:15][D][sensor:124]: 'Dev-Air-Quality Humidity AHT': Sending state 36.90910 % with 2 decimals of accuracy
[22:55:15][V][component:199]: Component aht10.sensor took a long time for an operation (0.11 s).
[22:55:15][V][component:200]: Components should block for at most 20-30ms.
[22:55:16][V][wifi_esp8266:492]: Event: Changed AuthMode old=OPEN new=WPA2 PSK
[22:55:16]wifi evt: 2
[22:55:17]scandone
[22:55:18]state: 0 -> 2 (b0)
[22:55:18]state: 2 -> 3 (0)
[22:55:18]state: 3 -> 5 (10)
[22:55:18]add 0
[22:55:18]aid 2
[22:55:18]cnt 
[22:55:18]
[22:55:18]connected with Ghostwater, channel 11
[22:55:18]ip:[redacted]
[22:55:18]ip:[redacted]
[22:55:18][V][wifi_esp8266:468]: Event: Connected ssid='Ghostwater' bssid=C6:F5:47:3F:BD:18 channel=11
[22:55:18]wifi evt: 0
[22:55:18][V][wifi_esp8266:507]: Event: Got IP static_ip=[redacted] gateway=[redacted] netmask=[redacted]
[22:55:18]wifi evt: 3
[22:55:18][I][wifi:505]: WiFi Connected!
[22:55:18][C][wifi:353]:   Local MAC: [redacted]
[22:55:18][C][wifi:354]:   SSID: [redacted]
[22:55:18][C][wifi:355]:   IP Address: [redacted]
[22:55:18][C][wifi:356]:   BSSID: [redacted]
[22:55:18][C][wifi:358]:   Hostname: 'dev-air-quality'
[22:55:18][C][wifi:360]:   Signal strength: -74 dB ▂▄▆█
[22:55:18][C][wifi:364]:   Channel: 11
[22:55:18][C][wifi:365]:   Subnet: [redacted]
[22:55:18][C][wifi:366]:   Gateway: [redacted]
[22:55:18][C][wifi:367]:   DNS1: [redacted]
[22:55:18][C][wifi:368]:   DNS2: [redacted]
[22:55:18][C][ota:085]: Over-The-Air Updates:
[22:55:18][C][ota:086]:   Address: [redacted]
[22:55:18][C][ota:089]:   Using Password.
[22:55:18][C][api:025]: Setting up Home Assistant API server...
[22:55:18][I][app:062]: setup() finished successfully!
[22:55:19][I][app:102]: ESPHome version 2022.6.2 compiled on Aug 29 2022, 22:54:51
[22:55:19][C][wifi:491]: WiFi:
[22:55:19][C][wifi:353]:   Local MAC: [redacted]
[22:55:19][C][wifi:354]:   SSID: [redacted]
[22:55:19][C][wifi:355]:   IP Address: [redacted]
[22:55:19][C][wifi:356]:   BSSID: [redacted]
[22:55:19][C][wifi:358]:   Hostname: 'dev-air-quality'
[22:55:19][C][wifi:360]:   Signal strength: -74 dB ▂▄▆█
[22:55:19][C][wifi:364]:   Channel: 11
[22:55:19][C][wifi:365]:   Subnet: [redacted]
[22:55:19][C][wifi:366]:   Gateway: [redacted]
[22:55:19][C][wifi:367]:   DNS1: [redacted]
[22:55:19][C][wifi:368]:   DNS2: [redacted]
[22:55:19][C][logger:275]: Logger:
[22:55:19][C][logger:276]:   Level: VERY_VERBOSE
[22:55:19][C][logger:277]:   Log Baud Rate: 115200
[22:55:19][C][logger:278]:   Hardware UART: UART0
[22:55:19][C][i2c.arduino:038]: I2C Bus:
[22:55:19][C][i2c.arduino:039]:   SDA Pin: GPIO4
[22:55:19][C][i2c.arduino:040]:   SCL Pin: GPIO5
[22:55:19][C][i2c.arduino:041]:   Frequency: 100000 Hz
[22:55:19][C][i2c.arduino:044]:   Recovery: bus successfully recovered
[22:55:19][I][i2c.arduino:054]: Results from i2c bus scan:
[22:55:19][I][i2c.arduino:060]: Found i2c device at address 0x38
[22:55:19][C][aht10:135]: AHT10:
[22:55:19][C][aht10:136]:   Address: 0x38
[22:55:19][C][aht10:140]:   Temperature 'Dev-Air-Quality Temperature AHT'
[22:55:19][C][aht10:140]:     Device Class: 'temperature'
[22:55:19][C][aht10:140]:     State Class: 'measurement'
[22:55:19][C][aht10:140]:     Unit of Measurement: '°C'
[22:55:19][C][aht10:140]:     Accuracy Decimals: 2
[22:55:19][C][aht10:141]:   Humidity 'Dev-Air-Quality Humidity AHT'
[22:55:19][C][aht10:141]:     Device Class: 'humidity'
[22:55:19][C][aht10:141]:     State Class: 'measurement'
[22:55:19][C][aht10:141]:     Unit of Measurement: '%'
[22:55:19][C][aht10:141]:     Accuracy Decimals: 2
[22:55:19][C][bmp280.sensor:098]: BMP280:
[22:55:19][C][bmp280.sensor:099]:   Address: 0x77
[22:55:19][E][bmp280.sensor:102]: Communication with BMP280 failed!
[22:55:19][C][bmp280.sensor:111]:   IIR Filter: OFF
[22:55:19][C][bmp280.sensor:112]:   Update Interval: 60.0s
[22:55:19][C][bmp280.sensor:114]:   Temperature 'Dev-Air-Quality Temperature BMP'
[22:55:19][C][bmp280.sensor:114]:     Device Class: 'temperature'
[22:55:19][C][bmp280.sensor:114]:     State Class: 'measurement'
[22:55:19][C][bmp280.sensor:114]:     Unit of Measurement: '°C'
[22:55:19][C][bmp280.sensor:114]:     Accuracy Decimals: 1
[22:55:19][C][bmp280.sensor:115]:     Oversampling: 16x
[22:55:19][C][bmp280.sensor:116]:   Pressure 'Dev-Air-Quality Pressure BMP'
[22:55:19][C][bmp280.sensor:116]:     Device Class: 'pressure'
[22:55:19][C][bmp280.sensor:116]:     State Class: 'measurement'
[22:55:19][C][bmp280.sensor:116]:     Unit of Measurement: 'hPa'
[22:55:19][C][bmp280.sensor:116]:     Accuracy Decimals: 1
[22:55:19][C][bmp280.sensor:117]:     Oversampling: 16x
[22:55:19][C][mdns:084]: mDNS:
[22:55:19][C][mdns:085]:   Hostname: dev-air-quality
[22:55:19][V][mdns:086]:   Services:
[22:55:19][V][mdns:088]:   - _esphomelib, _tcp, 6053
[22:55:19][V][mdns:090]:     TXT: version = 2022.6.2
[22:55:19][V][mdns:090]:     TXT: mac = [redacted]
[22:55:19][V][mdns:090]:     TXT: platform = ESP8266
[22:55:19][V][mdns:090]:     TXT: board = d1_mini
[22:55:19][C][ota:085]: Over-The-Air Updates:
[22:55:19][C][ota:086]:   Address: [redacted]
[22:55:19][C][ota:089]:   Using Password.
[22:55:19][C][api:138]: API Server:
[22:55:19][C][api:139]:   Address: [redacted]:6053
[22:55:19][C][api:143]:   Using noise encryption: NO

I’ve asked the seller how the BMP280 SDO pin is connected. Just waiting on their response.
Connecting SDO to VDDIO sets the I2C address to 0x77.
Connecting SDO to GND sets the I2C address to 0x76.
If SDO is left floating, the I2C address is undefined, which may explain why it doesn’t show up in the I2C scan.

1 Like

I also followed the advice from this comment and tried both 0x77 and 0x76 after a hard power cycle, but I had no luck.

I pulled the components off one of my boards and found that pin 5 of the BMP280 is connected to VDDIO which means the I2C address is definitely 0x77. The BMP280 still can’t be detected on the I2C bus though (obviously with the boards I didn’t pull the components off).
SDA and SCL on the BMP280 are also connected the right way around.
VDD and VDDIO are connected together, and both are powered with 3V3.

I have a solution.

Do not buy AHT20+BMP280 from the AliExpress seller PCBFUN Store. Their support is terrible, and all 6 of the boards I purchased did not work.

Instead, do buy AHT20+BMP280 from the AliExpress seller MT Technology Co., Ltd.. Their support is ok, and their boards worked. I now have AHT20 and BMP280 sensors working, and all I had to do was swap out the old module for a new one.

I bought 6 pieces from AliExpress seller A+A+A Store.

Four arrived fully working, 1 had short circuit between VDD and SDA, 1 shows only AHT20 (BMP280 does not appear in scan).

I’ve just contacted the seller, no response yet.

1 Like

Just if anyone comes across this thread.
I’ve bought the combined sensor from Aliexpress and working perfectly.
Sorry I can’t remember how to post code correctly.
The codes I used is:

sensor:

  • platform: bmp280_i2c
    temperature:
    name: “Outside Temperature”
    oversampling: 16x
    pressure:
    name: “Outside Pressure”
    address: 0x77
    update_interval: 60s
  • platform: aht10
    variant: AHT20
    temperature:
    name: “S3 Temperature”
    humidity:
    name: “S3 Humidity”
    update_interval: 60s