ESPHome and ESP32 with pn532 on i2c found and not reading

Hello everybody,

I’m using an ESP32 (WROOM version) with many items attached (4 relais 2 physical interruptors and one NFC reader)

The NFC reader is a pn532 on the i2c bus, previously it was attached to a memos d1 mini, and was working great. I have had to change the Wemod due the pins number for the items I needed to attach, so that’s the reason of the ESP…

This is the current whole configuration:

esphome:
  name: esp32-nfc-garage

esp32:
  board: esp32dev
  framework:
    type: arduino

# Enable logging
logger:

# Enable Home Assistant API
api:

ota:
  password: "XXXXXXXXXX"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password
  manual_ip: # Optional if you want a static IP
    static_ip: 1XX.XXX.XXX.XXXX
    gateway: 1XX.XXX.XXX.XXX
    subnet: 255.255.255.0
    dns1: 1XXX.XXX.XXX.XXX
    dns2: 8.8.8.8
  reboot_timeout: 5min

captive_portal:

########## MQTT ###############
mqtt:
  broker: XXX.XXX.XXX.XXX
  username: !secret mqtt_username
  password: !secret mqtt_password

#################################

light: 
######## led verde ########
  - platform: binary
    id: green_led
    name: "Green led"
    output: relay_led_verde
######## led rosso ########    
  - platform: binary
    id: red_led
    name: "Red led"
    output: relay_led_rosso
#################################        

output:
######## led verde ########
  - platform: gpio
    id: relay_led_verde
    pin: GPIO14
######## led rosso ########
  - platform: gpio
    id: relay_led_rosso
    pin: GPIO05
#################################

i2c:
######## i2c per NFC ########
  sda: GPIO13
  scl: GPIO22
  scan: false
  id: bus_nfc
#################################    

pn532_i2c:
######## pn532_i2c per NFC ########
  update_interval: 1s
  on_tag:
    then:
      - mqtt.publish:
          topic: "nfc-garage/reader/SENSOR"
          payload: !lambda 'return x;'
#################################    

switch:
######## rele ########
  - platform: gpio
    name: "Relè scala seminterrato"
    pin: GPIO17
    id: relay_illuminazione_scala
    inverted: true
    on_turn_on:
      - delay: 200ms
      - switch.turn_off: relay_illuminazione_scala
  - platform: gpio
    name: "Relè illuminazione garage"
    pin: GPIO16
    id: relay_illuminazione_garage
    inverted: true
  - platform: gpio
    name: "Apricancello"
    pin: GPIO19
    id: apri_cancello
    on_turn_on:
      - delay: 500ms
      - switch.turn_off: apri_cancello
  - platform: gpio
    name: "Basculante garage"
    pin: GPIO18
    id: basculante_garage
    on_turn_on:
      - delay: 500ms
      - switch.turn_off: basculante_garage
#################################    

binary_sensor:
######## interruttori ########
  - platform: gpio
    pin: 
      number: GPIO26
      mode: INPUT_PULLUP
      inverted: True
    id: interruttore_luce_garage  
    name: "Interruttore luce garage"
    filters:
      - delayed_on: 10ms 
    on_state:
      then:
        - switch.toggle: relay_illuminazione_garage
  - platform: gpio
    pin: 
      number: GPIO27
      mode: INPUT_PULLUP
      inverted: True
    id: interruttore_luce_scala  
    filters:
      - delayed_on_off: 10ms 
    name: "Interruttore luce scala seminterrato"
    on_click:
      then:
        - switch.toggle: relay_illuminazione_scala

Anyway, on the ESP the ESPHome log returns tons of errors and seems to be unable to read an NFC tag, it returns:

[21:11:40][I][app:102]: ESPHome version 2022.4.0 compiled on Apr 29 2022, 21:10:55
[21:11:40][C][wifi:491]: WiFi:
[21:11:40][C][wifi:353]:   Local MAC: XX.XX..XX..XX.XX
[21:11:40][C][wifi:354]:   SSID: [redacted]
[21:11:40][C][wifi:355]:   IP Address: XXX.XXX.XXX.XXX
[21:11:40][C][wifi:357]:   BSSID: [redacted]
[21:11:40][C][wifi:358]:   Hostname: 'esp32-nfc-garage'
[21:11:40][C][wifi:360]:   Signal strength: -53 dB ▂▄▆█
[21:11:40][C][wifi:364]:   Channel: 9
[21:11:40][C][wifi:365]:   Subnet: 255.255.255.0
[21:11:40][C][wifi:366]:   Gateway: XXX.XXX.XXX.XXX
[21:11:40][C][wifi:367]:   DNS1: XXX.XXX.XXX.XXX
[21:11:40][C][wifi:368]:   DNS2: 8.8.8.8
[21:11:40][C][logger:233]: Logger:
[21:11:40][C][logger:234]:   Level: DEBUG
[21:11:40][C][logger:235]:   Log Baud Rate: 115200
[21:11:40][C][logger:236]:   Hardware UART: UART0
[21:11:40][C][i2c.arduino:038]: I2C Bus:
[21:11:40][C][i2c.arduino:039]:   SDA Pin: GPIO13
[21:11:40][C][i2c.arduino:040]:   SCL Pin: GPIO22
[21:11:40][C][i2c.arduino:041]:   Frequency: 50000 Hz
[21:11:40][C][i2c.arduino:044]:   Recovery: bus successfully recovered
[21:11:40][I][i2c.arduino:054]: Results from i2c bus scan:
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x08
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x0A
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x0D
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x0E
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x10
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x11
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x12
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x13
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x17
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x18
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x19
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x1A
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x1F
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x20
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x21
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x22
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x24
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x25
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x26
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x27
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x2B
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x2E
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x2F
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x30
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x31
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x33
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x35
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x36
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x37
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x38
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x39
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x3A
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x3F
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x43
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x44
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x47
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x4C
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x50
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x52
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x53
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x55
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x57
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x5A
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x5C
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x5D
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x5E
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x60
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x65
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x66
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x69
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x6A
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x6B
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x6C
[21:11:40][I][i2c.arduino:060]: Found i2c device at address 0x6F
[21:11:41][I][i2c.arduino:060]: Found i2c device at address 0x70
[21:11:41][I][i2c.arduino:060]: Found i2c device at address 0x73
[21:11:41][I][i2c.arduino:060]: Found i2c device at address 0x74
[21:11:41][I][i2c.arduino:060]: Found i2c device at address 0x75
[21:11:41][I][i2c.arduino:060]: Found i2c device at address 0x76
[21:11:41][C][gpio.output:010]: GPIO Binary Output:
[21:11:41][C][gpio.output:011]:   Pin: GPIO14
[21:11:41][C][gpio.output:010]: GPIO Binary Output:
[21:11:41][C][gpio.output:011]:   Pin: GPIO5
[21:11:41][C][switch.gpio:050]: GPIO Switch 'Relè scala seminterrato'
[21:11:41][C][switch.gpio:050]:   Inverted: YES
[21:11:41][C][switch.gpio:051]:   Pin: GPIO17
[21:11:41][C][switch.gpio:073]:   Restore Mode: Restore (Defaults to OFF)
[21:11:41][C][switch.gpio:050]: GPIO Switch 'Relè illuminazione garage'
[21:11:41][C][switch.gpio:050]:   Inverted: YES
[21:11:41][C][switch.gpio:051]:   Pin: GPIO16
[21:11:41][C][switch.gpio:073]:   Restore Mode: Restore (Defaults to OFF)
[21:11:41][C][switch.gpio:050]: GPIO Switch 'Apricancello'
[21:11:41][C][switch.gpio:051]:   Pin: GPIO19
[21:11:41][C][switch.gpio:073]:   Restore Mode: Restore (Defaults to OFF)
[21:11:41][C][switch.gpio:050]: GPIO Switch 'Basculante garage'
[21:11:41][C][switch.gpio:051]:   Pin: GPIO18
[21:11:41][C][switch.gpio:073]:   Restore Mode: Restore (Defaults to OFF)
[21:11:41][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'Interruttore luce garage'
[21:11:41][C][gpio.binary_sensor:016]:   Pin: GPIO26
[21:11:41][C][gpio.binary_sensor:015]: GPIO Binary Sensor 'Interruttore luce scala seminterrato'
[21:11:41][C][gpio.binary_sensor:016]:   Pin: GPIO27
[21:11:41][C][light:104]: Light 'Green led'
[21:11:41][C][light:104]: Light 'Red led'
[21:11:41][C][pn532:347]: PN532:
[21:11:41][C][pn532:359]:   Update Interval: 1.0s
[21:11:41][C][pn532_i2c:128]:   Address: 0x24
[21:11:41][C][captive_portal:088]: Captive Portal:
[21:11:41][C][mdns:084]: mDNS:
[21:11:41][C][mdns:085]:   Hostname: esp32-nfc-garage
[21:11:41][C][ota:085]: Over-The-Air Updates:
[21:11:41][C][ota:086]:   Address: 192.168.68.5:3232
[21:11:41][C][ota:089]:   Using Password.
[21:11:41][C][api:138]: API Server:
[21:11:41][C][api:139]:   Address: 192.168.68.5:6053
[21:11:41][C][api:143]:   Using noise encryption: NO
[21:11:41][C][mqtt:065]: MQTT:
[21:11:41][C][mqtt:067]:   Server Address: 192.168.68.123:1883 (192.168.68.123)
[21:11:41][C][mqtt:068]:   Username: [redacted]
[21:11:41][C][mqtt:069]:   Client ID: [redacted]
[21:11:41][C][mqtt:071]:   Discovery prefix: 'homeassistant'
[21:11:41][C][mqtt:072]:   Discovery retain: YES
[21:11:41][C][mqtt:074]:   Topic Prefix: 'esp32-nfc-garage'
[21:11:41][C][mqtt:076]:   Log Topic: 'esp32-nfc-garage/debug'
[21:11:41][C][mqtt:079]:   Availability: 'esp32-nfc-garage/status'
[21:11:41][C][mqtt.light:077]: MQTT Light 'Green led':
[21:11:41][C][mqtt.light:078]:   State Topic: 'esp32-nfc-garage/light/green_led/state'
[21:11:41][C][mqtt.light:078]:   Command Topic: 'esp32-nfc-garage/light/green_led/command'
[21:11:41][C][mqtt.light:077]: MQTT Light 'Red led':
[21:11:41][C][mqtt.light:078]:   State Topic: 'esp32-nfc-garage/light/red_led/state'
[21:11:41][C][mqtt.light:078]:   Command Topic: 'esp32-nfc-garage/light/red_led/command'
[21:11:41][C][mqtt.switch:041]: MQTT Switch 'Relè scala seminterrato': 
[21:11:41][C][mqtt.switch:042]:   State Topic: 'esp32-nfc-garage/switch/rel_scala_seminterrato/state'
[21:11:41][C][mqtt.switch:042]:   Command Topic: 'esp32-nfc-garage/switch/rel_scala_seminterrato/command'
[21:11:41][C][mqtt.switch:041]: MQTT Switch 'Relè illuminazione garage': 
[21:11:41][C][mqtt.switch:042]:   State Topic: 'esp32-nfc-garage/switch/rel_illuminazione_garage/state'
[21:11:41][C][mqtt.switch:042]:   Command Topic: 'esp32-nfc-garage/switch/rel_illuminazione_garage/command'
[21:11:41][C][mqtt.switch:041]: MQTT Switch 'Apricancello': 
[21:11:41][C][mqtt.switch:042]:   State Topic: 'esp32-nfc-garage/switch/apricancello/state'
[21:11:41][C][mqtt.switch:042]:   Command Topic: 'esp32-nfc-garage/switch/apricancello/command'
[21:11:41][C][mqtt.switch:041]: MQTT Switch 'Basculante garage': 
[21:11:41][C][mqtt.switch:042]:   State Topic: 'esp32-nfc-garage/switch/basculante_garage/state'
[21:11:41][C][mqtt.switch:042]:   Command Topic: 'esp32-nfc-garage/switch/basculante_garage/command'
[21:11:42][C][mqtt.binary_sensor:022]: MQTT Binary Sensor 'Interruttore luce garage':
[21:11:42][C][mqtt.binary_sensor:023]:   State Topic: 'esp32-nfc-garage/binary_sensor/interruttore_luce_garage/state'
[21:11:42][C][mqtt.binary_sensor:022]: MQTT Binary Sensor 'Interruttore luce scala seminterrato':
[21:11:42][C][mqtt.binary_sensor:023]:   State Topic: 'esp32-nfc-garage/binary_sensor/interruttore_luce_scala_seminterrato/state'

Additionally, sometimes when booting up it returns an infinite list of this errors

[20:52:16][W][pn532:090]: Requesting tag read failed!

[20:52:17][W][pn532:090]: Requesting tag read failed!

[20:52:18][W][pn532:090]: Requesting tag read failed!

[20:52:19][W][pn532:090]: Requesting tag read failed!

[20:52:20][W][pn532:090]: Requesting tag read failed!

[20:52:21][W][pn532:090]: Requesting tag read failed!

[20:52:22][W][pn532:090]: Requesting tag read failed!

[20:52:23][W][pn532:090]: Requesting tag read failed!

[20:52:24][W][pn532:090]: Requesting tag read failed!

[20:52:25][W][pn532:090]: Requesting tag read failed!

[20:52:26][W][pn532:090]: Requesting tag read failed!

[20:52:27][W][pn532:090]: Requesting tag read failed!

[20:52:28][W][pn532:090]: Requesting tag read failed!

[20:52:29][W][pn532:090]: Requesting tag read failed!

[20:52:30][W][pn532:090]: Requesting tag read failed!

[20:52:31][W][pn532:090]: Requesting tag read failed!

[20:52:32][W][pn532:090]: Requesting tag read failed!

[20:52:33][W][pn532:090]: Requesting tag read failed!

[20:52:34][W][pn532:090]: Requesting tag read failed!

[20:52:35][W][pn532:090]: Requesting tag read failed!

[20:52:36][W][pn532:090]: Requesting tag read failed!

[20:52:37][W][pn532:090]: Requesting tag read failed!

[20:52:38][W][pn532:090]: Requesting tag read failed!

[20:52:39][W][pn532:090]: Requesting tag read failed!

[20:52:40][W][pn532:090]: Requesting tag read failed!

[20:52:42][W][pn532:090]: Requesting tag read failed!

[20:52:42][W][pn532:090]: Requesting tag read failed!

[20:52:43][W][pn532:090]: Requesting tag read failed!

[20:52:44][W][pn532:090]: Requesting tag read failed!

[20:52:45][W][pn532:090]: Requesting tag read failed!

[20:52:46][W][pn532:090]: Requesting tag read failed!

[20:52:47][W][pn532:090]: Requesting tag read failed!

[20:52:48][W][pn532:090]: Requesting tag read failed!

[20:52:49][W][pn532:090]: Requesting tag read failed!

[20:52:50][W][pn532:090]: Requesting tag read failed!

[20:52:51][W][pn532:090]: Requesting tag read failed!

[20:52:52][W][pn532:090]: Requesting tag read failed!

[20:52:53][W][pn532:090]: Requesting tag read failed!

[20:52:54][W][pn532:090]: Requesting tag read failed!

[20:52:55][W][pn532:090]: Requesting tag read failed!

What could be the reason of the inability to scan?

Thanks!

Hello,
i have the same problem and once the firmware is updated i am forced to interrupt and restore the power supply of the ESP8266 device and it starts working again, but sometimes it doesn’t work, likely it is a problem related to the ESPHOME firmware

[12:36:33][I][app:102]: ESPHome version 2022.6.2 compiled on Jul 30 2022, 12:32:35
[12:36:33][C][wifi:491]: WiFi:
[12:36:33][C][wifi:353]: Local MAC: 8C:AA:B5:75:DC:4F
[12:36:33][C][wifi:354]: SSID: [redacted]
[12:36:33][C][wifi:355]: IP Address: 192.168.178.64
[12:36:33][C][wifi:356]: BSSID: [redacted]
[12:36:33][C][wifi:358]: Hostname: ‘nfcingresso’
[12:36:33][C][wifi:360]: Signal strength: -54 dB ▂▄▆█
[12:36:33][C][wifi:364]: Channel: 6
[12:36:33][C][wifi:365]: Subnet: 255.255.255.0
[12:36:33][C][wifi:366]: Gateway: 192.168.178.1
[12:36:33][C][wifi:367]: DNS1: 192.168.178.1
[12:36:33][C][wifi:368]: DNS2: 0.0.0.0
[12:36:33][C][logger:275]: Logger:
[12:36:33][C][logger:276]: Level: DEBUG
[12:36:33][C][logger:277]: Log Baud Rate: 0
[12:36:33][C][logger:278]: Hardware UART: UART0
[12:36:33][C][i2c.arduino:038]: I2C Bus:
[12:36:33][C][i2c.arduino:039]: SDA Pin: GPIO3
[12:36:33][C][i2c.arduino:040]: SCL Pin: GPIO1
[12:36:33][C][i2c.arduino:041]: Frequency: 50000 Hz
[12:36:33][C][i2c.arduino:047]: Recovery: failed, SCL is held low on the bus
[12:36:33][I][i2c.arduino:054]: Results from i2c bus scan:
[12:36:33][I][i2c.arduino:056]: Found no i2c devices! ** :face_with_head_bandage:**
[12:36:33][C][template.binary_sensor:018]: Template Binary Sensor ‘Chiave non ok’
[12:36:33][C][gpio.binary_sensor:015]: GPIO Binary Sensor ‘Campanello’
[12:36:33][C][gpio.binary_sensor:016]: Pin: GPIO5
[12:36:33][C][switch.gpio:050]: GPIO Switch ‘led’
[12:36:33][C][switch.gpio:051]: Pin: GPIO0
[12:36:33][C][switch.gpio:073]: Restore Mode: Restore (Defaults to OFF)
[12:36:33][C][pn532:347]: PN532:
[12:36:33][C][pn532:359]: Update Interval: 3.0s
[12:36:33][C][pn532:362]: Tag ‘Chiave 1 ok’
[12:36:33][C][pn532:362]: Tag ‘Chiave 2 ok’
[12:36:33][C][pn532_i2c:128]: Address: 0x24
[12:36:33][C][mdns:084]: mDNS:
[12:36:33][C][mdns:085]: Hostname: nfcingresso
[12:36:33][C][ota:085]: Over-The-Air Updates:
[12:36:33][C][ota:086]: Address: nfcingresso.local:8266
[12:36:33][C][api:138]: API Server:
[12:36:33][C][api:139]: Address: nfcingresso.local:6053
[12:36:33][C][api:143]: Using noise encryption: NO

I’ve struggled with this same issue for 24 hours now. For the sake of anyone else finding this in the future - I ended up moving to SPI instead of I2C and haven’t seen an issue since.

1 Like