Სარჩევი:

Arduino PS/2 USB ადაპტერი: 7 ნაბიჯი (სურათებით)
Arduino PS/2 USB ადაპტერი: 7 ნაბიჯი (სურათებით)

ვიდეო: Arduino PS/2 USB ადაპტერი: 7 ნაბიჯი (სურათებით)

ვიდეო: Arduino PS/2 USB ადაპტერი: 7 ნაბიჯი (სურათებით)
ვიდეო: [PS2] უფასო MC BOOT RUNNING GAMES Firmware Font Files უფასო სადისკუსიო თამაშები მყარი დისკიდან 2024, ნოემბერი
Anonim
Arduino PS/2 USB ადაპტერი
Arduino PS/2 USB ადაპტერი
Arduino PS/2 USB ადაპტერი
Arduino PS/2 USB ადაპტერი

ოდესმე გსურდათ თქვენი ძველი PS/2 კლავიატურის გამოყენება თქვენი ლეპტოპის ან ახალი დესკტოპის კომპიუტერთან ერთად და გაარკვიეთ, რომ მათ აღარ აქვთ PS/2 პორტები? შემდეგ კი იმის ნაცვლად, რომ იყიდოთ იაფი PS/2 USB ადაპტერი, როგორც ამას ჩვეულებრივი ადამიანი გააკეთებდა, სურდა გამოეყენებინა თქვენი Arduino როგორც PS/2 USB ადაპტერი. მაშინ სწორ ადგილას მოხვედი:)

სამართლიანი გაფრთხილება სანამ ჩვენ შევალთ მასში. როდესაც თქვენ იყენებთ თქვენს UNO/Mega- ს, როგორც USB-HID მოწყობილობას (არ შემოიფარგლება კლავიატურით, ის შეიძლება იყოს მაუსიც, ჯოისტიკიც და ა.შ.) თქვენ დროებით დაკარგავთ მის ფუნქციებს, როგორც არდუინოს. ამით მე ვგულისხმობ, რომ თქვენ არ შეგიძლიათ გამოიყენოთ სერიული კომუნიკაციები და არ შეგიძლიათ მისი გადაპროგრამება USB- ის საშუალებით. ეს იმიტომ ხდება, რომ ჩვენ ზედმეტად დავწერთ firmware- ს მის USB ინტერფეისის ჩიპზე (პატარა ბიჭი USB პორტთან ახლოს Atmega8U2 და 16U2 გადახედვიდან გამომდინარე). მაგრამ არ ინერვიულოთ, თქვენ ნამდვილად ვერ აგურით თქვენი UNO/Mega ამით ის ყოველთვის შექცევადია.

ასევე შემთხვევით, თუ თქვენ გაქვთ Arduino, რომელსაც უკვე აქვს USB-HID უნარი (Arduino Pro Micro ან Leonardo და ა.შ. გააკეთეთ google ძებნა), შეგიძლიათ დაივიწყოთ ეს ინსტრუქცია, რომელიც ოდესმე არსებობდა, პირდაპირ აქ გადაარჩინეთ თავი უბედურების სამყაროდან, ხუმრობ!

მარაგები

  • ტექნიკა

    • Arduino UNO ან მეგა
    • PS/2 კლავიატურა
    • სურვილისამებრ დამატებითი Arduino ან ნებისმიერი სახის USB პროგრამისტი (USBasp და სხვა) შეიძლება გამოგადგეს.
  • პროგრამული უზრუნველყოფა

    • Atmel FLIP
    • PS2Key მოწინავე ბიბლიოთეკა Arduino IDE– სთვის

ნაბიჯი 1: გაყვანილობა და დაყენება

გაყვანილობა და დაყენება
გაყვანილობა და დაყენება
გაყვანილობა და დაყენება
გაყვანილობა და დაყენება
გაყვანილობა და დაყენება
გაყვანილობა და დაყენება
გაყვანილობა და დაყენება
გაყვანილობა და დაყენება

სიტუაციიდან გამომდინარე, თქვენ შეგიძლიათ იპოვოთ ბრეაკოუტ დაფა ან გადაარჩინოთ ძველი პორტი დედაპლატიდან (ჩემი მეორე მცდელობა) ან თუ განსაკუთრებით განწყობილი ხართ, შეგიძლიათ მთლიანად მოაჭრათ მეწამული ჯეკი და გამოამჟღავნოთ 4 მავთული (ჩემი პირველი ცდა) და დააკავშირეთ ისინი გაეროსთან.

კლავიატურა _ არდუინო

+5V (VCC) _+5V

