Mục lục:

Cryptap: Khóa cửa dựa trên nhịp điệu: 5 bước
Cryptap: Khóa cửa dựa trên nhịp điệu: 5 bước

Video: Cryptap: Khóa cửa dựa trên nhịp điệu: 5 bước

Video: Cryptap: Khóa cửa dựa trên nhịp điệu: 5 bước
Video: Hướng dẫn tập Ollie hiệu quả Tech Deck, Anhktay chính thức mở khóa trick Kickflip ToyStation 775 2024, Tháng bảy
Anonim
Cryptap: Khóa cửa dựa trên nhịp điệu
Cryptap: Khóa cửa dựa trên nhịp điệu
Cryptap: Khóa cửa dựa trên nhịp điệu
Cryptap: Khóa cửa dựa trên nhịp điệu
Cryptap: Khóa cửa dựa trên nhịp điệu
Cryptap: Khóa cửa dựa trên nhịp điệu

Lấy cảm hứng từ một số cơ chế mở khóa cửa mà tôi đã thấy trên hackaday.com, tôi quyết định tạo một cơ chế của riêng mình. Cái này có giao diện hai nút; một để bắt đầu và kết thúc việc gửi mật khẩu và một để thực sự nhấn theo nhịp đó là mật khẩu của bạn. Ngoài ra còn có đèn báo trạng thái. Tôi đã có thể chế tạo cái này thực sự rẻ bằng cách sử dụng các bộ phận mà tôi đã nhặt được trong vài tháng qua. Những thứ duy nhất tôi phải trả là bản thân bộ vi điều khiển, trị giá 21 đô la (https://www.pjrc.com/teensy/) và một số dây treo hình ảnh mà tôi đã có từ trước.

Thật thú vị khi chạm vào Chủ đề Chiến tranh giữa các vì sao hoặc thứ gì đó để vào phòng của tôi. Giờ đây, tôi không phải lo lắng về việc nhốt mình trong phòng nữa! Thêm vào đó, nó cảm thấy tốt và thú vị.

Bước 1: Các bộ phận và công cụ

Các bộ phận và công cụ
Các bộ phận và công cụ
Các bộ phận và công cụ
Các bộ phận và công cụ

Tôi chọn Teensy vì đây là bộ vi điều khiển đầu tiên của tôi và tôi chưa có lập trình viên. Teensy chỉ yêu cầu cáp A-miniB USB và phần mềm miễn phí để cài đặt, tương thích với Mac / Windows / Linux. Ngoài ra, việc tải tệp hex lên thực sự dễ dàng; chỉ cần biên dịch và nhấn nút trên Teensy.

Chi phí của dự án này đối với tôi là 21 đô la, cộng với dây treo tranh. Các bộ phận từ đường phố đến từ một máy pha màu cà phê (rơ le, đèn LED, tụ điện) và một bộ định tuyến (đèn LED, giắc cắm mô-đun, giắc cắm nguồn, tụ điện). Các mẫu miễn phí là bộ điều chỉnh 5 volt 7805, các nút và công tắc. Tôi cũng tìm thấy rất nhiều thứ trong hộp "các bộ phận bị hỏng" trong phòng thí nghiệm EE của mình: đầu nối chuối và cáp, dây, trình điều khiển sn754410, đầu cắm bốn chân và điện trở. Tôi có một bộ sạc máy tính xách tay bổ sung nằm xung quanh mà tôi sử dụng cho nguồn điện và một cáp modem Apple có tab bị hỏng. Phần cứng khác: một tấm tường. Mình đã sử dụng súng bắn keo nóng, mỏ hàn, giũa kim và máy khoan động lực, loại này khá chuẩn. Điều bất thường nhất mà tôi sử dụng là một công cụ gắp dài, linh hoạt.

Bước 2: Phần cứng có sẵn

Phần cứng tồn tại từ trước
Phần cứng tồn tại từ trước
Phần cứng tồn tại từ trước
Phần cứng tồn tại từ trước
Phần cứng tồn tại từ trước
Phần cứng tồn tại từ trước
Phần cứng tồn tại từ trước
Phần cứng tồn tại từ trước

Tôi rất may mắn vì đã có rất nhiều cài đặt. Phòng của tôi có thể sử dụng ADA, và đã có nhiều đường ống, hộp điện và cửa điện khác nhau đã được lắp đặt. Khi loại bỏ cú đánh cửa vì tò mò, tôi thấy rằng nó không được kết nối. Có một đường ống từ đòn đánh cửa tới một mảng tường trống bên trong phòng của tôi, và một đường ống khác từ đó đến một mảng tường trống bên ngoài.

Cảnh báo cửa nói rằng nó cần 24V @ 3A để hoạt động, nhưng tôi đã có thể sử dụng với nguồn điện 19V, 7,9A mà tôi có. Cú đánh cửa đã được phân cực, vì vậy hãy đảm bảo rằng bạn đã lắp đúng cực!

Bước 3: Mạch

Chu trình
Chu trình
Chu trình
Chu trình
Chu trình
Chu trình
Chu trình
Chu trình

Để kiểm soát tiếng đập cửa, tôi sử dụng rơ le tôi tìm thấy trong máy pha cà phê. Rơ le này cần hơn 5V TTL để điều khiển nó, vì vậy sn754410 được sử dụng để dịch TTL thành 19V, điều khiển rơle. Sn754410 thực sự là một trình điều khiển quad-half-H, vì vậy tôi đã lãng phí 3/4 con chip, nhưng tôi không có bất kỳ bóng bán dẫn điện nào, vì vậy đó là những gì tôi đã sử dụng.

Chip sn754410 có hai chân VCC, một chân cho 5V, chân kia cho điện áp bao giờ bạn muốn xuất ra, đối với tôi là 19V. Đó là một con chip thực sự tuyệt vời. Bạn có thể sử dụng điều này để điều khiển động cơ và rơle trực tiếp, vì nó có thể chuyển đổi 1A trên mỗi phần tư chip và có điốt bảo vệ tích hợp. Hãy nhìn vào biểu dữ liệu. Trong mạch của tôi, tôi đã kết nối trực tiếp sn754410 với chân đầu ra của Teensy. Các nút được kết nối dưới dạng hoạt động ở mức thấp, điều này rất phổ biến đối với bộ vi điều khiển. Chúng được kết nối trực tiếp với Teensy, có nghĩa là tôi phải gỡ lỗi trong phần mềm. Đèn trạng thái được kết nối với Teensy thông qua một điện trở 1K ohm; không có gì đặc biệt. Mạch hoạt động mà không cần tụ điện, nhưng dù sao tôi cũng đặt chúng vào để đề phòng. Có nắp bảo vệ trên cả đường dây nguồn 19V và 5V để nối đất. Trong khi lập trình Teensy, 5V đến từ USB, nhưng khi nó tự chạy, nguồn đến từ cục gạch nguồn của máy tính xách tay. Khi tôi kết nối trực tiếp bộ điều chỉnh 7805 với 19V, nó thực sự nóng, vì vậy tôi đã đặt một mạng điện trở để hạn chế điện áp đầu vào và dòng điện vào bộ điều chỉnh. Đây là một k bùn, nhưng bây giờ mọi thứ đang ở nhiệt độ có thể kiểm soát được.

Bước 4: Kết nối nó với nhau

Kết nối nó với nhau
Kết nối nó với nhau
Kết nối nó với nhau
Kết nối nó với nhau

Teensy không có vấn đề gì. Nó đi kèm với các chân cắm, vì vậy bạn có thể cắm trực tiếp vào breadboard.

Tôi quyết định đánh mã màu cho dây dẫn vào cửa bằng dây cáp màu đỏ (+) và màu đen (-) từ hộp các bộ phận bị hỏng của phòng thí nghiệm. Có một số phích cắm bị cắt khỏi dây của chúng, vì vậy tôi đã mài một ít nhựa để lộ ra một điểm hàn. Tôi thực sự thích cách các phích cắm chuối trong phòng thí nghiệm có thể cắm vào nhau. Tôi đã sử dụng cáp điện thoại của Apple để kết nối các nút và đèn trạng thái bên ngoài phòng với Teensy bên trong. Vì một bên bị hỏng, tôi đã cắt đầu đó và hàn vào đầu cắm bốn chân, dùng keo nóng dán chặt nó lại. Điều này đã cắm tuyệt vời vào breadboard của tôi. Mặt mà tôi vẫn để phích cắm đi vào giắc cắm mô-đun mà tôi đã tận dụng được từ bộ định tuyến. Tất cả bốn dây đã được sử dụng (GND, đèn trạng thái, nút khởi động / dừng, nút mã). Trong trường hợp bạn không nhận thấy, tôi thích phích cắm và kết nối. Viên gạch nguồn kết nối với giắc cắm nguồn mà tôi đã vuốt từ bộ định tuyến. Luồn dây điện qua các đường ống trên tường không quá khó, bởi vì cái móc linh hoạt. Điều đó thực sự đã cứu ngày của tôi.

Bước 5: Mã

Mã số
Mã số
Mã số
Mã số

Tôi đã cố gắng bình luận mã của mình. Hãy nhớ rằng đây là phần mềm 1.0, có nghĩa là nó không có lỗi. ## OPERATION ## 1. Nhấn nút start / stop để báo hiệu rằng bạn đã sẵn sàng bắt đầu nhập mã. Đèn trạng thái bắt đầu nhấp nháy chậm. 2. Nhấn vào mã của bạn trên nút mã. Đèn trạng thái sẽ nhấp nháy ở 120 BPM, vì vậy bạn có thể sử dụng đèn này làm máy đếm nhịp nếu muốn. Tuy nhiên, chương trình cryptap sẽ đo độ dài xung tương ứng với nhau theo tỷ lệ, vì vậy bạn cũng có thể sử dụng nhịp độ của riêng mình. Chỉ cần đảm bảo rằng bạn đủ chính xác! 3. Khi nhập mã xong, nhấn lại nút bắt đầu / dừng. Sau đó, chương trình sẽ quyết định có cho phép bạn vào hay không. Vì con người không phải là người giữ thời gian chính xác (thực sự thì không), tôi đặt tỷ lệ dung sai thành +/- 30%. Điều đó có nghĩa là độ dài nhịp có thể không chính xác bằng số lượng đó, và vẫn vượt qua tập hợp. Điều này đủ tốt để phân biệt giữa các giai điệu khá giống nhau. Có một số lượng nhỏ trùng lặp khó đạt được giữa các nhịp có độ dài gấp đôi và gấp ba, nhưng mã vẫn khá khó bị phá vỡ. Để mở khóa cửa, các nhịp đập phải đúng tỷ lệ với nhau (+/- tỷ lệ dung sai) và số nhịp phải chính xác. Nếu một mật khẩu không hợp lệ được nhập, chương trình sẽ đợi trong vài giây trong khi bỏ qua bất kỳ đầu vào nào của người dùng. Nó cũng sẽ nhấp nháy đèn trạng thái nhanh chóng. Nếu nhập đúng mã, đèn trạng thái sẽ sáng đều đặn và cửa sẽ mở khóa trong 8 giây. ## CẤU HÌNH NGƯỜI DÙNG ## Chìa khóa được lưu trữ trong một mảng như sau: #define keylength 5 const int key = {2, 1, 3, 3, 3}; // "Happy birthday to you" Mảng lưu trữ lượng thời gian xảy ra GIỮA các nhịp. Vì vậy, nếu mật khẩu của bạn có SIX ghi chú như "Chúc mừng sinh nhật bạn", thì phải có NĂM phần tử trong mảng. Nếu mật khẩu của bạn thực sự dài và bạn có hơn 16 nhịp trong đó, (thực sự khó, tôi không khuyên bạn nên làm như vậy), bạn phải tăng số được xác định trong dòng này: #define inputCodeLength 16 ## THE REST OF THE CODE # # Tôi tò mò về các ngắt, vì vậy tôi đã kích hoạt các nút của mình để ngắt. Để làm cho các ngắt này dễ sử dụng, tôi đã yêu cầu các trình xử lý ngắt của mình kiểm tra các con trỏ chức năng nhất định. Nếu con trỏ không được đặt thành NULL, hàm mà nó trỏ tới sẽ được gọi. Chúng được thiết lập với các chức năng "thiết lập chế độ" khác nhau bên trong cryptap.c. Tôi đã cố gắng tránh tràn bộ đệm bằng cách đặt số lượng xung đầu vào tối đa. Nếu số lượng xung tối đa được nhập vào, chương trình ngay lập tức bắt đầu phân tích mật khẩu và quyết định xem có mở khóa cửa hay không. Tôi hy vọng ý kiến của tôi trong mã giúp đỡ. ## BUGS ## Tôi đã cố xóa mã gỡ lỗi USB nhưng mã sẽ không hoạt động nếu tôi xóa. Vì vậy, tôi đã để lại trong usb_init () và các câu lệnh print () khác nhau. Tôi sẽ đánh giá cao nếu ai đó có thể xóa chúng và chương trình vẫn hoạt động. Thậm chí tốt hơn nếu họ có thể giải thích tại sao nó không hoạt động với tôi. Ngay sau khi được lập trình, Teensy đôi khi không chấp nhận việc nhập mã. Để giải quyết vấn đề này, chu trình nguồn của mạch.

Đề xuất: