Kunci elektronik untuk arduino nano. Membuat kunci RFID menggunakan Arduino

Dalam pelajaran ini, kita akan belajar bagaimana membuat sistem sederhana yang akan membuka kunci menggunakan kunci elektronik (Tag).

Di masa mendatang, Anda dapat memodifikasi dan memperluas fungsionalitas. Misalnya, tambahkan fungsi "tambahkan kunci baru dan hapus dari memori". Dalam kasus dasar, pertimbangkan contoh sederhana, ketika pengidentifikasi kunci unik telah ditetapkan dalam kode program.

Dalam tutorial ini kita akan membutuhkan:

Untuk mengimplementasikan proyek, kita perlu menginstal perpustakaan:

2) Sekarang Anda perlu menghubungkan Buzzer, yang akan memberikan sinyal jika kunci dipicu dan kunci terbuka, dan sinyal kedua saat kunci ditutup.

Kami menghubungkan bel dalam urutan berikut:

Arduino Bel
5V VCC
GND GND
pin 5 saya

3) Servo akan digunakan sebagai mekanisme pembuka kunci. Servo apa pun dapat dipilih, tergantung pada dimensi dan gaya yang Anda butuhkan, yang dibuat oleh servo. Servo memiliki 3 pin:

Lebih jelasnya, Anda dapat melihat bagaimana kami menghubungkan semua modul pada gambar di bawah ini:

Sekarang, jika semuanya terhubung, maka Anda dapat melanjutkan ke pemrograman.

Sketsa:

#termasuk #termasuk #termasuk // perpustakaan "RFID". #menentukan SS_PIN 10 #menentukan RST_PIN 9 MFRC522 mfrc522 (SS_PIN, RST_PIN); uidDec panjang yang tidak ditandatangani, uidDecTemp; // untuk menyimpan nomor label dalam format desimal Servo servo; void setup () (Serial.begin (9600); Serial.println ("Menunggu kartu ..."); SPI.begin(); // inisialisasi SPI / Init SPI bus.mfrc522.PCD_Init(); // inisialisasi MFRC522 / Init MFRC522 card.servo.attach (6); servo.write (0); // setel servo ke tertutup) void loop () (// Temukan label baru jika (! Mfrc522.PICC_IsNewCardPresent ()) (kembali ; ) // Pilih label jika (! Mfrc522.PICC_ReadCardSerial ()) (return;) uidDec = 0; // Keluarkan nomor seri label.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); // устанавливаем серву в закрытое сосотояние }

Mari kita lihat sketsanya lebih dekat:

Untuk mengetahui UID kartu (Tag), Anda perlu menulis sketsa ini ke arduino, merakit sirkuit yang dijelaskan di atas, dan membuka Konsol (Pemantauan port serial). Saat Anda membawa tag ke RFID, nomor akan ditampilkan di konsol

UID yang dihasilkan harus dimasukkan pada baris berikut:

If (uidDec == 3763966293) // Bandingkan Uid label, jika sama dengan yang diberikan maka servo membuka katup.

Setiap kartu memiliki pengidentifikasi unik dan tidak berulang. Jadi, ketika Anda membawa kartu, pengidentifikasi yang telah Anda atur dalam program, sistem akan membuka akses menggunakan drive servo.

Video:

Arduino adalah sistem terbaik untuk menyalin perangkat keras apa pun. Kebanyakan ide tidak akan mungkin terjadi tanpa dia. Sudah lama ada pemikiran seperti itu: untuk membuat kunci kombinasi khusus pada arduino. Untuk membukanya, Anda perlu menahan tombol tertentu. Dalam hal ini, kunci tidak boleh terbuka, meskipun Anda mengetahui tombol yang diinginkan. Untuk membukanya, perlu untuk mempertahankan interval tertentu menggunakan memori otot. Penjahat seperti itu tidak bisa melakukannya. Tapi ini semua hanya teori.

Untuk mengumpulkannya, Anda perlu menggunakan perangkat khusus pulsa persegi panjang, serta beberapa penghitung dan tumpukan. Tetapi perangkat yang sudah jadi akan memiliki dimensi besar dan tidak nyaman untuk digunakan. Sebagai aturan, pikiran seperti itu tidak memberikan istirahat. Langkah pertama untuk mewujudkan mimpi ini adalah pembuatan program untuk Arduino. Dialah yang akan berfungsi sebagai kunci kombinasi. Untuk membukanya, Anda tidak perlu menekan satu tombol, tetapi beberapa, dan melakukannya secara bersamaan. Sirkuit yang sudah jadi terlihat seperti ini:

Kualitas gambar bukan yang terbaik, tetapi koneksi dibuat ke ground, D3, D5, D7, D9 dan D11.

Kode ditunjukkan di bawah ini:

Konst int ina = 3; const int inb = 5; const inc = 9; const int ledPin = 13; int saya = 1000; byte a = 0; byte b = 0; byte c = 0; byte d = 0; unsigned lama = 0; // jangan lupa semua yang milis () ambil pada unsigned long temp = 0; // simpan di unsigned long byte keya = (0, 0, 0, 0, 0, 0, 0, 0); // mengkode byte yang tepat keyb = (1, 1, 1, 1, 0, 1, 0, 0); byte kuncic = (1, 0, 1, 0, 1, 1, 1, 0); byte k = 0; void setup () (pinMode (ina, INPUT_PULLUP); // 3 input terhubung ke tombol pinMode (inb, INPUT_PULLUP); pinMode (inc, INPUT_PULLUP); pinMode (ledPin, OUTPUT); // built-in LED pada tanggal 13 pin pinMode (7, OUTPUT); pinMode (11, OUTPUT); digitalWrite (7, LOW); // ganti ground digitalWrite (11, LOW); time = milis (); // diperlukan untuk pengaturan waktu) void blinkdua kali () ( // kedipan ganda LED digitalWrite (ledPin, HIGH); delay (100); digitalWrite (ledPin, LOW); delay (100); digitalWrite (ledPin, HIGH); delay (100); digitalWrite (ledPin, LOW) ; delay ( 200);) void loop () (if (k == 0) (berkedip dua kali (); // meminta kode) if (k == 8) (digitalWrite (ledPin, HIGH); delay (3000); k = 0 ;) a = digitalRead (ina); // level sinyal dibaca dari tombol - ditekan / tidak ditekan b = digitalRead (inb); c = digitalRead (inc); delay (100); // next if - protection terhadap positif palsu, Anda tidak perlu menggunakan if ((digitalRead (ina) == a) && (digitalRead (inb) == b) && (digitalRead (inc) == c)) (if (a == keyya [k]) (jika (b == keyb [k]) (jika (c == keyc [k]) (k ++; )))) if (k == 1) (if (d == 0) (waktu = milis (); d++;)) temp = milis (); suhu = suhu - waktu; if (temp> 10000) (k = 0; d = 0; waktu = milis ();))

Untuk menghindari pertanyaan yang tidak perlu tentang kode, beberapa poin harus diklarifikasi. Fungsi setup digunakan untuk menetapkan port. Fungsi selanjutnya adalah Input_Pullup, yang diperlukan untuk menaikkan tegangan pin sebesar 5 V. Hal ini dilakukan dengan resistor. Karena ini, berbagai korsleting tidak akan terjadi. Untuk kenyamanan lebih, disarankan untuk menggunakan fungsi blinktwice. Secara umum, saat membuat berbagai program, Anda perlu mencoba fungsi lain.

Setelah menetapkan fungsi, sinyal dibaca dari port. Jika tombol ditekan, itu akan ditunjukkan dengan angka 1, dan jika tidak - 2. Selanjutnya, semua nilai dianalisis. Misalnya, kombinasi seperti 0,1,1 muncul. Ini berarti bahwa tombol pertama ditekan dan dua lainnya tidak. Jika semua nilai benar, maka kondisi 8 juga benar. Ini dibuktikan dengan lampu LED di panel depan. Selanjutnya, Anda harus memasukkan kode khusus yang akan berfungsi untuk membuka pintu.

Elemen terakhir dari kode digunakan untuk mengatur ulang nilai penghitung. Fungsi ini dilakukan jika lebih dari 10 detik telah berlalu sejak penekanan tombol terakhir. Tanpa kode ini, dimungkinkan untuk menghitung semua opsi yang mungkin, meskipun ada beberapa di antaranya. Setelah membuat perangkat ini, Anda perlu mengujinya. Lagi

Saya sedang menonton The Amazing Spider-Man tempo hari dan dalam satu adegan Peter Parker membuka dan menutup pintu dari laptopnya dari jarak jauh. Segera setelah saya melihat ini, saya segera menyadari bahwa saya juga membutuhkan kunci elektronik seperti itu di pintu depan.

Dengan sedikit mengutak-atik, saya menyusun model kerja kunci pintar. Pada artikel ini, saya akan memberi tahu Anda bagaimana saya menggabungkannya.

Langkah 1: Daftar bahan





Untuk merakit kunci elektronik di Arduino, Anda membutuhkan bahan-bahan berikut:

Elektronik:

  • Adaptor dinding 5V

Komponen:

  • 6 sekrup untuk kait
  • kardus
  • kabel

Peralatan:

  • besi solder
  • lem tembak
  • mengebor
  • mengebor
  • bor lubang percontohan
  • pisau alat tulis
  • komputer dengan program Arduino IDE

Langkah 2: cara kerja kunci

Idenya adalah saya dapat membuka atau menutup pintu tanpa kunci, dan bahkan tanpa pergi ke sana. Tapi ini hanya ide dasarnya, karena Anda juga dapat menambahkan sensor ketukan agar merespons ketukan khusus, atau Anda dapat menambahkan sistem pengenalan suara!

Lengan servo yang terhubung ke kait akan menutup (0 °) dan membuka (60 °) menggunakan perintah yang diterima melalui modul Bluetooth.

Langkah 3: Diagram pengkabelan


Mari kita sambungkan dulu servo ke papan Arduino (perhatikan bahwa meskipun saya memiliki papan Arduino Nano, tata letak pin persis sama pada papan Uno).

  • kabel coklat servo di-ground, kami menghubungkannya ke ground di Arduino
  • kabel merah adalah nilai tambah, kami menghubungkannya ke konektor 5V di Arduino
  • kabel oranye - output dari sumber servo, kami menghubungkannya ke pin ke-9 di Arduino

Saya menyarankan Anda untuk menguji servo sebelum melanjutkan dengan perakitan. Untuk melakukan ini, dalam program Arduino IDE dalam contoh, pilih Sapu. Setelah memastikan bahwa servo berfungsi, kami dapat menghubungkan modul Bluetooth. Anda perlu menghubungkan pin rx modul Bluetooth ke pin tx Arduino, dan pin tx modul ke pin rx Arduino. Tapi jangan lakukan itu dulu! Setelah koneksi ini disolder, Anda tidak akan lagi dapat mengunggah kode apa pun ke Arduino, jadi unduh semua kode Anda terlebih dahulu dan baru kemudian solder koneksi.

Berikut adalah diagram pengkabelan untuk modul dan mikrokontroler:

  • Modul Rx - Papan Arduino Tx
  • Modul Tx - Papan Rx
  • Vcc (positif) dari modul - 3.3v papan Arduino
  • Ground terhubung ke Ground (ground to ground)

Jika penjelasannya tampak membingungkan Anda, ikuti diagram pengkabelan yang disediakan.

Langkah 4: Uji

Sekarang kita memiliki semua bagian yang bekerja, mari pastikan servo dapat menggerakkan baut. Sebelum memasang kait di pintu, saya mengumpulkan benda uji untuk memastikan servo cukup kuat. Awalnya saya merasa servo saya lemah dan saya menambahkan setetes oli ke baut, setelah itu berfungsi dengan baik. Sangat penting bahwa mekanismenya berjalan dengan baik, jika tidak, Anda berisiko terjebak di kamar Anda.

Langkah 5: perumahan untuk komponen listrik



Saya memutuskan untuk hanya memasukkan pengontrol dan modul Bluetooth ke dalam kasing, dan meninggalkan servo di luar. Untuk melakukan ini, pada selembar karton, kami melingkari garis besar papan Arduino Nano dan menambahkan 1 cm ruang di sekeliling dan memotongnya. Setelah itu kami juga memotong lima sisi lagi dari kasing. Di dinding depan, Anda perlu membuat lubang untuk kabel daya pengontrol.

Dimensi sisi casing:

  • Bawah - 7,5x4 cm
  • Penutup - 7,5x4 cm
  • Dinding sisi kiri - 7,5x4 cm
  • Dinding sisi kanan - 7,5x4 cm
  • Dinding depan - 4x4 cm (dengan slot untuk kabel listrik)
  • Dinding belakang - 4x4 cm

Langkah 6: Aplikasi

Untuk mengontrol pengontrol, Anda memerlukan gadget Android atau Windows dengan Bluetooth bawaan. Saya belum memiliki kesempatan untuk menguji pengoperasian aplikasi pada perangkat apple, mungkin beberapa driver akan diperlukan.

Saya yakin beberapa dari Anda memiliki kesempatan untuk menguji ini. Untuk Android, unduh aplikasi Terminal Bluetooth, untuk Windows, unduh TeraTerm. Kemudian Anda perlu menghubungkan modul ke ponsel cerdas Anda, namanya harus linvor, kata sandinya harus 0000 atau 1234. Segera setelah pemasangan dibuat, buka aplikasi yang diinstal, masukkan opsi dan pilih "Buat koneksi (tidak aman)" . Ponsel cerdas Anda sekarang menjadi monitor serial Arduino, artinya Anda dapat berkomunikasi dengan pengontrol.

Jika Anda memasukkan 0, pintu akan tertutup, dan pesan “Pintu tertutup” akan ditampilkan di layar smartphone.
Jika Anda memasukkan 1, Anda akan melihat pintu terbuka dan pesan "Pintu terbuka" akan ditampilkan di layar.
Di Windows, prosesnya sama, kecuali Anda harus menginstal aplikasi TeraTerm.

Langkah 7: pasang baut


Pertama, Anda perlu menghubungkan servo ke kait. Untuk melakukan ini, potong colokan dari lubang pemasangan rumah drive. Jika kita memasang servo, lubang pemasangan harus rata dengan kait. Maka Anda perlu menempatkan tuas servo di slot kait, di mana pegangan kait berada. Periksa bagaimana kunci bergerak dalam kasus ini. Jika semuanya baik-baik saja, kencangkan lengan servo dengan lem.

Sekarang Anda perlu mengebor lubang pilot untuk sekrup di pintu. Untuk melakukan ini, pasang kait ke pintu dan tandai lubang sekrup pada daun pintu dengan pensil. Bor lubang sekrup sedalam 2,5 cm di tempat yang ditandai. Pasang kait dan kencangkan dengan sekrup. Periksa lagi servonya.

Langkah 8: Kekuatan


Untuk melengkapi perangkat, Anda memerlukan catu daya, kabel, dan colokan mini usb untuk terhubung ke Arduino.
Hubungkan pin ground catu daya ke pin ground port mini usb, sambungkan kabel merah ke kabel merah port mini usb, lalu jalankan kabel dari kunci ke engsel pintu dan dari sana ke stopkontak.

Langkah 9: Kode

#termasuk Servo myservo; int pos = 0; keadaan int; int bendera = 0; void setup () (myservo.attach (9); Serial.begin (9600); myservo.write (60); delay (1000);) void loop () (jika (Serial.available ()> 0) (status = Serial.read(); flag = 0;) // jika statusnya "0" motor DC akan mati jika (status == "0") (myservo.write (8); delay (1000); Serial. println("Pintu Terkunci");) else if (status == "1") (myservo.write (55); delay (1000); Serial.println ("Pintu Tidak Terkunci");))

Langkah 10: Selesai Arduino Lock

Nikmati kunci remote control Anda dan jangan lupa untuk "tidak sengaja" mengunci teman Anda di dalam ruangan.

Pelajaran hari ini tentang cara menggunakan pembaca RFID dengan Arduino untuk membuat sistem penguncian sederhana, dengan kata sederhana - kunci RFID.

RFID (English Radio Frequency IDentification) adalah metode identifikasi otomatis objek, di mana data yang disimpan dalam transponder, atau tag RFID, dibaca atau ditulis melalui sinyal radio. Setiap sistem RFID terdiri dari pembaca (pembaca, pembaca atau interogator) dan transponder (alias tag RFID, terkadang istilah tag RFID juga digunakan).

Tutorial ini akan menggunakan tag RFID dari Arduino. Perangkat membaca pengidentifikasi unik (UID) dari setiap tag RFID yang kami tempatkan di sebelah pembaca dan menampilkannya di layar OLED. Jika UID dari tag sama dengan nilai yang telah ditentukan yang disimpan dalam memori Arduino, maka kita akan melihat pesan “Tidak Terkunci” di layar. Jika pengidentifikasi unik tidak sama dengan nilai yang telah ditentukan, pesan "Tidak Terkunci" tidak akan muncul - lihat foto di bawah.

Kuncinya tertutup

Kuncinya terbuka

Detail yang diperlukan untuk membuat proyek ini:

  • Pembaca RFID RC522
  • layar OLED
  • Papan roti
  • kabel

Detil tambahan:

  • Baterai (powerbank)

Total biaya komponen proyek adalah sekitar $15.

Langkah 2: Pembaca RFID RC522

Setiap tag RFID memiliki chip kecil (gambar kartu putih). Jika Anda mengarahkan senter ke kartu RFID ini, Anda dapat melihat chip kecil dan gulungan yang mengelilinginya. Chip ini tidak memiliki baterai untuk menghasilkan tenaga. Ini menerima daya dari pembaca secara nirkabel menggunakan koil besar ini. Kartu RFID seperti ini dapat dibaca dari jarak hingga 20mm.

Chip yang sama ada di tag dari key fob RFID.

Setiap tag RFID memiliki nomor unik yang mengidentifikasinya. Ini adalah UID yang ditampilkan pada layar OLED. Kecuali UID ini, setiap tag dapat menyimpan data. Jenis kartu ini dapat menyimpan hingga 1.000 data. Mengesankan, bukan? Fitur ini tidak akan digunakan hari ini. Saat ini, semua yang menarik adalah identifikasi kartu tertentu oleh UID-nya. Biaya pembaca RFID dan kedua kartu RFID ini sekitar US$4.

Langkah 3: Tampilan OLED

Tutorial ini menggunakan monitor OLED 0,96" 128x64 I2C.

Ini adalah tampilan yang sangat bagus untuk digunakan dengan Arduino. Ini adalah layar OLED dan itu berarti konsumsi dayanya rendah. Konsumsi daya layar ini sekitar 10-20mA dan tergantung pada jumlah piksel.

Layar memiliki resolusi 128 x 64 piksel dan kecil. Ada dua opsi tampilan. Salah satunya adalah monokrom, dan yang lainnya, seperti yang digunakan dalam tutorial, dapat menampilkan dua warna: kuning dan biru. Bagian atas layar hanya boleh berwarna kuning dan bagian bawah berwarna biru.

Layar OLED ini sangat cerah dan memiliki perpustakaan yang hebat dan sangat bagus yang telah dikembangkan Adafruit untuk tampilan ini. Selain itu, layar menggunakan antarmuka I2C, sehingga menghubungkan ke Arduino sangat mudah.

Anda hanya perlu menghubungkan dua kabel, tidak termasuk Vcc dan GND. Jika Anda baru mengenal Arduino dan ingin menggunakan tampilan yang murah dan sederhana dalam proyek Anda, mulailah dari sini.

Langkah 4: hubungkan semua detail

Komunikasi dengan papan Arduino Uno sangat sederhana. Pertama, sambungkan daya ke pembaca dan layar.

Hati-hati, pembaca RFID harus terhubung ke output 3.3V Arduino Uno atau akan rusak.

Karena tampilan juga dapat berjalan pada 3.3V, kami menghubungkan VCC dari kedua modul ke rel positif papan tempat memotong roti. Bus ini kemudian dihubungkan ke output 3.3V dari Arduino Uno. Kemudian kami menghubungkan kedua arde (GND) ke bus pembumian papan tempat memotong roti. Kemudian kami menghubungkan bus GND dari papan tempat memotong roti ke Arduino GND.

