คอมพิวเตอร์ Windows อินเทอร์เน็ต

แผนผังตัวเชื่อมต่อแป้นพิมพ์พีซี ps 2 รหัสแหล่งที่มาของเฟิร์มแวร์

วันอังคารที่ 04 กุมภาพันธ์ 2014 เวลา 11:33 น. + ในใบเสนอราคา

ดังนั้นเมาส์ PS / 2 จึงล้มเหลว ข้อบกพร่องอาจแตกต่างกัน ตัวอย่างเช่น เมาส์เริ่มให้การคลิกสองครั้งด้วยการกดแป้นเพียงครั้งเดียว เหตุใดฉันจึงให้ข้อบกพร่องนี้เป็นตัวอย่าง เพราะในกรณีนี้เป็นการยากที่จะตำหนิปุ่มทำงานผิดปกติ และคุณไม่สามารถพกพาเมาส์ดังกล่าวไปที่เวิร์กช็อป เนื่องจากการซ่อมเมาส์จะมีค่าใช้จ่ายอย่างน้อยสองเท่าของการซื้ออันใหม่ แล้วคุณจะทิ้งเมาส์ไปเพื่ออะไร? ไม่จำเป็นหากคุณมีทักษะการซ่อมแซมบางอย่าง (เช่น ความสามารถในการบัดกรีอ่อนๆ) หรือถ้าคุณมีเพื่อนที่มีทักษะเหล่านี้และไม่สนใจคุณ 10 นาที

การเดินสายไฟขั้วต่อเมาส์ PS / 2

พี / พี เลขที่

สัญญาณ

1 ข้อมูล
2 ไม่เกี่ยวข้อง
3 พื้น
4 + 5V
5 นาฬิกา
6 ไม่เกี่ยวข้อง

ซ่อมเมาส์คอมพิวเตอร์ PS / 2

สาเหตุหลักของข้อบกพร่องทั้งหมดที่พบในเมาส์คือการเสื่อมสภาพของการนำลวด ข้อบกพร่องนั้นคำนวณได้ง่ายมากโดยใช้โอห์มมิเตอร์ บนตัวนำที่ใช้งานได้ของเส้นลวดโอห์มมิเตอร์จะแสดง 1-10 โอห์มและหากตัวนำมีข้อบกพร่องตั้งแต่ 150 โอห์มขึ้นไป

ตอนนี้จะซ่อมยังไง. ตัวเชื่อมต่อ PS / 2 นั้นไม่สามารถพับได้ แต่เมื่อปรากฏออกมา เราไม่จำเป็นต้องใช้มัน เมื่อมันปรากฏออกมา ความผิดปกติอยู่ในส่วนของสายไฟจากขั้วต่อภายในของเมาส์ไปยังทางออกของสายไฟจากเมาส์ (ด้วยเหตุผลบางอย่างผู้ผลิตทั้งหมดเพิ่งตัดสินใจว่าในที่นี้ควรมีการเปลี่ยนแปลงจากการเดินสายภายในเป็นการเดินสายภายนอก + อยู่ที่จุดที่ลวดออกจากเมาส์อยู่ แรงกดดันมหาศาลบนสาย) โดยทั่วไป เราจะกัดส่วนนี้ของเส้นลวด (คุณสามารถกัดขอบลวดจากด้านข้างของเมาส์ได้สองวิธี แล้วบัดกรีกลับเข้าไปในเมาส์ หรือกัดส่วนนั้นแล้วบัดกรีลวด ( ฉันชอบตัวเลือกที่สอง (ข้อต่อจะยังคงอยู่ภายในเมาส์))) เราทำความสะอาดและชุบสายเคเบิลของเส้นเลือดและฟื้นฟูความสมบูรณ์ของเส้นลวด (อีกอย่างทันทีที่กัดเราตรวจสอบความสมบูรณ์ของแกนลวด)

อุปกรณ์คอมพิวเตอร์ไม่หยุดนิ่ง มีการปรับปรุงอย่างต่อเนื่อง และเปลี่ยนบ่อยครั้ง คอมพิวเตอร์เครื่องเขียนแล็ปท็อปมา แล็ปท็อปยังต้องการเมาส์และจะทำอย่างไรกับเมาส์เก่าที่มีขั้วต่อแบบกลม และยิ่งไปกว่านั้น ถ้ามันใช้งานได้ดีและเหมาะกับมือของคุณในด้านสรีระศาสตร์ ... ทิ้งมันไปเถอะ

ไม่ เหตุใดจึงมีทางออก - จำเป็นต้องสร้างใหม่สำหรับขั้วต่อ USB

มี 2 ​​ตัวเลือก: คุณสามารถสร้างอะแดปเตอร์ หรือถอดสายเก่าบนเมาส์ออกแล้วเชื่อมต่อสายใหม่ - ด้วยปลั๊ก USB แผนภาพการเดินสายไฟอย่างที่คุณเห็นนั้นค่อนข้างง่าย - เพียง 4 สายเท่านั้น ก็เพียงพอที่จะนำสายเคเบิลเก่าที่มีปลั๊ก USB จากกล้องหรือ โทรศัพท์มือถือตัวอย่างเช่นหรือคุณสามารถซื้อสายเคเบิลดังกล่าวได้ที่ตลาดนัดและแทนที่ด้วยเมาส์

และจุดประสงค์ของสายไฟของขั้วต่อ USB ที่มีสีและตัวเลขเป็นแนวทางดังนี้

1.red - แหล่งจ่ายไฟ 5 โวลต์,
2. สีขาว (สีเทา) (D-) - ถ่ายโอนข้อมูลจากคอมพิวเตอร์ไปยังเมาส์
3.green - ถ่ายโอนข้อมูลจากเมาส์ไปยังคอมพิวเตอร์ (D +)
4.สีดำ-พื้น(ตัว)

ตามสีของสายไฟ คุณสามารถบัดกรีสายเคเบิลใหม่ได้อย่างรวดเร็ว แต่ฉันยังคงแนะนำคุณก่อนที่จะขายสายเคเบิลเก่า - โทรหาผู้ทดสอบและตรวจสอบอีกครั้งว่าสีของสายไฟตรงกับตัวเลขบนขั้วต่อ จากการปฏิบัติแสดงให้เห็นว่าปัจจัยมนุษย์ยังคงมีอยู่และมีข้อผิดพลาดเช่นกัน

คุณยังสามารถสร้างแป้นพิมพ์ใหม่โดยใช้ขั้วต่อ PS / 2 ทรงกลมสำหรับขั้วต่อ USB ได้ด้วยแผนภาพการเดินสายนี้ เหมือนกันทั้งหมด เชื่อมต่อสายไฟที่จำเป็นกับ ผู้ติดต่อที่ถูกต้อง... ฉันคิดว่าบทความนี้จะช่วยให้คุณกำจัด (ดัดแปลง) ที่ล้าสมัยได้อย่างมีประโยชน์ แต่ก็ยังค่อนข้างดีและใช้งานได้จากพีซีเครื่องเก่า

เมื่อเวลาผ่านไป คำถามก็เกิดขึ้น อย่างไร ป้อนข้อมูลลงในไมโครคอนโทรลเลอร์? ทางออกสุดคลาสสิกที่มาหาเรามากที่สุดคือ ใช้ปุ่ม... สลักบนกระดาน ติดตามและ แผ่นสัมผัสสำหรับ ปุ่มแล้วพวกเขา ประสานตัดสินใจยังไง ติดตามการกดปุ่ม - โดย รบกวนหรือผ่าน การสำรวจสถานะของปุ่มตามรอบ... ถ้าปุ่ม มากมาย, พวกเขา จะครอบครองจำนวนมาก หมุดไมโครคอนโทรลเลอร์ ทางเดินมีหนาม

ฉันขอแนะนำให้ใช้สิ่งที่เรามีอยู่ - ง่าย ๆ แป้นพิมพ์คอมพิวเตอร์ PS / 2... จากข้อดี:

  • สิ่ง ไม่แพง;
  • ขายใน ใด ๆร้านคอมพิวเตอร์
  • ที่เรามีให้ 101 คีย์
  • จะเอาคีย์บอร์ดทั้งหมด 2-pinไมโครคอนโทรลเลอร์สำหรับนาฬิกาและข้อมูล



ในฐานะไมโครคอนโทรลเลอร์ ฉันจะใช้ ATmega328Pหรือ Arduino UNO.

ทฤษฎีเล็กน้อย

ถ้าเปิดปลอกสายคีย์บอร์ดจะเจอ สายที่ 4:

  • ลวด โภชนาการ(5V)
  • ลวด ที่ดิน
  • ลวด ซิงค์สัญญาณ (ซีแอลเค)
  • ลวด ข้อมูล (ข้อมูล)

แต่ละ กุญแจบนแป้นพิมพ์มี ของฉัน 8 บิตรหัสเรียกว่า สแกนรหัสและเขียนในรูปแบบเลขฐานสิบหก (HEX) ดูด้านล่าง


เมื่อคุณคลิกที่ กุญแจ, บน SLKส่ง พัลส์สี่เหลี่ยมและโดย ข้อมูล รหัส 11 บิต:


คอมพิวเตอร์จะอ่านบิตข้อมูลในช่วงการเปลี่ยนภาพ CLKกับ ระดับสูง บน สั้น.

บิตแรกเท่ากันเสมอ 0 - นี่คือ เริ่มบิตติดตามโดย วันที่ 8นิดหน่อย สแกนรหัส, แล้ว พาริตี้บิตและในที่สุด หยุดบิตซึ่งเท่ากันเสมอ 1 .

วิธีเชื่อมต่อคีย์บอร์ด PS / 2 กับไมโครคอนโทรลเลอร์?

จริงๆแล้วท่าเรือ PS / 2 แป้นพิมพ์คอมพิวเตอร์นี่คือ ชนิดของขั้วต่อ Mini-DIN,ของเธอ 6 พิน ตัวเลือก.
ติดตั้งแป้นพิมพ์แล้ว ปลั๊ก min-din 6 ขา (ตัวผู้),เราเคยเห็นมันที่ปลายสายคีย์บอร์ด

รัง มินดิน 6 พิน (ตัวเมีย)ตั้งอยู่เมื่อ เมนบอร์ดในการเชื่อมต่อกับไมโครคอนโทรลเลอร์เราจะต้องประสานจากคีย์บอร์ดเก่าซึ่งไม่สะดวก

ฉันแนะนำให้คุณใช้ซ็อกเก็ตปกติ มินดิน 6 พินสำหรับสาย เช่น on ebay.ruเขายืน~ 1$ ... ดูเหมือนว่านี้:


(ประกอบซ้าย ถอดประกอบขวา)

เป็นตัวอย่าง ฉันจะเชื่อมต่อ แป้นพิมพ์ถึง Arduino UNO(คอนโทรลเลอร์ ATmega328P) เราต้องต่อสายไฟตาม pinout ต่อไปนี้

ไม่จำเป็นต้องใช้หัวแร้งบัดกรีสายไฟถูกขันด้วยคีมในที่หนีบโลหะดังนั้นฉันจึงได้อะแดปเตอร์ต่อไปนี้


ในกรณีของคุณ ปลายสายที่คุณทำได้ ประสานไปที่กระดาน ไมโครคอนโทรลเลอร์, ฉันจะใช้ หมุด Arduino UNO.

  • GNDเชื่อมต่อกับ GND Arduino UNO
  • Vccเชื่อมต่อกับ 5V Arduino UNO
  • ข้อมูลเชื่อมต่อ Arduino UNO 2 พิน
  • CLKเชื่อมต่อกับ Arduino UNO . 3 พิน


รหัสแหล่งที่มาของเฟิร์มแวร์

บนอินเทอร์เน็ตเพื่อทำงานด้วย PS / 2ใช้ไลบรารี่กับคีย์บอร์ดมากกว่าครึ่งกรณี ps2คีย์บอร์ด,โดยผ่านลูปสถานะของการแลกเปลี่ยน "ตัวแปร - คลิปบอร์ด" กับแป้นพิมพ์จะถูกตรวจสอบ ฉันไม่ใช่ผู้สนับสนุนการตรวจสอบบางอย่างผ่านลูป เฟิร์มแวร์จะยุ่งกับการทำงานกับแป้นพิมพ์เท่านั้น จะเป็นอย่างไรถ้าเราต้องคำนวณหรือทำงานกับอุปกรณ์ที่ช้าบ้าง จะมีบางอย่างที่ต้องทนทุกข์ทรมานหรือการคำนวณของเราหรือความเร็วในการตอบสนองต่อแป้นพิมพ์

ฉันแนะนำให้ใช้การขัดจังหวะ ...

รับ PIN คอนโทรลเลอร์ CLK(ซิงค์พัลส์) จากแป้นพิมพ์ที่คุณต้องการ กำหนดค่าเป็นการขัดจังหวะภายนอกเมื่อย้ายจาก สูงไปต่ำและในตัวจัดการอ่านข้อมูลบิตจาก ข้อมูล.อัลกอริทึมตัวจัดการขัดจังหวะต้อง ทีละนิด สะสมข ส่ง สแกนรหัสจากแป้นพิมพ์.

รหัส Arduino เชื่อมต่อ ข้อมูลถึง ครั้งที่ 2เตะ, CLKเชื่อมต่อกับ ครั้งที่ 3เตะ.

const int DataPin = 2; // ช่อง DATA ของแป้นพิมพ์ const int IRQpin = 3; // ช่อง CLK ของจำนวนแป้นพิมพ์ int = 1; // ตัวนับบิตปัจจุบันของรหัส 11 บิตจากแป้นพิมพ์ int m = 0; // ตัวนับบิตปัจจุบันของรหัสสแกน uint8_t scan_code = 0; // สแกนโค้ดของปุ่มกด void ps2interrupt (เป็นโมฆะ) (/ * ตัวจัดการการขัดจังหวะจากแป้นพิมพ์ CLK * / / * อ่านโค้ดการสแกนจากแป้นพิมพ์ทีละบิตลงในตัวแปร scan_code * / if ((นับ> 1) และ (นับ<11)) { /* вырезаем из 11-и битного кадра, 8-и битные скан код */ scan_code |=(digitalRead(2)<11) (Serial.print (scan_code, HEX); / * PRINT * / Serial.println (); m = 0; count = 1; scan_code = 0;)) การตั้งค่าเป็นโมฆะ () (ล่าช้า (1000); Serial.begin (9600); pinMode (DataPin, INPUT); pinMode (IRQpin, INPUT); AttachInterrupt (1, ps2interrupt, FALLING); // ตั้งค่าการขัดจังหวะจากพิน 3 (ช่องแป้นพิมพ์ CLK) ตัวจัดการ ps2interrupt Serial.begin (9600);) วงเป็นโมฆะ () (ล่าช้า (1000);)

const int DataPin = 2; // ช่อง DATA ของแป้นพิมพ์

const int IRQpin = 3; // แป้นพิมพ์ CLK ช่อง

จำนวน int = 1; // ตัวนับบิตปัจจุบันของรหัส 11 บิตจากแป้นพิมพ์

int m = 0; // ตัวนับบิตปัจจุบันของรหัสสแกน

uint8_t = 0; // สแกนรหัสของปุ่มที่กด

เป็นโมฆะ ps2interrupt (เป็นโมฆะ) ( / * ตัวจัดการขัดจังหวะแป้นพิมพ์ CLK * /

/ * อ่านโค้ดการสแกนจากแป้นพิมพ์ทีละบิตลงในตัวแปร scan_code * /

ถ้า ((นับ> 1) และ (นับ< 11 ) ) { / * ตัดออกจากเฟรม 11 บิต, รหัสสแกน 8 บิต * /

| = (ดิจิทัลอ่าน (2)<< m ) ;