- Komponentai:
- Grandinės paaiškinimas:
- „Arduino“ maitinimo beldimo modelis:
- Darbinis paaiškinimas:
- Programavimo paaiškinimas:
Saugumas yra pagrindinis mūsų kasdienio gyvenimo rūpestis, o skaitmeninės spynos tapo svarbia šių apsaugos sistemų dalimi. Mūsų vietai apsaugoti yra daugybė apsaugos sistemų tipų. Keletas pavyzdžių yra PIR pagrįsta apsaugos sistema, RFID pagrįsta apsaugos sistema, skaitmeninio užrakto sistema, biologinės matricos sistemos, elektroninis kodinis užraktas. Šiame įraše pastatykime slaptą „Knock“ aptikimo durų užraktą naudodami „Arduino“, kuris gali aptikti jūsų beldimų modelį prie durų ir atidarys spyną tik tuo atveju, jei beldimo modelis atitiks teisingą modelį. Norėdami tinkamai naudoti demonstracinę versiją, patikrinkite vaizdo įrašą pabaigoje.
Komponentai:
- Arduino Uno
- Paspauskite mygtuką
- Buzeris
- 1M rezistorius
- Galia
- Jungiamieji laidai
- Dėžė
- Servo variklis
Grandinės paaiškinimas:
Šio beldžiančio modelio detektoriaus grandinės schema yra labai paprasta, kurioje yra „Arduino“, kad būtų galima valdyti visą projekto procesą, mygtuką, buzerį ir servovariklį. „Arduino“ valdo visus procesus, pvz., Slaptažodžio formavimą „Buzzer“ ar „Sensor“, modelių palyginimą, „Servo“ varymą, kad atidarytų ir uždarytų vartus ir išsaugotų „Arduino“ modelį.
Mygtukas yra tiesiogiai sujungtas su „Arduino“ kaiščiu D7 žemės atžvilgiu. Ir signalizatorius yra prijungtas analoginio pin A0 iš Arduino su bazės atžvilgiu ir su 1M atsparumo tarp A0 ir žemės taip pat. Servovarikliu taip pat yra sujungtas PWM pin D3 Arduino.
„Arduino“ maitinimo beldimo modelis:
Šioje grandinėje mes naudojome „ Buzzer“ arba „Peizo Sensor“, kad sistemoje imtume smūgio įvesties modelį. Čia mes naudojame paspaudimo mygtuką, kad galėtume priimti duomenis iš jutiklio ir taip pat išsaugoti juos „Arduino“. Ši sistema sukurta atsižvelgiant į idėją iš Morzės kodo modelio, tačiau nėra visiškai panaši į tą.
Čia demonstravimui naudojome kartoninę dėžę. Norėdami priimti įvestį, paspaudę mygtuką paspaudžiame lentą. Čia pasibeldėme, turėdami omenyje 500 ms laikotarpį. Tai yra 500 ms, nes mes jį pataisėme kodu, o įvesties modelis priklauso nuo jo. Šis 500 ms laikotarpis nustatys, kad įvestis buvo 1 arba 0. Patikrinkite toliau pateiktą kodą, kad suprastumėte šį dalyką.
Kai mes jį pasibeldžiame, „Arduino“ pradeda stebėti pirmojo paspaudimo į antrą smūgį laiką ir įdėti jį į masyvą. Čia šioje sistemoje mes atliekame 6 smūgius. Tai reiškia, kad gausime 5 laikotarpius.
Dabar mes tikriname laiko tarpą po vieną. Pirma, mes patikriname laiko tarpą tarp pirmojo ir antrojo paspaudimo, jei laiko skirtumas tarp jų yra mažesnis nei 500 ms, tada jis bus 0, o jei didesnis nei 500 ms - 1 ir jis bus išsaugotas kintamajame. Dabar po jo mes patikriname laiko tarpą nuo antro ir trečio smūgio ir pan.
Galiausiai gausime 5 skaitmenų išvestį 0 ir 1 formatu (dvejetainis).
Darbinis paaiškinimas:
„ Knock“ pagrįsto „Smart Lock“ projekto darbas yra paprastas. Pirmiausia turime išsaugoti schemą sistemoje. Taigi turime spausti mygtuką ir palaikyti, kol pasibelsime 6 kartus. Šiame projekte aš panaudojau 6 smūgius, tačiau vartotojas gali jį pakeisti, kaip nori. Šešis kartus pasibeldęs, Arduino suranda beldimo modelį ir išsaugo jį EEPROM. Išsaugoję įvesties modelį, paspauskite ir nedelsdami atleiskite mygtuką, kad įvestumėte duomenis iš jutiklio į „Arduino“, kad atidarytumėte užraktą. Dabar mes turime pasibelsti 6 kartus. Po to „Arduino“ jį iššifruoja ir palygina su išsaugotu šablonu. Jei įvyksta rungtis, „Arduino“ atidarykite vartus važiuodami servovarikliu.
Pastaba: kai paspaudžiame arba palaikome nuspaudę mygtuką „Arduino“, paleiskite 10 sekundžių laikmatį, kad atliktumėte visus 6 smūgius. Reiškia, kad vartotojas turi pasibelsti per 10 sekundžių. Ir vartotojas gali atidaryti nuoseklųjį monitorių, norėdamas pamatyti žurnalą.
Programavimo paaiškinimas:
Pirmiausia į programą įtraukiame antraštės failą, apibrėžiame įvesties ir išvesties kaiščius bei apibrėžiame makrokomandas ir deklaruotus kintamuosius, kaip matote toliau esančiame skyriuje „Visas kodas kode“.
Po to, nustatymo funkcijoje, mes suteikiame kryptį apibrėžtam kaiščiui ir paleidžiame servo variklį.
negaliojanti sąranka () {pinMode (sw, INPUT_PULLUP); „myServo.attach“ (servoPin); „myServo.write“ (180); Serijos pradžia (9600); }
Po to mes imame įvestį ir išsaugome įvesties modelį arba masyvo laiką.
tuštuma kilpa () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Pradėti"); vėlavimas (1000); ilgas stt = milis (); while (milis () <(stt + patternInputTime)) {int temp = analogRead (A0); jei (temp> jautrumas && flag == 0 && i <= patternLenth) {…………..
Po to mes iššifruojame įvesties modelį
už (int i = 0; i
Tada išsaugokite, jei vis tiek paspaudžiamas mygtukas
jei (digitalRead (sw) == 0) {už (int i = 0; i
Ir jei mygtukas vis dar nėra paspaustas, „Arduino“ palygins įvestą iššifruotą modelį su išsaugotu modeliu.
else {if (knok == 1) {už (int i = 0; i
Jei koks nors slaptažodis atitiko, tada „Servo“ atidarė vartus, kitaip nieko neatsitiko, bet vartotojas gali matyti rezultatą per nuoseklųjį monitorių.
Serial.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Priimta"); „myServo.write“ („openGate“); vėlavimas (5000); myServo.write (closeGate); } else Serial.println („Atmesta“); }
Žemiau esantį kodą galite patikrinti naudodami demonstracinį vaizdo įrašą.