- Komponenti:
- Ķēdes skaidrojums:
- Padzīšanas modeļa padeve Arduino:
- Darba skaidrojums:
- Programmēšanas skaidrojums:
Drošība ir nopietnas rūpes mūsu ikdienas dzīvē, un digitālās slēdzenes ir kļuvušas par nozīmīgu šo drošības sistēmu sastāvdaļu. Lai nodrošinātu mūsu vietu, ir pieejami daudzi drošības sistēmu veidi. Daži piemēri ir uz PIR balstīta drošības sistēma, uz RFID balstīta drošības sistēma, digitālās bloķēšanas sistēma, biomatricas sistēmas, elektroniskā koda atslēga. Šajā amatā izveidosim slepeno pieklauvēšanas durvju slēdzenes atklāšanu, izmantojot Arduino, kas var noteikt jūsu klauvējumu modeli pie durvīm un atvērs slēdzeni tikai tad, ja klauvēšanas modelis atbilst pareizajam paraugam. Lai pareizi darbotos demonstrācija, beigās pārbaudiet videoklipu.
Komponenti:
- Arduino Uno
- Uzspied pogu
- Buzzer
- 1M rezistors
- Jauda
- Savienojošie vadi
- Kaste
- Servo motors
Ķēdes skaidrojums:
Šī klauvējošā modeļa detektora shēma ir ļoti vienkārša, kas satur Arduino, lai kontrolētu visu projekta procesu, spiedpogu, skaņas signālu un servomotoru. Arduino kontrolē pilnīgus procesus, piemēram, paroles veidošanu no Buzzer vai Sensor, modeļu salīdzināšanu, Servo vadīšanu, lai atvērtu un aizvērtu vārtus un saglabātu modeli Arduino.
Spiedpoga ir tieši savienota ar Arduino tapu D7 attiecībā pret zemi. Un svilpe ir pieslēgts pie analogās pin A0 no Arduino attiecībā uz zemes un ar 1M pretestība starp A0 un zemi arī. Servo motor ir saistīta arī ar PWM pin D3 Arduino.
Padzīšanas modeļa padeve Arduino:
Šajā ķēdē mēs esam izmantojuši skaņas signālu vai Peizo sensoru, lai sistēmā ņemtu klauvēšanas ievades modeli. Šeit mēs izmantojam spiedpogu, lai ļautu iegūt ievadi no sensora un arī saglabāt to Arduino. Šī sistēma ir veidota, ņemot vērā ideju no Morzes koda modeļa, bet nav tieši līdzīga tai.
Šeit mēs demonstrēšanai izmantojām kartona kārbu. Lai ievadītu ievadi, mēs nospiežam pogu, kad pārspējam dēli. Šeit mēs esam pieklauvējuši, paturot prātā laika periodu, kas ir 500 ms. Tas ir tāpēc, ka mēs to esam salabojuši kodā, un ievades modelis ir atkarīgs no tā. Šis 500 ms laika periods noteiks ievadi 1 vai 0. Pārbaudiet tālāk esošo kodu, lai saprastu šo lietu.
Kad mēs to pieklauvējam, Arduino sāk kontrolēt pirmā sitiena uz otro sitienu laiku un ievieto to masīvā. Šeit, šajā sistēmā, mēs veicam 6 sitienus. Tas nozīmē, ka mēs iegūsim 5 laika periodus.
Tagad mēs periodiski pārbaudām laika periodu. Pirmkārt, mēs pārbaudām laika periodu starp pirmo klauvēšanu un otro klauvēšanu, ja laika starpība starp šiem ir mazāka par 500 ms, tad tā būs 0 un, ja lielāka par 500 ms, tā būs 1, un tā tiks saglabāta mainīgajā. Tagad pēc tā mēs pārbaudām laika periodu starp otro klauvēšanu un trešo klauvēšanu utt.
Visbeidzot, mēs iegūsim 5 ciparu izvadi 0 un 1 formātā (binārā).
Darba skaidrojums:
Darbs no Knock balstītas Smart Lock projekts ir vienkārša. Vispirms mums sistēmā jāsaglabā paraugs. Tāpēc mums ir jānospiež un jānospiež poga, līdz mēs klauvējam 6 reizes. Šajā projektā esmu izmantojis 6 sitienus, bet lietotājs to var mainīt, kā vēlas. Pēc sešas reizes klauvēšanas Arduino atrod klauvēšanas modeli un saglabā to EEPROM. Pēc ievades modeļa saglabāšanas nospiediet un nekavējoties atlaidiet spiedpogu, lai ievadītu ievadi no sensora uz Arduino, lai atvērtu slēdzeni. Tagad mums ir klauvēt 6 reizes. Pēc tam Arduino to atšifrē un salīdzina ar saglabāto modeli. Ja notiek spēle, tad Arduino atveriet vārtus, braucot ar servomotoru.
Piezīme: kad mēs nospiežam vai nospiežam un turam spiedpogu Arduino, sāciet 10 sekunžu taimeri, lai veiktu visus 6 klauvējumus. Nozīmē, ka lietotājam ir jāpieklauvē šajā 10 sekundēs. Un lietotājs var atvērt sērijas monitoru, lai redzētu žurnālu.
Programmēšanas skaidrojums:
Programmā vispirms mēs iekļaujam galvenes failu un definējam ievades un izvades tapu un definējam makro un deklarētos mainīgos, kā redzat zemāk sadaļā Kods pilnā kodā.
Pēc tam iestatīšanas funkcijā mēs dodam virzienu noteiktajam tapam un iedarbinām servo motoru.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Sērijas sākums (9600); }
Pēc tam mēs ņemam ievadi un saglabājam ievades modeli vai klauvēšanas laiku masīvā.
void loop () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Sākt"); kavēšanās (1000); garš stt = milis (); while (milis () <(stt + patternInputTime)) {int temp = analogRead (A0); ja (temp> jutība un& karogs == 0 && i <= rakstsLenth) {…………..
Pēc tam mēs atšifrējam ievades modeli
par (int i = 0; i
Un tad saglabājiet, ja spiedpoga joprojām tiek nospiesta
ja (digitalRead (sw) == 0) {par (int i = 0; i
Un, ja spiedpoga joprojām netiek nospiesta, Arduino salīdzinās ievadīto dekodēto modeli ar saglabāto modeli.
else {if (knok == 1) {par (int i = 0; i
Ja kāda parole ir saskaņota, tad servo atver vārtus, pretējā gadījumā nekas nenotika, bet lietotājs var redzēt rezultātu, izmantojot seriālo monitoru.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Pieņemts"); myServo.write (openGate); kavēšanās (5000); myServo.write (closeGate); } else Serial.println ("Noraidīts"); }
Pilnu kodu varat pārbaudīt zemāk, izmantojot demonstrācijas video.