Talaan ng mga Nilalaman:

Cryptap: isang Rhythm-based Door Lock: 5 Mga Hakbang
Cryptap: isang Rhythm-based Door Lock: 5 Mga Hakbang

Video: Cryptap: isang Rhythm-based Door Lock: 5 Mga Hakbang

Video: Cryptap: isang Rhythm-based Door Lock: 5 Mga Hakbang
Video: CrypTap Bitcoin Maden Kazarak Para Kazanma 2024, Hulyo
Anonim
Cryptap: isang Rhythm-based Door Lock
Cryptap: isang Rhythm-based Door Lock
Cryptap: isang Rhythm-based Door Lock
Cryptap: isang Rhythm-based Door Lock
Cryptap: isang Rhythm-based Door Lock
Cryptap: isang Rhythm-based Door Lock

May inspirasyon ng maraming mekanismo ng pag-unlock ng pinto na nakita ko sa hackaday.com, nagpasya akong lumikha ng isa sa sarili ko. Ang isang ito ay may interface na dalawang-pindutan; isa upang simulan at wakasan ang pagsumite ng password, at isa upang aktwal na i-tap ang ritmo na ang iyong password. Mayroon ding light status. Nagawa kong itayo ito ng murang gamit ang mga bahagi na aking tinapunan sa nakaraang ilang buwan. Ang mga bagay lamang na kailangan kong bayaran ay ang microcontroller mismo, na kung saan ay $ 21 (https://www.pjrc.com/teensy/), at ilang larawan na nakasabit na kawad na mayroon ako mula dati.

Napakasarap na mag-tap sa Star Wars Theme o isang bagay upang pumasok sa aking silid. Ngayon, hindi ko na kailangang magalala tungkol sa pagla-lock ulit ng aking sarili sa aking silid! Dagdag pa, maganda ang pakiramdam at geeky.

Hakbang 1: Mga Bahagi at Mga Tool

Mga Bahagi at Kasangkapan
Mga Bahagi at Kasangkapan
Mga Bahagi at Kasangkapan
Mga Bahagi at Kasangkapan

Pinili ko ang Teensy dahil ito ang aking unang microcontroller, at wala pa akong programmer. Ang Teensy ay nangangailangan lamang ng isang A-miniB USB cable at libreng software upang mai-install, katugma sa Mac / Windows / Linux. Gayundin, talagang madaling i-upload ang hex file; compile lang, at pindutin ang pindutan sa Teensy.

Ang gastos sa proyektong ito sa akin ay $ 21, kasama ang wire na nakabitin sa larawan. Ang mga bahagi mula sa kalye ay nagmula sa isang coffee percolator (relay, LED, capacitor) at isang router (LED, modular jack, power jack, capacitors). Ang mga libreng sample ay ang 7805 5-volt regulator, mga pindutan at switch. Natagpuan ko rin ang maraming bagay sa kahon ng "sirang bahagi" sa aking EE lab: mga konektor ng saging at cable, wire, ang driver ng sn754410, isang header na may apat na pin at resistors. Mayroon akong labis na charger ng laptop na nakalatag na ginamit ko para sa lakas, at isang Apple modem cable na ang tab ay nasira. Iba pang mga hardware: isang wall plate. Gumamit ako ng isang hot glue gun, isang soldering iron, isang needle file at isang power drill, na medyo pamantayan. Ang pinaka-hindi pangkaraniwang bagay na ginamit ko ay isang mahaba, kakayahang umangkop na tool ng grabber.

Hakbang 2: Paunang mayroon ng Hardware

Paunang mayroon ng Hardware
Paunang mayroon ng Hardware
Paunang mayroon ng Hardware
Paunang mayroon ng Hardware
Paunang mayroon ng Hardware
Paunang mayroon ng Hardware
Paunang mayroon ng Hardware
Paunang mayroon ng Hardware

Napakaswerte ko na mayroon nang maraming naka-install. Ang aking silid ay naa-access sa ADA, at mayroong iba't ibang mga tubo, mga de-koryenteng kahon at isang naka-install na na kuryente sa pintuan ng pintuan. Sa pagtanggal ng welga sa pinto dahil sa pag-usisa, nalaman kong hindi ito nakakonekta. Mayroong isang tubo mula sa welga ng pinto sa isang blangkong plate ng pader sa loob ng aking silid, at isa pang tubo mula doon patungo sa isang blangko na plato ng pader sa labas.

Sinasabi ng welga ng pinto na kailangan ng 24V @ 3A upang gumana, ngunit nakaya ko ang isang 19V, 7.9A na supply ng kuryente na mayroon ako. Ang welga ng pinto ay naka-polarisa, kaya tiyaking mayroon kang polarity na tama!

Hakbang 3: Mga Circuits

Circuits
Circuits
Circuits
Circuits
Circuits
Circuits
Circuits
Circuits

Upang makontrol ang welga ng pinto, ginamit ko ang relay na nakita ko sa percolator ng kape. Ang relay na ito ay nangangailangan ng higit sa 5V TTL upang himukin ito, kaya ginamit ang sn754410 upang isalin ang TTL sa 19V, na nagtulak sa relay. Ang sn754410 ay talagang isang quad na kalahating H driver, kaya nagsasayang ako ng 3/4 ng maliit na tilad, ngunit wala akong anumang mga power transistor, kaya iyon ang ginamit ko.

Ang sn754410 chip ay may dalawang mga pin ng VCC, isa para sa 5V, ang isa pa para sa kung anong boltahe na nais mong lumabas, na 19V para sa akin. Ito ay isang cool na maliit na maliit na tilad. Maaari mo itong gamitin upang magmaneho ng mga motor at direktang relay, dahil maaari itong lumipat ng 1A bawat isang maliit na tilad na chip at may built-in na mga diode ng proteksyon. Tingnan ang datasheet. Sa aking circuit, nakakonekta ko ang sn754410 nang direkta sa pin ng aking Teensy. Ang mga pindutan ay konektado bilang aktibo-mababa, na kung saan ay napaka-karaniwan para sa microcontrollers. Direkta silang nakakonekta sa Teensy, na nangangahulugang kailangan kong gawin ang pag-debit sa software. Ang ilaw ng katayuan ay konektado sa Teensy sa pamamagitan ng isang 1K ohm risistor; normal lang, walang espesyal. Ang circuit ay nagtrabaho nang walang mga capacitor, ngunit inilalagay ko rin sila kung sakali. Mayroong mga takip ng proteksyon sa parehong 19V at 5V na riles ng kuryente sa lupa. Habang pinaprograma ang Teensy, 5V ay nagmula sa USB, ngunit kapag ito ay tumatakbo nang mag-isa, ang lakas ay nagmumula sa laptop power brick. Nang konektado ko ang 7805 regulator nang direkta sa 19V, Talagang mainit ito, kaya't inilagay ko sa isang network ng mga resistors upang limitahan ang input boltahe at kasalukuyang sa regulator. Ito ay isang kludge, ngunit ngayon ang lahat ay nasa isang pinamamahalaan na temperatura.

Hakbang 4: Mag-kable Ito Nang Magkasama

Magkakasabay Ito sa Kable
Magkakasabay Ito sa Kable
Magkakasabay Ito sa Kable
Magkakasabay Ito sa Kable

Ang Teensy ay walang problema. May mga pin ito, upang mai-plug mo ito nang direkta sa breadboard.

Napagpasyahan kong i-color-code ang mga wire sa welga ng pinto na may pula (+) at itim (-) mga cable ng saging mula sa nabasag na kahon ng bahagi ng lab. Mayroong ilang mga plugs na tinadtad mula sa kanilang mga wire, kaya't tinanggal ko ang ilang plastik upang mailantad ang isang solder point. Gusto ko talaga kung paano mag-plug ang mga lab ng banana banana sa bawat isa. Gumamit ako ng cable ng telepono ng Apple upang ikonekta ang mga pindutan at light status sa labas ng silid sa Teensy sa loob. Dahil ang isang gilid ay nasira, tinadtad ko ang dulo na iyon at naghinang sa header ng apat na pin, tinatakan ito ng mainit na pandikit. Maayos itong isinaksak sa aking breadboard. Ang panig na iniwan ko ang plug sa napunta sa modular jack na aking nai-salvage mula sa router. Ginamit ang lahat ng apat na mga wire (GND, ilaw ng katayuan, pindutan ng pagsisimula / paghinto, pindutan ng code). Kung sakaling hindi mo napansin, gusto ko ang mga plugs at konektor. Nakakonekta ang power brick sa power jack na isininalin ko mula sa router. Ang pag-thread ng mga wire sa pamamagitan ng mga tubo sa dingding ay hindi masyadong mahirap, dahil sa may kakayahang umangkop na bagay. Na-save talaga ang araw ko.

Hakbang 5: Code

Code
Code
Code
Code

Sinubukan kong magkomento sa aking code. Tandaan na ito ay 1.0 software, nangangahulugang hindi ito walang bug. ## OPERATION ## 1. Pindutin ang start / stop button upang senyasan na handa ka nang simulan ang pag-input ng code. Ang ilaw ng katayuan ay nagsisimulang mag-flash nang dahan-dahan. 2. Tapikin ang iyong code sa pindutan ng code. Ang ilaw ng katayuan ay magpapikit sa 120 BPM, kaya maaari mo itong magamit bilang iyong metronome kung nais mo. Gayunpaman, susukat ng programang cryptap ang haba ng pulso na may kaugnayan sa bawat proporsyonal, kaya maaari mo ring gamitin ang iyong sariling tempo. Siguraduhin lamang na ikaw ay sapat na tumpak! 3. Kapag tapos na ang pag-input ng code, pindutin muli ang start / stop button. Magpapasya ang programa kung papayagan ka. Dahil ang mga tao ay hindi masyadong tumpak na mga tagabantay ng oras (ang iyong tunay na hindi), itinakda ko ang tolerance ratio sa +/- 30%. Nangangahulugan iyon na ang haba ng beat ay maaaring maging hindi tumpak sa halagang iyon, at pumasa pa rin. Ito ay sapat na mabuti upang sabihin ang pagkakaiba sa pagitan ng medyo magkatulad na mga tunog. Mayroong isang maliit na halaga ng mahirap maabot na overlap sa pagitan ng doble at triple-length beats, ngunit ang code ay medyo mahirap pa ring basagin. Upang ma-unlock ang pinto, ang mga beats ay dapat na nasa tamang sukat sa bawat isa (+/- ang tolerance ratio), at ang bilang ng mga beats ay dapat na tama. Kung ang isang hindi wastong password ay ipinasok, ang programa ay naghihintay ng ilang segundo habang hindi pinapansin ang anumang input ng gumagamit. Mabilis din nitong mai-flash ang ilaw ng katayuan. Kung ipinasok ang tamang code, ang ilaw ng katayuan ay patuloy na magbubukas at ang pintuan ay mag-a-unlock sa loob ng 8 segundo. ## KONFIGURASYON NG USER ## Ang susi ay nakaimbak sa isang hanay na katulad nito: #tukoyin ang keylength 5 const int key = {2, 1, 3, 3, 3}; // "Maligayang kaarawan sa iyo" Inilalagay ng array ang dami ng oras na nangyari sa pagitan ng mga beats. Kaya't kung ang iyong password ay may ANIM na tala tulad ng "Maligayang kaarawan sa iyo", dapat mayroong LIMANG mga elemento sa pag-array. Kung ang iyong password ay talagang mahaba at mayroon kang higit sa 16 beats dito, (talagang mahirap, hindi ko ito inirerekumenda), dapat mong taasan ang bilang na tinukoy sa linyang ito: #define inputCodeLength 16 ## THE REST OF THE CODE # # Nag-usisa ako tungkol sa mga nakakagambala, kaya't ang aking mga pindutan ay nag-trigger ng mga nakakagambala. Upang gawing madaling gamitin ang mga nakakagambala na ito, sinuri ko ang aking mga nakakagambala na mga tagapamahala para sa ilang mga hintuturo sa pag-andar. Kung ang pointer ay hindi nakatakda sa NULL, ang pagpapaandar na itinuro nito ay tinawag. Ang mga ito ay itinakda sa iba't ibang mga pagpapaandar na "mode-setting" sa loob ng cryptap.c. Gumawa ako ng isang pagsisikap upang maiwasan ang mga overflow ng buffer sa pamamagitan ng pagtatakda ng isang maximum na bilang ng mga naka-input na pulso. Kung ang maximum na bilang ng mga pulso ay naka-input, agad na sinisimulan ng programa ang pagtatasa ng password at nagpasya kung i-unlock ang pinto. Inaasahan kong ang aking mga komento sa tulong ng code. ## BUGS ## Sinubukan kong alisin ang USB debugging code, ngunit hindi gagana ang code kung gagawin ko. Kaya, umalis ako sa usb_init () at sa iba't ibang mga pahayag na naka-print (). Masasalamin ko ito kung ang isang tao ay maaaring alisin ang mga ito at mayroon pa ring gawain sa programa. Mas mabuti pa kung maipaliwanag nila kung bakit hindi ito gumana para sa akin. Kaagad pagkatapos ma-program, ang Teensy kung minsan ay hindi tumatanggap ng pag-input ng code. Upang malutas ito, i-cycle ng kuryente ang circuit.

Inirerekumendang: