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
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 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: Dalam pengaturan firmware, Anda dapat memilih salah satu dari tiga jenis (pengaturan lock_type) Salah satu elemen ini dapat dikecualikan dari sistem: Kunci menyediakan operasi baterai dalam mode hemat daya rendah (nyalakan matikan: pengaturan sleep_enable), yaitu: Saat sistem terjaga, tekan tombol ubah kata sandi (tombol tersembunyi). Kami jatuh ke dalam mode perubahan kata sandi: Saat sistem terjaga (dibangunkan oleh tombol atau tidur dinonaktifkan), tekan * untuk masuk ke mode entri kata sandi Langkah 6: hasil akhir
Masukkan kata sandi dari angka ( MAKSIMUM 10 DIGIT!!!)
Jika sistem tidur dan bangun secara berkala untuk memeriksa EVENT, maka tekan * dan tahan hingga LED merah menyala
Mode masukan kata sandi: