Mục lục:

Bộ điều hợp Arduino PS / 2 sang USB: 7 bước (có hình ảnh)
Bộ điều hợp Arduino PS / 2 sang USB: 7 bước (có hình ảnh)

Video: Bộ điều hợp Arduino PS / 2 sang USB: 7 bước (có hình ảnh)

Video: Bộ điều hợp Arduino PS / 2 sang USB: 7 bước (có hình ảnh)
Video: [Arduino 2] Giới thiệu phần cứng Arduino Uno R3 | Các chân chức năng cơ bản 2024, Tháng bảy
Anonim
Bộ điều hợp Arduino PS / 2 sang USB
Bộ điều hợp Arduino PS / 2 sang USB
Bộ điều hợp Arduino PS / 2 sang USB
Bộ điều hợp Arduino PS / 2 sang USB

Bạn đã bao giờ muốn sử dụng Bàn phím PS / 2 cũ của mình với máy tính xách tay hoặc PC để bàn mới và phát hiện ra rằng chúng không có cổng PS / 2 nữa không? Và sau đó thay vì đi mua một Bộ chuyển đổi PS / 2 sang USB giá rẻ như một người bình thường vẫn làm, họ muốn sử dụng Arduino của bạn như một Bộ chuyển đổi PS / 2 sang USB. Vậy bạn đã đến đúng chỗ:)

Cảnh báo công bằng trước khi chúng ta vào cuộc. Khi bạn đang sử dụng UNO / Mega của mình như một thiết bị USB-HID (Không giới hạn ở bàn phím, nó thậm chí có thể là chuột, cần điều khiển, v.v.), bạn sẽ tạm thời mất chức năng của nó như một Arduino. Điều đó có nghĩa là bạn không thể sử dụng giao tiếp Serial và bạn không thể lập trình lại nó qua USB. Điều này là do chúng tôi sẽ ghi quá nhiều phần sụn trên chip giao diện USB của nó (anh chàng nhỏ gần cổng USB Atmega8U2 và 16U2 tùy thuộc vào bản sửa đổi). Nhưng đừng lo lắng, bạn không thể thực sự gạch UNO / Mega của mình bằng cách làm điều này, nó luôn có thể đảo ngược.

Ngoài ra, nếu bạn có Arduino đã có khả năng USB-HID (Arduino Pro Micro hoặc Leonardo, v.v. thực hiện tìm kiếm trên google), bạn có thể quên chỉ dẫn này đã từng tồn tại, hãy truy cập trực tiếp vào đây để tự cứu mình khỏi thế giới rắc rối, chỉ đùa!

Quân nhu

  • Phần cứng

    • Arduino UNO hoặc Mega
    • Bàn phím PS / 2
    • Tùy chọn một Arduino bổ sung hoặc Bất kỳ loại trình lập trình USB nào (USBasp, v.v.) có thể hữu ích.
  • Phần mềm

    • Atmel FLIP
    • PS2Key Thư viện nâng cao cho Arduino IDE

Bước 1: Đấu dây và thiết lập

Đấu dây và thiết lập
Đấu dây và thiết lập
Đấu dây và thiết lập
Đấu dây và thiết lập
Đấu dây và thiết lập
Đấu dây và thiết lập
Đấu dây và thiết lập
Đấu dây và thiết lập

Tùy thuộc vào tình huống, bạn có thể tìm một bảng đột phá hoặc cứu một cổng cũ từ bo mạch chủ (lần thử thứ 2 của tôi) hoặc nếu bạn cảm thấy buồn bã đặc biệt, bạn thậm chí có thể cắt hoàn toàn giắc cắm màu tím và để lộ 4 dây (lần thử đầu tiên của tôi) và kết nối chúng với UNO.

Bàn phím_Arduino

+ 5V (VCC) _ + 5V

GROUND_GND

ĐỒNG HỒ _ SỐ 2 **

DỮ LIỆU _ PIN3 *

* Bạn có thể thay đổi chân DATA thành bất kỳ lúc nào bạn muốn nhưng hãy nhớ cập nhật bản phác thảo.

** CLOCK phải được kết nối với chân ngắt trên Arduino chỉ có thể là PIN 2 hoặc 3 (hãy nhớ cập nhật bản phác thảo) trên UNO. Để biết thêm thông tin và các cấu hình bo mạch khác nhau, bạn có thể kiểm tra phần bình luận của các ví dụ thư viện PS2KeyAdvanced.

Bước 2: Kiểm tra bàn phím

Trước khi bắt tay vào thực hành, trước tiên hãy đảm bảo rằng mọi thứ đang hoạt động trên bàn phím và thư viện.

Ở đây tôi đã đính kèm một phiên bản sửa đổi của SimpleTest.ino từ các ví dụ thư viện PS2KeyAdvanced với các chân dữ liệu và đồng hồ được cập nhật, đồng thời cũng có đại diện "tạo" và "phá vỡ". Đây là một số giải thích cho đầu ra.

  • Hệ thống mã quét "tạo" và "phá vỡ" này và "Mã" là mã quét (c & 0xFF) riêng biệt của phím bấm hoặc phím nhả phím đóng một phần quan trọng trong việc chuyển đổi PS / 2 sang USB và tôi khuyên bạn nên nghiên cứu 2 ví dụ khác đi kèm với thư viện để hiểu rõ hơn nếu bạn đang lên kế hoạch cải thiện hoặc thay đổi (ánh xạ lại các phím thành các bố cục khác nhau) bản phác thảo cuối cùng. Ngoài ra, bạn có thể nhận được danh sách đầy đủ các mã quét PS / 2 từ thư viện bằng cách mở các tệp 'PS2KeyAdvanced.h' hoặc 'PS2KeyCode.h' từ '\ Documents / Arduino / library / PS2KeyAdvanced / src \'
  • "Status Bits" đề cập đến các phím bổ trợ (Ctrl, Alt, Windows, Shift / Caps) và bạn sẽ thấy rằng với mỗi phím bổ trợ bổ sung, giá trị này sẽ thay đổi trong khi "Mã" chính của phím bình thường (không bổ sung) không thay đổi. Nhưng trong bản phác thảo cuối cùng, tôi đã bỏ qua phương pháp này và triển khai các phím bổ trợ này dưới dạng các lần nhấn phím đơn giản (Bạn sẽ thấy rằng các phím bổ trợ này cũng có mã quét "make" và "break" độc lập với các phím bình thường dù có nhấn nhiều phím hay không.) vì nó giúp mọi thứ dễ dàng hơn với giao thức USB-HID.

Bước 3: Xem trước chuyển đổi PS / 2 sang USB

Trước khi cập nhật Atmega8U2 hoặc 16U2 (UNO Rev3) để xác định Arduino của chúng tôi là bàn phím USB, chúng tôi nên đảm bảo rằng tất cả các nội dung chuyển đổi đang hoạt động chính xác và bản phác thảo cuối cùng được tải lên hoặc nếu không sẽ rất khó khăn nếu tiếp tục ghi quá chương trình cơ sở lặp đi lặp lại giữa tệp hex gốc và bàn phím USB để bạn có thể tải lên bản phác thảo chính xác. Điều này đặc biệt đúng nếu bạn không có bất kỳ lập trình viên bên ngoài nào như USBasp hoặc Arduino khác để sử dụng làm ISP. Vì vậy, ở đây chúng tôi sẽ tải lên phiên bản 'GỠ LỖI' của bản phác thảo cuối cùng với đầu ra có thể đọc được của con người (thông qua màn hình nối tiếp) để kiểm tra mọi thứ.

Đầu ra bạn thấy sẽ được định dạng như thế này khi mọi khóa được phát hành, 00 00 00 00 00 00 00 00

Đây là lời giải thích cơ bản cho đầu ra dự kiến,

Đối với mỗi lần nhấn phím bổ trợ mới, bạn sẽ nhận được một dòng mới với các giá trị khác nhau cho 'xx'. Cuối cùng khi bạn nhả tất cả các phím bổ trợ 'xx' sẽ trở thành 00

xx 00 00 00 00 00 00 00

Đối với mỗi lần nhấn phím bình thường mới (ví dụ: chúng tôi sẽ nhấn cả phím giả định a, phím b và phím c với các giá trị 'xx', 'yy' và 'zz' theo thứ tự đó), bạn sẽ nhận được liên tục (không bắt buộc) những dòng mới như thế này,

00 00 xx yy zz 00 00 00

khi bạn chỉ nhả phím b, đầu ra sẽ thay đổi thành,

00 00 xx 00 zz 00 00 00

và nếu bạn nhấn phím d mới với giá trị 'nn' mà không nhả phím a hoặc phím b, đầu ra của bạn sẽ thay đổi thành,

00 00 xx nn zz 00 00 00

và cuối cùng trở lại điều này khi mọi khóa được phát hành,

00 00 00 00 00 00 00 00

và cuối cùng nếu bạn nhấn Caps Lock, Num Lock hoặc Scroll Lock, bạn sẽ nhận được một thứ như thế này với nhiều dòng cùng một lúc,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

Nếu mọi thứ ở đây xảy ra, bạn là vàng để tiếp tục!

Bước 4: Giải thích kỹ thuật

Giải thích kỹ thuật
Giải thích kỹ thuật
Giải thích kỹ thuật
Giải thích kỹ thuật

Nếu thích bạn có thể bỏ qua bước này. Đây chỉ là một lời giải thích cho các kết quả đầu ra trước đó. Mảng 8 byte đầu ra mà bạn thấy được định dạng theo hình trên. Bạn có thể tìm hiểu thêm về điều này và cũng như cách byte trạng thái khóa bổ trợ được viết từ wiki về USB-HID này. Về cơ bản, những gì mã của tôi làm là mỗi khi một phím mới được nhấn (giao thức PS / 2 gọi đây là 'tạo') nó quay vòng qua 6 byte cuối cùng của mảng được sử dụng cho các lần nhấn phím thông thường và điền vào đầu tiên byte trống mà nó tìm thấy với 'mã quét HID' có liên quan (Được hiển thị như trong hình 2. Ngoài ra, bạn có thể tìm thấy danh sách đầy đủ từ tệp PDF đính kèm) cho 'mã quét PS / 2' đã nhận. Và cuối cùng khi khóa có liên quan được phát hành (giao thức PS / 2 gọi đây là 'break'), mã sẽ quay vòng qua mảng byte hiện tại và chỉ xóa byte liên quan.

Nếu bạn đã theo dõi đến đây và nếu bạn đọc trang wiki, bạn sẽ thấy rằng có một vấn đề nhỏ trong phương pháp này, thông thường khi khóa được phát hành, trong giao thức HID, các byte còn lại sẽ được sắp xếp lại để loại bỏ các byte trống. giữa các byte không trống còn lại. Nhưng vì một số lý do, bất kể tôi đã thử bao nhiêu cách, tôi vẫn không thể làm cho nó hoạt động như dự định mà không vô tình xóa các byte không mong muốn cho các phím được nhấn. Nếu bạn có thể cải thiện điều này để làm cho nó hoạt động, vui lòng để lại nhận xét. Mặc dù vào cuối ngày, vấn đề này không ảnh hưởng đến chức năng của bàn phím miễn là Arduino vẫn ghi lại mọi phím được nhấn bất kể thứ tự được nhấn của chúng (Điều này không ảnh hưởng gì đến việc sử dụng thực tế).

Bước 5: Tải lên bản phác thảo cuối cùng

Vì vậy, cuối cùng trước khi bạn cập nhật phần sụn của Atmega8U2 hoặc 16U2 (UNO Rev3) để xác định Arduino của chúng tôi như một bàn phím USB, chúng tôi phải tải lên Bản phác thảo cuối cùng. Sau khi bạn tải lên, nếu bạn truy cập vào màn hình nối tiếp, bạn sẽ thấy nó in rác với mỗi phím mới được nhấn, đây là một điềm báo tốt rằng mọi thứ đang hoạt động như dự định và chúng ta có thể tiến hành bước cuối cùng. ĐƯỢC !!!

Bước 6: Cập nhật chương trình cơ sở

Cuối cùng, bạn có thể cập nhật phần sụn của Arduino để đăng ký nó làm bàn phím USB. Đối với điều này, tôi sẽ không đi vào chi tiết nhiều vì nó sẽ làm cho việc hướng dẫn này quá dài.

  1. Làm theo hướng dẫn này từ arduino.cc về 'Cập nhật Atmega8U2 và 16U2 trên Uno hoặc Mega2560 bằng DFU' nhưng thay vì sử dụng 'Arduino-usbserial-una.hex', hãy sử dụng 'Arduino-keyboard-0.3.hex' được đính kèm
  2. Trong FLIP nhớ chọn thiết bị đích là Atmega8U2 hoặc 16U2 tùy bạn Arduino, từ chọn phương tiện giao tiếp chọn USB và cuối cùng là Tải đúng tệp hex trước khi chọn chạy.
  3. Nếu bạn gặp phải lỗi trình điều khiển, hãy truy cập trình quản lý thiết bị windows và chọn tìm kiếm trình điều khiển không xác định bên trong thư mục cài đặt của FLIP '\ Program Files (x86) Atmel \'
  4. Nếu bạn gặp lỗi khi cập nhật chương trình cơ sở từ FLIP nhiều lần, hãy đóng FLIP và chạy 'Đặt lại tùy chọn' từ 'menu Bắt đầu / FLIP \', sau đó khởi động lại FLIP và thực hiện các bước cấu hình trước khi thử lại, điều này thường phù hợp với tôi.
  5. Nếu bạn muốn khôi phục Arduino về trạng thái ban đầu của nó, chỉ cần làm theo hướng dẫn trên arduino.cc về ký tự mà không cần sử dụng tệp hex này.

Bước 7: Thưởng thức ……

Thưởng thức……
Thưởng thức……

Bây giờ hãy tận hưởng bàn phím PS / 2 sang USB mới được chuyển đổi của bạn…. P. S. Có thể hướng dẫn này được viết hoàn toàn từ bàn phím PS / 2 bên ngoài được kết nối với máy tính xách tay của tôi thông qua Arduino:)

Đề xuất: