- Mga Bahagi:
- Paliwanag sa Circuit:
- Pagpapakain ng pattern sa Knocking sa Arduino:
- Paggawa ng Paliwanag:
- Paliwanag sa Programming:
Ang seguridad ay isang pangunahing alalahanin sa ating pang-araw-araw na buhay, at ang mga digital lock ay naging isang mahalagang bahagi ng mga sistemang pangseguridad. Maraming uri ng mga sistema ng seguridad na magagamit upang ma-secure ang aming lugar. Ang ilang mga halimbawa ay batay sa PIR Security System, batay sa RFID Security System, Digital Lock System, mga system ng bio-matrix, lock ng Electronics Code. Sa post na ito, magtayo tayo ng isang Lihim na Pagtuklas sa Pag-lock ng Pinto gamit ang Arduino na maaaring makita ang pattern ng iyong mga katok sa pinto at bubuksan lamang ang lock kung ang pattern ng pag-katok ay tumutugma sa tamang pattern. Para sa wastong Demo na gumagana, suriin ang Video sa dulo.
Mga Bahagi:
- Arduino Uno
- Push Button
- Buzzer
- 1M Resistor
- Lakas
- Mga kumokonekta na mga wire
- Kahon
- Servo Motor
Paliwanag sa Circuit:
Ang circuit Diagram ng Knocking Pattern Detector na ito ay napaka-simple na naglalaman ng Arduino para sa pagkontrol ng buong proseso ng proyekto, pindutan ng push, buzzer, at Servo Motor. Kinokontrol ng Arduino ang mga kumpletong proseso tulad ng pagkuha ng form ng password na Buzzer o Sensor, paghahambing ng mga pattern, pagmamaneho ng Servo para buksan at isara ang gate at i-save ang pattern sa Arduino.
Ang push button ay direktang konektado sa pin D7 ng Arduino na patungkol sa lupa. At ang isang buzzer ay konektado sa analog pin A0 ng Arduino na patungkol sa lupa at may isang paglaban ng 1M sa pagitan ng A0 at ground din. Ang isang Servo motor ay konektado din sa PWM pin D3 ng Arduino.
Pagpapakain ng pattern sa Knocking sa Arduino:
Sa circuit na ito, ginamit namin ang Buzzer o Peizo Sensor upang kumuha ng pattern ng pag-input ng kumatok sa system. Narito gumagamit kami ng isang pindutan ng push upang payagan na kumuha ng input mula sa sensor at i-save din iyon sa Arduino. Ang sistemang ito ay dinisenyo sa pamamagitan ng pagkuha ng ideya mula sa pattern ng code ng Morse ngunit hindi eksaktong katulad nito.
Dito nagamit namin ang isang kahon ng karton para sa pagpapakita. Upang kumuha ng input ay kinatok namin ang board pagkatapos ng pagpindot sa pindutan ng push. Narito kami ay kumatok sa pamamagitan ng pagpapanatili ng isang tagal ng panahon sa isip na 500ms. Ang 500ms na ito ay dahil naayos namin ito sa code at ang pattern ng pag-input ay nakasalalay dito. Ang panahon ng 500ms na ito ay tumutukoy sa input ay 1 o 0. Suriin ang code sa ibaba upang maunawaan ang bagay na ito.
Kapag kinatok namin ito, sinisimulan ng Arduino na subaybayan ang oras ng unang katok hanggang pangalawang katok at ilagay ito sa isang array. Dito sa sistemang ito, kumukuha kami ng 6 na katok. Nangangahulugan ito na makakakuha kami ng 5 mga yugto ng panahon.
Ngayon isa-isa nating sinusuri ang tagal ng panahon. Una, suriin namin ang tagal ng oras sa pagitan ng unang katok at pangalawang kumatok kung ang pagkakaiba sa oras sa pagitan ng mga mas mababa sa 500ms pagkatapos ay magiging 0 at kung mas malaki sa 500ms ito ay magiging 1 at mase-save ito sa isang variable. Ngayon pagkatapos nito, sinusuri namin ang tagal ng oras sa pagitan ng pangalawang pagkatok at pangatlong kumatok at iba pa.
Panghuli, makakakuha kami ng 5 digit na output sa 0 at 1 format (binary).
Paggawa ng Paliwanag:
Ang pagtatrabaho ng Knock based Smart Lock Project ay simple. Una kailangan nating i-save ang isang pattern sa system. Kaya kailangan nating pindutin nang matagal ang push button hanggang sa kumatok kami ng 6 na beses. Dito sa proyektong ito, gumamit ako ng 6 na katok ngunit maaaring baguhin ito ng gumagamit ayon sa gusto nila. Pagkatapos ng anim na beses na katok, hanapin ni Arduino ang pattern ng kumatok at i-save iyon sa EEPROM. Ngayon pagkatapos i-save ang pattern ng pag-input, pindutin at agad na pinakawalan ang pindutan ng push para sa pagkuha ng input mula sa sensor sa Arduino upang buksan ang lock. Ngayon kailangan nating kumatok ng 6 beses. Pagkatapos nito, nai-decode ito ng Arduino at inihambing sa naka-save na pattern. Kung nangyari ang isang tugma pagkatapos ay buksan ng Arduino ang gate sa pamamagitan ng pagmamaneho ng servo motor.
Tandaan: kapag pinindot namin o pinindot nang matagal ang push button na Arduino magsimula ng isang 10 segundo timer upang kunin ang lahat ng 6 na katok. Ibig sabihin kailangan ng kumatok sa loob ng 10 segundo na oras na ito. At maaaring buksan ng gumagamit ang Serial monitor upang makita ang log.
Paliwanag sa Programming:
Sa isang programa una sa lahat isinasama namin ang file ng header at tinutukoy ang input at output pin at tukuyin ang macro at idineklara na mga variable na nakikita mo sa Buong Code sa seksyon ng code sa ibaba.
Pagkatapos nito, sa pag- andar ng pag- setup , nagbibigay kami ng direksyon sa tinukoy na pin at simulan ang servo motor.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Pagkatapos nito, kumukuha kami ng input at nai-save ang pattern ng pag-input o kumatok oras sa isang array.
void loop () {int i = 0; kung (digitalRead (sw) == LOW) {Serial.println ("Start"); pagkaantala (1000); mahabang stt = millis (); habang (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); kung (temp> pagkasensitibo && flag == 0 && i <= patternLenth) {…………..
Pagkatapos nito, nai-decode namin ang pattern ng pag-input
para sa (int i = 0; i
At pagkatapos ay i-save kung ang pindutan ng push ay pinindot pa rin
kung (digitalRead (sw) == 0) {para sa (int i = 0; i
At kung ang pindutan ng push ay hindi pa pinindot pagkatapos ihambing ng Arduino ang input na na-decode na pattern na may nai-save na pattern.
iba pa {kung (knok == 1) {para sa (int i = 0; i
Kung ang anumang password ay tumugma, pagkatapos Servo buksan ang gate kung hindi man walang nangyari ngunit ang gumagamit ay maaaring makita ang resulta sa serial monitor.
Serial.println (acceptFlag); kung (acceptFlag> = patternLenth-1) {Serial.println ("Tinanggap"); myServo.write (openGate); pagkaantala (5000); myServo.write (closeGate); } iba pa Serial.println ("Tinanggihan"); }
Maaari mong suriin ang kumpletong code sa ibaba gamit ang isang demo na Video.