İçindekiler:

Cryptap: Ritim Tabanlı Kapı Kilidi: 5 Adım
Cryptap: Ritim Tabanlı Kapı Kilidi: 5 Adım

Video: Cryptap: Ritim Tabanlı Kapı Kilidi: 5 Adım

Video: Cryptap: Ritim Tabanlı Kapı Kilidi: 5 Adım
Video: Очередной рейс (1958) фильм 2024, Temmuz
Anonim
Cryptap: Ritim Tabanlı Kapı Kilidi
Cryptap: Ritim Tabanlı Kapı Kilidi
Cryptap: Ritim Tabanlı Kapı Kilidi
Cryptap: Ritim Tabanlı Kapı Kilidi
Cryptap: Ritim Tabanlı Kapı Kilidi
Cryptap: Ritim Tabanlı Kapı Kilidi

Hackaday.com'da gördüğüm birkaç kapı açma mekanizmasından ilham alarak kendi başıma bir tane yaratmaya karar verdim. Bunun iki düğmeli bir arayüzü var; biri parola gönderimini başlatmak ve bitirmek için, diğeri ise parolanız olan ritme gerçekten dokunmak için. Durum ışığı da var. Bunu son birkaç ayda çöpe attığım parçaları kullanarak gerçekten ucuza inşa edebildim. Parasını ödemek zorunda olduğum tek şey, 21 $ (https://www.pjrc.com/teensy/) olan mikrodenetleyicinin kendisi ve daha önce sahip olduğum bazı resim asılı tellerdi.

Odama girmek için Yıldız Savaşları Temasına veya başka bir şeye dokunmak çok eğlenceli. Şimdi, kendimi tekrar odama kilitleme konusunda endişelenmeme gerek yok! Ayrıca, iyi ve geeky hissettiriyor.

Adım 1: Parçalar ve Araçlar

Parçalar ve Araçlar
Parçalar ve Araçlar
Parçalar ve Araçlar
Parçalar ve Araçlar

Teensy'yi seçtim çünkü bu benim ilk mikrodenetleyicim ve henüz bir programlayıcım yok. Teensy, yalnızca Mac/Windows/Linux ile uyumlu bir A-miniB USB kablosu ve yüklemek için ücretsiz bir yazılım gerektirir. Ayrıca, hex dosyasını yüklemek gerçekten çok kolay; sadece derleyin ve Teensy'deki düğmeye basın.

Bu projenin bana maliyeti 21 dolar artı resim asma teliydi. Sokaktan parçalar bir kahve süzücüsünden (röle, LED, kapasitör) ve bir yönlendiriciden (LED, modüler jak, güç girişi, kapasitörler) geldi. Ücretsiz örnekler 7805 5 voltluk regülatör, düğmeler ve anahtardı. Ayrıca EE laboratuvarımdaki "kırık parçalar" kutusunda pek çok şey buldum: muz konektörleri ve kablo, tel, sn754410 sürücüsü, dört pimli başlık ve dirençler. Güç için kullandığım fazladan bir dizüstü bilgisayar şarj cihazım ve tırnağı kırılmış bir Apple modem kablosu vardı. Diğer donanım: bir duvar plakası. Oldukça standart olan bir sıcak tutkal tabancası, bir havya, bir iğne dosyası ve bir elektrikli matkap kullandım. Kullandığım en sıra dışı şey uzun, esnek bir kapma aracıydı.

2. Adım: Önceden Var Olan Donanım

Önceden Var Olan Donanım
Önceden Var Olan Donanım
Önceden Var Olan Donanım
Önceden Var Olan Donanım
Önceden Var Olan Donanım
Önceden Var Olan Donanım
Önceden Var Olan Donanım
Önceden Var Olan Donanım

Zaten çok fazla yüklü olduğu için çok şanslıydım. Odama ADA tarafından erişilebilir ve çeşitli borular, elektrik kutuları ve önceden kurulmuş bir elektrikli kapı kilidi vardı. Kapı kilidini meraktan çıkardığımda, bağlı olmadığını gördüm. Odamın içindeki boş bir duvar plakasına kapı vuruşundan bir boru ve oradan da dışarıdaki boş bir duvar plakasına bir boru daha vardı.

Kapı çarpması, çalışması için 24V@3A'ya ihtiyacı olduğunu söylüyor, ancak sahip olduğum 19V, 7.9A güç kaynağıyla idare edebildim. Kapı vuruşu polarizeydi, bu yüzden polaritenin doğru olduğundan emin olun!

Adım 3: Devreler

devreler
devreler
devreler
devreler
devreler
devreler
devreler
devreler

Kapı vuruşunu kontrol etmek için kahve süzücüde bulduğum röleyi kullandım. Bu röleyi sürmek için 5V'den fazla TTL'ye ihtiyaç vardı, bu nedenle sn754410, TTL'yi röleyi süren 19V'a çevirmek için kullanıldı. sn754410 gerçekten dörtlü yarım H sürücüsüdür, bu yüzden çipin 3/4'ünü boşa harcıyordum, ancak herhangi bir güç transistörüm yoktu, bu yüzden kullandım.

sn754410 yongasında iki VCC pini var, biri 5V için, diğeri ise çıkmak istediğiniz voltaj için, ki bu benim için 19V idi. Gerçekten harika bir çip. Bunu motorları ve röleleri doğrudan sürmek için kullanabilirsiniz, çünkü çeyrek çip başına 1A anahtarlayabilir ve yerleşik koruma diyotlarına sahiptir. Veri sayfasına bir göz atın. Devremde sn754410'u doğrudan Teensy'nin çıkış pinine bağladım. Düğmeler, mikrodenetleyiciler için çok yaygın olan aktif-düşük olarak bağlanır. Doğrudan Teensy'ye bağlılar, bu da yazılımda geri dönmeyi yapmam gerektiği anlamına geliyor. Durum ışığı, 1K ohm'luk bir direnç aracılığıyla Teensy'ye bağlanır; Özel birşey yok. Devre kapasitörler olmadan çalıştı, ama yine de her ihtimale karşı onları koydum. Hem 19V hem de 5V güç raylarında topraklama için koruma kapakları vardır. Teensy'yi programlarken USB'den 5V geldi, ancak kendi kendine çalışırken, güç dizüstü bilgisayarın güç tuğlasından geliyor. 7805 regülatörünü doğrudan 19V'a bağladığımda, GERÇEKTEN ısındı, bu yüzden regülatöre giriş voltajını ve akımını sınırlamak için bir direnç ağı koydum. Bu bir çamurdu, ama şimdi her şey yönetilebilir bir sıcaklıkta.

Adım 4: Birlikte Kablolama

Birlikte Kablolama
Birlikte Kablolama
Birlikte Kablolama
Birlikte Kablolama

Teensy sorun değildi. Pinlerle birlikte gelir, böylece doğrudan devre tahtasına takabilirsiniz.

Kapı kasasına giden kabloları laboratuvarın kırık parça kutusundan kırmızı (+) ve siyah (-) muz kablolarıyla renk kodlamaya karar verdim. Tellerinden kopmuş bazı fişler vardı, bu yüzden bir lehim noktasını ortaya çıkarmak için biraz plastik parçaladım. Laboratuar muz fişlerinin birbirine nasıl takılabileceğini gerçekten seviyorum. Odanın dışındaki düğmeleri ve durum ışığını içerideki Teensy'ye bağlamak için Apple'ın telefon kablosunu kullandım. Bir taraf kırıldığı için o ucu kestim ve dört pimli başlıkta lehimledim, sıcak tutkalla kapattım. Bu, breadboard'uma güzelce takıldı. Fişi açık bıraktığım taraf, yönlendiriciden kurtardığım modüler jaka girdi. Dört kablonun tamamı kullanıldı (GND, durum ışığı, başlat/durdur düğmesi, kod düğmesi). Fark etmediyseniz, fişleri ve konektörleri severim. Yönlendiriciden kaydırdığım güç jakına bağlı güç tuğlası. Kabloları duvar borularından geçirmek, esnek kavrayıcı şey yüzünden çok zor değildi. Bu gerçekten günümü kurtardı.

Adım 5: Kod

kod
kod
kod
kod

Kodumu yorumlamaya çalıştım. Bunun 1.0 yazılım olduğunu, yani hatasız olmadığını unutmayın.## İŞLEM ## 1. Kod girişine başlamaya hazır olduğunuzu belirtmek için başlat/durdur düğmesine basın. Durum ışığı yavaşça yanıp sönmeye başlar. 2. Kodunuzdaki kod düğmesine dokunun. Durum ışığı 120 BPM'de yanıp sönecektir, böylece isterseniz bunu metronomunuz olarak kullanabilirsiniz. Ancak, cryptap programı orantılı olarak darbe uzunluklarını ölçer, böylece kendi temponuzu da kullanabilirsiniz. Yeterince doğru olduğundan emin ol! 3. Kod girişi bittiğinde tekrar başlat/durdur düğmesine basın. Daha sonra program sizi içeri alıp almayacağına karar verecek. İnsanlar çok hassas zaman tutucular olmadığından (sizinki gerçekten öyle değil), tolerans oranını +/- %30 olarak ayarladım. Bu, vuruş uzunluklarının bu miktarda yanlış olabileceği ve yine de toplamayı geçebileceği anlamına gelir. Bu, oldukça benzer melodiler arasındaki farkı söylemek için yeterince iyi. İkili ve üçlü uzunluktaki vuruşlar arasında ulaşılması zor küçük bir örtüşme var, ancak kodun kırılması hala oldukça zor. Kapının kilidini açmak için vuruşların birbiriyle doğru orantıda olması (+/- tolerans oranı) ve vuruş sayısının doğru olması gerekir. Geçersiz bir parola girilirse, program herhangi bir kullanıcı girişini yok sayarak birkaç saniye bekler. Ayrıca durum ışığını hızlı bir şekilde yanıp sönecektir. Doğru kod girilirse durum ışığı sabit bir şekilde yanar ve 8 saniye boyunca kapı kilidi açılır.## KULLANICI KONFİGÜRASYONU ## Anahtar aşağıdaki gibi bir dizide saklanır: #define keylength 5 const int key = { 2, 1, 3, 3, 3 }; // "Mutlu yıllar sana" Dizi, vuruşlar ARASINDA geçen süreyi saklar. Bu nedenle, şifrenizde "Mutlu yıllar" gibi ALTI not varsa, dizide BEŞ öğe olmalıdır. Parolanız gerçekten uzunsa ve içinde 16 vuruştan fazla varsa (gerçekten zor, tavsiye etmiyorum), bu satırda tanımlanan sayıyı artırmalısınız: #define inputCodeLength 16## KODUN RESMİ # # Kesintileri merak ediyordum, bu yüzden düğmelerimin kesintileri tetiklemesini sağladım. Bu kesmelerin kullanımını kolaylaştırmak için, kesme işleyicilerime belirli işlev işaretçilerini kontrol ettirdim. İşaretçi NULL olarak ayarlanmazsa, işaret ettiği işlev çağrılır. Bunlar, cryptap.c içindeki çeşitli "mod ayarı" işlevleriyle ayarlanır. Maksimum sayıda girilen darbe ayarlayarak arabellek taşmasını önlemek için çaba gösterdim. Maksimum darbe sayısı girilirse, program hemen şifre analizine başlar ve kapının kilidini açıp açmamaya karar verir. Umarım koddaki yorumlarım yardımcı olur. ## HATALAR ## USB hata ayıklama kodunu kaldırmayı denedim, ancak yaparsam kod çalışmayacak. Bu yüzden usb_init() ve çeşitli print() deyimlerini bıraktım. Birisi onları kaldırabilir ve hala programı çalıştırabilirse minnettar olurum. Benim için neden işe yaramadığını açıklayabilirlerse daha da iyi. Programlandıktan hemen sonra Teensy bazen kod girişini kabul etmez. Bunu çözmek için devreyi kapatıp açın.

Önerilen: