- Használt alkatrészek:
- Munka magyarázat:
- Áramkör leírása:
- A wiringPi könyvtár telepítése a Raspberry Pi programba:
- Programozási magyarázat:
Korábban számos RFID projektünkben használtuk az RFID-t, és már építettünk egy RFID alapú jelenléti rendszert a 8051 használatával, itt a Raspberry Pi felhasználásával RFID alapú jelenléti rendszert fogunk építeni .
Ebben az RFID alapú jelenléti rendszer projektben elmagyarázzuk Önnek, hogyan engedélyezhetjük és számolhatjuk automatikusan a részvételt az RFID kártyák használatával. Az RFID technológiát (rádiófrekvenciás azonosítás és detektálás) általában használják iskolákban, főiskolákon, irodákban és állomásokon különböző célokra, hogy automatikusan nyomon kövessék az embereket. Itt számoljuk az RFID használatával egy meghatalmazott személy részvételét.
Ha még nem ismeri a Raspberry Pi programot, akkor létrehoztunk egy sor oktatóanyagot és málna pi projektet, amelyek kapcsolódnak az összes alapkomponenshez, és néhány egyszerű projektet kezdeni, ellenőrizze.
Használt alkatrészek:
- Raspberry Pi (indított SD-kártyával)
- Nyomógomb
- Berregő
- 16x2 LCD
- 10 ezer fazék
- 10K ellenállás
- VEZETTE
- 1k ellenállás
- Kenyérlap
- RFID-olvasó
- Teljesítmény 5 volt
- RFID címkék vagy kártyák
- Hálózati kábel
- Csatlakozó vezetékek
RFID-olvasó és címkék:
Az RFID egy elektronikai eszköz, amelynek két része van: az egyik RFID-olvasó, a másik pedig RFID-címke vagy kártya. Amikor az RFID-címkét az RFID-olvasó közelébe helyezzük, sorosan olvassa a címke adatait. Az RFID tag 12 tekercses karakterkóddal rendelkezik. Ez az RFID 9600 bps sebességgel működik. Az RFID elektromágnes segítségével továbbítja az adatokat a Readerről a Tagre vagy a Tagre az Readerre.
Munka magyarázat:
Itt a Raspberry Pi 3 irányítja a projekt teljes folyamatát (a felhasználó bármelyik Raspberry Pi táblát használhatja). Az RFID-olvasó beolvassa az RFID-kártya azonosítóját, ezeket az adatokat a Raspberry Pi az UART-on keresztül fogadja, majd az RPi ellenőrzi a kártyát, és az eredményeket megjeleníti az LCD-képernyőn.
Amikor egy személy az RFID-olvasó fölé helyezi RFID-címkéjét szkennelés céljából, az RFID elolvassa a címke adatait és elküldi a Raspberry Pi-nek. Ezután a Raspberry Pi kiolvassa az RFID-címke egyedi azonosító számát, majd összehasonlítja ezeket az adatokat előre meghatározott adatokkal vagy információkkal. Ha az adatok előre definiált adatokkal vannak egyeztetve, akkor a Raspberry Pi eggyel növeli a címke személyének jelenlétét, és ha az egyeztetés nem egyezik, akkor a mikrovezérlő „Érvénytelen kártya” üzenetet jelenít meg az LCD-n, és a hangjelző egy ideig folyamatosan sípol. És itt hozzáadtunk egy nyomógombot is, hogy láthassuk a teljes számot. az összes hallgató jelenléte. Itt vettünk 4 RFID-címkét, amelyekben hármat használunk három tanuló részvételének rögzítésére, egyet pedig érvénytelen kártyaként.
Áramkör leírása:
A Raspberry Pi jelenléti rendszer projekt kapcsolási rajza nagyon egyszerű, amely tartalmaz Raspberry Pi 3-ot, RFID-olvasót, RFID-címkéket, hangjelzőt, LED-et és LCD-t. Itt a Raspberry Pi vezérli a teljes folyamatot, mint például az Olvasóból érkező adatok olvasása, az adatok összehasonlítása az előre definiált adatokkal, a hangjelzés, a Status LED vezetése és az állapot küldése az LCD kijelzőre. Az RFID-olvasót az RFID-címkék olvasására használják. A hangjelzést jelzésekre használják, és beépített NPN tranzisztor hajtja. Az LCD az állapot vagy az üzenetek megjelenítésére szolgál.
A kapcsolatok egyszerűek. Az LCD 4-bites módban csatlakozik a Raspberry Pi-hez. Az LCD RS, RW és EN csatlakozója közvetlenül csatlakozik a vezetékekhezPi GPIO 11, gnd és 10. Az adatcsatlakozók pedig a vezetékekhez vannak kapcsolvaPi GPIO 6, 5, 4 és 1. 10K potot használnak az LCD kontrasztjának vagy fényerejének beállításához. A hangjelző a PP GPIO 7. érintkezőjénél van csatlakoztatva a talajhoz képest. Három LED van csatlakoztatva a diákok jelzéséhez a megfelelő RFID kártyával. És egy LED-et mutatnak arra, hogy a rendszer készen áll az RFID-kártya beolvasására. Egy nyomógomb is csatlakozik a vezetékhezPi GPIO 12-es érintkezőnél a jelenléti szám megjelenítéséhez. Az RFID-olvasó az UART-érintkezőhöz van csatlakoztatva (GPIO 16-os vezeték).
A wiringPi könyvtár telepítése a Raspberry Pi programba:
A Pythonhoz hasonlóan az RPi.GPIO importálását IO fejlécfájlként importáljuk a Raspberry Pi GPIO Pins használatához, itt C nyelven a wiringPi Library-t kell használnunk a GP Program Pins használatához C programunkban. Telepíthetjük az alábbi parancsok egyesével, futtathatja ezt a parancsot a Terminálból vagy valamilyen SSH kliensből, például a Putty-ból (ha Windows-ot használ). Olvassa el az Első lépések a Raspberry Pi bemutatónkat, hogy többet tudjon meg a Raspberry Pi kezeléséről.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd wiringPi git pull origin cd wiringPi./build
Tesztelje a wiringPi könyvtár telepítését, használja az alábbi parancsokat:
gpio -v gpio readall
Programozási magyarázat:
Most először felvettünk néhány könyvtárat, és meghatároztuk a PIN-kódokat, amelyeket ebben a kódban használnunk kell.
#include
Ezután adjon meg néhány változót és tömböt a számításhoz és az értékek és karakterláncok tárolásához.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
Ezután a függvényeket írták az egész folyamat végrehajtására. Néhányat az alábbiakban adunk meg:
Adott void lcdcmd függvény segítségével parancsot küldhet az LCD-re
void lcdcmd (előjel nélküli int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, LOW); digitalWrite (EN, HIGH);……………..
Adott void írási funkció használható adatok küldésére az LCD-re.
void write (aláíratlan int ch) {int temp = 0x80; digitalWrite (D4, temp & ch << 3); digitalWrite (D5, temp & ch << 2); digitalWrite (D6, temp & ch << 1); digitalWrite (D7, temp & ch); digitalWrite (RS, HIGH); digitalWrite (EN, HIGH);……………..
Adott void clear () funkció az LCD törléséhez, a void setCursor a kurzor helyzetének és a void print beállításához használható a karakterlánc LCD-re küldéséhez.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; ha (y == 0) halmaz = 128 + x; ha (y == 1) halmaz = 192 + x; lcdcmd (készlet); } void print (char * str) {while (* str) {write (* str); str ++; }}
A void start funkció az LCD inicializálására szolgál 4 bites módban.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
a void buzzer () és a void wait () funkciókat a hangjelzés sípolására és a kártya újbóli elhelyezésére való várakozásra használják. A függvény void serialbegin a soros kommunikáció inicializálására szolgál.
void buzzer () {digitalWrite (buzz, HIGH); késés (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); késés (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Nem lehet megnyitni"); setCursor (0,1); nyomtatás ("soros port"); }}
A void setup () függvényben elindítjuk az összes GPIO-t, az LCD-t és a soros UART-t.
void setup () {if (wiringPiSetup () == -1) {törlés (); print ("Nem lehet elindítani"); setCursor (0,1); nyomtatás ("wiringPi"); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
A megadott void get_card () függvény az adatok RFID-olvasóról való lekérésére szolgál.
A void main () függvényben néhány üzenetet megmutattunk az LCD-n, és összehasonlítottuk a címke adatait előre definiált adatokkal, hogy a kártya érvényes legyen az alábbi kóddal.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; egyértelmű(); nyomtatás ("Attd. Registered"); setCursor (0,1); nyomtatás ("Studnet 1"); digitalWrite (led1, HIGH); berregő(); digitalWrite (led1, LOW); várjon(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; egyértelmű(); nyomtatás ("Attd. Registered"); setCursor (0,1);………………
Végül a void check_button () függvényt használjuk a teljes részvétel megjelenítésére a gomb megnyomásakor.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); egyértelmű(); setCursor (0,0); nyomtatás ("std1 std2 std3");……………..
Ellenőrizze az alábbi Raspberry Pi jelenléti rendszer teljes kódját.