Có thể xây dựng một thiết bị HID (như bàn phím) bằng cách sử dụng Arduino uno không?
đúng rồi Và có một hướng dẫn tuyệt vời về cách làm điều đó ở đây
Hiện tại, tôi có các đầu vào nút trên Arduino cho đầu ra trên dòng nối tiếp. Vì vậy, làm thế nào tôi có thể chuyển đổi phần sụn hiện tại của mình thành một thứ có thể hoạt động như bàn phím HID?
Như hướng dẫn cho bạn thấy, bạn cần chuyển đổi mã chương trình cơ sở để thay vì in các sự kiện, bạn thực sự kích hoạt các sự kiện. Những gì bạn cần làm là thêm vào mã của bạn:
void triggerKey(uint8_t mod, uint8_t chr) {
uint8_t buf[8] = {mod, chr, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
// press key
Serial.write(buf, 8);
// emulate key press delay
delay(10);
buf[1] = 0x00;
// release key
Serial.write(buf, 8);
}
Những gì bạn đang làm ở đây, được gửi từ các sự kiện vi điều khiển Arduino chính của bạn qua dòng nối tiếp đến vi điều khiển nhỏ hơn xử lý giao tiếp USB. Bộ vi điều khiển đó sẽ lấy các "bộ đệm" đó và chuyển chúng dưới dạng bàn phím USB HID nhấn qua USB.
Coi chừng ký tự khóa ( chr
trong mã ở đây), thực sự là một mã khóa được gửi qua USB được trình điều khiển USB HID của bạn giải thích, sau đó chuyển nó thành một ký tự thực bằng cách sử dụng bố cục hiện tại mà bạn đã thiết lập cho bàn phím.
Ký mod
tự này là một trong những phím bổ trợ bạn có trên bàn phím (shift, control, alt ...), 0x00
không phải là phím bổ trợ.
- Tôi sẽ viết một trình điều khiển thiết bị cửa sổ mới?
Không, bạn không cần! Với bản nâng cấp DFU, arduino của bạn sẽ được xem như một bàn phím USB bên cửa sổ.
- Tôi có thể tạo một lớp phần mềm có thể lấy dữ liệu nối tiếp của mình và để các cửa sổ đọc nó làm đầu vào HID không?
Bạn không cần phải làm điều đó, và đó thực sự là một ý tưởng rất tồi vì nhiều lý do:
- giải pháp của bạn sẽ không thể mang theo được và do đó bạn cần hack thứ gì đó cho mọi nền tảng bạn có thể sử dụng,
- giải pháp của bạn sẽ ngụ ý rất nhiều mã mới; mã càng viết nhiều, càng có nhiều lỗi trong hệ thống của bạn,
- giải pháp của bạn sẽ thực sự khó khăn, vì nó sẽ hoạt động như một trình điều khiển thiết bị (tức là vùng đất hạt nhân ) lấy đầu vào từ chương trình người dùng (tức là đất người dùng ) và có khả năng không hoạt động, là một địa ngục để gỡ lỗi và dễ xảy ra sự cố bảo mật. .. Nếu điều đó thậm chí có thể làm được!
Tôi đang sử dụng Uno, nhưng tôi sẽ xem những gì bạn đã đăng bởi vì lần trước chúng tôi đã xem xét bản cập nhật DFU nhưng chúng tôi hơi sợ những thứ bị gạch
Cuối cùng, bạn có mối quan tâm, trong một bình luận, về việc gạch arduino của bạn. Xin hãy tin tôi và tác giả của bài viết rằng bạn không thể gạch arduino của bạn làm flash firmware:
LƯU Ý: Không có cơ hội 'gạch' thiết bị bằng phương pháp này. Phần mềm khởi động Arduino có thể luôn được cập nhật bằng giao thức DFU!
Trong trường hợp có điều gì đó thực sự sai và bạn gặp phải lỗi bộ tải khởi động trong bộ điều khiển nhỏ (atmega8u2), bạn vẫn có thể khởi động lại bằng cách sử dụng một arduino hoặc
lập trình viên atmel bằng cách sử dụng 6 chân bên cạnh phích cắm USB.
Cuối cùng, hãy biết rằng cách duy nhất để tạo ra một AVR, do đó, một Arduino cũng vậy, là chơi với các cầu chì và đặt lại các cầu chì lập trình. Và thậm chí sau đó, bạn có thể sử dụng
HVSP để lưu thiết bị của mình, mặc dù việc lấy chip mới thường ít rắc rối hơn.