საფუძველი _ GND

საათი _ პინ 2 **

მონაცემები _ PIN3*

*თქვენ შეგიძლიათ შეცვალოთ DATA pin, როგორც გსურთ, მაგრამ გახსოვდეთ ესკიზის განახლება.

** საათი უნდა იყოს დაკავშირებული Arduino– ს შეწყვეტის პინთან, რომელიც შეიძლება იყოს მხოლოდ PIN 2 ან 3 (გახსოვდეთ ესკიზის განახლება) UNO– ში. დამატებითი ინფორმაციისთვის და დაფის სხვადასხვა კონფიგურაციისთვის შეგიძლიათ შეამოწმოთ PS2KeyAdvanced ბიბლიოთეკის მაგალითების კომენტარების განყოფილება.

ნაბიჯი 2: კლავიატურის ტესტირება

სანამ გემბანზე გადახვალთ, ჯერ დარწმუნდით, რომ ყველაფერი მუშაობს კლავიატურაზე და ბიბლიოთეკაზე.

აქ მე დავამატე SimpleTest.ino– ს შეცვლილი ვერსია PS2KeyAdvanced ბიბლიოთეკის მაგალითებიდან განახლებული საათის და მონაცემების ქინძისთავებით და ასევე წარმოდგენის „შექმნა“და „შესვენება“. აქ არის ახსნა გამომავალი.

  • ეს "გააკეთე" და "დაარღვიე" სკანკოდის სისტემა და "კოდი", რომელიც არის გასაღების დაჭერის ან გასაღების იზოლირებული (c & 0xFF) სკანკოდი, მნიშვნელოვან როლს თამაშობს PS/2 USB- ში კონვერტაციისას და გირჩევთ შეისწავლოთ დანარჩენი 2 მაგალითი, რომელიც მოყვება ბიბლიოთეკას უკეთესად გააზრების მიზნით, თუ გეგმავთ საბოლოო ესკიზის გაუმჯობესებას ან შეცვლას (სხვადასხვა განლაგების გასაღებების გადატვირთვას). ასევე ბიბლიოთეკიდან შეგიძლიათ მიიღოთ PS/2 სკანოდების სრული სია, გახსენით "PS2KeyAdvanced.h" ან "PS2KeyCode.h" ფაილები "\ Documents / Arduino / libraries / PS2KeyAdvanced / src \"
  • "სტატუსის ბიტი" ეხება მოდიფიკატორ კლავიშებს (Ctrl, Alt, Windows, Shift/Caps) და დაინახავთ, რომ ყოველი დამატებითი მოდიფიკატორის გასაღებით, ეს მნიშვნელობა იცვლება, ხოლო ნორმალური (არამოდიფიკატორი) გასაღების მთავარი "კოდი" უცვლელია. მაგრამ საბოლოო ესკიზში მე უგულებელყო ეს მეთოდი და განვახორციელე ეს მოდიფიკატორი კლავიშები, როგორც მარტივი გასაღებები (თქვენ ნახავთ, რომ ამ მოდიფიკატორ კლავიშებს ასევე გააჩნიათ "გააკეთონ" და "დაარღვიონ" სკანკოდი ნორმალური კლავიშებისგან დამოუკიდებლად, დაჭერილია თუ არა მრავალი ღილაკი.) რადგან ეს ამარტივებს საქმეს USB-HID პროტოკოლით.

ნაბიჯი 3: PS/2 USB კონვერტაციის გადახედვისას

სანამ Atmega8U2 ან 16U2 (UNO Rev3) განახლდება ჩვენი Arduino როგორც USB კლავიატურა, ჩვენ უნდა დავრწმუნდეთ, რომ ყველა კონვერტაციის მასალა სწორად მუშაობს და საბოლოო საბოლოო ესკიზი აიტვირთება, წინააღმდეგ შემთხვევაში ეს იქნება დიდი ტკივილი firmware ისევ და ისევ ორიგინალსა და USB- კლავიატურის ექვს ფაილებს შორის მხოლოდ ასე რომ თქვენ შეგიძლიათ ატვირთოთ სწორი ესკიზი. ეს განსაკუთრებით ეხება იმ შემთხვევაში, თუ თქვენ არ გყავთ გარე პროგრამისტი, როგორიცაა USBasp ან სხვა Arduino, რომელიც გამოიყენებთ როგორც პროვაიდერს. ასე რომ, აქ ჩვენ ავტვირთავთ საბოლოო ესკიზის "DEBUG" ვერსიას, რომლის წაკითხვაც შესაძლებელია ადამიანის მიერ (სერიული მონიტორის საშუალებით) საგნების შესამოწმებლად.

თქვენ მიერ ნაჩვენები გამომავალი ფორმატი იქნება ყველა გასაღების გამოშვებისას, 00 00 00 00 00 00 00 00

აქ არის ძირითადი ახსნა მოსალოდნელი გამომუშავებისთვის,

თითოეული ახალი მრავალჯერადი მოდიფიკატორის ღილაკზე უნდა მიიღოთ ახალი ხაზი განსხვავებული მნიშვნელობებით 'xx'. დაბოლოს, როდესაც თქვენ გაათავისუფლებთ ყველა მოდიფიკატორის ღილაკს, 'xx' უნდა იყოს 00

xx 00 00 00 00 00 00 00 00

თითოეული ახალი მრავალჯერადი ნორმალური გასაღების დაჭერისთვის (მაგალითად, ჩვენ დავაწკაპუნებთ როგორც ჰიპოთეტურ ღილაკს a, გასაღები b და გასაღები c მნიშვნელობებით 'xx', 'yy' და 'zz' ამ თანმიმდევრობით) თქვენ უნდა მიიღოთ უწყვეტი (არა სავალდებულო) ასეთი ახალი ხაზები,

00 00 xx yy zz 00 00 00

როდესაც თქვენ გასცემთ მხოლოდ ღილაკს b, გამომავალი უნდა შეიცვალოს,

00 00 xx 00 zz 00 00 00

და თუ დააჭერთ ახალ ღილაკს d მნიშვნელობით 'nn' გასაღების გათავისუფლების გარეშე a ან გასაღები b თქვენი გამომავალი უნდა შეიცვალოს,

00 00 xx nn zz 00 00 00

და ბოლოს დაუბრუნდი ამას, როდესაც ყველა გასაღები გათავისუფლდება,

00 00 00 00 00 00 00 00

და ბოლოს თუ დააჭერთ Caps Lock- ს, Num Lock- ს ან Scroll Lock- ს თქვენ უნდა მიიღოთ მსგავსი რამ ერთდროულად რამდენიმე ხაზით,

00 00 xx 00 00 00 00 00

00 00 00 00 00 00 00 00

00 00 00 00 00 00 00 00

თუ აქ ყველაფერი მოხდება, ოქრო შეგიძლიათ გააგრძელოთ!

ნაბიჯი 4: ტექნიკური ახსნა

ტექნიკური ახსნა
ტექნიკური ახსნა
ტექნიკური ახსნა
ტექნიკური ახსნა

თუ მოგწონთ, შეგიძლიათ გამოტოვოთ ეს ნაბიჯი. ეს მხოლოდ ახსნაა წინა შედეგებისათვის. თქვენ მიერ ნანახი გამომავალი 8 ბაიტიანი მასივი არის ფორმატირებული ზემოთ მოყვანილი ნახაზის მიხედვით. 1 თქვენ შეგიძლიათ გაიგოთ მეტი ამის შესახებ და ასევე იმის შესახებ, თუ როგორ იწერება მოდიფიკატორის ღილაკების სტატუსი ბაიტი ამ ვიკიდან USB-HID- ის შესახებ. ძირითადად რასაც ჩემი კოდი აკეთებს ყოველ ჯერზე ახალი გასაღების დაჭერისას (PS/2 პროტოკოლი აღნიშნავს ამას როგორც "გააკეთე") ის ციკლავს მასივის ბოლო 6 ბაიტს, რომელიც გამოიყენება ნორმალური გასაღებების დაჭერისას და შეავსებს პირველს ცარიელ ბაიტს პოულობს შესაბამისი 'HID სკანკოდით' (ნაჩვენებია როგორც ნახ.2 ასევე შეგიძლიათ იპოვოთ სრული სია თანდართული PDF- დან) მიღებული "PS/2 სკანკოდისთვის". და ბოლოს, როდესაც შესაბამისი გასაღები გამოვა (PS/2 პროტოკოლი აღნიშნავს ამას როგორც "შესვენება") კოდი შემოივლის ბაიტის მიმდინარე მასივში და გაწმენდს მხოლოდ შესაბამის ბაიტს.

