- Komponentit:
- Piirin selitys:
- Koputtavan kuvion syöttäminen Arduinossa:
- Työselitys:
- Ohjelmoinnin selitys:
Turvallisuus on tärkeä huolenaihe jokapäiväisessä elämässämme, ja digitaalisista lukoista on tullut tärkeä osa näitä turvajärjestelmiä. Paikkamme turvaamiseksi on käytettävissä monenlaisia turvajärjestelmiä. Joitakin esimerkkejä ovat PIR-pohjainen turvajärjestelmä, RFID-pohjainen turvajärjestelmä, digitaalinen lukitusjärjestelmä, biomatriisijärjestelmät, elektroniikkakoodilukko. Rakentakaamme tässä viestissä salainen koputuksen tunnistava ovilukko Arduinolla, joka pystyy havaitsemaan ovesi kolhun mallin ja avaa lukon vain, jos koputusmalli vastaa oikeaa kuviota. Tarkista oikeanlainen esittely tarkistamalla video lopussa.
Komponentit:
- Arduino Uno
- Paina nappia
- Summeri
- 1M vastus
- Teho
- Johtojen liittäminen
- Laatikko
- Servo moottori
Piirin selitys:
Tämän koputtavan kuvion ilmaisimen piirikaavio on hyvin yksinkertainen, joka sisältää Arduinon koko projektin prosessin, painikkeen, summerin ja servomoottorin ohjaamiseen. Arduino hallitsee kaikkia prosesseja, kuten salasanan ottaminen summerista tai anturista, mallien vertailu, Servon ajaminen portin avaamiseksi ja sulkemiseksi ja kuvion tallentamiseksi Arduinoon.
Painike on kytketty suoraan Arduinon tapiin D7 maanpinnan suhteen. Ja summeri on kytketty Arduinon analogiseen nastaan A0 maadoituksen suhteen ja 1 M: n vastuksella myös A0: n ja maan välillä. Servomoottori on kytketty myös PWM pin D3 Arduino.
Koputtavan kuvion syöttäminen Arduinossa:
Tässä piirissä olemme käyttäneet summeria tai Peizo-anturia ottaaksemme koputussyöttökuvion järjestelmässä. Täällä käytämme painiketta, jotta voimme ottaa anturin antamat tiedot ja tallentaa ne myös Arduinoon. Tämä järjestelmä on suunniteltu ottamalla ideoita morsekoodimallista, mutta se ei ole aivan samanlainen kuin se.
Tässä olemme käyttäneet esittelyä varten pahvilaatikkoa. Syötteen ottamiseksi kaatamme pöydän yli painikkeen painamisen jälkeen. Tässä olemme koputtaneet pitämällä mielessä 500 ms: n ajanjakson. Tämä 500 ms johtuu siitä, että olemme korjanneet sen koodina ja syöttökuvio riippuu siitä. Tämä 500 ms: n ajanjakso määrittää syötteen olevan 1 tai 0. Tarkista alla oleva koodi ymmärtääksesi tämän.
Kun koputamme sitä, Arduino alkaa seurata ensimmäisen koputuksen aikaa toiseen koputukseen ja laittaa sen ryhmään. Tässä järjestelmässä otamme 6 koputusta. Se tarkoittaa, että saamme 5 ajanjaksoa.
Nyt tarkistamme ajanjakson yksitellen. Ensinnäkin tarkistamme ensimmäisen koputuksen ja toisen koputuksen välisen ajanjakson, jos näiden välinen aikaero on vähemmän kuin 500 ms, se on 0 ja jos suurempi kuin 500 ms, se on 1 ja se tallennetaan muuttujaan. Nyt sen jälkeen tarkistamme ajanjakson toisen koputuksen ja kolmannen koputuksen ja niin edelleen.
Lopuksi saamme 5-numeroisen lähdön 0- ja 1-muodossa (binaarinen).
Työselitys:
Työstö Knock perustuu Smart Lock Project on yksinkertainen. Ensin meidän on tallennettava kuvio järjestelmään. Joten meidän on painettava painonappia, kunnes koputamme 6 kertaa. Tässä projektissa olen käyttänyt 6 koputusta, mutta käyttäjä voi muuttaa sitä haluamallaan tavalla. Kuusi kertaa koputuksen jälkeen Arduino löytää koputuskuvion ja tallentaa sen EEPROMiin. Kun olet tallentanut syöttökuvion, paina ja vapauta heti painike, jonka avulla syötät anturin Arduinoon lukon avaamiseksi. Nyt meidän on koputettava 6 kertaa. Sen jälkeen Arduino purkaa sen ja vertaa sitä tallennettuun kuvioon. Jos ottelu tapahtuu, Arduino avaa portin ajamalla servomoottoria.
Huomaa: kun painamme tai pidämme painettuna painiketta Arduino, käynnistä 10 sekunnin ajastin kaikkien 6 koputuksen ottamiseksi. Tarkoittaa, että käyttäjän on koputettava tämän 10 sekunnin kuluessa. Ja käyttäjä voi avata Serial Monitorin nähdäksesi lokin.
Ohjelmoinnin selitys:
Ensinnäkin sisällytämme ohjelmaan otsikkotiedoston ja määrittelemme syötteen ja lähdön pin ja määrittelemme makron ja ilmoitetut muuttujat, kuten alla olevasta Koko koodi koodista -osiosta näet.
Tämän jälkeen asetustoiminnossa annamme suunnan määritellylle tapille ja käynnistämme servomoottorin.
void setup () {pinMode (sw, INPUT_PULLUP); myServo.attach (servoPin); myServo.write (180); Sarjan alku (9600); }
Sen jälkeen otamme syötteen ja tallennamme syötekuvion tai koputusajan matriisiin.
void loop () {int i = 0; if (digitalRead (sw) == LOW) {Sarja.println ("Käynnistä"); viive (1000); pitkä stt = millis (); kun taas (millis () <(stt + patternInputTime)) {int temp = analogRead (A0); jos (temp> herkkyys && lippu == 0 && i <= kuvioLenth) {…………..
Sen jälkeen puramme syöttökuvion
varten (int i = 0; i
Tallenna sitten, jos painonappia painetaan edelleen
jos (digitalRead (sw) == 0) {varten (int i = 0; i
Ja jos painonappia ei vielä paineta, Arduino vertaa dekoodattua kuviota tallennettuun kuvioon.
else {if (knok == 1) {varten (int i = 0; i
Jos jokin salasana täsmää, Servo avaa portin, muuten mitään ei tapahtunut, mutta käyttäjä voi nähdä tuloksen sarjavalvojan kautta.
Serial.println (acceptFlag); if (acceptFlag> = kuvioLenth-1) {Serial.println ("Hyväksytty"); myServo.write (openGate); viive (5000); myServo.write (closeGate); } else Serial.println ("Hylätty"); }
Voit tarkistaa koko koodi alla demo videon.