Arduino Light & Knock Detecting Dørlås: 4 trin

Arduino Light & Knock Detecting Dørlås: 4 trin

Indholdsfortegnelse:

Anonim

Dette er en god gadget til et hemmeligt klubhus og for folk som mig, der altid ser ud til at miste deres nøgler! Dette projekt er baseret på den originale Secret Knock Lock instrueret af Grathio (tilgængelig nedenfor) med følgende hovedændringer:

1) Har et andet hemmeligt input til, hvornår folk er omkring, som kunne overhøre din banke. Nu kan en fotodiode registrere et "photo knock" (lysblitz) gennem peep hullet!

2) Inkluderer en H-Bridge, der giver den mulighed for både at låse op og låse en dør (ændrer spændingsretningen over motoren)

3) Programmering registrerer nu det gennemsnitlige (baggrund) støj / lydniveau og justerer følsomheden (tærskelværdierne) i overensstemmelse hermed

*** Oplysningerne her er tilpasset fra Grathios instruerbare. Mange tak og kredit gå til Grathio Labs for at gøre en så omfattende vejledning til rådighed for resten af ​​os! Jeg vil tage dig gennem trinene til programmering og ledning af elektronikken og derefter sende dig til trinnet i Grathio's instruktable til at lave en PVC-dørmontering (desværre er jeg stadig ved at skabe en funktionel sag)

For Grathio's originale Knock-Lock instruerbare, gå til

forsyninger:

Trin 1: Værktøjer, forsyninger og færdigheder

Færdigheder:

For at gennemføre dette projekt skal du kunne:

Gør grundlæggende lodning.

Læs en skematisk.

Har lidt viden om mikrocontrollere (jeg bruger Arduino.)

Improvisere

Værktøjer:

Bor (helst en boretryk) og et udvalg af boremaskiner.

Saw i stand til at skære PVC-rør. (dvs.: Pretty mcuh any saw.)

Loddejern og loddemetal.

Tang.

Skruetrækker.

Varmekrympeslanger og / eller elektrisk tape.

Wire stripper.

Vice.

Sikkerhedsbriller.

Handsker.

Andre ting du kan finde handy: en linjal / målebånd, et multimeter, et brødbræt, et stykke tape, en magisk markør, sandpapir, filer, varm lim. Og hvis du som mig er et veludstyret førstehjælpskit.

Materialer:

Elektronik:

1 Arduino Uno (eller lignende) Microcontroller

1 12v gearreduktionsmotor med højt moment

1 lille mikrofon

1 SPST momentant tryknap. (normalt "off" / "open")

1 rød LED

1 grøn LED

1 fotodiode

1 Firedobbelt halv H-Bridge SN754410NE chip

1 100k ohm modstand (1/4 watt)

1 10k ohm modstand (1/4 watt)

1 1M ohm modstand (1/4 watt)

2 560 ohm modstand (Eller hvad vil køre din røde og grønne LED på 5v)

1 lille stykke perf bord. 5x15 huller eller længere.

1 12V vægadapter stik til Arduino

Det er også en god ide at have et brødbræt til opsætning og afprøvning af kredsløbet, før du loddemåler det. Det gør vi i trin 3.

Sag:

(Dette design kommer direkte fra Grathio-kilden.)

20 "PVC-rør 1/2".

3 højre vinkel 1/2 "PVC-stik.

1 5-vejs 1/2 "PVC-stik. (Eksempel)

2 1/2 "PVC-endeplade.

3 1 1/2 "sugekopper. (Fås ved hardware og håndværkscentre.) BEMÆRK: Hvis din dør ikke er egnet til sugekopper, skal du udskifte disse med tre endehætter, og du kan bruge klæbebånd eller skruer til at montere låsen.

6 "af 1/2" bred med 1/64 "tyk metalstrimmel (stål, tin, kobber osv.) (Tilgængelig på hardware, håndværk og kunstforretninger.)

4,5 "af 1" bredt metalark, 1/32 "tyk (stål, tin, kobber mv.) (Tilgængelig på hardware, håndværk og kunstforretninger.)

2 3/32 "x 3/8" skruer med møtrikker. (1/8 "vil også fungere, hvis du ikke kan finde de mindre.)

2 1,6 M (metriske) 16 mm skruer. Ideelt med nedtonede hoveder, hvis du kan finde dem. (For at sikre motoren. Tjek din motor specifikationer for at se, hvilke skruer det har brug for. En motor jeg prøvede brugte 1.6M, den anden 2M. Du skal nok købe lange og klippe dem i længden.)

1 stor sugekop (til fotodiode)

Trin 2: Program din Arduino

Du vil gerne uploade vores skitse, inden du foretager nogen af ​​elektronikken, så vi kan teste dem, når vi går. Koden er vedhæftet nedenfor og har kommentarer hele vejen igennem. Du skal have din Arduino software / drivere installeret til dette trin!

1) Download fil vedhæftet nedenfor

2) Slut din Arduino til en USB-indgang på din computer.

3) Åbn filen i en Arduino Sketch (eller hvis det giver dig problemer, skift filen til en.txt og kopier / indsæt koden i en tom skitse) og kompilér / verificer den

4) Upload det til din Arduino!

I de kommende trin vil jeg give fejlfindingstips, der involverer bestemte dele af koden (visse parametre skal tweaked for hvert system). For alle interesserede i kodenes specifikationer har jeg medtaget et resumé nedenfor. Skitsen er godt kommenteret hele vejen igennem, men det er en betryggende fil og lidt klumpet at fortolke til tider (lad det være glædeligt at gøre dette mere elegant, og vær sikker på at dele succes i kommentarerne!).

Linjer 4-33: Definerer Arduino-tappene, konstanterne og variablerne, vi vil bruge i koden.

- Du vil nok gerne justere disse til din dør / system. Jeg vil lede dig igennem dette

Linjer 35-47 (opsætning): Definerer pin-tilstande og initierer seriel overvågning

Linjer 49-84, (sløjfe): Definerer kredsløbets adfærd, da det venter at høre (se) en banke (flash)

- Her etablerer vi baggrunds- / middelværdien, som kontinuerligt prøver data og kalibrerer tærskelværdier i overensstemmelse hermed. Hvis et lyssignal er registreret over tærskelværdien, udføres det "listenToSecretKnock"

Linjer 86-161 (listenToSecretKnock): Registrerer de knapper, der er registreret af mikrofonen

- Registrerer tiden mellem banker (forsinkelseslængde) i en matrix og sender dataene til valideringKnock. En del af dette afsnit er dedikeret til at styre LED-indikatorerne, som blinker sammen i tid med de registrerede baner. Hvis låsen er bekræftet, låser eller låser døren låsen op, når den afhænger af "doorState" (som fortæller om vores var sidst låst eller ulåst).

Linjer 163-238 (listenToSecretPhotoKnock): Optager de lyssignaler, der er registreret af fotodioden

- Dybest set det samme som linjerne 86-161, men nu med fotodiode signalet / parametrene. Dette er et godt sted at starte, hvis du ønsker at strømline koden lidt mere, da det gentager meget af det, der bruges tidligere (på min todo liste)

Linjer 239-255 (triggerDoorUnlock): Tænder motoren for at låse op døren

- Forståelse af dette afsnit har at gøre med at kende adfærd af en h-bro, der dikterer spændingsretningen over motoren. Du vil måske se op på speckarket for din chip for at forstå mere (dette var det jeg brugte: http://html.alldatasheet.com/html-pdf/28616/TI/SN754410NE/24/1/SN754410NE.html)

Linjer 257-272 (triggerDoorLock): Kører motoren i omvendt for at låse døren

- Dette afsnit gentager også en del kodning og kan have gavn af en lille oprydning.

Linjer 274-349 (validereKnock): Kontrollerer, om det optagne mønster er en match til nøglen.

- Dette normaliserer hver knock til den længste pause og sammenligner de relative intervaller mellem knocks. Dette betyder at du kan gøre det samme mønster langsomt eller hurtigt, og det skal stadig udløse motoren.

Trin 3: Test af kredsløbet på et brødbræt

Vi skal tilslutte hele elektronikken til et brødbræt og kontrollere, at alt fungerer som vi går. Du kan finde skematisk skema og et layoutdiagram, der er vedhæftet i ovenstående billeder. Vær forsigtig, så du ikke får adgang til ethvert trådløst netværk, og husk at slutte din ARDUINO / CIRCUIT fra strømkilder, mens du går i gang!

1) Træk mikrofonen

Loddemetal et par 12 "(30cm) fører til mikrofonen. Forbind den mellem Analog pin 0 og jorden. Tilslut også 1M ohm modstanden mellem Analog pin 0 og jorden.

TEST: Når din Arduino er tilsluttet computeren, skal du åbne vinduet Serial Monitor (øverst til højre på skitsevinduet). Du skal se teksten "Program start". Tryk på mikrofonen, og det skal sige "knock start" og "knock" hver gang du trykker på den. Stop for et sekund eller to, og du vil sikkert se "Secret knock failed." Prøv at trykke på barbering og et hårsnit og se om du kan få "døren ulåst!" besked! Derefter lytter arduinoen til et signal for at låse døren. Standarden for dette (kan ændres i koden) er fire lige adskilte knapper.

fejlfinding af:

- Hvis du ikke ser noget eller uønsket fra seriel overvågning, skal du sørge for at din serielle port er indstillet til 9600 baud og nulstil strømmen

- For at justere følsomheden ved at genkende / validere et banemønster, skal du spille med værdierne "rejectValue" og "averageRejectValue" (linjerne 13 og 14). Hvis en enkelt banke er slukket med mere end rejectValue (procent), eller hvis den gennemsnitlige timing af banerne er slukket med mere end gennemsnittetRejectValue, vil arduinoen ikke bekræfte knock eller udløse motoren

- Hvis en enkelt banke registreres mere end én gang, eller to baner er registreret som samme banke, skal du justere "knockFadeTime" (linje 15), som angiver millisekunderne, vi tillader en banke at falme, før vi lytter til en anden (en effektiv debounce timer).

2) Wire fotodioden

Tilslut anodesiden (normalt den med en kortere ledning) til 5V og katoden til analog pin 3 og jordet gennem en 100K modstand (se skematisk).

TEST: Sken et blink af lys på din fotodiode, og i serielle montor-vinduet skal du se teksten "photo knock start" og "photo knock" hver gang du blinker lyset. Prøv at skinne lyset blinker i samme "Shave and a Haircut" mønster som du gjorde med mikrofonens vandhaner.

fejlfinding af:

- Hvis du ikke ser noget, når du blinker lyset på dioden, skal du prøve at teste spændingen over 100k modstanden og sørg for at den opfører sig som forventet (spændingen går op til + 5V, når den er mættet med lys og til 0, når det er mørkt).

- Hvis en enkelt flash registreres mere end én gang, eller to blinker er registreret som en, skal du justere "photoknockFadeTime" (linje 16)

3) Tænd LED'erne

Lad os tilslutte nogle lysdioder, så vi behøver ikke bruge et serielt kabel til at se, hvad der sker. Tilslut den røde LED til digital pin 4 og grøn LED til digital pin 5 med deres tilsvarende 560 * ohm modstande på linie.

TEST: Hvis du tænder kredsløbet, skal den grønne LED lyser og dæmpe momentarialy for hver banke. Hvis arduino verificerer den korrekte sekvens, skal den grønne ledning blinke et par gange. Den forkerte rækkefølge skal blinke den røde.

fejlfinding af:

- Kontrollér polariteten på dine lysdioder og alle dine forbindelser. Dine lysdioder kan kræve en anden modstand for at køre på 5V, så hvis de er for svage eller slukkede, kan du forsøge at sænke modstanden.

4) Træk programmeringsknappen

Loddemetal 8 "fører til knappen. Forbind den ene side af knappen til + 5v. Med den anden knap på knappen skal du tilslutte til digital pin 2 og gennem en 10K modstand til Ground.

TEST: Anvend strøm. Når du trykker på knappen, skal det røde lys tændes. Hold knappen nede og tryk på en simpel sekvens. Når du tænder under programmeringen, skal begge LED'er blinke. Når du er færdig, skal mønsteret du lige har tappet gentage på begge lys. Efter afspilningen er færdig, gemmes den nye bankkode, og lysene vil alternativt være rød og grøn for at fortælle dig det.

fejlfinding af:

- Sørg for, at din knap normalt er åben ("momentarielt lukket") ved at bruge et ohmmeter til at optage modstanden med knappen upresset. Hvis dette returnerer nul eller en lav værdi, har du den forkerte type tryknap.

5) Ledning i h-broen og motoren

Til h-broen, tilslut: pins 1 og 16 til + 5V; ben 4 og 5 til GND, pin 2 til Arduino digital pin 3, pin 7 til arduino digital pin 6 og pin 8 til arduino Vin. Loddemetal 8 "fører til motoren og forbinder disse med h-brostifterne 3 og 6.

TEST: Tænd for kredsløbet. Tryk korrekt på knappen "Shave and a Haircut", og motoren skal køre. Tryk på det korrekte mønster igen, og motoren skal dreje i modsat retning.

fejlfinding af:

- Sørg for at chip er drevet og jordet.

- Kontroller, hvilken vej motoren drejer. Første gang det udføres, skal det dreje på samme måde som du drejer din deadbolt for at låse den op. Hvis ikke, skift motorens ledninger, som skal dreje motoren.

- For at få din motor til at dreje 180 grader justere "lockTurnTime" (linje 17) indtil motoren drejer 1/2 omdrejning hver gang den udløses

Tillykke! Du har lavet et fungerende hemmeligt knock detektor kredsløb!

Trin 4: Opbygning af et tilfælde og fotodiodevedhæftning

For detaljerede trin til at gøre dørmonteringen / sagen gå her:

Min mount er baseret på dette design med nogle få ændringer (jeg havde adgang til nogle mindre almindelige værktøjer gennem min skole, Pomona College). Jeg sidder fast i PVC-designet, da det var let og bærbart. Jeg havde adgang til udstyr, som tillod mig at udskrive et printkort, så ikke mange ledninger skulle fyldes i huset. Efter lodning af det endelige kredsløb tapede jeg undersiden (som vender mod arduinoen) for at sikre, at intet rørte ved den arduino, der ikke var meningen. Min motor havde ikke gearreduktion inkluderet, så vi konstruerede et sæt gear og et aluminium gearkasse. Mikrofonen er fastgjort til enden af ​​den lange metalstrimmel (dækket med pink tape til dekoration).

FOR AT GØR FOTODODE ADAPTER, bor et hul i en sugekop lidt mindre end din diodes størrelse (så suget vil ikke blive kompromitteret) og læg fotodioden ud af sugekoppen mod døroverfladen. Efterlad lange ledninger på fotodioden, så den kan spænde afstanden mellem dit kikkert og deadbolt.