mirror of
https://github.com/esphome/esphome-docs.git
synced 2024-12-25 17:17:54 +01:00
94 lines
3.4 KiB
ReStructuredText
94 lines
3.4 KiB
ReStructuredText
PN532 NFC/RFID Controller Hub
|
|
=============================
|
|
|
|
.. seo::
|
|
:description: Instructions for setting up PN532 NFC tag readers in ESPHome
|
|
:image: pn532.jpg
|
|
:keywords: PN532, NFC, RFID
|
|
|
|
The ``pn532`` component allows you to use PN532 NFC/RFID controllers
|
|
(`datasheet <https://cdn-shop.adafruit.com/datasheets/pn532ds.pdf>`__, `adafruit <https://www.adafruit.com/product/364>`__)
|
|
with ESPHome. This component is a global hub that establishes the connection to the PN532 via :ref:`SPI <spi>` and
|
|
outputs its data. Using the :doc:`PN532 binary sensors </components/binary_sensor/pn532>` you can then
|
|
create individual binary sensors that track if an NFC/RFID tag is currently detected by the PN532.
|
|
|
|
.. figure:: binary_sensor/images/pn532-full.jpg
|
|
:align: center
|
|
:width: 60.0%
|
|
|
|
See :ref:`pn532-setting_up_tags` for information on how to setup individual binary sensors for this component.
|
|
|
|
As the communication with the PN532 is done using SPI for this integration, you need to set the two switches on
|
|
the board to the SPI mode (usually by setting the first one to OFF and the second one to ON). Additionally, you need
|
|
to have an :ref:`spi bus <spi>` in your configuration with both the **miso_pin** and **mosi_pin** set.
|
|
|
|
.. code-block:: yaml
|
|
|
|
# Example configuration entry
|
|
spi:
|
|
clk_pin: D0
|
|
miso_pin: D1
|
|
mosi_pin: D2
|
|
|
|
pn532:
|
|
cs_pin: D3
|
|
update_interval: 1s
|
|
|
|
binary_sensor:
|
|
- platform: pn532
|
|
uid: 74-10-37-94
|
|
name: "PN532 NFC Tag"
|
|
|
|
Configuration variables:
|
|
------------------------
|
|
|
|
- **cs_pin** (**Required**, :ref:`Pin Schema <config-pin_schema>`): The pin on the ESP that the chip select line
|
|
is connected to.
|
|
- **update_interval** (*Optional*, :ref:`config-time`): The duration of each scan on the PN532. This affects the
|
|
duration that the individual binary sensors stay active when they're found.
|
|
If a device is not found within this time window, it will be marked as not present. Defaults to 1s.
|
|
- **on_tag** (*Optional*, :ref:`Automation <automation>`): An automation to perform
|
|
when a tag is read. See :ref:`pn532-on_tag`.
|
|
- **spi_id** (*Optional*, :ref:`config-id`): Manually specify the ID of the :ref:`SPI Component <spi>` if you want
|
|
to use multiple SPI buses.
|
|
- **id** (*Optional*, :ref:`config-id`): Manually specify the ID for this component.
|
|
|
|
.. figure:: binary_sensor/images/pn532-spi.jpg
|
|
:align: center
|
|
:width: 80.0%
|
|
|
|
Example for hooking up the PN532 via SPI. Notice the position of the two switches on the right.
|
|
|
|
.. _pn532-on_tag:
|
|
|
|
``on_tag``
|
|
----------
|
|
|
|
This automation will be triggered when the PN532 module responds with a tag. Please note that this
|
|
can be called quite often (with an interval of ``update_interval``) as it's triggered repeatedly
|
|
if the tag is re-read many times.
|
|
|
|
The parameter ``x`` this trigger provides is of type ``std::string`` and is the tag UID in the format
|
|
``74-10-37-94``. The configuration below will for example publish the tag ID on the MQTT topic ``pn532/tag``.
|
|
|
|
.. code-block:: yaml
|
|
|
|
pn532:
|
|
# ...
|
|
on_tag:
|
|
then:
|
|
- mqtt.publish:
|
|
topic: pn532/tag
|
|
payload: !lambda 'return x;'
|
|
|
|
See Also
|
|
--------
|
|
|
|
- :doc:`binary_sensor/pn532`
|
|
- :doc:`rdm6300`
|
|
- `PN532 Library <https://github.com/adafruit/Adafruit-PN532/blob/master/Adafruit_PN532.cpp>`__ by `Adafruit <https://www.adafruit.com/>`__
|
|
- :apiref:`binary_sensor/pn532_component.h`
|
|
- :ghedit:`Edit`
|
|
|
|
.. disqus::
|