- Uporabljene komponente:
- Delovna razlaga:
- Opis vezja:
- Namestitev knjižnice ožičenja Pi v Raspberry Pi:
- Pojasnilo programiranja:
Pred tem smo RFID že uporabljali v številnih naših projektih RFID in že zgradili RFID sistem za spremljanje z uporabo 8051, tukaj bomo zgradili RFID sistem za spremljanje na osnovi Raspberry Pi.
V tem projektu Attendance System, ki temelji na RFID, vam bomo razložili, kako lahko samodejno odobrimo in štejemo udeležbo z uporabo RFID kartic. Tehnologija RFID (identifikacija in zaznavanje radijskih frekvenc) se pogosto uporablja v šolah, fakultetah, pisarnah in postajah za različne namene za samodejno sledenje ljudem. Tu bomo šteli prisotnost pooblaščene osebe z uporabo RFID.
Če Raspberry Pi ne poznate, smo ustvarili vrsto vadnic in projektov Raspberry Pi z vmesnikom z vsemi osnovnimi komponentami in nekaterimi preprostimi projekti za začetek.
Uporabljene komponente:
- Raspberry Pi (z zagonsko SD kartico)
- Pritisni gumb
- Zvočni signal
- 16x2 LCD
- 10k lonec
- 10K upor
- LED
- 1k upor
- Deska za kruh
- RFID čitalnik
- Moč 5 voltov
- RFID oznake ali kartice
- Ethernetni kabel
- Priključne žice
RFID bralnik in oznake:
RFID je elektronska naprava, ki ima dva dela - eden je RFID čitalec, drugi pa RFID oznaka ali kartica. Ko RFID oznako postavimo blizu čitalnika RFID, ta zaporedno bere podatke o oznakah. Oznaka RFID ima v tuljavi 12-mestno kodo znakov. Ta RFID deluje s hitrostjo prenosa 9600 bps. RFID uporablja elektromagnet za prenos podatkov iz bralnika v oznako ali oznake v bralnik.
Delovna razlaga:
Tu Raspberry Pi 3 nadzoruje celoten postopek tega projekta (uporabnik lahko uporabi katero koli ploščo Raspberry Pi). RFID Reader prebere ID kartice RFID, te podatke prejme Raspberry Pi prek UART, nato RPi preveri kartico in rezultate prikaže na LCD zaslonu.
Ko oseba postavi svojo RFID oznako blizu čitalnika RFID za skeniranje, RFID prebere podatke oznake in jih pošlje Raspberry Pi. Nato Raspberry Pi prebere enolično identifikacijsko številko te oznake RFID in nato te podatke primerja z vnaprej določenimi podatki ali informacijami. Če se podatki ujemajo z vnaprej določenimi podatki, potem Raspberry Pi poveča prisotnost osebe oznake za eno in če se ujemanje ne ujema, potem mikrokrmilnik na LCD-prikazovalniku prikaže sporočilo "Invalid Card" in zvočni signal nekaj časa neprekinjeno piska. In tu smo dodali tudi gumb, da vidimo skupno št. udeležbe vseh študentov. Tu smo vzeli 4 oznake RFID, v katerih se tri uporabljajo za beleženje obiska treh študentov, ena pa kot neveljavna kartica.
Opis vezja:
Shema vezij za ta projekt sistema udeležencev Raspberry Pi je zelo preprosta, saj vsebuje Raspberry Pi 3, RFID čitalnik, RFID oznake, brenčalo, LED in LCD. Tu Raspberry Pi nadzoruje celoten postopek, kot je branje podatkov, ki prihajajo iz bralnika, primerjava podatkov z vnaprej določenimi podatki, vožnja z brenčalom, LED stanja vožnje in stanje pošiljanja na LCD zaslon. RFID Reader se uporablja za branje oznak RFID. Zvočni signal se uporablja za indikacije in ga poganja vgrajeni NPN tranzistor. LCD se uporablja za prikaz stanja ali sporočil na njem.
Povezave so preproste. LCD je povezan z Raspberry Pi v 4-bitnem načinu. Pin RS, RW in EN LCD-ja je neposredno povezan na wiringPi GPIO 11, gnd in 10. Podatkovni pin pa je povezan na wiringPi GPIO 6, 5, 4 in 1. 10K lonec se uporablja za nastavitev kontrasta ali svetlosti LCD-ja. Zvočni signal je priključen na ožičenje Pin GPIO pin 7 glede na maso. Tri indikatorske lučke so za prikaz študenta povezane z ustrezno RFID kartico. In ena LED se uporablja za prikaz, da je sistem pripravljen na skeniranje kartice RFID. Na ožičenju Pi GPIO pin 12 je prikazan tudi gumb za prikaz števila obiskov. RFID čitalnik je priključen na UART zatič (ožičenje GPIO pin 16).
Namestitev knjižnice ožičenja Pi v Raspberry Pi:
Tako kot v Pythonu tudi mi uvozimo RPi.GPIO kot glavno datoteko IO za uporabo zatičev GPIO Raspberry Pi, tudi tu v jeziku C moramo uporabiti knjižnico wiringPi za uporabo zatičev GPIO v našem programu C. Lahko ga namestimo z uporabo spodnjih ukazov enega za drugim, ta ukaz lahko zaženete s terminala ali iz katerega koli odjemalca SSH, kot je Putty (če uporabljate Windows). Oglejte si naš vodič za začetek uporabe Raspberry Pi, če želite izvedeti več o ravnanju z Raspberry Pi.
sudo apt-get namestite git-core sudo apt-get posodobite sudo apt-get nadgradite git clone git: //git.drogon.net/wiringPi cd wiringPi git pull origin cd wiringPi./build
Preizkusite namestitev knjižnice wiringPi, uporabite spodnje ukaze:
gpio -v gpio readall
Pojasnilo programiranja:
Zdaj smo najprej vključili nekaj knjižnic in definirali nožice, ki jih moramo uporabiti v tej kodi.
#include
Po njej določite nekaj spremenljivk in matriko za izračun ter shranite vrednosti in nize.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; temp;
Nato so bile napisane funkcije za izvedbo celotnega procesa. Nekateri med njimi so navedeni spodaj:
Dana void funkcija lcdcmd se uporablja za pošiljanje ukaza na LCD
void lcdcmd (unsigned 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);……………..
Dana void funkcija zapisovanja se uporablja za pošiljanje podatkov na LCD.
void write (unsigned 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);……………..
Glede na jasno () void funkcija se uporablja za brisanje LCD, nična setCursor se uporablja za določen položaj kazalke in praznine tisk za pošiljanje niz LCD.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; če je (y == 0) nastavljeno = 128 + x; če je (y == 1) nastavljeno = 192 + x; lcdcmd (nastavljen); } void print (char * str) {while (* str) {write (* str); str ++; }}
funkcija void start se uporablja za inicializacijo LCD-ja v 4-bitnem načinu.
začetek praznine (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
void buzzer () in void wait () funkciji se uporabljata za piskanje brenčača in za čakanje, da ponovno položi kartico. Funkcija void serialbegin se uporablja za inicializacijo serijske komunikacije.
void brenčalo () {digitalWrite (brenčanje, VISOKO); zamuda (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); zamuda (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Ne morem odpreti"); setCursor (0,1); print ("serijska vrata"); }}
V funkciji void setup () iniciiramo vse GPIO-je, LCD in serijski UART.
void setup () {if (wiringPiSetup () == -1) {clear (); print ("Ne morem zagnati"); setCursor (0,1); tisk ("wiringPi"); } pinMode (led1, IZHOD); pinMode (led2, IZHOD);……………………
Glede na to, nična get_card () Funkcija se uporablja za pridobitev podatkov iz RFID čitalnika.
V void main () funkciji smo na LCD-ju prikazali nekaj sporočil in podatke oznak primerjali z vnaprej določenimi podatki za potrditev kartice s spodnjo kodo.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; jasno (); tisk ("Attd. Registered"); setCursor (0,1); tisk ("Studnet 1"); digitalWrite (led1, HIGH); zvočni signal (); digitalWrite (led1, LOW); počakajte (); } sicer če (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; jasno (); tisk ("Attd. Registered"); setCursor (0,1);………………
Končno void check_button () funkcija se uporablja za prikaz celotne prisotnosti ob pritisku gumba.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); jasno (); setCursor (0,0); tiskanje ("std1 std2 std3");……………..
Spodaj preverite celotno kodo tega sistema za spremljanje Raspberry Pi.