- Alkatrészek:
- Áramkör magyarázat:
- Kopogtató minta táplálása Arduino-ban:
- Munka magyarázat:
- Programozási magyarázat:
A biztonság a mindennapi életünkben komoly gondot jelent, és a digitális zárak e biztonsági rendszerek fontos részévé váltak. Sokféle biztonsági rendszer áll rendelkezésre a helyünk biztosítására. Néhány példa: PIR alapú biztonsági rendszer, RFID alapú biztonsági rendszer, digitális zárrendszer, biomátrix rendszerek, elektronikai kódzár. Ebben a bejegyzésben építsünk egy titkos kopogásérzékelő ajtózárat az Arduino segítségével, amely képes észlelni az ajtón kopogtatásának mintázatát, és csak akkor nyitja meg a zárat, ha a kopogásminta megegyezik a helyes mintával. A megfelelő működésű bemutató megtekintéséhez ellenőrizze a videót a végén.
Alkatrészek:
- Arduino Uno
- Nyomógomb
- Berregő
- 1M ellenállás
- Erő
- Csatlakozó vezetékek
- Doboz
- Szervómotor
Áramkör magyarázat:
Ennek a kopogtatómintás detektornak az áramköre nagyon egyszerű, amely az Arduino-t tartalmazza a projekt, a nyomógomb, a hangjelző és a szervomotor egész folyamatának vezérléséhez. Az Arduino ellenőrzi a teljes folyamatokat, például jelszó öltését a Zümmögőből vagy az Érzékelőből, a minták összehasonlítását, a Servo meghajtását a kapu nyitásához és bezárásához, valamint a minta mentését az Arduinóba.
A nyomógomb közvetlenül csatlakozik az Arduino D7 érintkezőjéhez a talajhoz képest. És egy hangjelző van csatlakoztatva az Arduino analóg A0 érintkezőjéhez a talajhoz viszonyítva, és 1M ellenállással A0 és a föld között is. Egy szervomotor is csatlakoztatva van PWM pin D3 Arduino.
Kopogtató minta táplálása Arduino-ban:
Ebben az áramkörben Buzzer vagy Peizo Sensor segítségével kopogtattunk bemeneti mintát a rendszerben. Itt egy nyomógombot használunk, hogy lehetővé tegyük az érzékelő bemenetének felvételét, és ezt az Arduino-ba is mentse. Ezt a rendszert úgy tervezték, hogy ötletet vett fel a Morse-kód mintájából, de nem éppen hasonló ahhoz.
Itt bemutatásra kartondobozt használtunk. A bevitelhez a nyomógomb megnyomása után megdöntjük a táblát. Itt kopogtattunk egy 500 ms-os időszakot szem előtt tartva. Ez az 500 ms azért van, mert kódban rögzítettük, és a beviteli minta attól függ. Ez az 500 ms-os időtartam határozza meg, hogy a bemenet értéke 1 vagy 0. Ellenőrizze az alábbi kódot, hogy megértse ezt a dolgot.
Amikor leütjük, Arduino elkezdi figyelni az első kopogás második kopogás időpontját, és ezt tömbbe rakja. Itt ebben a rendszerben 6 ütést hajtunk végre. Ez azt jelenti, hogy 5 időszakot kapunk.
Most egyesével ellenőrizzük az időszakot. Először ellenőrizzük az első kopogás és a második kopogás közötti időszakot, ha az ezek közötti időkülönbség kevesebb, mint 500 ms, akkor 0 lesz, és ha 500 ms-nál nagyobb, akkor 1 lesz, és egy változóba kerül. Most utána ellenőrizzük a második kopogás és a harmadik kopogás stb. Közötti időszakot.
Végül 5 számjegyű kimenetet kapunk 0 és 1 formátumban (bináris formátumban).
Munka magyarázat:
A Knock alapú Smart Lock Project működése egyszerű. Először el kell mentenünk egy mintát a rendszerben. Tehát addig kell nyomni és nyomva tartani a nyomógombot, amíg 6-szor kopogtatunk. Ebben a projektben 6 ütést használtam, de a felhasználó megváltoztathatja, ahogy akarja. Hatszoros kopogás után Arduino megtalálja a kopogásmintát, és elmenti azt az EEPROM-ba. Miután elmentette a bemeneti mintát, nyomja meg és azonnal engedje el a nyomógombot, amellyel az érzékelőtől az Arduino felé lehet bevinni a zárat. Most 6-szor kell kopogtatnunk. Utána Arduino dekódolja és összehasonlítja a mentett mintával. Ha egyezés következik, akkor az Arduino a szervomotor meghajtásával nyissa ki a kaput.
Megjegyzés: amikor megnyomjuk vagy nyomva tartjuk a nyomógombot, az Arduino elindít egy 10 másodperces időzítőt mind a 6 kopogáshoz. Azt jelenti, hogy a felhasználónak 10 másodpercen belül kopognia kell. És a felhasználó megnyithatja a soros monitort a napló megtekintéséhez.
Programozási magyarázat:
Egy programban mindenekelőtt a fejlécfájlt foglaljuk össze, meghatározzuk a bemeneti és kimeneti PIN-kódot, valamint meghatározzuk a makrót és a deklarált változókat, amint az a teljes kód kód alatt látható.
Ezt követően a beállítási funkcióban irányt adunk a meghatározott csapnak és elindítjuk a szervomotort.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Serial.begin (9600); }
Utána felvesszük az inputot, és elmentjük a tömbben a bemeneti mintát vagy a kopogás idejét.
void loop () {int i = 0; if (digitalRead (sw) == LOW) {Serial.println ("Start"); késés (1000); hosszú stt = millis (); while (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); ha (temp> érzékenység && flag == 0 && i <= patternLenth) {…………..
Utána dekódoljuk a bemeneti mintát
mert (int i = 0; i
Ezután mentse el, ha a nyomógombot még mindig megnyomja
if (digitalRead (sw) == 0) {for (int i = 0; i
És ha a nyomógombot még mindig nem nyomják meg, akkor az Arduino összehasonlítja a bemeneti dekódolt mintát a mentett mintával.
else {if (knok == 1) {for (int i = 0; i
Ha bármilyen jelszó megegyezik, akkor a Servo nyissa meg a kaput, különben semmi nem történt, de a felhasználó láthatja az eredményt a soros monitoron keresztül.
Soros.println (acceptFlag); if (acceptFlag> = patternLenth-1) {Serial.println ("Elfogadva"); myServo.write (openGate); késés (5000); myServo.write (closeGate); } else Serial.println ("Elutasítva"); }
Az alábbiakban bemutathatja a teljes kódot egy bemutató videóval.