---
# System prepended metadata

title: obraz

---

# Sprawozdanie BIR

## Laboratoria NFC część 2

Skład zespołu:
- Maciej Włodarczyk
- Paweł Gryka
- Michał Wawrzyńczak

# Wstęp

W ramach laboratorium mieliśmy zapoznać się z NFC oraz obsługa płytki służącej do jego odczytu wraz z Raspberry Pi Zero.

# Zadanie 1

W ramach zadania należało wywołać podane komendy oraz sprawdzić ich wynik. Po długiej i niezbyt przyjemnej walce z biblioteką `libnfc` udało nam się osiągnąć zamierzony w ramach naszej przeprawy cel.

![obraz](https://hackmd.io/_uploads/ByEljVHdp.png)

Jak widać na załączonym zrzucie ekranu płytka jest wykrywana za pomocą interfejsu I2C. Płytka jest też w stanie odczytać tag, który do niej przyłożymy.

# Zadanie 2

W tym zadania należało odczytać tag za pomocą biblioteki w języku Python. Udało nam się znależć przykład w internecie i za jego pomocą odczytać tag -https://github.com/gassajor000/pn532pi/blob/master/examples/readMifare.py.

![obraz](https://hackmd.io/_uploads/ry74ZBSOp.png)
![obraz](https://hackmd.io/_uploads/rkY-mBSda.png)

Zrzuty ekranu obrazują odczytanie 3 różnych tagów zakończone sukcesem.

# Zadanie 3

W tym zadaniu należało naprawić kod, który znajduje się na stronie - https://blog.digitaloctave.com/posts/hardware/nfc-module-v3-raspberry-pi.html
Zmiana w tym zadaniu był interfejs HSU - High Speed UART.

Zmodyfikowany kod prezentuje się następująco:
```
import nfc
import ndef
import binascii
from nfc.tag import tt1
from nfc.tag import tt2
from nfc.tag import tt3
from nfc.tag import tt4


tagtypes = (
    ('uid', nfc.tag.tt1.Type1Tag),
    ('uid', nfc.tag.tt2.Type2Tag),
    ('idm', nfc.tag.tt3.Type3Tag),
    ('uid', nfc.tag.tt4.Type4Tag)
)

def connected(tag):
    print(tag.type)
    for uid, type in tgtypes:
        if isinstance(tag, type):
            print(binascii.hexlify(attr(tag, uid)))
            return
    print("error: unknown tag type")

with nfc.ContactlessFrontend('tty:S0:pn532') as clf:
    print('waiting for connection')
    print(clf)
    tag = clf.connect(rdwr={'on-connect': lambda tag: False})
    print(binascii.hexlify(tag.identifier))
    print(tag.type)
    if not tag.ndef:
        print('no ndef data')
    else:
        for record in tag.ndef.records:
            print(record)
```
![obraz](https://hackmd.io/_uploads/Sy2wfIBup.png)

![obraz](https://hackmd.io/_uploads/HykdmHBuT.png)

Udało się odczytać tag za pomocą programu.

# Zadanie 4

W tym zadaniu znowu musieliśmy odczytać tag - tym razem z połączeniem za pomocą interfejsu SPI. Przepieliśmy płytkę i użyliśmy tego samego kodu co w zadaniu 2 wraz z modyfikacją do SPI.

![obraz](https://hackmd.io/_uploads/BJAh48SO6.png)


![obraz](https://hackmd.io/_uploads/rkfiJLSdp.png)

W tym przypadku znowu udało się odczytać tagi.

# Podsumowanie

W ramach laboratorium udało nam się zrealizować wszystkie zadania. Poszerzyło to naszą wiedzę o technologiach radiowych bliskiego zasięgu.