- Naudoti komponentai:
- Darbinis paaiškinimas:
- Grandinės aprašymas:
- „WiringPi“ bibliotekos diegimas „Raspberry Pi“:
- Programavimo paaiškinimas:
Anksčiau mes naudojome RFID daugelyje savo RDA projektų ir jau sukūrėme RFID pagrįstą lankomumo sistemą naudodami 8051, čia mes ketiname sukurti RFID pagrįstą lankomumo sistemą naudodami Raspberry Pi.
Šiame RFID pagrįstoje lankomumo sistemos projekte mes jums paaiškinsime, kad kaip mes galime autorizuoti ir suskaičiuoti lankomumą automatiškai, naudojant RFID korteles. RFID technologija (radijo dažnio atpažinimas ir aptikimas) dažniausiai naudojama mokyklose, kolegijose, biuruose ir stotyse įvairiems tikslams, siekiant automatiškai sekti žmones. Čia mes suskaičiuosime įgalioto asmens dalyvavimą naudojant RFID.
Jei nesate susipažinę su „Raspberry Pi“, mes sukūrėme keletą vadovėlių ir aviečių pi projektų, kuriuose sąsajos su visais pagrindiniais komponentais ir keliais paprastais projektais pradedamos, serijos, patikrinkite.
Naudoti komponentai:
- „Raspberry Pi“ (su įkelta SD kortele)
- Paspauskite mygtuką
- Buzeris
- 16x2 LCD ekranas
- 10 tūkst. Puodo
- 10K rezistorius
- LED
- 1k rezistorius
- Bandomoji Lenta
- RDA skaitytuvas
- Galia 5 voltai
- RDA žymos arba kortelės
- Ethernet kabelis
- Jungiamieji laidai
RDA skaitytuvas ir žymos:
RFID yra elektronikos prietaisas, kurį sudaro dvi dalys - viena yra RFID skaitytuvas, kita - RFID žyma arba kortelė. Kai pridedame RFID žymą šalia RFID skaitytuvo, ji nuosekliai nuskaito žymos duomenis. RDA žymoje ritėje yra 12 skaitmenų simbolių kodas. Šis RDA veikia 9600 bps sparta. RFID naudoja elektromagnetą duomenims perkelti iš „Reader“ į „Tag“ arba „Tag“ į „Reader“.
Darbinis paaiškinimas:
Čia „ Raspberry Pi 3 “ kontroliuoja visą šio projekto procesą (Vartotojas gali naudoti bet kurią „Raspberry Pi“ plokštę). RFID skaitytuvas nuskaito RFID kortelės ID, šiuos duomenis „Raspberry Pi“ gauna per UART, tada „RPi“ patvirtina kortelę ir rodo rezultatus LCD ekrane.
Kai asmuo uždeda savo RFID žymą šalia RFID skaitytuvo nuskaityti, RFID nuskaito žymos duomenis ir siunčia juos į „Raspberry Pi“. Tada „Raspberry Pi“ perskaito tos RDA žymos unikalų identifikavimo numerį ir palygina šiuos duomenis su iš anksto nustatytais duomenimis ar informacija. Jei duomenys suderinami su iš anksto nustatytais duomenimis, „Raspberry Pi“ padidina žymos asmens lankomumą vienu, o jei neatitinka neatitinka, mikrovaldiklis LCD ekrane rodo pranešimą „Neteisinga kortelė“, o garsinis signalas kurį laiką nuolat pypteli. Ir čia mes taip pat pridėjome mygtuką, kad pamatytumėte bendrą Nr. visų studentų dalyvavimo. Čia mes paėmėme 4 RFID žymas, kuriose trys naudojamos trijų studentų lankomumui registruoti, o viena naudojama kaip netinkama kortelė.
Grandinės aprašymas:
Šio „Raspberry Pi“ lankomumo sistemos projekto schema yra labai paprasta, kurioje yra „ Raspberry Pi 3“, RFID skaitytuvas, RFID žymos, garsinis signalas, LED ir LCD. Čia „Raspberry Pi“ kontroliuoja visą procesą, pvz., Skaityti duomenis iš „Reader“, lyginti duomenis su iš anksto nustatytais duomenimis, vairuoti garsinį signalą, vairuoti būsenos LED ir siųsti būseną į LCD ekraną. RFID skaitytuvas naudojamas skaityti RFID žymas. Buzzer naudojamas indikacijoms rodyti ir valdomas įmontuotu NPN tranzistoriumi. Skystųjų kristalų ekranas naudojamas būsenai ar pranešimams rodyti.
Jungtys yra paprastos. Skystųjų kristalų ekranas yra sujungtas su „Raspberry Pi“ 4 bitų režimu. LCD RS, RW ir EN kaištis yra tiesiogiai prijungtas prie laidųPi GPIO 11, gnd ir 10. O duomenų kaištis prijungtas prie laidųPi GPIO 6, 5, 4 ir 1. 10K puodas naudojamas LCD kontrastui ar ryškumui nustatyti. Buzzer yra prijungtas prie laidų „Pi GPIO 7“ kaiščio, atsižvelgiant į žemę. Trys šviesos diodai yra prijungti studentų indikacijai su atitinkama RFID kortele. Ir vienas šviesos diodas naudojamas parodyti, kad sistema yra pasirengusi nuskaityti RFID kortelę. Taip pat prie laidų, sujungtų su „GP GPIO 12“ kaiščiu, yra prijungtas mygtukas, rodantis dalyvių skaičių. RFID skaitytuvas prijungtas prie UART kaiščio (laido GPIO kaištis 16).
„WiringPi“ bibliotekos diegimas „Raspberry Pi“:
Kaip ir „Python“, mes importuojame importuojamą RPi.GPIO kaip IO antraštės failą, kad galėtume naudoti „Raspberry Pi“ GPIO kaiščius, čia C kalba turime naudoti „ wiringPi“ biblioteką, kad galėtume naudoti GPIO kaiščius savo C programoje. Mes galime jį įdiegti naudodamiesi žemiau esančiomis komandomis po vieną, galite paleisti šią komandą iš terminalo arba iš kai kurių SSH klientų, tokių kaip „Putty“ (jei naudojate „Windows“). Peržiūrėkite mūsų „Raspberry Pi“ pradžios pamoką, kad sužinotumėte daugiau apie „Raspberry Pi“ tvarkymą.
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
Išbandykite „wiringPi“ bibliotekos diegimą, naudokite toliau pateiktas komandas:
gpio -v gpio readall
Programavimo paaiškinimas:
Dabar pirmiausia įtraukėme keletą bibliotekų ir apibrėžėme kaiščius, kuriuos turime naudoti šiame kode.
# įtraukti
Po to nustatykite keletą kintamųjų ir masyvą skaičiavimui ir reikšmių bei eilučių saugojimui.
int sp; int skaičius1 = 0, skaičius2 = 0, skaičius3 = 0; char ch; char rfid; int i = 0; char temp;
Tada buvo parašytos funkcijos, kad būtų vykdomas visas procesas. Kai kurie iš jų pateikiami žemiau:
Atsižvelgiant į tuštumą, lcdcmd funkcija naudojama komandai siųsti į LCD
void lcdcmd (nepasirašytas 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);……………..
Atsižvelgiant į tuščią rašymo funkciją, naudojama siųsti duomenis į LCD.
negaliojantis rašymas (nepasirašytas 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);……………..
Atsižvelgiant į „ void clear“ () funkciją, naudojamas LCD valyti, „ void setCursor “ naudojamas žymeklio padėčiai ir tuščiam spausdinimui siųsti eilutę į LCD.
tuštuma aišku () {lcdcmd (0x01); } void setCursor (int x, int y) {int set = 0; jei (y == 0) aibė = 128 + x; jei (y == 1) aibė = 192 + x; lcdcmd (rinkinys); } negaliojantis spausdinimas (char * str) {while (* str) {write (* str); str ++; }}
„void begin“ funkcija naudojama inicijuojant LCD ekraną 4 bitų režimu.
negaliojanti pradžia (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
„void buzzer“ () ir „ void wait“ () funkcijos naudojamos pyptelėjus garsiniam signalui ir laukiant, kol vėl bus įdėta kortelė. Funkcija void serialbegin naudojama norint inicijuoti nuoseklųjį ryšį.
void buzzer () {digitalWrite („buzz“, HIGH); vėlavimas (1000); „digitalWrite“ („buzz“, „LOW“); } void wait () {digitalWrite (led5, LOW); vėlavimas (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {išvalyti (); spausdinti ("Nepavyko atidaryti"); setCursor (0,1); spausdinti („nuoseklusis prievadas“); }}
Be void setup () funkcija, mes initiaze visą GPIOs, LCD ir serijos UART.
negaliojanti sąranka () {if (wiringPiSetup () == -1) {išvalyti (); spausdinti ("Nepavyko paleisti"); setCursor (0,1); spausdinti („wiringPi“); } pinMode (led1, OUTPUT); pinMode (led2, OUTPUT);……………………
Pateikta void get_card () funkcija naudojama norint gauti duomenis iš RDA skaitytuvo.
Be void main () funkcija, mes parodė kelis pranešimus apie LCD ir palyginti duomenis tegus su iš anksto nustatytais duomenimis patvirtinti kortelę su žemiau kodą.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; aišku (); spausdinti („Attd. Registered“); setCursor (0,1); spausdinti („Studnet 1“); „digitalWrite“ („led1“, „HIGH“); garsinis signalas (); „digitalWrite“ („led1“, „LOW“); laukti(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; aišku (); spausdinti („Attd. Registered“); setCursor (0,1);………………
Pagaliau funkcija void check_button () naudojama norint parodyti bendrą dalyvavimą paspaudus mygtuką.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); aišku (); setCursor (0,0); spausdinti ("std1 std2 std3");……………..
Žemiau patikrinkite visą šios „Raspberry Pi“ lankomumo sistemos kodą.