Tampilan OLED → Arduino

SCL → Pin Analog 5

SDA → Pin Analog 4

Pembaca RFID → Arduino

RST → Pin Digital 9

IRQ → Tidak terhubung

MISO → Pin Digital 12

MOSI → Pin Digital 11

SCK → Pin Digital 13

SDA → Pin Digital 10

Modul pembaca RFID menggunakan antarmuka SPI untuk berkomunikasi dengan Arduino. Oleh karena itu, kita akan menggunakan pin SPI hardware dari Arduino UNO.

Pin RST menuju ke pin digital 9. Pin IRQ tetap tidak terhubung. Pin MISO ke pin digital 12. Pin MOSI ke pin digital 11. Pin SCK ke pin digital 13, dan terakhir pin SDA ke pin digital 10. Itu saja.

Pembaca RFID terhubung. Sekarang kita perlu menghubungkan tampilan OLED ke Arduino menggunakan antarmuka I2C. Jadi pin SCL pada layar menuju ke pin analog Pin 5 dan SDA pada layar ke Pin analog 4. Jika sekarang kita menghidupkan proyek dan menempatkan kartu RFID di sebelah pembaca, kita dapat melihat bahwa proyek tersebut bekerja dengan baik.

Langkah 5: Kode Proyek

Agar kode proyek dapat dikompilasi, kita perlu menyertakan beberapa pustaka. Pertama-tama, kita membutuhkan perpustakaan MFRC522 Rfid.

Untuk menginstalnya, buka Sketsa -> Sertakan Perpustakaan -> Kelola perpustakaan(manajemen perpustakaan). Temukan MFRC522 dan instal.

Kami juga membutuhkan perpustakaan Adafruit SSD1306 dan perpustakaan Adafruit GFX untuk pemetaan.

Instal kedua perpustakaan. Pustaka Adafruit SSD1306 membutuhkan sedikit modifikasi. Masuk ke folder Arduino -> Perpustakaan, buka folder Adafruit SSD1306 dan edit perpustakaan Adafruit_SSD1306.h... Komentari baris 70 dan batalkan komentar pada baris 69 karena layar memiliki resolusi 128x64.

Pertama, kami mendeklarasikan nilai tag RFID yang perlu dikenali Arduino. Ini adalah array bilangan bulat:

Kode int = (69.141,8.136); // UID

Kemudian kami menginisialisasi pembaca RFID dan menampilkan:

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

Setelah itu, dalam fungsi loop, kami memeriksa tag pada pembaca setiap 100 ms.

Jika ada tag pada pembaca, kami membaca UID-nya dan mencetaknya ke layar. Kami kemudian membandingkan UID dari tag yang baru saja kami baca dengan nilai yang disimpan dalam variabel kode. Jika nilainya sama, kami mencetak pesan UNLOCK, jika tidak kami tidak akan menampilkan pesan ini.

If (cocok) (Serial.println ("\ nSaya tahu kartu ini!"); PrintUnlockMessage ();) else (Serial.println ("\ nKartu Tidak Dikenal");)

Tentu saja, Anda dapat mengubah kode ini untuk menyimpan lebih dari 1 nilai UID sehingga lebih banyak tag RFID yang dikenali oleh proyek. Ini hanya sebuah contoh.

Kode proyek:

#termasuk #termasuk #termasuk #termasuk #define OLED_RESET 4 Tampilan Adafruit_SSD1306 (OLED_RESET); #menentukan SS_PIN 10 #menentukan RST_PIN 9 MFRC522 rfid (SS_PIN, RST_PIN); // Instance dari kelas MFRC522 :: kunci MIFARE_Key; int kode = (69.141,8.136); // Ini adalah UID yang tersimpan int codeRead = 0; String uidString; void setup () (Serial.begin (9600); SPI.begin(); // Init SPI bus rfid.PCD_Init(); // Init MFRC522 display.begin (SSD1306_SWITCHCAPVCC, 0x3C); // inisialisasi dengan I2C addr 0x3D (untuk 128x64) // Hapus buffer.display.clearDisplay(); display.display(); display.setTextColor (WHITE); // atau HITAM); display.setTextSize (2); display.setCursor (10,0); display.print("Kunci RFID"); tampilan.display(); ) void loop () (jika (rfid.PICC_IsNewCardPresent()) (readRFID();) delay (100);) void readRFID() (rfid.PICC_ReadCardSerial(); Serial.print (F ("\ nPICC type:") ); MFRC522 :: PICC_Type piccType = rfid.PICC_GetType (rfid.uid.sak); Serial.println (rfid.PICC_GetTypeName (piccType)); // Periksa apakah PICC tipe MIFARE Klasik! = PICMType22 && piccType! = MFRC522 : : PICC_TYPE_MIFARE_1K && piccType! = MFRC522 :: PICC_TYPE_MIFARE_4K) (Serial.println (F ("Tag Anda tidak bertipe MIFARE Classic.")); return;) clearUID (); return;) clearUID (); PICC yang dipindai UID:"); printDec (rfid.uid.uidByte, rfid.uid.size); uidString = String (rfid.uid.uidByte) + "" + String (rfid.uid.uidByte) + "" + String (rfid. uid.uidByte) + "" + String (rfid.uid.uidByte); printUID(); int i = 0; boolean match = true; while (i

Langkah 6: hasil akhir

Seperti yang dapat Anda lihat dari pelajaran - dengan sedikit uang, Anda dapat menambahkan pembaca RFID ke proyek Anda. Anda dapat dengan mudah membuat sistem keamanan menggunakan pembaca ini atau membuat proyek yang lebih menarik, misalnya, sehingga data dari disk USB hanya dapat dibaca setelah dibuka kuncinya.

Proyek ini bersifat modular, yaitu Anda dapat menghubungkan / memutuskan elemen yang berbeda dan mendapatkan fungsionalitas yang berbeda. Gambar-gambar di atas menunjukkan opsi dengan fungsionalitas penuh, yaitu:

  • Mekanisme penguncian... Berfungsi untuk MEMBUKA dan MENUTUP pintu. Proyek ini mencakup penggunaan tiga mekanisme berbeda:
    • Servo. Ada yang besar, ada yang kecil. Sangat kompak, dan dengan baut yang berat adalah pilihan yang bagus
    • Penggerak listrik dari kunci pintu mobil. Hal yang besar dan kuat, tetapi hanya memakan arus yang gila
    • Kait solenoida. Pilihan yang bagus, karena membanting dirinya sendiri

    Dalam pengaturan firmware, Anda dapat memilih salah satu dari tiga jenis (pengaturan lock_type)

  • Tombol di dalam... Berfungsi untuk MEMBUKA dan MENUTUP pintu dari dalam. Dapat diletakkan di gagang pintu (sisi telapak tangan atau jari), di pintu itu sendiri, atau di kusen
  • Tombol di luar... Berfungsi untuk MENUTUP pintu, juga untuk BANGUN dari hemat energi. Dapat diletakkan di gagang pintu (sisi telapak tangan atau jari), di pintu itu sendiri, atau di kusen
  • Pemberhentian terakhir untuk menutup pintu. Berfungsi untuk menutup kunci secara otomatis saat pintu tertutup. Mereka bisa menjadi:
    • tombol kebijaksanaan
    • Sensor hall + magnet di pintu itu sendiri
    • Saklar buluh + magnet di pintu itu sendiri
  • Rahasia akses tombol reset... Berfungsi untuk mereset password/memasukkan password baru/menghafal kunci/kombinasi baru, dll. Mungkin disembunyikan di suatu tempat dalam kasus ini
  • Dioda pemancar cahaya untuk menunjukkan pekerjaan. RGB LED, warna merah dan hijau digunakan (ketika dicampur, mereka memberi warna kuning):
    • Menyala hijau - kuncinya TERBUKA. Terbakar agar tidak lupa menutup pintu
    • Kuning solid - sistem telah bangun dan sedang menunggu entri kata sandi
    • Berkedip merah - baterainya mati

