Daftar Isi:

Cryptap: Kunci Pintu berbasis Irama: 5 Langkah
Cryptap: Kunci Pintu berbasis Irama: 5 Langkah

Video: Cryptap: Kunci Pintu berbasis Irama: 5 Langkah

Video: Cryptap: Kunci Pintu berbasis Irama: 5 Langkah
Video: Ритмический комбо-замок 2024, Juli
Anonim
Cryptap: Kunci Pintu berbasis Irama
Cryptap: Kunci Pintu berbasis Irama
Cryptap: Kunci Pintu berbasis Irama
Cryptap: Kunci Pintu berbasis Irama
Cryptap: Kunci Pintu berbasis Irama
Cryptap: Kunci Pintu berbasis Irama

Terinspirasi oleh beberapa mekanisme buka kunci pintu yang pernah saya lihat di hackaday.com, saya memutuskan untuk membuatnya sendiri. Yang ini memiliki antarmuka dua tombol; satu untuk memulai dan mengakhiri pengiriman kata sandi, dan satu lagi untuk benar-benar mengetuk ritme yang merupakan kata sandi Anda. Ada juga lampu status. Saya dapat membuat ini dengan sangat murah menggunakan suku cadang yang telah saya kumpulkan selama beberapa bulan terakhir. Satu-satunya hal yang harus saya bayar adalah mikrokontroler itu sendiri, yaitu $21 (https://www.pjrc.com/teensy/), dan beberapa kawat gantung gambar yang saya miliki sebelumnya.

Sangat menyenangkan untuk mengetuk Tema Star Wars atau sesuatu untuk memasuki kamar saya. Sekarang, saya tidak perlu khawatir mengunci diri dari kamar saya lagi! Plus, rasanya enak dan culun.

Langkah 1: Suku Cadang dan Alat

Bagian dan Alat
Bagian dan Alat
Bagian dan Alat
Bagian dan Alat

Saya memilih Teensy karena ini adalah mikrokontroler pertama saya, dan saya belum memiliki programmer. Teensy hanya membutuhkan kabel USB A-miniB dan perangkat lunak gratis untuk diinstal, kompatibel dengan Mac/Windows/Linux. Juga, sangat mudah untuk mengunggah file hex; kompilasi saja, dan tekan tombol pada Teensy.

Biaya proyek ini bagi saya adalah $ 21, ditambah kabel penggantung gambar. Bagian dari jalan berasal dari cerek penapis kopi (relay, LED, kapasitor) dan router (LED, jack modular, colokan listrik, kapasitor). Sampel gratis adalah regulator 5 volt 7805, tombol dan sakelar. Saya juga menemukan banyak barang di kotak "bagian yang rusak" di lab EE saya: konektor pisang dan kabel, kawat, driver sn754410, header empat pin, dan resistor. Saya memiliki pengisi daya laptop tambahan yang tergeletak di sekitar yang saya gunakan untuk daya, dan kabel modem Apple yang tabnya rusak. Perangkat keras lainnya: pelat dinding. Saya menggunakan pistol lem panas, besi solder, file jarum dan bor listrik, yang cukup standar. Hal paling tidak biasa yang saya gunakan adalah alat grabber yang panjang dan fleksibel.

Langkah 2: Perangkat Keras yang Sudah Ada

Perangkat Keras yang sudah ada sebelumnya
Perangkat Keras yang sudah ada sebelumnya
Perangkat Keras yang sudah ada sebelumnya
Perangkat Keras yang sudah ada sebelumnya
Perangkat Keras yang sudah ada sebelumnya
Perangkat Keras yang sudah ada sebelumnya
Perangkat Keras yang sudah ada sebelumnya
Perangkat Keras yang sudah ada sebelumnya

Saya sangat beruntung bahwa sudah ada begitu banyak yang diinstal. Kamar saya dapat diakses oleh ADA, dan ada berbagai pipa, kotak listrik, dan pemogokan pintu listrik yang sudah terpasang. Saat melepas pemogokan pintu karena penasaran, saya menemukan bahwa itu tidak terhubung. Ada pipa dari pemogokan pintu ke pelat dinding kosong di dalam kamar saya, dan pipa lain dari sana ke pelat dinding kosong di luar.

Pemogokan pintu mengatakan perlu 24V@3A untuk beroperasi, tapi saya bisa bertahan dengan catu daya 19V, 7.9A yang saya miliki. Pemogokan pintu terpolarisasi, jadi pastikan Anda memiliki polaritas yang benar!

Langkah 3: Sirkuit

sirkuit
sirkuit
sirkuit
sirkuit
sirkuit
sirkuit
sirkuit
sirkuit

Untuk mengontrol pemogokan pintu, saya menggunakan relai yang saya temukan di cerek penapis kopi. Relay ini membutuhkan lebih dari 5V TTL untuk menggerakkannya, sehingga sn754410 digunakan untuk menerjemahkan TTL ke 19V, yang menggerakkan relay. sn754410 benar-benar driver quad half-H, jadi saya membuang 3/4 chip, tetapi saya tidak memiliki transistor daya, jadi itulah yang saya gunakan.

Chip sn754410 memiliki dua pin VCC, satu untuk 5V, yang lain untuk tegangan apa pun yang Anda ingin keluarkan, yang 19V untuk saya. Ini adalah chip yang sangat keren. Anda dapat menggunakan ini untuk menggerakkan motor dan relai secara langsung, karena dapat mengganti 1A per seperempat chip dan memiliki dioda perlindungan bawaan. Lihatlah lembar data. Di sirkuit saya, saya menghubungkan sn754410 langsung ke pin output Teensy saya. Tombol terhubung sebagai aktif-rendah, yang sangat umum untuk mikrokontroler. Mereka terhubung langsung ke Teensy, yang berarti saya harus melakukan debouncing dalam perangkat lunak. Lampu status terhubung ke Teensy melalui resistor 1K ohm; tidak ada yang spesial. Sirkuit bekerja tanpa kapasitor, tetapi saya tetap memasangnya untuk berjaga-jaga. Ada tutup pelindung pada rel daya 19V dan 5V ke ground. Saat memprogram Teensy, 5V berasal dari USB, tetapi ketika berjalan sendiri, daya berasal dari bata daya laptop. Ketika saya menghubungkan regulator 7805 langsung ke 19V, itu menjadi BENAR-BENAR panas, jadi saya memasang jaringan resistor untuk membatasi tegangan dan arus input ke regulator. Ini adalah kludge, tapi sekarang semuanya berada pada suhu yang dapat diatur.

Langkah 4: Menghubungkannya Bersama

Menghubungkannya Bersama-sama
Menghubungkannya Bersama-sama
Menghubungkannya Bersama-sama
Menghubungkannya Bersama-sama

The Teensy tidak masalah. Itu datang dengan pin, sehingga Anda dapat mencolokkannya langsung ke papan tempat memotong roti.

Saya memutuskan untuk memberi kode warna kabel ke pemogokan pintu dengan kabel pisang merah (+) dan hitam (-) dari kotak bagian lab yang rusak. Ada beberapa colokan yang dipotong dari kabelnya, jadi saya mengambil beberapa plastik untuk mengekspos titik solder. Saya sangat suka bagaimana colokan pisang lab dapat dihubungkan satu sama lain. Saya menggunakan kabel telepon Apple untuk menghubungkan tombol dan lampu status di luar ruangan ke Teensy di dalam. Karena satu sisi patah, saya memotong ujungnya dan menyoldernya di kepala empat pin, menyegelnya dengan lem panas. Ini terhubung dengan baik ke papan tempat memotong roti saya. Sisi tempat saya meninggalkan steker masuk ke jack modular yang saya selamatkan dari router. Keempat kabel digunakan (GND, lampu status, tombol start/stop, tombol kode). Jika Anda belum menyadarinya, saya suka colokan dan konektor. Bata daya terhubung ke colokan listrik yang saya geser dari router. Memasukkan kabel melalui pipa dinding tidak terlalu sulit, karena bahan grabber yang fleksibel. Itu benar-benar menyelamatkan hari saya.

Langkah 5: Kode

Kode
Kode
Kode
Kode

Saya sudah mencoba mengomentari kode saya. Perlu diingat bahwa ini adalah perangkat lunak 1.0, artinya tidak bebas bug.## OPERASI ## 1. Tekan tombol start/stop untuk menandakan bahwa Anda siap untuk memulai input kode. Lampu status mulai berkedip perlahan. 2. Ketuk kode Anda pada tombol kode. Lampu status akan berkedip pada 120 BPM, sehingga Anda dapat menggunakan ini sebagai metronom jika Anda mau. Namun, program cryptap akan mengukur panjang pulsa relatif satu sama lain secara proporsional, jadi Anda juga bisa menggunakan tempo Anda sendiri. Pastikan Anda cukup akurat! 3. Setelah input kode selesai, tekan kembali tombol start/stop. Program kemudian akan memutuskan apakah akan mengizinkan Anda masuk. Karena manusia bukanlah pengatur waktu yang sangat akurat (Anda benar-benar tidak), saya menetapkan rasio toleransi menjadi +/- 30%. Itu berarti bahwa panjang ketukan bisa tidak akurat dengan jumlah itu, dan masih bisa diterima. Ini cukup bagus untuk membedakan antara nada-nada yang sangat mirip. Ada sedikit tumpang tindih yang sulit dijangkau antara ketukan ganda dan tiga kali lipat, tetapi kodenya masih cukup sulit untuk dipecahkan. Untuk membuka kunci pintu, ketukan harus dalam proporsi yang benar satu sama lain (+/- rasio toleransi), dan jumlah ketukan harus benar. Jika kata sandi yang dimasukkan tidak valid, program akan menunggu beberapa detik sambil mengabaikan input pengguna apa pun. Ini juga akan mem-flash lampu status dengan cepat. Jika kode yang dimasukkan benar, lampu status akan menyala terus dan pintu akan terbuka selama 8 detik.## KONFIGURASI PENGGUNA ## Kunci disimpan dalam array seperti ini: #define keylength 5 const int key = { 2, 1, 3, 3, 3 }; // "Selamat ulang tahun untukmu" Array menyimpan jumlah waktu yang terjadi ANTARA ketukan. Jadi jika kata sandi Anda memiliki ENAM catatan seperti "Selamat ulang tahun untuk Anda", harus ada LIMA elemen dalam array. Jika kata sandi Anda sangat panjang dan Anda memiliki lebih dari 16 ketukan di dalamnya, (sangat sulit, saya tidak merekomendasikannya), Anda harus menambah angka yang ditentukan dalam baris ini: #define inputCodeLength 16## SISA KODE # # Saya ingin tahu tentang interupsi, jadi tombol saya memicu interupsi. Untuk membuat interupsi ini mudah digunakan, saya meminta penangan interupsi untuk memeriksa penunjuk fungsi tertentu. Jika penunjuk tidak disetel ke NULL, fungsi yang ditunjuknya akan dipanggil. Ini diatur dengan berbagai fungsi "pengaturan mode" di dalam cryptap.c. Saya berusaha menghindari buffer overflows dengan mengatur jumlah maksimum pulsa yang dimasukkan. Jika jumlah pulsa maksimum yang dimasukkan, program segera memulai analisis kata sandi dan memutuskan apakah akan membuka kunci pintu. Saya harap komentar saya dalam kode membantu. ## BUGS ## Saya mencoba menghapus kode debug USB, tetapi kode tersebut tidak akan berfungsi jika saya melakukannya. Jadi, saya meninggalkan usb_init() dan berbagai pernyataan print(). Saya akan sangat menghargai jika seseorang dapat menghapusnya dan masih menjalankan program. Bahkan lebih baik jika mereka dapat menjelaskan mengapa itu tidak berhasil untuk saya. Segera setelah diprogram, Teensy terkadang tidak menerima input kode. Untuk mengatasi ini, siklus daya sirkuit.

Direkomendasikan: