PN5180-tagomatic
USB based RFID reader with Python interface
Overview
PN5180-tagomatic is a USB-based RFID reader that provides a Python interface for reading NFC/RFID tags using the PN5180 NFC Frontend module and a Raspberry Pi Pico (Zero).
Features
- Python library for easy integration.
- Uses USB serial communication to the reader.
- Cross-platform support (Linux, Windows, macOS).
- Finds and selects single ISO/IEC 14443 cards.
- Uses NFC FORUM commands to read/write 14443-A cards' memories.
- Can authenticate against Mifare classic cards to read their memories.
- Finds ISO/IEC 15693 cards, uses 15693-3 commands to read/write their memories.
Multiple cards in the RFID field is currently not really supported, the hardware and arduino sketch supports all commands for it.
Installation
Python Package
Install from PyPI:
pip install pn5180-tagomatic
Install from source:
git clone https://github.com/bofh69/PN5180-tagomatic.git
cd PN5180-tagomatic
pip install -e .
Firmware
See sketch/README.md for instructions on building and uploading the Raspberry Pi Pico firmware.
Usage
from pn5180_tagomatic import PN5180
# Create reader instance and use it
with PN5180("/dev/ttyACM0") as reader:
versions = reader.ll.read_eeprom(0x10, 6)
with reader.start_session(0x00, 0x80) as session:
card = session.connect_one_iso14443a()
print(f"Reading from card {card.uid.hex(':')}")
if len(card.uid) == 4:
memory = card.read_mifare_memory()
else:
memory = card.read_memory()
Example Program
A few simple example programs are in the examples/ directory.
Development
Setting up development environment
# Clone the repository
git clone https://github.com/bofh69/PN5180-tagomatic.git
cd PN5180-tagomatic
# Install development dependencies
pip install -e .[dev]
# or:
make install-dev
Running tests
pytest or make test
Code quality checks
# Linting
make check
# Formatting
make format
# Type checking
make type-check
License
This project is licensed under the GNU General Public License v3.0 or later (GPL-3.0-or-later).
See LICENSE for the full license text.
Contributing
Contributions are welcome! Please ensure that:
- All code passes linting and type checking
- Tests are added for new functionality
- All files include proper REUSE-compliant license headers
- Code follows the project's style guidelines
Acknowledgments
This project uses FastLED by Daniel Garcia et al.
SimpleRPC by Jeroen F.J. Laros, Chris Flesher et al is also used.
Metadata
Release files for pn5180-tagomatic 0.0.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pn5180_tagomatic-0.0.3.tar.gz | 52.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pn5180_tagomatic-0.0.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 84.0 kB
Release files / pn5180_tagomatic-0.0.3.tar.gz
| Download URL | pn5180_tagomatic-0.0.3.tar.gz |
|---|---|
| Size | 52.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a745642bdf739aaec10e739f1d22389fc46377a91eeeb6a7f0518af657d42315
|
|
BLAKE2b-256 checksum How to use checksums |
d78b7f4d252f1d02b4ac2cc89d4d345c859584d68813dfc2454c0ea95b934dd2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 9, 2026.
Transparency logRelease files / pn5180_tagomatic-0.0.3-py3-none-any.whl
| Download URL | pn5180_tagomatic-0.0.3-py3-none-any.whl |
|---|---|
| Size | 31.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
513d295ccf6725b06ce166a32600227ece0335e72bccc8112070c9d20d7fb759
|
|
BLAKE2b-256 checksum How to use checksums |
da99ed3b336ccf3f53353233494727b069a86e390bbfc743981230cacd900cc0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jan 9, 2026.
Transparency log