แม้ว่า Raspberry Pi 500+ จะเป็นคอมพิวเตอร์คีย์บอร์ดแบบ Linux ที่ทำงานได้อย่างสมบูรณ์ แต่ก็สามารถใช้งานเป็นคีย์บอร์ด Mechanical แบบ Bluetooth ได้เช่นกัน
สัปดาห์นี้เรามีปัญหากับชุดคีย์บอร์ดและเมาส์ไร้สายของ Logitech ที่ใช้อยู่ปกติ จึงส่งกลับไปซ่อมที่ร้านเพราะยังอยู่ในระยะรับประกัน จากนั้นมีคนหนึ่งลืมเอาอุปกรณ์รับสัญญาณ (RF dongle) ของชุดคีย์บอร์ดมาที่บ้าน ผลลัพธ์คือ เรามีคีย์บอร์ดเหลืออยู่เพียงหนึ่งอัรานสำหรับใช้สองคน ซึ่งไม่ค่อยสะดวกนัก แต่โชคดีที่เราเพิ่งรีวิว Raspberry Pi 500+ ซึ่งเป็นคีย์บอร์ดพีซีแบบ mechanical เสร็จไปพอดี ดังนั้นเราจึงมีคีย์บอร์ดสำรองอยู่ และด้วยโปรเจค btferret ก็ทำให้เราสามารถใช้มันเป็นคีย์บอร์ด Bluetooth ได้ ซึ่งตอนนี้ฉันก็กำลังใช้มันพิมพ์บทความนี้อยู่
เราสามารถใช้ Pi 500+ เป็นเครื่องคอมพิวเตอร์ Linux ได้โดยตรงก็จริง แต่จะต้องติดตั้งซอฟต์แวร์ที่เราใช้เป็นประจำทั้งหมดใหม่อีกครั้ง และจะไม่สามารถเข้าถึงไฟล์บางส่วนที่อยู่ในคอมพิวเตอร์หลักของเราได้
คำแนะนำพื้นฐานสามารถพบได้ในฟอรั่มของ Raspberry Pi:
|
1 2 3 |
git clone https://github.com/petzval/btferret gcc keyboard.c btlib.c -o keyboard sudo ./keyboard |
ผลลัพธ์จากคำสั่ง:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
aey@raspberrypi:~/btferret $ sudo ./keyboard Initialising... Device data from keyboard.txt file DEVICE = My Pi TYPE=Mesh node=1 ADDRESS = 2C:CF:67:FD:8B:AA PRIMARY_SERVICE = 1800 LECHAR=Device Name SIZE=4 Permit=02 UUID=2A00 LECHAR=Appearance SIZE=2 Permit=02 UUID=2A01 PRIMARY_SERVICE = 180A LECHAR= PnP ID SIZE=7 Permit=02 UUID=2A50 PRIMARY_SERVICE = 1812 LECHAR=Protocol Mode SIZE=1 Permit=06 UUID=2A4E LECHAR=HID Info SIZE=4 Permit=02 UUID=2A4A LECHAR=HID Ctl Point SIZE=8 Permit=04 UUID=2A4C LECHAR=Report Map SIZE=47 Permit=02 UUID=2A4B LECHAR=Report1 SIZE=8 Permit=92 UUID=2A4D Advertise as LE HID device Listening for LE clients to connect (ESC=stop server) Advertising as D3:56:D6:74:33:04 HID device Wait for pair... PAIR OK Connected OK. Key presses sent to client. ESC stops server F10 sends Hello plus Enter |
แล็ปท็อปของฉันไม่รองรับการใช้งาน Bluetooth บน Ubuntu ดังนั้นฉันจึงเปลี่ยนไปใช้ Windows แทน และคีย์บอร์ด Bluetooth ของ Pi 500+ ก็ถูกตรวจพบอย่างถูกต้องในชื่ออุปกรณ์ “HID” ซึ่งสามารถเชื่อมต่อได้โดยไม่มีปัญหาใด ๆ
แต่เมื่อฉันเริ่มพิมพ์ กลับไม่มีอะไรเกิดขึ้นเลย ฉันจึงแก้ไขซอร์สโค้ดให้แสดงรหัสของคีย์บอร์ดเมื่อกดปุ่มใดปุ่มหนึ่ง แต่ก็ยังไม่มีผลอะไรอีก… ตอนนั้นเองฉันถึงเข้าใจว่าฉันเข้าใจผิดไป ฉันรันโปรแกรมผ่านเทอร์มินัล SSH ซึ่งจริง ๆ แล้วโปรแกรมจะรับสัญญาณจากแป้นพิมพ์ได้เฉพาะบนเดสก์ท็อปเท่านั้น ดังนั้นฉันจึงเปิดหน้าต่างเทอร์มินัลบนเดสก์ท็อปของ Raspberry Pi OS แล้วรันโปรแกรมอีกครั้งคราวนี้ใช้งานได้ตามปกติ
วิธีนี้ถือว่าใช้ได้ดีในฐานะทางออกชั่วคราว แต่คุณอาจต้องปรับแต่งเพิ่มเติมให้ตรงกับรูปแบบคีย์บอร์ดของคุณเอง โดยแก้ไขไฟล์ keyboard.txt ในโค้ด นอกจากนี้ ปุ่ม Esc จะถูกตั้งค่าให้หยุดการทำงานของโปรแกรมโดยอัตโนมัติ ดังนั้นหากคุณกดปุ่มนี้ โปรแกรมจะหยุดทำงานและตัดการเชื่อมต่อจากเครื่องโฮสต์ทันที:
|
1 2 3 |
Key press stop server... Disconnecting 10:68:38:3A:0D:DB 10:68:38:3A:0D:DB has disconnected |
ซึ่งมันเกิดขึ้นกับหลายครั้ง ทำให้ต้องรีสตาร์ทโปรแกรมใหม่อยู่บ่อย ๆ ซึ่งนั่นหมายความว่าควรต่อจอภาพไว้ตลอดเวลาเมื่อใช้ฟังก์ชันคีย์บอร์ด Bluetooth ทั้งในกรณีที่ต้องรีสตาร์ทโปรแกรมและเพื่อเพิ่มความเสถียรในการเชื่อมต่อ (เนื่องจากหากไม่มีการต่อจอ คีย์บอร์ดจะตัดการเชื่อมต่อไปเองหลังจากใช้งานไปสักระยะ)
มีปุ่มบางปุ่มที่ไม่ทำงาน เช่น ปุ่ม “Raspberry Pi/Windows”, รวมถึงปุ่มลัดอย่าง Alt + Tab และคำสั่งอื่น ๆ ที่บางครั้งใช้ได้บ้างไม่ได้บ้าง นอกจากนี้เมื่อใช้ปุ่มลูกศรร่วมกับปุ่ม Shift เพื่อเลือกคำ จะปรากฏอักขระแปลก ๆ เช่น [1;2C คือ Shift + ลูกศรซ้าย และ [1;2D คือ Shift + ลูกศรขวา ฉันยังไม่ได้ลองด้วยตัวเอง แต่สามารถแก้ปัญหาเล็ก ๆ เหล่านี้ได้โดยการแก้ไขโค้ดให้เหมาะกับคีย์บอร์ด แต่วิธีนี้ก็ถือเป็นทางออกชั่วคราวที่ดีในกรณีที่ไม่มีคีย์บอร์ดใช้งาน และยังสามารถใช้ได้กับคีย์บอร์ดพีซีรุ่นก่อนหน้าอย่าง Raspberry Pi 400 และ Raspberry Pi 500 ด้วย
แปลจากบทความภาษาอังกฤษ : Using the Raspberry Pi 500+ keyboard PC as a regular Bluetooth keyboard

บรรณาธิการข่าวและบทความภาษาไทย CNX Software ได้มีความสนใจในด้านเทคโนโลยี โดยเฉพาะ Smart Home และ IoT