Salah satu elemen ini dapat dikecualikan dari sistem:

  • Kami menghapus sakelar akhir. Di firmware di pengaturan, kami juga mematikannya (pengaturan tail_button). Sekarang untuk menutup kunci, Anda perlu menekan tombol
  • Kami menghapus tombol luar. Di firmware di pengaturan, kami juga menonaktifkannya (pengaturan bangun_tombol). Sekarang sistem tidak perlu dibangunkan, itu bangun dengan sendirinya (konsumsi energi sedikit lebih tinggi). Dan juga kami tidak lagi memiliki tombol tutup di bagian depan pintu, dan kami membutuhkan sakelar batas. Entah kuncinya adalah sih
  • Kami menghapus tombol bagian dalam. Opsi ini cocok untuk lemari dan brankas. Anda tidak perlu mengubah apa pun di pengaturan
  • Kami menghapus LED. Anda tidak perlu mengubah apa pun di pengaturan
  • Tombol reset akses dapat disolder setelah penggunaan pertama, atau Anda dapat menulis ulang kode untuk diri sendiri
  • Pintu tertutup, ditekan LUAR - bangun, tunggu kata sandi / tag RFID / kunci elektronik / sidik jari
  • Pintu ditutup, sistem sudah bangun, menunggu kata sandi dimasukkan. Waktu dapat disesuaikan (pengaturan waktu tidur)
  • Pintu ditutup, kata sandi / tag / kunci telah dimasukkan, dll. - membuka
  • Pintu tertutup, ditekan DI DALAM - buka
  • Pintu terbuka, tekan KELUAR - tutup
  • Pintu terbuka, tekan DI DALAM - tutup
  • Pintu terbuka, END ditekan - tutup

Kunci menyediakan operasi baterai dalam mode hemat daya rendah (nyalakan matikan: pengaturan sleep_enable), yaitu:

  • Bangun setiap beberapa detik, ikuti EVENT (opsional jika tidak ada tombol di luar. Anda dapat mengaktifkannya di pengaturan bangun_tombol)
  • Setiap beberapa menit, pantau tegangan Akum (pengaturan hidup / mati baterai_monitor)
  • Jika Akum habis (tegangan diatur dalam pengaturan bat_low):
    • buka pintunya (opsional, dapat dikonfigurasi di firmware open_bat_low)
    • melarang pembukaan dan penutupan lebih lanjut
    • saat tombol ditekan, LED merah berkedip
    • berhenti memantau EVENT (yaitu memasukkan kata sandi / tag, dll.)

Saat sistem terjaga, tekan tombol ubah kata sandi (tombol tersembunyi). Kami jatuh ke dalam mode perubahan kata sandi:
Masukkan kata sandi dari angka ( MAKSIMUM 10 DIGIT!!!)

  • Ketika Anda menekan *, kata sandi disimpan dalam memori dan sistem keluar dari mengubah kata sandi
  • Ketika Anda menekan #, kata sandi diatur ulang (Anda dapat memasukkannya lagi)
  • Jika Anda tidak menekan apa pun selama 10 detik, kami akan secara otomatis keluar dari mode perubahan kata sandi, kata sandi akan tetap lama

Saat sistem terjaga (dibangunkan oleh tombol atau tidur dinonaktifkan), tekan * untuk masuk ke mode entri kata sandi
Jika sistem tidur dan bangun secara berkala untuk memeriksa EVENT, maka tekan * dan tahan hingga LED merah menyala
Mode masukan kata sandi:

  • Pemrosesan kata sandi dilakukan sedemikian rupa sehingga kata sandi yang benar dihitung hanya ketika urutan angka yang diketik dengan benar, yaitu, jika kata sandi 345, maka Anda dapat memasukkan angka apa pun hingga muncul urutan 345, mis. 30984570345 akan membuka kunci seperti yang berakhir pada 345.
  • Jika kata sandi dimasukkan dengan benar, pintu akan terbuka
  • Jika Anda tidak menekan apa pun, setelah 10 detik sistem akan kembali ke mode normal (siaga)
  • Jika Anda menekan #, kami akan segera keluar dari mode entri kata sandi
  • Jika Anda menekan tombol rahasia untuk mengubah kata sandi dalam mode input kata sandi, maka kami juga akan keluar darinya