თუ აქამდე მიჰყვებოდი და ასევე თუ წაიკითხავ ვიკის გვერდს დაინახავ რომ ამ მეთოდში არის პატარა პრობლემა, ჩვეულებრივ გასაღების გამოშვებისას, HID პროტოკოლში დარჩენილი ბაიტები ხელახლა განლაგდება ცარიელი ბაიტების მოსაშორებლად დარჩენილ არაცარიელ ბაიტებს შორის. მაგრამ რატომღაც მიუხედავად იმისა, თუ რამდენ ხანს ვცდილობდი, მე არ შემეძლო გამეგრძელებინა მუშაობა ისე, როგორც შემთხვევით გავწმინდე არასასურველი ბაიტები დაჭერილი კლავიშებისთვისაც. თუ შეგიძლია გააუმჯობესო ის რომ იმუშაოს, დატოვე კომენტარი. მიუხედავად იმისა, რომ დღის ბოლოს ეს პრობლემა არ იმოქმედებს კლავიატურის ფუნქციონირებაზე მანამ, სანამ Arduino კვლავ აღრიცხავს ყველა დაჭერილ ღილაკს მათი დაპრესილი ბრძანების მიუხედავად (რაც პრაქტიკულ გამოყენებაში არაფერს არ იმოქმედებს).

ნაბიჯი 5: საბოლოო ესკიზის ატვირთვა

ასე რომ, სანამ საბოლოოდ განაახლეთ Atmega8U2 ან 16U2 (UNO Rev3) firmware ჩვენი Arduino– ს USB კლავიატურის იდენტიფიცირების მიზნით, ჩვენ უნდა ავტვირთოთ Final Sketch. მას შემდეგ რაც ატვირთავთ ამას, თუ გადახვალთ სერიულ მონიტორზე დაინახავთ რომ ის ნაგავს ბეჭდავს ყოველ ახალ ღილაკზე დაჭერით ეს არის კარგი ნიშანი იმისა, რომ ყველაფერი მუშაობს ისე როგორც დაგეგმილი იყო და ჩვენ შეგვიძლია გავაგრძელოთ საბოლოო ნაბიჯი. YAY !!!

ნაბიჯი 6: განახლება Firmware

დაბოლოს, შეგიძლიათ განაახლოთ თქვენი Arduino– ს ფირმა, რათა დარეგისტრირდეთ როგორც USB კლავიატურა. ამისათვის მე არ ვაპირებ ჩავუღრმავდე ბევრ დეტალს, რადგან ეს გახდის ამ ინსტრუქციას ძალიან დიდხანს.

  1. მიჰყევით ამ სახელმძღვანელოს arduino.cc– დან „Atmega8U2 და 16U2 Uno– ზე ან Mega2560– ზე განახლების შესახებ DFU– ს გამოყენებით“, არამედ „Arduino-usbserial-uno.hex“-ის გამოყენების ნაცვლად გამოიყენეთ მიმაგრებული „Arduino-keyboard-0.3.hex“
  2. FLIP– ში დაიმახსოვრეთ, რომ შეარჩიოთ სამიზნე მოწყობილობა, როგორც Atmega8U2 ან 16U2, თქვენზეა დამოკიდებული Arduino და, საკომუნიკაციო საშუალების არჩევიდან შეარჩიეთ USB და ბოლოს ჩატვირთეთ გაშვების არჩევის წინ სწორი hex ფაილი.
  3. თუ დრაივერის შეცდომას წააწყდით, გადადით Windows მოწყობილობის მენეჯერში და შეარჩიეთ უცნობი დრაივერის ძებნა FLIP '\ Program Files (x86) Atmel \' ინსტალაციის დირექტორიაში.
  4. თუ შეცდომები შეგექმნათ firmware– ის განახლებისას FLIP– დან რამდენჯერმე, დახურეთ FLIP და გაუშვით „პარამეტრების გადატვირთვა“„Start menu / FLIP“- დან და შემდეგ გადატვირთეთ FLIP და გააკეთეთ კონფიგურაციის ნაბიჯები ხელახლა ცდის წინ, ეს ჩვეულებრივ ჩემთვის მუშაობს.
  5. თუ გსურთ Arduino– ს პირვანდელ მდგომარეობაში დაბრუნება, უბრალოდ მიჰყევით arduino.cc– ს ზემოთ მოცემულ სახელმძღვანელოს ამ ექვსკუთხა ფაილის გამოყენების გარეშე.

ნაბიჯი 7: ისიამოვნეთ ……

ისიამოვნეთ ……
ისიამოვნეთ ……

ახლა ისიამოვნეთ თქვენი ახლად გადაკეთებული PS/2 USB კლავიატურაზე…. პ.ს. ეს ინსტრუქცია სრულად დაიწერა გარე PS/2 კლავიატურადან, რომელიც დაკავშირებულია ჩემს ლეპტოპთან Arduino– ს საშუალებით:)

გირჩევთ: