- Zastosowane komponenty:
- Objaśnienie robocze:
- Opis obwodu:
- Instalowanie bibliotekiiringPi w Raspberry Pi:
- Objaśnienie programowania:
Wcześniej używaliśmy RFID w wielu naszych projektach RFID i już zbudowaliśmy system obecności oparty na RFID przy użyciu 8051, tutaj zbudujemy system obecności oparty na RFID przy użyciu Raspberry Pi.
W tym projekcie systemu obecności opartego na RFID wyjaśnimy, w jaki sposób możemy autoryzować i automatycznie liczyć obecność za pomocą kart RFID. Technologia RFID (identyfikacja i wykrywanie częstotliwości radiowych) jest powszechnie stosowana w szkołach, uczelniach, biurach i stacjach do różnych celów, aby automatycznie śledzić ludzi. Tutaj policzymy obecność upoważnionej osoby za pomocą RFID.
Jeśli nie jesteś zaznajomiony z Raspberry Pi, stworzyliśmy serię samouczków i projektów raspberry pi, z połączeniem ze wszystkimi podstawowymi komponentami i kilkoma prostymi projektami na początek, sprawdź.
Zastosowane komponenty:
- Raspberry Pi (z uruchomioną kartą SD)
- Naciśnij przycisk
- Brzęczyk
- Wyświetlacz LCD 16x2
- Pula 10k
- Rezystor 10 K.
- DOPROWADZIŁO
- Rezystor 1k
- Deska do chleba
- Czytnik RFID
- Zasilanie 5 woltów
- Tagi lub karty RFID
- Kabel Ethernet
- Przewody łączące
Czytnik RFID i tagi:
RFID to urządzenie elektroniczne składające się z dwóch części - jedna to czytnik RFID, a druga to tag RFID lub karta. Kiedy umieszczamy tag RFID blisko czytnika RFID, odczytuje on dane tagów seryjnie. Tag RFID ma 12-cyfrowy kod w cewce. Ten RFID działa z szybkością transmisji 9600 bps. RFID wykorzystuje elektromagnes do przesyłania danych z czytnika do znacznika lub znacznika do czytnika.
Objaśnienie robocze:
Tutaj Raspberry Pi 3 kontroluje cały proces tego projektu (użytkownik może korzystać z dowolnej płytki Raspberry Pi). Czytnik RFID odczytuje identyfikator karty RFID, dane te są odbierane przez Raspberry Pi przez UART, a następnie RPi sprawdza kartę i wyświetla wyniki na ekranie LCD.
Kiedy osoba umieszcza swój tag RFID blisko czytnika RFID w celu zeskanowania, RFID odczytuje dane tagu i wysyła je do Raspberry Pi. Następnie Raspberry Pi odczytuje unikalny numer identyfikacyjny tego znacznika RFID, a następnie porównuje te dane z predefiniowanymi danymi lub informacjami. Jeśli dane są dopasowane do predefiniowanych danych, to Raspberry Pi zwiększa o jeden obecność osoby z tagu, a jeśli dopasowanie nie jest dopasowane, mikrokontroler pokazuje komunikat `` Nieprawidłowa karta '' na wyświetlaczu LCD, a brzęczyk wydaje ciągły sygnał dźwiękowy przez pewien czas. I tutaj dodaliśmy również przycisk, aby zobaczyć całkowite nie. frekwencji wszystkich uczniów. Tutaj wzięliśmy 4 tagi RFID, z których trzy są używane do rejestrowania obecności trzech uczniów, a jeden jest używany jako nieważna karta.
Opis obwodu:
Schemat obwodu dla tego projektu systemu obecności Raspberry Pi jest bardzo prosty i zawiera Raspberry Pi 3, czytnik RFID, tagi RFID, brzęczyk, diodę LED i wyświetlacz LCD. Tutaj Raspberry Pi kontroluje cały proces, taki jak odczyt danych pochodzących z czytnika, porównywanie danych z predefiniowanymi danymi, brzęczyk sterujący, dioda LED stanu jazdy i wysyłanie stanu do wyświetlacza LCD. Czytnik RFID służy do odczytu tagów RFID. Buzzer służy do wskazań i jest sterowany przez wbudowany tranzystor NPN. Wyświetlacz LCD służy do wyświetlania statusu lub komunikatów na nim.
Połączenia są proste. LCD jest połączony z Raspberry Pi w trybie 4-bitowym. Styki RS, RW i EN wyświetlacza LCD są podłączone bezpośrednio do połączeń GPIO 11, gnd i 10. Piny danych są podłączone do przewodów Pi GPIO 6, 5, 4 i 1. Potencjometr 10K służy do ustawiania kontrastu lub jasności wyświetlacza LCD. Brzęczyk jest podłączany do wyprowadzenia Pi GPIO 7 w odniesieniu do masy. Trzy diody LED są podłączone do wskazania ucznia za pomocą odpowiedniej karty RFID. Jedna dioda LED wskazuje, że system jest gotowy do skanowania karty RFID. Przycisk jest również podłączony do styku 12 WiringPi GPIO, aby wyświetlić licznik obecności. Czytnik RFID podłącza się na pinie UART (okablowanie GPIO pin 16).
Instalowanie bibliotekiiringPi w Raspberry Pi:
Podobnie jak w Pythonie importujemy RPi.GPIO jako plik nagłówkowy IO , aby używać pinów GPIO Raspberry Pi, tutaj w języku C musimy użyć biblioteki wirePi, aby użyć pinów GPIO w naszym programie C. Możemy go zainstalować za pomocą poniższych poleceń jeden po drugim, możesz uruchomić to polecenie z terminala lub z jakiegoś klienta SSH, takiego jak Putty (jeśli używasz systemu Windows). Przejdź przez nasz samouczek Pierwsze kroki z Raspberry Pi, aby dowiedzieć się więcej o obsłudze Raspberry Pi.
sudo apt-get install git-core sudo apt-get update sudo apt-get upgrade git clone git: //git.drogon.net/wiringPi cd okablowaniePi git pull origin cd cablesPi./build
Przetestuj instalację bibliotekiiringPi, użyj poniższych poleceń:
gpio -v gpio readall
Objaśnienie programowania:
Teraz najpierw dołączyliśmy kilka bibliotek i zdefiniowaliśmy piny, których musimy użyć w tym kodzie.
#zawierać
Następnie zdefiniuj zmienne i tablicę do obliczeń oraz zapisz wartości i ciągi.
int sp; int count1 = 0, count2 = 0, count3 = 0; char ch; char rfid; int i = 0; char temp;
Następnie zostały napisane funkcje, które wykonują cały proces. Oto niektóre z nich:
Podana funkcja void lcdcmd służy do wysyłania komend 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);……………..
Podana funkcja void write służy do przesyłania danych do 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);……………..
Biorąc pod uwagę, że funkcja void clear () służy do czyszczenia wyświetlacza LCD, void setCursor jest używany do ustawiania pozycji kursora, a void print do wysyłania ciągu do LCD.
void clear () {lcdcmd (0x01); } void setCursor (int x, int y) {int zestaw = 0; if (y == 0) set = 128 + x; if (y == 1) set = 192 + x; lcdcmd (zestaw); } void print (char * str) {while (* str) {write (* str); str ++; }}
Funkcja void begin służy do inicjalizacji LCD w trybie 4-bitowym.
void begin (int x, int y) {lcdcmd (0x02); lcdcmd (0x28); lcdcmd (0x06); lcdcmd (0x0e); lcdcmd (0x01); }
Funkcje void buzzer () i void wait () służą do sygnalizowania dźwiękiem brzęczyka i czekania na ponowne włożenie karty. Funkcja void serialbegin służy do inicjowania komunikacji szeregowej.
void buzzer () {digitalWrite (buzz, HIGH); opóźnienie (1000); digitalWrite (buzz, LOW); } void wait () {digitalWrite (led5, LOW); opóźnienie (3000); } void serialbegin (int baud) {if ((sp = serialOpen ("/ dev / ttyS0", baud)) <0) {clear (); print ("Nie można otworzyć"); setCursor (0,1); print ("port szeregowy"); }}
W funkcji void setup () inicjujemy wszystkie GPIO, LCD i szeregowy UART.
void setup () {if (iringPiSetup () == -1) {clear (); print ("Nie można uruchomić"); setCursor (0,1); print ("iringPi "); } pinMode (led1, OUTPUT); pinMode (led2, WYJŚCIE);……………………
Given void get_card () Funkcja służy do pobierania danych z czytnika RFID.
W funkcji void main () pokazaliśmy kilka komunikatów na wyświetlaczu LCD i porównaliśmy dane tagu z predefiniowanymi danymi, aby zweryfikować kartę z poniższym kodem.
……………… if (strncmp (rfid, "0900711B6003", 12) == 0) {count1 ++; jasny(); print ("Attd. Zarejestrowany"); setCursor (0,1); print ("Studnet 1"); digitalWrite (led1, HIGH); brzęczyk(); digitalWrite (led1, LOW); czekać(); } else if (strncmp (rfid, "090070FE6EE9", 12) == 0) {count2 ++; jasny(); print ("Attd. Zarejestrowany"); setCursor (0,1);………………
Wreszcie funkcja void check_button () służy do pokazania całkowitej obecności po naciśnięciu przycisku.
void check_button () {if (digitalRead (in1) == 0) {digitalWrite (led5, LOW); jasny(); setCursor (0,0); print ("std1 std2 std3");……………..
Sprawdź poniżej pełny kod dla tego systemu obecności Raspberry Pi.