English version here.
Miksi?
Tulipa eräänä päivänä tarvetta toteuttaa kulunvalvonta ja varauskalenteri erääseen yhteiskäytössä olevaan saunatilaan, missä oli ovenkarmissa jo sähkövastinrauta (24VAC) valmiina.
Käytetty rauta:
- Raspberry Pi 3B
- Kotelo Raspberry Pi:lle
- Raspberry Pi 7″ TFT
- Kotelo TFT:lle
- NFC lukija
- Relekortti
- Hyppylankoja
- Hyvä 5V/2A-2.5A virtalähde, joka oikeasti jaksaa antaa tarpeeksi virtaa raspille, näytölle, nfc-lukijalle ja relekortille
- (tai neljä diodia, kondensaattori & LM2596 -pohjainen DC-DC -muunnin – eli VAC->VDC tasasuuntaaja + muuntaja, jos ryöstää virrat 24VAC sähkölukosta)
- 3G/4G -(usb)mokkula & liittymä
Vaihe 1 (muistikortti):
Raspberry Pi sai sisäänsä uusimman Raspbian Jessien, joka tekohetkellä oli versiota 2017-06-21. Jakelun kernelinä toimii 4.9.28-v7+.
Vaihe 2 (kokoonpano):
- irrota TFT:stä ohjainkortti (valitsemani kotelo vaati tämän)
- kokoa TFT:n kotelo näytön ympärille
- kiinnitä TFT:n ohjainkortti takaisin paikoilleen, varmista että molemmat lattakaapelit ovat hyvin kiinni
- poraa raspin kotelon pohjaosaan oikeisiin kohtiin reiät (6mm terällä) TFT:n kiinnikkeitä varten
- laita muistikortti raspiin
- kiinnitä raspi koteloineen TFT:n kiinnikkeisiin
- kiinnitä näytön lattakaapeli sekä virtajohdot 5V(pin4) ja Gnd(pin6) hyppylangoilla raspiin
- kiinnitä NFC-lukija hyppylangoilla raspiin, tarvitset pinnejä 1,3,5,11,12,15,16,19,21-26 (mm. 3.3V, Gnd, i2c & SPI)
(Explore NFC Board Schematic) - kiinnitä relekortti raspiin, rele tarvitsee toimiakseen ~80mAh eli huomioi tämä virtalähteen mitoituksessa
tarvitset pinnit 2 (5V -> VCC), 7 (GPIO -> In1) ja 9 (Gnd -> Gnd) - kierrätä sähkölukon toinen virtajohto releen kautta
Vaihe 3 (softa):
Lukija käyttää SPI:tä, eli enabloi SPI raspi-config :sta. TFT käännetään pystyyn lisäämällä /boot/config.txt :n display_rotate=1 (90 astetta) tai display_rotate=3 (270 astetta) ja konsolin fonttia saa kasvatettua dpkg-reconfigure console-setup :lla.
Varsinaista käyttöä varten tarvitaan pieni nippu sovelluksia. Pitää esimerkiksi hallita relekorttia (avata/sulkea ovi) sekä lukea nfc-kortteja ja validoida luettu kortti jotain käyttäjäkantaa vasten. Ja ellei halua täyttää käyttäjäkantaa käsin niin niiden ylläpitoa vartenkin on hyvä olla omat sovelluksensa…
Oma ratkaisu oli toistaiseksi yksinkertainen python-service joka lukee nfc-kortin, validoi sen MariaDB:tä vasten jonka jälkeen kerrotaan ruudulla tulos & aktivoidaan rele tarvittaessa. Lähes ajantasalla olevaa koodia löytyy osoitteesta https://macronet.fi/dev/nfc/ (ehkä joskus myös githubissa) – se voi toimia tai olla toimimatta.
NFC-kortin luentaan käytetty nxppy -kirjasto ja muut tarvittavat riippuvuudet on helppo asentaa:
# sudo apt install python-dev python-pip python-mysqldb cmake mariadb-server-10.0
# pip install nxppy
Vaihe 4 (paikalleenasennus):
Asenna järjestelmä haluamaasi paikkaan paikoilleen niin että nfc-lukijalle voi näyttää korttia. Tämä voi vaatia hieman kaapelointia jos haluat viedä lukijan kauemmaksi raspista – huomioithan että lukija kaipaa 14 kaapelia (ei tosin ole tullut testattua _vaatiiko_ se niitä oikeasti, vai voiko esim. i2c:t jättää kytkemättä koska käyttää SPI:tä) eli 2kpl cat-kaapeleita.
Vaihe 5 (miksi internet? mitä sitten?)
Laita raspi soittamaan kotiin/VPN:ään, että pystyt korjaamaan mahdolliset vikatilanteet etänä.
Tai “unohda” usb-porttiin langattoman näppiksen vastaanotin ja käytä uutta nfc-kulunhallintajärjestelmääsi vaikka irkkaamiseen lokaalisti.