- Komponen:
- Penjelasan Litar:
- Pola Mengetuk Makan di Arduino:
- Penjelasan Kerja:
- Penjelasan Pengaturcaraan:
Keselamatan menjadi perhatian utama dalam kehidupan kita sehari-hari, dan kunci digital telah menjadi bahagian penting dalam sistem keselamatan ini. Terdapat banyak jenis sistem keselamatan yang tersedia untuk melindungi tempat kami. Beberapa contoh adalah Sistem Keselamatan berasaskan PIR, Sistem Keselamatan berasaskan RFID, Sistem Kunci Digital, sistem bio-matriks, kunci Kod Elektronik. Dalam catatan ini, marilah kita membina Kunci Pintu Mengesan Rahsia Rahsia menggunakan Arduino yang dapat mengesan corak ketukan anda di pintu dan hanya akan membuka kunci jika corak ketukan sesuai dengan corak yang betul. Untuk Demo berfungsi dengan betul, periksa Video di hujungnya.
Komponen:
- Arduino Uno
- Tekan butang
- Buzzer
- Perintang 1M
- Kuasa
- Menyambung wayar
- Kotak
- Motor Servo
Penjelasan Litar:
Litar Diagram Knocking Pattern Detector ini sangat mudah yang mengandungi Arduino untuk mengawal keseluruhan proses projek, butang tekan, buzzer, dan Servo Motor. Arduino mengawal proses lengkap seperti mengambil kata laluan dari Buzzer atau Sensor, membandingkan corak, mendorong Servo untuk membuka dan menutup pintu dan menyimpan corak ke Arduino.
Butang tekan disambungkan terus ke pin D7 dari Arduino sehubungan dengan tanah. Dan bel disambungkan pada pin analog A0 dari Arduino berkenaan dengan tanah dan dengan rintangan 1M antara A0 dan tanah juga. A Servo motor juga bersambung dengan PWM pin D3 untuk Arduino.
Pola Mengetuk Makan di Arduino:
Di litar ini, kami telah menggunakan Buzzer atau Peizo Sensor untuk mengambil corak input ketukan dalam sistem. Di sini kita menggunakan butang tekan untuk membolehkan mengambil input dari sensor dan juga menyimpannya ke Arduino. Sistem ini direka dengan mengambil idea dari corak kod Morse tetapi tidak sama dengan yang.
Di sini kami telah menggunakan kotak kad kad untuk demonstrasi. Untuk mengambil input, kami mengetuk papan setelah menekan butang tekan. Di sini kita telah mengetuk dengan memperhatikan jangka masa iaitu 500ms. 500ms ini kerana kita telah memperbaikinya dalam kod dan corak input bergantung padanya. Jangka masa 500ms ini akan menentukan input adalah 1 atau 0. Periksa kod di bawah untuk memahami perkara ini.
Ketika kami mengetuknya, Arduino mula memantau waktu ketukan pertama hingga ketukan kedua dan memasukkannya ke dalam barisan. Di dalam sistem ini, kita mengambil 6 ketukan. Ini bermaksud kita akan mendapat 5 jangka masa.
Sekarang kita periksa jangka masa satu demi satu. Pertama, kita periksa jangka masa antara ketukan pertama dan ketukan kedua jika perbezaan masa antara kurang 500ms maka ia akan menjadi 0 dan jika lebih besar dari 500ms itu akan menjadi 1 dan ia akan disimpan ke dalam pemboleh ubah. Sekarang selepas itu, kami memeriksa tempoh masa antara ketukan kedua dan ketukan ketiga dan seterusnya.
Akhirnya, kita akan mendapat output 5 digit dalam format 0 dan 1 (binari).
Penjelasan Kerja:
Kerja Projek Smart Lock berasaskan Knock adalah mudah. Mula-mula kita harus menyimpan corak dalam sistem. Oleh itu kita harus menekan dan menahan butang tekan sehingga kita mengetuk 6 kali. Di sini, dalam projek ini, saya telah menggunakan 6 ketukan tetapi pengguna boleh mengubahnya mengikut kehendak mereka. Selepas enam kali mengetuk, Arduino menemui corak ketukan dan menyimpannya di EEPROM. Sekarang setelah menyimpan corak input, tekan dan segera lepaskan butang tekan untuk mengambil input dari sensor ke Arduino untuk membuka kunci. Sekarang kita harus mengetuk 6 kali. Selepas itu, Arduino menyahkodnya dan membandingkan dengan corak yang disimpan. Sekiranya perlawanan berlaku, Arduino membuka pintu dengan memandu motor servo.
Catatan: semasa kita menekan atau menekan dan menahan butang tekan Arduino memulakan pemasa 10 saat untuk mengambil semua 6 ketukan. Bermakna pengguna perlu mengetuk dalam masa 10 saat ini. Dan pengguna boleh membuka monitor Serial untuk melihat log.
Penjelasan Pengaturcaraan:
Dalam program pertama-tama kita menyertakan file header dan menentukan pin input dan output serta menentukan makro dan deklarasi pemboleh ubah seperti yang anda lihat di bahagian Kod Penuh dalam kod di bawah.
Setelah ini, dalam fungsi penyiapan , kami memberikan arahan pada pin yang ditentukan dan memulakan motor servo.
batal persediaan () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Selepas itu, kami mengambil input dan menyimpan corak input atau masa ketukan dalam array.
gelung void () {int i = 0; if (digitalRead (sw) == RENDAH) {Serial.println ("Mula"); kelewatan (1000); panjang stt = milis (); manakala (milis () <(stt + patternInputTime)) {int temp = analogRead (A0); jika (temp> kepekaan && flag == 0 && i <= patternLenth) {…………..
Selepas itu, kami menyahkod corak input
untuk (int i = 0; i
Dan kemudian simpan jika butang tekan masih ditekan
jika (digitalRead (sw) == 0) {untuk (int i = 0; i
Dan jika butang tekan masih tidak ditekan, Arduino akan membandingkan corak penyahkodan input dengan corak yang disimpan.
lain {if (knok == 1) {untuk (int i = 0; i
Sekiranya ada kata laluan yang sesuai, maka Servo buka pintu gerbang jika tidak, tidak ada yang berlaku tetapi pengguna dapat melihat hasilnya melalui monitor bersiri.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Diterima"); myServo.write (openGate); kelewatan (5000); myServo.write (closeGate); } lain Serial.println ("Ditolak"); }
Anda boleh menyemak kod lengkap di bawah dengan Video demo.