Lecteur NFC ESPHome avec buzzer : interaction ludique pour les enfants
Contexte
À la maison, mes enfants utilisent désormais des tags NFC pour interagir avec la domotique (Home Assistant).
L’idée était de rendre accessible la domotique sans avoir besoin d’écran. Avec les tags NFC, les interactions sont plus ludiques et visuelles : lorsqu’un tag est scanné, un buzzer joue un son.
Les tags ont été collés sur des petites cartes plastifiées plus facile d’accès pour les enfants.
Des couleurs et des vignettes permettent de les différencier.
En fonction de la carte utilisée, différentes actions peuvent être envisagées dépendant des équipements du logements.
Dans la chambre de mon petit dernier, chaque tag correspond à une action : allumer la lumière, changer la couleur de l’éclairage de nuit, fermer ou ouvrir les volets. Mais tout est envisageable (musique, … ).
Matériel
-
ESP32 (ou ESP8266)
-
Module NFC PN532
-
Buzzer actif
-
Quelques câbles Dupont
-
Alimentation 5V
Schéma de câblage
Le buzzer est simplement relié à D2 et une pin Ground.
Démo !
Dans cette démo, on peut voir les tags NFC interagir avec home assistant pour ouvrir des volets et pour modifier la couleur d’un bandeau led. (Le volet et le bandeau led interagissent en zigbee avec HA)
https://youtube.com/shorts/HFXtXEr4aAw?feature=share
Code ESPHOME
Le code complet est dans le repo git.
Quelques explications sur certains bloc de code yaml:
Connexion du module PN532 (SPI)
Le lecteur NFC PN532 est relié à l’ESP8266 en SPI.
À chaque badge scanné, le code :
- vérifie si le buzzer est activé via Home Assistant,
- exécute un bip,
- envoie le tag scanné à Home Assistant.
spi:
clk_pin: D5
mosi_pin: D7
miso_pin: D6
pn532_spi:
cs_pin: D1
update_interval: 1s
on_tag:
then:
- lambda: |-
if (id(buzzer_enabled_sensor).state) {
id(bip_tag).execute();
}
- text_sensor.template.publish:
id: last_tag
state: !lambda 'return x;'
- homeassistant.tag_scanned: !lambda 'return x;'
Explication :
Le on_tag se déclenche à chaque badge détecté.
homeassistant.tag_scanned permet à HA d’utiliser nativement les tags dans ses automatisations.
Le son n’est joué que si le booléen nfc_buzzer_actif est sur on.
Intégration avec Home Assistant
Une entité Home Assistant est importée pour piloter le comportement de l’ESP :
binary_sensor:
- platform: homeassistant
id: buzzer_enabled_sensor
entity_id: input_boolean.nfc_buzzer_actif
internal: true
# → active/désactive le son du buzzer
Buzzer activable depuis Home Assistant
Le buzzer est branché sur D2 (GPIO4) et contrôlé par un switch.
Le son est joué via un petit script bip_tag.
output:
- platform: gpio
pin: D2
id: buzzer_output
switch:
- platform: output
name: "Buzzer"
output: buzzer_output
id: buzzer_switch
script:
- id: bip_tag
then:
- switch.turn_on: buzzer_switch
- delay: 300ms
- switch.turn_off: buzzer_switch
Dashboard HA
On peut y voir:
-
Etats des volets et lumière
-
Etat de l’ESP
-
Bouton pour activer manuellement le buzzer
-
ID et nom du Dernier tag NFC
-
Deux toggles pour activer/désactiver le buzzer ou tout l’ESP
-
Des compteurs d’utilisation des tags
-
Des seuils max d’utilisation journalière pour éviter de trop jouer avec les volets
(Des routines journalières permettent le reset des compteurs)
Merci d’avoir lu jusque là !
Je suis preneur de vos différents retours ![]()



