สาย Maker อย่างเรา บางทีก็อยากจะหยิบเอาของเก่าๆ เช่น รีโมตทีวี โทรศัพท์บ้าน หรือเครื่องคิดเลขเก่า มาแฮ็กปุ่มกดเพื่อทำเป็นโปรเจกต์ใหม่ (เช่น แปลงเครื่องคิดเลขเป็นคีย์บอร์ด หรือทำเป็นแป้นรหัสผ่านประตู) แต่ปัญหาที่เจอประจำคือ... "ปุ่มมันเยอะเกินไป แต่ขาไมโครคอนโทรลเลอร์ (I/O Pins) มีไม่พอ!"
ไม่ต้องกังวลไปครับ! อุปกรณ์อิเล็กทรอนิกส์ส่วนใหญ่ในโลกนี้มีเทคนิคการต่อสายไฟที่เรียกว่า Key Matrix (หรือ Multiplexing) ที่ช่วยให้เราควบคุมปุ่มหลักสิบปุ่มได้ โดยใช้ขา I/O แค่ไม่กี่ขาเท่านั้น วันนี้เราจะมาเจาะลึกวิชานี้กัน
ทฤษฎี Key Matrix: ปุ่มเยอะแต่ใช้ขานิดเดียว
สมมติว่าคุณมีแป้นพิมพ์ตัวเลข 9 ปุ่ม ปกติคุณอาจจะคิดว่าต้องใช้ขา I/O ถึง 9 ขา แต่ถ้าเราต่อแบบ เมทริกซ์ (Matrix) เราจะจัดกลุ่มมันเป็นตาราง 3x3 (3 แถว แนวนอน และ 3 คอลัมน์ แนวตั้ง)
เรากำหนดให้ 3 ขาของบอร์ดเป็นขา "ปล่อยไฟ (Output)" สำหรับแต่ละแถว และอีก 3 ขาเป็นขา "รับไฟ (Input)" สำหรับคอลัมน์ เมื่อเราสลับปล่อยไฟทีละแถวอย่างรวดเร็ว (Scanning) แล้วเช็คว่ามีไฟวิ่งเข้าคอลัมน์ไหนไหม เราก็จะรู้ทันทีว่าปุ่มไหนถูกกดอยู่ สรุปคือ เราใช้ขาแค่ 6 ขา เพื่อคุมปุ่มถึง 9 ปุ่ม! ยิ่งปุ่มเยอะ เทคนิคนี้ยิ่งประหยัดขา I/O ได้มหาศาล
*ทริค: สำหรับขั้นแอดวานซ์ ถ้าเราใช้เทคนิคที่เรียกว่า Charlieplexing เราจะสามารถใช้ขา I/O จำนวน n ขา เพื่อคุมปุ่มได้ถึง (n² - n) ปุ่มเลยทีเดียว!
คลิกเพื่อดูภาพไดอะแกรมการต่อวงจร Matrix (View More)
วิธีไล่สายไฟบนแผงวงจร (Reverse Engineering)
เวลาเราแกะอุปกรณ์เก่าๆ ลายวงจรมันจะไม่ได้เรียงสวยงามเหมือนตาราง 3x3 หรอกครับ วิธีแก้คือการใช้ มัลติมิเตอร์ (Multimeter) ตั้งค่าโหมดเช็คความต่อเนื่อง (Continuity) แล้วทำตามนี้:
- จิ้มหัววัดไปที่ขาข้างนึงของปุ่มหมายเลข "1" แล้วเอาหัววัดอีกข้างไล่จิ้มหาปุ่มอื่นๆ ดูว่ามันเชื่อมกับปุ่มไหนบ้าง (เช่น มันอาจจะต่อเข้ากับปุ่ม 3, 5, 9)
- จดข้อมูลที่ได้ลงใน Spreadsheet (Excel/Google Sheets)
- ทำแบบนี้ไปเรื่อยๆ จนครบทุกปุ่ม สุดท้ายคุณจะได้แผนผังออกมาว่า ต้องเช็คไฟที่พอร์ตไหนถึงจะรู้ว่าปุ่มไหนโดนกด
เมื่อไล่ลายวงจรจนไปรวมกันที่ชิปหลักหรือพินสายแพรได้แล้ว เราก็แค่ขูดแผ่น PCB เล็กน้อยเพื่อบัดกรีสายไฟเข้ากับไมโครคอนโทรลเลอร์ของเราได้เลย
การเขียนโค้ดและข้อควรระวัง
ส่วนของโค้ดนั้นง่ายมากครับ คุณสามารถเขียนลูปเช็คขา I/O สลับไปมา หรือจะใช้ Library สำเร็จรูป (เช่น MatrixKeypad) ก็ได้ ไมโครคอนโทรลเลอร์ยุคนี้เร็วพอที่จะกวาดหาการกดปุ่ม (Scanning) แบบแทบไม่มีดีเลย์เลยทีเดียว
⚠️ ข้อควรระวัง:
- หากอุปกรณ์เดิมมีการกด 2 ปุ่มพร้อมกันบ่อยๆ ควรต่อ "ไดโอด (Diode)" คั่นไว้ในวงจรเมทริกซ์ เพื่อกันกระแสไฟไหลย้อนกลับ (Ghosting)
- ถ้าคุณยังอยากให้อุปกรณ์เดิมใช้งานได้อยู่ ต้องเช็คแรงดันไฟ (Voltage) ให้ดี! ถ้าอุปกรณ์เดิมใช้ไฟ 3.3V แต่คุณเอาบอร์ด 5V ไปต่อ ขอบอกเลยว่าชิปของอุปกรณ์เดิมพังแน่นอน! (อาจจะต้องกรีดตัดลายวงจรเดิมทิ้งไปเลยถ้าไม่ได้ใช้แล้ว)
หาบอร์ดไว้แฮ็กปุ่มทำโปรเจกต์สนุกๆ อยู่หรือเปล่า?
คำเตือน: เนื้อหานี้เป็นการสรุปและเรียบเรียงจากบทความต้นฉบับภาษาอังกฤษ ข้อมูลฉบับภาษาไทยอาจมีความคลาดเคลื่อนบางประการจากการตีความหรือย่อเนื้อหา