Proses manufaktur
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 |
|
*Sensor APDS-9960 tidak bekerja dengan Arduino Nano atau Mega 2560 (dalam pengujian saya).
Proyek ini mudah dibuat dan digunakan. Jangan ragu untuk menggunakan segala jenis servo atau mekanisme penguncian dengan proyek ini. Ini dimaksudkan sebagai platform awal untuk kunci berbasis gerakan. Ke gedung!
Bahan
Saya mendapatkan sebagian besar bagian saya dari Amazon.com dan sensor APDS-9960 dari Sparkfun. Anda hanya dapat menggunakan Arduino Uno atau Micro 3.3v sejauh ini, karena papan lain tidak akan berfungsi karena alasan yang aneh.
Perakitan
Pasang LCD seperti yang ditunjukkan. Jika Anda tidak memiliki potensiometer 10k, gunakan resistor 1k dari kontras ke GND. Sensor APDS-9960 perlu digeser jika menggunakan Arduino Uno, jadi yang saya lakukan adalah mengambil SCL dan SDA dan menghubungkannya ke resistor 4.7k, kemudian menariknya tinggi dengan mengambil resistor 4.7k ke 3.3v. Kemudian hubungkan ke A4 dan A5, sesuai (lihat skema). Arduino dapat menggunakan baterai 9v dengan barel daya DC terpasang.
Lampiran
Saya menggunakan kotak kardus sederhana dan memotongnya agar sesuai dengan ke mana komponen akan pergi. Anda bisa menyolder ini semua ke sepotong papan perf, tapi saya baru saja meninggalkannya di papan tempat memotong roti dan menghubungkan kabel jumper ke komponen. Setelah saya selesai, tampilannya seperti ini.
/* Koneksi Perangkat Keras:PENTING:APDS-9960 hanya dapat menerima 3.3V! Arduino Pin APDS-9960 Fungsi Papan 3.3V VCC Power GND GND Ground A4 SDA I2C Data A5 SCL I2C Clock 2 INT InterruptResources:Include Wire.h dan SparkFun_APDS-9960.h*/#include#include #include #include #define PINSIZE 6 #define SERVOPIN 9//Berapa banyak gerakan kata sandi Anda// Pins#define APDS9960_INT 2 // Perlu interupsi pinLiquidCrystal lcd( 12,11,6,5,4,3);Servo servo;uint8_t proximity_data =0;int red_led =A1;int green_led =A2;int pageNum =0; //LCD "page"String secret[PINSIZE] ={"UP","DOWN","UP","UP","RIGHT","LEFT"}; // Kata sandi ada di sini. Harus dalam CAPS. Dapat berupa "ATAS", "BAWAH", "KIRI", atau "KANAN"String currentGesture ="";int numRight =0;SparkFun_APDS9960 apds =SparkFun_APDS9960(); //Init APDS-9960 libraryint isr_flag =0;void setup() { // Tetapkan pin interupsi sebagai input pinMode(APDS9960_INT, INPUT);lcd.begin(16,2);servo.attach(SERVOPIN);servo.write( 0);servo.detach(); // Inisialisasi port Serial Serial.begin(9600); Serial.print("Password Anda adalah "); Serial.print(PINSIZE); Serial.println("gestur panjang."); Serial.println(); Serial.println(F("----------------")); Serial.println(F("Kunci APDS-9960")); Serial.println(F("----------------")); // Inisialisasi rutin layanan interupsi attachInterrupt(0, interruptRoutine, FALLING); // Inisialisasi APDS-9960 (konfigurasi I2C dan nilai awal) if ( apds.init() ) { Serial.println(F("APDS-9960 inisialisasi selesai")); } else { Serial.println(F("Ada yang tidak beres selama APDS-9960 init!")); } if ( !apds.setProximityGain(PGAIN_1X) ) { Serial.println(F("Ada yang salah saat mencoba menyetel PGAIN")); } if ( apds.enableProximitySensor(false) ) { Serial.println(F("Sensor jarak sedang berjalan")); } else { Serial.println(F("Ada yang salah saat sensor init!")); } // Mulai jalankan mesin sensor gerakan APDS-9960 if ( apds.enableGestureSensor(true) ) { Serial.println(F("Sensor gerakan sekarang berjalan")); } else { Serial.println(F("Ada yang salah saat sensor gerakan init!")); } }void loop() { if(pageNum==0){ if ( !apds.readProximity(proximity_data) ) { Serial.println("Kesalahan membaca nilai kedekatan"); } else { Serial.println(kedekatan_data); if((proximity_data>=40) &&(pageNum==0)){ pageNum=1; penundaan(2000); } } } switch(pageNum){ kasus 0:LCDClear(); lcd.print("Terkunci- get"); lcd.setCursor(0,1); lcd.print("3 inci."); berkedipMerah(); LCDClear(); merusak; kasus 1:numRight =0; lcd.print("Masukkan kode..."); lcd.setCursor(0,0); for(int x=0; x 0;x--){ LCDClear(); lcd.print("Menutup:"); lcd.setCursor(0,1); lcd.print(x); lcd.setCursor(1,1); lcd.print("detik..."); delay(1000);}LCClear();lcd.print("Menutup");}
Proses manufaktur
Komponen dan persediaan Arduino Due × 1 Regulator Linier dengan Output yang Dapat Disesuaikan × 1 Texas Instruments Tujuan Umum Dual Op-Amp × 1 Resistor 20k ohm × 3 Resistor 220 ohm × 1 Resistor 1k ohm × 2 NPN Transistor Serbaguna
Komponen dan persediaan Arduino Nano R3 × 1 Resistor 10k ohm × 1 Resistor 1k ohm × 1 Resistor 100 ohm × 1 Resistor 100k ohm × 1 Resistor 1M ohm × 1 ElectroPeak 0.96 Modul Tampilan OLED 64x128 × 1 Kabel jumper (generik)
Komponen dan persediaan Arduino Nano R3 × 1 Penguat operasional IC TL061 × 1 Resistor 10k ohm × 2 Resistor 1M ohm × 1 Kapasitor Cakram Keramik, 39 pF × 1 kumparan sekunder dari trafo 1-2W kecil × 1 Alat dan mesin yang diperlukan
Komponen dan persediaan Arduino UNO × 1 Adafruit LCD Standar - 16x2 Putih di Atas Biru × 1 Sakelar Tombol Tekan SparkFun 12mm × 4 Resistor 10k ohm × 4 Resistor 221 ohm Yah, 220 ohm... × 2 Potensiometer Putaran Tunggal- 100k ohm × 1