Arduino nano için elektronik kilit. Arduino kullanarak bir RFID kilidi yapmak

Bu dersimizde elektronik anahtar (Tag) kullanarak kilidi açacak basit bir sistem yapmayı öğreneceğiz.

Gelecekte, işlevselliği değiştirebilir ve genişletebilirsiniz. Örneğin, "yeni anahtarlar ekle ve bunları bellekten kaldır" işlevini ekleyin. Temel durumda, program kodunda benzersiz bir anahtar tanımlayıcı önceden ayarlandığında basit bir örnek düşünün.

Bu eğitimde ihtiyacımız olacak:

Projeyi uygulamak için kütüphaneleri kurmamız gerekiyor:

2) Şimdi, anahtar tetiklendiğinde ve kilit açıldığında bir sinyal ve kilit kapatıldığında ikinci bir sinyal verecek olan bir Buzzer bağlamanız gerekir.

Buzzeri aşağıdaki sırayla bağlarız:

Arduino zil
5V VCC
GND GND
pim 5

3) Servo, kilit açma mekanizması olarak kullanılacaktır. Servonun oluşturduğu, sizin ihtiyaç duyduğunuz boyutlara ve kuvvetlere bağlı olarak herhangi bir servo seçilebilir. Servo 3 pime sahiptir:

Daha açık olarak, aşağıdaki resimde tüm modülleri nasıl bağladığımızı görebilirsiniz:

Şimdi, her şey bağlıysa, programlamaya devam edebilirsiniz.

Eskiz:

#Dahil etmek #Dahil etmek #Dahil etmek // "RFID" kitaplığı. #define SS_PIN 10 #define RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); imzasız uzun uidDec, uidDecTemp; // etiket numarasını ondalık formatta saklamak için Servo servo; geçersiz kurulum () (Serial.begin (9600); Serial.println ("Kart bekleniyor ..."); SPI.begin (); // başlatma SPI / Init SPI bus.mfrc522.PCD_Init (); // başlatma MFRC522 / Init MFRC522 card.servo.attach (6); servo.write (0); // servoyu kapalı olarak ayarla) void loop () (// Eğer (! Mfrc522.PICC_IsNewCardPresent ()) (dönüş) ; ) // Bir etiket seçin eğer (! Mfrc522.PICC_ReadCardSerial ()) (dönüş;) uidDec = 0; // etiketin seri numarasını verin.for (byte i = 0; i< mfrc522.uid.size; i++) { uidDecTemp = mfrc522.uid.uidByte[i]; uidDec = uidDec * 256 + uidDecTemp; } Serial.println("Card UID: "); Serial.println(uidDec); // Выводим UID метки в консоль. if (uidDec == 3763966293) // Сравниваем Uid метки, если он равен заданому то серва открывает. { tone(5, 200, 500); // Делаем звуковой сигнал, Открытие servo.write(90); // Поворациваем серву на угол 90 градусов(Отпираем какой либо механизм: задвижку, поворациваем ключ и т.д.) delay(3000); // пауза 3 сек и механизм запирается. tone(5, 500, 500); // Делаем звуковой сигнал, Закрытие } servo.write(0); // устанавливаем серву в закрытое сосотояние }

Krokiye daha yakından bakalım:

Kartın UID'sini (Etiketler) bulmak için arduinoya bu krokiyi yazmanız, yukarıda anlatılan devreyi kurmanız ve Konsolu (Seri port izleme) açmanız gerekmektedir. Etiketi RFID'ye getirdiğinizde konsolda bir numara görüntülenecektir.

Ortaya çıkan UID aşağıdaki satıra girilmelidir:

If (uidDec == 3763966293) // Etiketin Uid'ini karşılaştırın, verilene eşitse servo valfi açar.

Her kartın benzersiz bir tanımlayıcısı vardır ve kendini tekrar etmez. Böylece programda tanıtıcısını belirlediğiniz kartı getirdiğinizde sistem bir servo sürücü kullanarak erişime açılacaktır.

Video:

Arduino, herhangi bir donanımı kopyalamak için en iyi sistemdir. Çoğu fikir onsuz mümkün olmazdı. Uzun zamandır böyle bir düşünce var: arduino'da özel bir şifreli kilit oluşturmak. Açmak için belirli bir tuşu basılı tutmanız gerekir. Bu durumda, istediğiniz düğmeyi bilseniz bile kilit açılmamalıdır. Açmak için kas hafızasını kullanarak belirli aralıkları korumak gerekir. Böyle bir suçlu yapamaz. Ama bunların hepsi sadece teori.

Onu toplamak için, özel bir dikdörtgen darbe cihazı, ayrıca birkaç sayaç ve bir yığın kullanmanız gerekir. Ancak bitmiş cihaz büyük boyutlara sahip olacak ve kullanımı elverişsiz olacaktır. Kural olarak, bu tür düşünceler dinlenmez. Bu hayali gerçekleştirmenin ilk adımı Arduino için bir program oluşturmaktı. Şifreli kilit görevi görecek olan odur. Açmak için bir tuşa değil, birkaç tuşa basmanız ve aynı anda yapmanız gerekir. Bitmiş devre şöyle görünür:

Görüntü kalitesi en iyi değil, ancak bağlantılar toprağa, D3, D5, D7, D9 ve D11'e yapılıyor.

Kod aşağıda gösterilmiştir:

Sabit int ina = 3; const int inb = 5; const int inc = 9; const int ledPin = 13; int ben = 1000; bayt a = 0; bayt b = 0; bayt c = 0; bayt d = 0; imzasız uzun süre = 0; // millis () unsigned long temp = 0 için aldığı her şeyi unutma; // işaretsiz uzun baytta sakla keya = (0, 0, 0, 0, 0, 0, 0, 0); // uygun bayt kodları keyb = (1, 1, 1, 1, 0, 1, 0, 0); bayt tuşuc = (1, 0, 1, 0, 1, 1, 1, 0); bayt k = 0; void setup () (pinMode (ina, INPUT_PULLUP); // pinMode (inb, INPUT_PULLUP) düğmelerine bağlı 3 giriş; pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // 13'ünde yerleşik LED pin pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, DÜŞÜK); // digitalWrite (11, LOW) zemini değiştirin; zaman = millis (); // zamanlama için gerekli) iki kez void () ( // digitalWrite LED'inin iki kez yanıp sönmesi (ledPin, HIGH); gecikme (100); digitalWrite (ledPin, LOW); gecikme (100); digitalWrite (ledPin, HIGH); gecikme (100); digitalWrite (ledPin, LOW) ;delay ( 200);) void loop () (if (k == 0) (iki kez yanıp söner (); // kod ister) if (k == 8) (digitalWrite (ledPin, HIGH); delay (3000); k = 0 ;) a = digitalRead (ina); // sinyal seviyeleri düğmelerden okunur - basılı / basılı değil b = digitalRead (inb); c = digitalRead (inc); gecikme (100); // sonraki if - koruma yanlış pozitiflere karşı if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) (if (a == keya) kullanmanıza gerek yoktur [k]) (eğer (b == keyb [k]) (if (c == keyc [k]) (k ++; )))) if (k == 1) (if (d == 0) (zaman = millis (); d ++;)) temp = millis (); sıcaklık = sıcaklık - zaman; if (temp> 10000) (k = 0; d = 0; zaman = milis ();))

Kodla ilgili gereksiz sorulardan kaçınmak için bazı noktalar açıklığa kavuşturulmalıdır. Kurulum işlevi, bağlantı noktaları atamak için kullanılır. Bir sonraki işlev, pin voltajını 5 V artırmak için gerekli olan Input_Pullup'tur. Bu bir dirençle yapılır. Bu nedenle çeşitli kısa devreler oluşmayacaktır. Daha fazla rahatlık için iki kez yanıp sönme işlevinin kullanılması önerilir. Genel olarak, çeşitli programlar oluştururken diğer işlevleri denemeniz gerekir.

Fonksiyonlar atandıktan sonra portlardan sinyal okunur. Düğmeye basılırsa 1 sayısı ile gösterilir, değilse - 2. Ayrıca tüm değerler analiz edilir. Örneğin 0,1,1 gibi bir kombinasyon ortaya çıktı. Bu, ilk tuşa basıldığı ve diğer ikisine basılmadığı anlamına gelir. Tüm değerler doğruysa, 8. koşul da doğrudur. Bu, ön panelde yanan LED ile kanıtlanmıştır. Ardından, kapıyı açmaya hizmet edecek belirli bir kod girmeniz gerekir.

Kodun son elemanları sayaç değerlerini sıfırlamak için kullanılır. Bu işlev, son tuşa basılmasından bu yana 10 saniyeden fazla geçmişse gerçekleştirilir. Bu kod olmadan, birkaç tane olmasına rağmen tüm olası seçenekleri sıralamak mümkündü. Bu cihazı oluşturduktan sonra test etmeniz gerekiyor. Daha

Geçen gün The Amazing Spider-Man izliyordum ve bir sahnede Peter Parker, dizüstü bilgisayarından kapıyı uzaktan açıp kapatıyor. Bunu görür görmez, ön kapıda da böyle bir elektronik kilide ihtiyacım olduğunu hemen anladım.

Biraz kurcalayarak, çalışan bir akıllı kilit modelini bir araya getirdim. Bu yazıda size nasıl bir araya getirdiğimi anlatacağım.

Adım 1: Malzeme listesi





Arduino'ya elektronik bir kilit takmak için aşağıdaki malzemelere ihtiyacınız olacak:

Elektronik:

  • 5V duvar adaptörü

Bileşenler:

  • Mandal için 6 vida
  • karton
  • teller

Araçlar:

  • havya
  • tutkal tabancası
  • delmek
  • delmek
  • pilot delik matkabı
  • kırtasiye bıçağı
  • Arduino IDE programı olan bilgisayar

Adım 2: kilidin nasıl çalıştığı

Fikir şu ki, kapıyı anahtarsız ve hatta ona gitmeden açabilir veya kapatabilirim. Ancak bu sadece temel fikir, çünkü özel bir vuruntuya yanıt vermesi için bir vuruntu sensörü de ekleyebilir veya bir ses tanıma sistemi ekleyebilirsiniz!

Mandala bağlı servo kol, Bluetooth modülü üzerinden alınan komutlar kullanılarak (0°) kapanacak ve (60°) açılacaktır.

Adım 3: Bağlantı şeması


Öncelikle servoyu Arduino kartına bağlayalım (Unutmayın ki Arduino Nano kartım olmasına rağmen Uno kartındaki pin düzeni tamamen aynı).

  • servonun kahverengi teli topraklanmış, onu Arduino üzerinde toprağa bağlıyoruz
  • kırmızı kablo bir artı, onu Arduino'daki 5V konektöre bağlıyoruz
  • turuncu tel - servo kaynağının çıkışı, onu Arduino'daki 9. pime bağlarız

Montaja geçmeden önce servoyu test etmenizi tavsiye ederim. Bunu yapmak için örneklerdeki Arduino IDE programında Sweep'i seçin. Servonun çalıştığından emin olduktan sonra Bluetooth modülünü bağlayabiliriz. Bluetooth modülünün rx pinini Arduino'nun tx pinine, modülün tx pinini Arduino'nun rx pinine bağlamanız gerekmektedir. Ama henüz yapma! Bu bağlantılar lehimlendikten sonra, artık Arduino'ya herhangi bir kod yükleyemezsiniz, bu nedenle önce tüm kodlarınızı indirin ve ardından bağlantıları lehimleyin.

Modül ve mikrodenetleyici için bağlantı şeması:

  • Rx Modülü - Tx Arduino Kartı
  • Tx modülü - Rx panoları
  • Modülün Vcc (pozitif) - 3.3v Arduino kartı
  • Toprak Toprağa bağlı (topraktan toprağa)

Açıklama size kafa karıştırıcı geliyorsa, verilen bağlantı şemasını takip edin.

4. Adım: Test edin

Artık tüm parçaları harekete geçirdiğimize göre, servonun cıvatayı hareket ettirebildiğinden emin olalım. Mandalı kapıya takmadan önce servonun yeterince güçlü olduğundan emin olmak için bir test parçası hazırladım. İlk başta bana servom zayıfmış gibi geldi ve cıvataya bir damla yağ ekledim, bundan sonra iyi çalıştı. Mekanizmanın iyi kayması çok önemlidir, aksi takdirde odanızda mahsur kalma riskiniz vardır.

Adım 5: Elektrikli bileşenler için muhafaza



Kasaya sadece controller ve Bluetooth modülünü koyup servoyu dışarıda bırakmaya karar verdim. Bunu yapmak için, bir karton parçası üzerinde Arduino Nano kartının dış hatlarını daire içine alıyoruz ve çevresine 1 cm boşluk ekliyoruz ve kesiyoruz. Bundan sonra, kasanın beş tarafını da kestik. Ön duvarda, kontrol cihazının güç kablosu için bir delik açmanız gerekecek.

Kasanın yan boyutları:

  • Alt - 7,5x4 cm
  • Kapak - 7,5x4 cm
  • Sol yan duvar - 7,5x4 cm
  • Sağ yan duvar - 7,5x4 cm
  • Ön duvar - 4x4 cm (güç kablosu için bir yuva ile)
  • Arka duvar - 4x4 cm

Adım 6: Uygulama

Denetleyiciyi kontrol etmek için yerleşik Bluetooth'lu bir Android veya Windows gadget'ına ihtiyacınız var. Uygulamanın çalışmasını apple cihazlarda test etme fırsatım olmadı, belki bazı sürücülere ihtiyaç olacaktır.

Eminim bazılarınızın bunu test etme fırsatı vardır. Android için Bluetooth Terminal uygulamasını indirin, Windows için TeraTerm'i indirin. Ardından modülü akıllı telefonunuza bağlamanız gerekir, adı linvor olmalı, şifre 0000 veya 1234 olmalıdır. Eşleştirme kurulur kurulmaz kurulu uygulamayı açın, seçenekleri girin ve "Bağlantı kur (güvensiz)" seçeneğini seçin. . Akıllı telefonunuz artık bir Arduino seri monitörüdür, yani kontrolör ile iletişim kurabilirsiniz.

0 girerseniz kapı kapanacak ve akıllı telefon ekranında “Kapı kapalı” mesajı görüntülenecektir.
1 girerseniz kapının açıldığını göreceksiniz ve ekranda "Kapı açık" mesajı görüntülenecektir.
Windows'ta, TeraTerm uygulamasını yüklemeniz gerekmesi dışında işlem aynıdır.

Adım 7: cıvatayı monte edin


İlk önce servoyu mandala bağlamanız gerekir. Bunu yapmak için, sürücü muhafazasının montaj deliklerinden tapaları kesin. Servoyu koyarsak montaj delikleri mandalla aynı hizada olmalıdır. Ardından servo kolunu, mandal kolunun olduğu mandal yuvasına yerleştirmeniz gerekir. Kilidin kasada nasıl hareket ettiğini kontrol edin. Her şey yolundaysa, servo kolu tutkalla sabitleyin.

Şimdi kapıdaki vidalar için pilot delikler açmanız gerekiyor. Bunu yapmak için, mandalı kapıya takın ve kapı kanadındaki vida deliklerini bir kurşun kalemle işaretleyin. İşaretli yerlere yaklaşık 2,5 cm derinliğinde vida delikleri delin, mandalı takın ve vidalarla sabitleyin. Servoyu tekrar kontrol edin.

Adım 8: Güç


Cihazı tamamlamak için bir güç kaynağına, bir kabloya ve Arduino'ya bağlanmak için bir mini usb fişine ihtiyacınız olacak.
Güç kaynağının topraklama pimini mini usb bağlantı noktasının topraklama pimine bağlayın, kırmızı kabloyu mini usb bağlantı noktasının kırmızı kablosuna bağlayın, ardından kabloyu kilitten kapı menteşesine ve oradan da çıkışa geçirin.

9. Adım: Kod

#include Servo myservo; int konum = 0; int durumu; int bayrak = 0; void setup () (myservo.attach (9); Serial.begin (9600); myservo.write (60); gecikme (1000);) void döngüsü () (eğer (Serial.available ()> 0) (durum = Serial.read (); flag = 0;) // durum "0" ise DC motor kapanır if (durum == "0") (myservo.write (8); gecikme (1000); Seri. println ("Kapı Kilitli");) else if (durum == "1") (myservo.write (55); delay (1000); Serial.println ("Kapı Kilitli");))

Adım 10: Bitmiş Arduino Kilidi

Uzaktan kumanda kilidinizin keyfini çıkarın ve arkadaşlarınızı "yanlışlıkla" odaya kilitlemeyi unutmayın.

Bugünün dersi, basit bir deyişle basit bir kilitleme sistemi oluşturmak için Arduino ile bir RFID okuyucunun nasıl kullanılacağına dair ders - bir RFID kilidi.

RFID (İngilizce Radyo Frekansı Tanımlaması, radyo frekansı tanımlaması), transponder veya RFID etiketlerinde depolanan verilerin radyo sinyalleri aracılığıyla okunduğu veya yazıldığı nesnelerin otomatik olarak tanımlanması için bir yöntemdir. Herhangi bir RFID sistemi, bir okuyucu (okuyucu, okuyucu veya sorgulayıcı) ve bir aktarıcıdan (diğer bir deyişle RFID etiketi, bazen RFID etiketi terimi de kullanılır) oluşur.

Bu eğitim, bir Arduino'dan bir RFID etiketi kullanacaktır. Cihaz, okuyucunun yanına yerleştirdiğimiz her RFID etiketinin benzersiz tanımlayıcısını (UID) okur ve OLED ekranında görüntüler. Etiketin UID'si Arduino hafızasında saklanan önceden tanımlanmış değere eşitse, ekranda “Kilidi Açıldı” mesajını göreceğiz. Benzersiz tanımlayıcı önceden tanımlanmış değere eşit değilse, "Kilitsiz" mesajı görünmez - aşağıdaki fotoğrafa bakın.

kilit kapalı

kilit açık

Bu projeyi oluşturmak için gerekli ayrıntılar:

  • RFID Okuyucu RC522
  • OLED ekran
  • ekmek tahtası
  • teller

Ek detaylar:

  • Pil (güç bankası)

Proje bileşenlerinin toplam maliyeti yaklaşık 15 dolardı.

Adım 2: RFID okuyucu RC522

Her RFID etiketinin küçük bir çipi vardır (resimde beyaz kart). El fenerini bu RFID kartına doğrultursanız, küçük bir çip ve onu çevreleyen bir bobin görebilirsiniz. Bu çipin güç üretecek bir pili yok. Bu büyük bobini kullanarak okuyucudan kablosuz olarak güç alır. Bunun gibi bir RFID kartı 20 mm'ye kadar okunabilir.

Aynı çip, RFID anahtarlığın etiketlerinde de bulunur.

Her RFID etiketinin, onu tanımlayan benzersiz bir numarası vardır. Bu, OLED ekranında gösterilen UID'dir. Bu UID dışında her etiket veri depolayabilir. Bu kart türü 1.000'e kadar veri depolayabilir. Etkileyici, değil mi? Bu özellik bugün kullanılmayacaktır. Bugün, tek ilgilenilen şey, belirli bir kartın UID'si ile tanımlanmasıdır. RFID okuyucu ve bu iki RFID kartın maliyeti 4 ABD doları civarındadır.

3. Adım: OLED ekran

Bu öğretici, 0.96 "128x64 I2C OLED monitör kullanır.

Bu Arduino ile kullanım için çok iyi bir ekran. Bu bir OLED ekrandır ve bu, düşük güç tüketimine sahip olduğu anlamına gelir. Bu ekranın güç tüketimi yaklaşık 10-20mA'dır ve piksel sayısına bağlıdır.

Ekran 128 x 64 piksel çözünürlüğe sahip ve küçük. İki görüntüleme seçeneği vardır. Bunlardan biri monokromdur ve diğeri, öğreticide kullanılana benzer şekilde iki renk gösterebilir: sarı ve mavi. Ekranın üst kısmı sadece sarı ve alt kısmı mavi olabilir.

Bu OLED ekran çok parlak ve Adafruit'in bu ekran için geliştirdiği harika ve çok güzel bir kütüphaneye sahip. Buna ek olarak, ekran bir I2C arayüzü kullanır, bu nedenle Arduino'ya bağlanmak inanılmaz derecede kolaydır.

Vcc ve GND hariç sadece iki kablo bağlamanız yeterlidir. Arduino'da yeniyseniz ve projenizde ucuz ve basit bir ekran kullanmak istiyorsanız, buradan başlayın.

Adım 4: tüm ayrıntıları bağlayın

Arduino Uno kartı ile iletişim çok basittir. İlk olarak, gücü hem okuyucuya hem de ekrana bağlayın.

Dikkatli olun, RFID okuyucu Arduino Uno'nun 3.3V çıkışına bağlanmalıdır yoksa bozulacaktır.

Ekran 3.3V'da da çalışabildiğinden, VCC'yi her iki modülden de devre tahtasının pozitif rayına bağlarız. Bu veri yolu daha sonra Arduino Uno'nun 3.3V çıkışına bağlanır. Ardından her iki toprağı (GND) breadboard'un topraklama veriyoluna bağlarız. Ardından breadboard'un GND bus'ını Arduino GND'ye bağlarız.

OLED Ekran → Arduino

SCL → Analog Pin 5

SDA → Analog Pin 4

RFID Okuyucu → Arduino

RST → Dijital Pin 9

IRQ → Bağlı değil

MISO → Dijital Pin 12

MOSI → Dijital Pin 11

SCK → Dijital Pin 13

SDA → Dijital Pin 10

RFID okuyucu modülü, Arduino ile iletişim kurmak için SPI arayüzünü kullanır. Bu nedenle Arduino UNO'nun donanım SPI pinlerini kullanacağız.

RST pini dijital pin 9'a gider. IRQ pini bağlantısız kalır. MISO pini dijital pin 12'ye gider. MOSI pini dijital pin 11'e gider. SCK pini dijital pin 13'e gider ve son olarak SDA pini dijital pin 10'a gider. İşte bu kadar.

RFID okuyucu bağlandı. Şimdi I2C arayüzünü kullanarak OLED ekranı Arduino'ya bağlamamız gerekiyor. Yani ekrandaki SCL pini Pin 5'in analog pinine, ekrandaki SDA ise analog Pin 4'e gidiyor. Şimdi projeyi açıp RFID kartını okuyucunun yanına yerleştirirsek, projenin proje olduğunu görebiliriz. iyi çalışıyor.

Adım 5: Proje Kodu

Proje kodunun derlenebilmesi için bazı kütüphaneleri eklememiz gerekiyor. Öncelikle MFRC522 Rfid kütüphanesine ihtiyacımız var.

Yüklemek için şuraya gidin: Sketch -> Kitaplıkları Dahil Et -> Kitaplıkları yönet(Kütüphane yönetimi). MFRC522'yi bulun ve kurun.

Ayrıca haritalama için Adafruit SSD1306 kütüphanesine ve Adafruit GFX kütüphanesine ihtiyacımız var.

Her iki kitaplığı da yükleyin. Adafruit SSD1306 kütüphanesinin biraz modifikasyona ihtiyacı var. Klasöre git Arduino -> Kitaplıklar, Adafruit SSD1306 klasörünü açın ve kitaplığı düzenleyin Adafruit_SSD1306.h... 70. satırı yorumlayın ve 69. satırı yorumlayın çünkü ekranın çözünürlüğü 128x64.

İlk olarak, Arduino'nun tanıması gereken RFID etiketinin değerini beyan ediyoruz. Bu bir tamsayı dizisidir:

Int kodu = (69,141,8,136); // kullanıcı kimliği

Ardından RFID okuyucuyu başlatıyoruz ve şunu gösteriyoruz:

Rfid.PCD_Init(); display.begin (SSD1306_SWITCHCAPVCC, 0x3C);

Bundan sonra loop fonksiyonunda her 100ms'de bir okuyucu üzerindeki etiketi kontrol ediyoruz.

Okuyucu üzerinde etiket varsa UID'sini okuyup ekrana yazdırıyoruz. Ardından, az önce okuduğumuz etiketin UID'sini kod değişkeninde depolanan değerle karşılaştırırız. Değerler aynı ise UNLOCK mesajını yazdırıyoruz, aksi takdirde bu mesajı görüntülemeyeceğiz.

if (eşleşir) (Serial.println ("\ nBu kartı biliyorum!"); PrintUnlockMessage ();) else (Serial.println ("\ nBilinmeyen Kart"));)

Tabii ki, proje tarafından daha fazla RFID etiketinin tanınması için bu kodu 1'den fazla UID değeri saklayacak şekilde değiştirebilirsiniz. Bu sadece bir örnek.

Proje kodu:

#Dahil etmek #Dahil etmek #Dahil etmek #Dahil etmek #define OLED_RESET 4 Adafruit_SSD1306 ekranı (OLED_RESET); #define SS_PIN 10 #define RST_PIN 9 MFRC522 rfid (SS_PIN, RST_PIN); // MFRC522 sınıfının örneği :: MIFARE_Key anahtarı; int kodu = (69,141,8,136); // Bu, saklanan UID'dir int codeRead = 0; Dize uidString; void setup () (Serial.begin (9600); SPI.begin (); // SPI bus rfid.PCD_Init'i başlat (); // MFRC522 display.begin'i başlat (SSD1306_SWITCHCAPVCC, 0x3C); // I2C adresi 0x3D ile başlat (128x64 için) // buffer.display.clearDisplay (); display.display (); display.setTextColor (BEYAZ); // veya SİYAH); display.setTextSize (2); display.setCursor (10,0); display.print ("RFID Kilidi"); display.display(); ) geçersiz döngü () (if (rfid.PICC_IsNewCardPresent ()) (readRFID ();) gecikme (100);) geçersiz readRFID () (rfid.PICC_ReadCardSerial (); Serial.print (F ("\ nPICC türü:") ); MFRC522 :: PICC_Type piccType = rfid.PICC_GetType (rfid.uid.sak); Serial.println (rfid.PICC_GetTypeName (piccType)); // Kontrol, Klasik MIFARE türünün PICC'sidir! = PICMType22 && piccType!: MFRC522! : PICC_TYPE_MIFARE_1K && piccType! = MFRC522 :: PICC_TYPE_MIFARE_4K) (Serial.println (F ("Etiketiniz MIFARE Classic türünde değil.")); dönüş;) clearUID (); dönüş;) clearUID (); Taranan PICC "s UID:"); printDec (rfid.uid.uidByte, rfid.uid.size); uidString = Dize (rfid.uid.uidByte) + "" + Dize (rfid.uid.uidByte) + "" + Dize (rfid. uid.uidByte) + "" + String (rfid.uid.uidByte); printUID (); int i = 0; boolean match = true; while (i

6. Adım: nihai sonuç

Dersten de görebileceğiniz gibi - biraz para için projelerinize bir RFID okuyucu ekleyebilirsiniz. Bu okuyucuyu kullanarak kolayca bir güvenlik sistemi oluşturabilir veya örneğin bir USB diskindeki verilerin yalnızca kilit açıldıktan sonra okunması için daha ilginç projeler oluşturabilirsiniz.

Bu proje modülerdir, yani. farklı öğeleri bağlayabilir / bağlantısını kesebilir ve farklı işlevler elde edebilirsiniz. Yukarıdaki resimler, tam işlevselliğe sahip seçeneği göstermektedir, yani:

  • Kilitleme mekanizması... Kapıyı AÇMAK ve KAPATMAK için kullanılır. Bu proje, üç farklı mekanizmanın kullanımını kapsamaktadır:
    • Servo. Büyükler var, küçükler var. Çok kompakt ve ağır bir cıvata ile harika bir seçenek
    • Araba kapı kilidinin elektrikli tahriki. Büyük ve güçlü bir şey, ama sadece çılgın akıntıları yiyor
    • Solenoid mandalı. Kendini çarptığı için iyi bir seçenek

    Ürün yazılımı ayarlarında, üç türden birini seçebilirsiniz (ayar Kilit tipi)

  • Düğme iç... Kapıyı içeriden AÇMAK ve KAPATMAK için kullanılır. Kapı koluna (avuç içi veya parmak tarafı), kapının kendisine veya pervazın üzerine yerleştirilebilir
  • Düğme dışında... Kapıyı KAPATMAK ve enerji tasarrufundan UYANMAK için kullanılır. Kapı koluna (avuç içi veya parmak tarafı), kapının kendisine veya pervazın üzerine yerleştirilebilir
  • Son durak kapıyı kapatmak için. Kapı kapatıldığında kilidi otomatik olarak kapatmaya yarar. Onlar yapabilir:
    • incelik düğmesi
    • Kapının kendisinde hall sensörü + mıknatıs
    • Kapının kendisinde manyetik anahtar + mıknatıs
  • Gizli erişim sıfırlama düğmesi... Şifreyi sıfırlamak / yeni bir şifre girmek / yeni bir tuşu / kombinasyonu ezberlemek vb. için kullanılır. Durumda bir yere gizlenmiş olabilir
  • Işık yayan diyot işi belirtmek için. RGB LED, kırmızı ve yeşil renkler kullanılır (karıştırıldıklarında sarı verirler):
    • Yeşil yanıyor - kilit AÇIK. Kapıyı kapatmayı unutmamak için yanıyor
    • Sabit sarı - sistem uyandı ve şifre girilmesini bekliyor
    • Yanıp sönen kırmızı - pil bitmiş

Bu öğelerden herhangi biri sistemden çıkarılabilir:

  • Son anahtarı kaldırıyoruz. Ayarlardaki bellenimde de kapatıyoruz (ayar tail_button). Şimdi kilidi kapatmak için düğmeye basmanız gerekiyor
  • Dış düğmeyi kaldırıyoruz. Ayarlardaki bellenimde, onu da devre dışı bırakıyoruz (ayar Wake_button). Artık sistemin uyandırılmasına gerek yok, kendi kendine uyanıyor (enerji tüketimi biraz daha yüksek). Ayrıca artık kapının ön tarafında bir kapatma düğmesi yok ve bir limit anahtarına ihtiyacımız var. Ya kilit cehennemdir
  • İç düğmeyi kaldırıyoruz. Bu seçenek dolaplar ve kasalar için uygundur. Ayarlarda hiçbir şeyi değiştirmenize gerek yok
  • LED'i çıkarıyoruz. Ayarlarda hiçbir şeyi değiştirmenize gerek yok
  • Erişim sıfırlama düğmesi, ilk kullanımdan sonra lehimlenmemiş olabilir veya kodu kendiniz yeniden yazabilirsiniz.
  • Kapı kapalı, DIŞINDA basılı - uyanın, şifre / RFID etiketi / elektronik anahtar / parmak izi için bekleyin
  • Kapı kapandı, sistem uyandı, şifrenin girilmesini bekliyor. Zaman ayarlanabilir (ayar uyku zamanı)
  • Kapı kapandı, şifre/etiket/anahtar girildi vb. - açık
  • Kapı kapalı, İÇİ basılı - açık
  • Kapı açık, DIŞINDA basılı - kapat
  • Kapı açık, İÇİ basılı - kapat
  • Kapı açık, SON'a basıldı - kapat

Kilit, düşük güç tasarrufu modunda pilin çalışmasını sağlar (açma kapatma: ayar uyku_enable), yani:

  • Birkaç saniyede bir uyanın, OLAYı takip edin (dışarıda düğme yoksa isteğe bağlıdır. Ayarlardan etkinleştirebilirsiniz.) Wake_button)
  • Her birkaç dakikada bir Akum'un voltajını izleyin (açma / kapama ayarı pil_monitor)
  • Akum boşalırsa (ayarda voltaj ayarlanır bat_low):
    • kapıyı açın (isteğe bağlı, bellenimde yapılandırılabilir open_bat_low)
    • daha fazla açmayı ve kapatmayı yasaklamak
    • düğmelere basıldığında, kırmızı LED yanıp söner
    • EVENT izlemeyi durdurun (yani şifre / etiket girin, vb.)

Sistem uyanıkken şifre değiştir düğmesine (gizli düğme) basın. içine düşüyoruz şifre değiştirme modu:
Numaralardan şifreyi girin ( MAKSİMUM 10 HANGİ !!!)

  • * tuşuna bastığınızda şifre belleğe kaydedilir ve sistem şifre değiştirme işleminden çıkar
  • # tuşuna bastığınızda şifre sıfırlanır (tekrar girebilirsiniz)
  • 10 saniye boyunca hiçbir şeye basmazsanız şifre değiştirme modundan otomatik olarak çıkacağız, şifre eski kalacaktır.

Sistem uyanıkken (düğmelerle uyandırıldığında veya uyku devre dışıyken), şifre giriş moduna girmek için * tuşuna basın
Sistem uyur ve EVENT'i kontrol etmek için periyodik olarak uyanırsa, kırmızı LED yanana kadar * düğmesine basın ve basılı tutun
Şifre giriş modu:

  • Parola işleme, doğru parola yalnızca doğru sayı dizisi yazıldığında sayılacak şekilde yapılır, yani parola 345 ise, 345 dizisi görünene kadar herhangi bir sayı girebilirsiniz, yani. 30984570345, 345'te bittiği için kilidi açacaktır.
  • Şifre doğru girilirse kapı açılacaktır.
  • Hiçbir şeye basmazsanız, 10 saniye sonra sistem normal (bekleme) moduna dönecektir.
  • # tuşuna basarsanız, şifre giriş modundan hemen çıkacağız
  • Şifre giriş modunda şifreyi değiştirmek için gizli düğmeye basarsanız, ondan da çıkacağız.