- Gerekli Bileşenler
- Proje Açıklaması:
- FingerPrint modülü:
- Parmak İzi Bazlı Devam Sisteminin Çalışması
- Parmak İzi Devam Sistemi Projesi için Devre Şeması ve Açıklaması
- Kod Açıklaması:
Devam sistemleri, ofislerde ve okullarda varlığı işaretlemek için yaygın olarak kullanılan sistemlerdir. Yoklama kayıtlarındaki katılımı manuel olarak işaretlemekten yüksek teknoloji uygulamaları ve biyometrik sistemleri kullanmaya kadar, bu sistemler önemli ölçüde gelişti. Önceki projelerimizde, RFID ve AVR mikro denetleyici, 8051 ve ahududu Pi kullanan birkaç başka elektronik katılım sistemi projesini ele aldık. Bu projede, yoklama verilerini ve kayıtlarını almak ve saklamak için parmak izi Modülü ve Arduino kullandık. Parmak izi sensörünün kullanılmasıyla sistem kullanıcılar için daha güvenli hale gelecektir. Aşağıdaki bölümler, Arduino kullanarak parmak izi tabanlı bir biyometrik devam sistemi oluşturmanın teknik ayrıntılarını açıklamaktadır.
Gerekli Bileşenler
- Arduino -1
- Parmak izi modülü -1
- Düğme - 4
- LED'ler -1
- 1K Direnç -2
- 2.2K direnç -1
- Güç
- Bağlantı telleri
- Kutu
- Buzzer -1
- 16x2 LCD -1
- Ekmek Tahtası -1
- RTC Modülü -1
Proje Açıklaması:
Bu ise , parmak izi devam sistemi devresi, Kullandığımız Parmak İzi modülüsisteme parmak girişlerini alarak gerçek bir kişi veya çalışanın kimliğini doğrulamak. Burada kayıt, Silme, YUKARI / Aşağı için 4 basma düğmesi kullanıyoruz. KAYDET ve DEL tuşunun üçlü özelliği vardır. KAYIT tuşu, yeni bir kişinin sisteme kaydedilmesi için kullanılır. Bu nedenle kullanıcı yeni parmağını kaydetmek istediğinde, KAYIT tuşuna basması gerekir ve ardından LCD, kullanıcının parmak izi görüntüsünü saklamak istediği kimliği sorar. Şimdi, kullanıcı şu anda daha fazla ilerlemek istemezse, geri dönmek için tekrar KAYDET tuşuna basabilir. Bu kez KAYIT tuşu Geri tuşu olarak davranır, yani KAYIT tuşu hem kayıt hem de geri fonksiyonuna sahiptir. Kayıt anahtarı ayrıca yoklama verilerini seri monitör üzerinden indirmek için de kullanılır. Benzer şekilde, DEL / OK tuşu da kullanıcı yeni parmağını kaydettiğinde olduğu gibi aynı çift işleve sahiptir,daha sonra YUKARI ve AŞAĞI olmak üzere başka iki tuş kullanarak parmak kimliğini seçmesi gerekir. Şimdi kullanıcının, seçilen ID ile devam etmek için DEL / OK tuşuna (bu sefer bu tuş OK gibi davranır) basması gerekir. Ve Del anahtarı, Arduino'nun EEPROM'undan verileri sıfırlamak veya silmek için kullanılır.
FingerPrint modülü:
Parmak izi sensör modülü, parmağın baskı görüntüsünü yakalar ve ardından eşdeğer şablona dönüştürür ve bunları Arduino tarafından seçilen kimliğe göre hafızasına kaydeder. Parmak izinin görüntüsünün alınması, şablonlara dönüştürülmesi ve kimlik olarak saklanması gibi tüm işlemler Arduino tarafından yönetilir. Parmak izi modülünü kullanarak daha fazla projeyi kontrol edebilirsiniz:
Parmak izi tabanlı güvenlik sistemi
Parmak izi tabanlı biyometrik oylama makinesi
Buraya parmak izi modülünün parmağın görüntüsünü almaya hazır olduğunu gösteren Sarı bir LED ekledik. Çeşitli göstergeler için bir zil de kullanılır. Arduino, bu sistemin ana bileşenidir ve tüm sistemin kontrolünden sorumludur.
Parmak İzi Bazlı Devam Sisteminin Çalışması
Bu parmak izi katılım sistemi projesinin çalışmasıoldukça basit. Öncelikle kullanıcının, kullanıcının parmak izlerini butonlar yardımıyla kaydetmesi gerekiyor. Bunu yapmak için, kullanıcının KAYDET tuşuna basması gerekir ve ardından LCD, parmakizi ID adına hafızaya kaydetmek için ID girilmesini ister. Yani artık kullanıcının YUKARI / AŞAĞI tuşlarını kullanarak ID girmesi gerekiyor. Kimliği seçtikten sonra, kullanıcının OK tuşuna (DEL tuşu) basması gerekir. Şimdi LCD, parmağınızı parmak izi modülünün üzerine yerleştirmenizi isteyecektir. Artık kullanıcının parmağını parmak izi modülünün üzerine yerleştirmesi gerekiyor ve ardından modül parmak görüntüsünü alıyor. Şimdi LCD, parmağınızı parmak izi modülünden kaldırmanızı söyleyecek ve tekrar parmağınızı tekrar yerleştirmenizi isteyecektir. Artık kullanıcının parmağını tekrar koyması gerekiyor ve modül bir görüntüyü alıp şablonlara dönüştürüyor ve seçilen kimliğe göre parmak izi modülünün belleğine kaydediyor.Artık kullanıcı kayıt olacak ve parmak izi modülünün üzerine parmağını koyarak katılım besleyebilecektir.Aynı yöntemle tüm kullanıcılar sisteme kayıt edilecektir.
Şimdi, kullanıcı kayıtlı kimlik veya parmak izlerinden herhangi birini kaldırmak veya silmek isterse, DEL tuşuna basması gerekir. Silme tuşuna basıldığında, LCD silinmesi gereken kimliği seçmenizi ister. Şimdi kullanıcının ID'yi seçmesi ve OK tuşuna (aynı DEL tuşu) basması gerekir. Artık LCD, parmak izinin başarıyla silindiğini size bildirecektir.
Bu Parmak İzi Katılım Sistemi Projesinde Katılım nasıl çalışır:
Kullanıcı parmağını parmak izi modülünün üzerine her koyduğunda parmak izi modülü parmak görüntüsünü yakalar ve sistemdeki bu parmak izi ile ilişkili herhangi bir kimlik olup olmadığını araştırır. Parmak izi kimliği algılanırsa, LCD ekranda Katılım kaydedildi'yi gösterecek ve aynı zamanda sesli uyarı bir kez bipleyecek ve sistem tekrar giriş almaya hazır olana kadar LED sönecektir.
Parmak izi modülünün yanı sıra Saat ve tarih için de bir RTC modülü kullandık. Sistemde saat ve tarih sürekli olarak çalışmaktadır. Bu nedenle, gerçek bir kullanıcı parmağını parmak izinin üzerine koyduğunda Arduino zaman ve tarih alır ve bunları ayrılmış bellek yuvasında EEPROM'a kaydeder.
İşte bu sistemde 30 günlük 5 kullanıcı alanı oluşturduk. Arduino'daki SIFIRLA düğmesine basarak ve ardından hemen kayıt anahtarı, Arduino EEPROM Belleğinden seri monitör üzerinden yoklama verilerini indirmekten sorumlu olacaktır.
Hafıza yönetimi:
Arduino UNO'da 1018 bayt veri depolamak için 1023 bayt belleğimiz var ve 30 gün boyunca 5 kullanıcı katılım verisi aldık. Ve her katılım saat ve tarihi kaydedecek, böylece bu 7 baytlık veri haline gelecektir.
Yani gereken toplam hafıza
5 * 30 * 7 = 1050, bu yüzden burada daha fazla 32 bayta ihtiyacımız var
Ama 4 kullanıcı kullanacaksak, gerekli
4 * 30 * 7 = 840
Burada 5 kullanıcının hafızasını alarak bu proje tanıtımını yaptık. Bu sayede 5. kullanıcının 32 bayt veya 5 yoklama kaydını saklayamayız.
Koddaki bazı satırları değiştirerek 4 kullanıcı ile deneyebilirsiniz. Değişikliklerin gerekli olduğu kodda yorumları yaptım.
Parmak İzi Devam Sistemi Projesi için Devre Şeması ve Açıklaması
Yukarıdaki şemada gösterildiği gibi bu parmak izi tabanlı devam sistemi projesinin devresi oldukça basittir. Projenin tüm sürecini kontrol etmek için Arduino'ya, kayıt olmak, silmek, kimlik seçmek ve katılım için basma düğmesi, uyarı için bir zil, gösterge için LED'ler ve kullanıcıya talimat vermek ve sonuçtaki mesajları göstermek için LCD'ye sahiptir.
Devre şemasında gösterildiği gibi, Arduino'nun A0 (ENROLL), A1 (DEL), A2 (UP), A3 (DOWN) pinlerine toprağa göre bir basma düğmesi doğrudan bağlanır ve Sarı LED, Dijital pin D7'ye bağlanır. Arduino'nun 1k direnç üzerinden toprağa göre. Parmak izi modülünün Rx ve Tx'i doğrudan Arduino'nun Seri pin D2 ve D3'üne (Yazılım Seri) bağlıdır. Arduino kartından alınan parmak izi modülüne güç vermek için 5v besleme kullanılır. A5 pinine bir zil de bağlanmıştır. 16x2 LCD, 4 bit modunda yapılandırılır ve RS, EN, D4, D5, D6 ve D7, Arduino'nun Dijital pin D13, D12, D11, D10, D9 ve D8'e doğrudan bağlanır.
Kod Açıklaması:
Arduino için parmak izi katılım sistem kod sonraki bölümlerde verilmektedir. Kod yorumlarla iyi bir şekilde açıklanmış olsa da, burada kodun birkaç önemli parçasını tartışıyoruz. Parmak izi modülünü Arduino kartı ile arayüz oluşturmak için parmak izi kitaplığı kullandık.
Öncelikle, başlık dosyasını dahil ediyoruz ve giriş ve çıkış pinini tanımlıyoruz ve makro ve bildirilmiş değişkenleri tanımlıyoruz. Bundan sonra kurulum fonksiyonunda tanımlı pime yön vererek LCD ve parmak izi modülünü çalıştırıyoruz.
Ondan sonra, yoklama verilerini indirmek için kod yazmamız gerekiyor.
geçersiz kurulum () {gecikme (1000); lcd.begin (16,2); Serial.begin (9600); pinMode (kayıt, INPUT_PULLUP); pinMode (yukarı, INPUT_PULLUP); pinMode (aşağı, INPUT_PULLUP); pinMode (del, INPUT_PULLUP); pinMode (eşleşme, INPUT_PULLUP); pinMode (buzzer, OUTPUT); pinMode (indFinger, OUTPUT); digitalWrite (zil, DÜŞÜK); eğer (digitalRead (kayıt) == 0) {digitalWrite (buzzer, HIGH); gecikme (500); digitalWrite (zil, DÜŞÜK); lcd.clear (); lcd.print ("Lütfen bekleyin"); lcd.setCursor (0,1); lcd.print ("Yerine Düşen Veriler");
Ardından, EEPROM'dan yoklama verilerini temizlemek için kod yazmamız gerekiyor.
eğer (digitalRead (del) == 0) {lcd.clear (); lcd.print ("Lütfen Bekleyin"); lcd.setCursor (0,1); lcd.print ("Sıfırlanıyor….."); for (int i = 1000; i <1005; i ++) EEPROM.write (i, 0); for (int i = 0; i <841; i ++) EEPROM.write (i, 0xff); lcd.clear (); lcd.print ("Sistem Sıfırlama"); gecikme (1000); }
Ardından, LCD üzerinden karşılama mesajı ve ayrıca başlatılan RTC modülünü gösteren parmak izi modülünü başlatıyoruz.
Bundan sonra, döngü fonksiyonunda, RTC zamanını okuduk ve LCD'de görüntüledik.
boşluk döngü () {şimdi = rtc.now (); lcd.setCursor (0,0); lcd.print ("Zaman->"); lcd.print (şimdi.hour (), DEC); lcd.print (':'); lcd.print (şimdi.dakika (), DEC); lcd.print (':'); lcd.print (şimdi.second (), DEC); lcd.print (""); lcd.setCursor (0,1); lcd.print ("Tarih->"); lcd.print (şimdi. gün (), Aralık); lcd.print ('/'); lcd.print (şimdi.month (), DEC); lcd.print ('/'); lcd.print (şimdi.yıl (), Aralık);
Bundan sonra, parmak izinin giriş yapmasını ve yakalanan görüntü kimliğini kayıtlı kimliklerle karşılaştırmasını bekleyin. Bir eşleşme olursa, bir sonraki adıma geçin. Kayıt del anahtarlarını da kontrol etmek
int sonuç = getFingerprintIDez (); eğer (sonuç> 0) {digitalWrite (indFinger, LOW); digitalWrite (zil, YÜKSEK); gecikme (100); digitalWrite (zil, DÜŞÜK); lcd.clear (); lcd.print ("ID:"); lcd.print (sonuç); lcd.setCursor (0,1); lcd.print ("Lütfen Bekleyin…."); gecikme (1000); katılım (sonuç); lcd.clear (); lcd.print ("Katılım"); lcd.setCursor (0,1); lcd.print ("Kayıtlı"); gecikme (1000); digitalWrite (indFinger, YÜKSEK); dönüş; }
Verilen void checkKeys () işlevi, Kaydol veya DEL tuşuna basılıp basılmadığını ve basıldığında ne yapılacağını kontrol etmek için kullanılır. KAYDET tuşuna basıldığında, Kayıt () işlevi çağrılır ve DEL tuşuna basıldığında silme () işlevi çağrılır.
void delet () işlevi silinecek kimliği girmek ve parmağı kayıtlardan silen uint8_t deleteFingerprint (uint8_t id) işlevini çağırmak için kullanılır.
Verilen Fonksiyon, parmak izi görüntüsü almak ve bunları şablona dönüştürmek ve ayrıca seçilen ID ile parmak izi modülü hafızasına kaydetmek için kullanılır.
uint8_t getFingerprintEnroll () {int p = -1; lcd.clear (); lcd.print ("parmak kimliği:"); lcd.print (id); lcd.setCursor (0,1); lcd.print ("Parmağı Yerleştir"); gecikme (2000); while (p! = FINGERPRINT_OK) {p = finger.getImage ();…………………
Verilen işlev, EEPROM'un ayrılan yuvasında katılım saatini ve tarihini depolamak için kullanılır.
geçersiz katılım (int id) {int kullanıcı = 0, eepLoc = 0; eğer (id == 1) {eepLoc = 0; kullanıcı = kullanıcı1 ++; } else if (id == 2) {eepLoc = 210; kullanıcı = kullanıcı2 ++; } else if (id == 3)………….
Verilen işlev, EEPROM'dan veri almak ve seri monitöre göndermek için kullanılır
void download (int eepIndex) {if (EEPROM.read (eepIndex)! = 0xff) {Serial.print ("T->"); eğer (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++)); Seri.baskı (':'); eğer (EEPROM.read (eepIndex) <10) Serial.print ('0'); Serial.print (EEPROM.read (eepIndex ++));………….