สารบัญ:

ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android: 5 ขั้นตอน
ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android: 5 ขั้นตอน

วีดีโอ: ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android: 5 ขั้นตอน

วีดีโอ: ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android: 5 ขั้นตอน
วีดีโอ: #shorts #หินปูนเกาะหนามาก #scaling 2024, กรกฎาคม
Anonim
ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android
ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android
ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android
ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android
ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android
ใช้แป้นพิมพ์อินฟราเรดปาล์มกับอุปกรณ์ Android

ฉันมีแป้นพิมพ์ไร้สาย PalmOne อยู่รอบๆ และฉันต้องการมีแป้นพิมพ์บลูทูธสำหรับโทรศัพท์ของฉัน ปัญหาเดียวคือแป้นพิมพ์ PalmOne เป็นแบบอินฟราเรด

ฉันยังมีอุปกรณ์ Brainlink นี่เป็นอุปกรณ์เล็กๆ ที่น่ารักสำหรับการเป็นสื่อกลางระหว่างอุปกรณ์ต่างๆ มันมีโปรเซสเซอร์ atxmega16, แบตเตอรี่แบบชาร์จไฟได้, เซ็นเซอร์บางตัว, วิทยุ Bluetooth, พอร์ตจำนวนมาก, เคส และเฟิร์มแวร์ที่อัพเกรดได้บางส่วนสำหรับการควบคุมทั้งหมด Brainlink ถูกยกเลิก แต่ SurplusShed มีราคา 39 เหรียญและมียอดขายลดลง 30-50% สำหรับทุกอย่าง ฉันได้รับเงิน 20 เหรียญ คุณสามารถใช้ atxmega plus Bluetooth board ของคุณเองได้ (แผนผังที่นี่) แต่ค่าใช้จ่ายของคุณอาจไม่ต่ำกว่านี้

อย่างไรก็ตาม หลังจากระบุตำแหน่งสายสัญญาณบนแป้นพิมพ์แล้ว การอัปเกรดเฟิร์มแวร์สำหรับ Brainlink และการเขียนไดรเวอร์ Android สำหรับแป้นพิมพ์ ก็ใช้งานได้ดีทีเดียว เนื่องจากงานส่วนใหญ่คือการตรวจสอบและซอฟต์แวร์ ตอนนี้ก็เสร็จแล้ว จึงเป็นโครงการที่ง่ายมากสำหรับทุกคนที่มี Brainlink คุณต้องการ:

  • คีย์บอร์ดไร้สาย PalmOne
  • Brainlink
  • สายโยง 3 หรือ 8 พินสำหรับ Brainlink (ขั้วต่อแบบ JST ระยะพิทช์ 1.25 มม.); คุณสามารถใช้สายพ่วง 8 พินที่มาพร้อมกับ Brainlink ได้ แต่คุณจะต้องการสั่งซื้อเพิ่มเติมสำหรับโครงการอื่นๆ
  • บัดกรีและเหล็ก
  • เทปพันสายไฟ
  • อุปกรณ์เสริม: ที่ยึดตะขอและห่วง

ในอดีต ฉันเคยใช้ Brainlink เพื่อเชื่อมต่อกับชุดหูฟัง Mindflex EEG และ Roomba เหมาะอย่างยิ่งสำหรับงานเชื่อมระหว่างซีเรียลกับบลูทูธ ฉันแค่สร้างตัวเชื่อมต่อที่แตกต่างกันสำหรับอุปกรณ์ต่างๆ และสามารถย้าย Brainlink ไปมาระหว่างอุปกรณ์เหล่านั้นได้

ขั้นตอนที่ 1: พื้นหลัง

พื้นหลัง
พื้นหลัง
พื้นหลัง
พื้นหลัง
พื้นหลัง
พื้นหลัง

อย่าลังเลที่จะข้ามคำอธิบายพื้นหลังนี้

PalmOne Wireless Keyboard ส่งข้อมูลผ่าน IR LED บนก้านโดยใช้ IrDA แม้ว่าจะใช้เครื่องตรวจจับ IR เพื่อถอดรหัสข้อมูล แต่ก็มีวิธีที่ง่ายกว่านั้น หากคุณพับครึ่งแป้นพิมพ์ แถบทองแดงสามแถบจะถูกเปิดออก อันกลางเป็นกราวด์และอันล่างเป็นสายส่ง การนำไปที่ออสซิลโลสโคปช่วยยืนยันว่าสัญญาณบนสายส่งถูกเข้ารหัสที่ประมาณ 9600 (แม่นยำยิ่งขึ้น: 9760) 8 N 2 โดยมีระดับสูงอยู่ที่ประมาณ 1.56V และด้วยการสร้างพัลส์ irDA: 1 อยู่ในระดับสูงและเป็นพัลส์ที่เป็นบวก ใช้เวลา 3/16 ของบิต

น่าเสียดายที่ทั้งหมดนี้หมายความว่าเราไม่สามารถเสียบเข้ากับโมดูล Bluetooth แบบง่าย (อย่างน้อยก็ไม่ต้องทำเฟิร์มแวร์ที่กำหนดเองสำหรับมัน) เช่นเดียวกับที่ฉันทำในโครงการ Mindflex ของฉัน โชคดีที่ atxmega ใน Brainlink มีโหมด irDA สำหรับ UART การเพิ่มโค้ดเล็กน้อยลงในเฟิร์มแวร์ Brainlink ทำได้ง่ายมาก โดยอนุญาตให้โค้ด "J1" เปลี่ยนเป็นโหมด IrDA ฉันคาดว่าระดับสูง 1.56V จะไม่เพียงพอสำหรับ atxmega แต่ฉันรู้สึกประหลาดใจเมื่อเชื่อมต่อแถบทองแดงกับ GND และ UART รับบน Brainlink และดูผลลัพธ์ใน Realterm: ฉันได้รับลำดับหกไบต์ที่ดีจากแป้นพิมพ์.

ปรากฎว่าลำดับหกไบต์เป็นเพียงการบรรจุสำหรับโค้ดการสแกนแบบไบต์เดียว โดยเฉพาะอย่างยิ่ง ลำดับคือ FF C0 xx yy zz C1 โดยที่ xx คือรหัสการสแกน yy คือ xx xor'ed กับ FF และ zz คือ xx xor'ed 67 (ผลคือ รหัสการสแกนจะถูกส่งสามครั้ง: ครั้งหนึ่งชัดเจนและเข้ารหัสสองครั้ง ฉันเดาว่านี่เป็นเพราะ irDA มีแนวโน้มที่จะเกิดความเสียหาย ดังนั้น คุณสามารถใช้การถอดรหัสส่วนใหญ่เพื่อรับไบต์ได้) หลังจากนั้น ปัญหาเดียวของฮาร์ดแวร์ก็คือการหาที่สำหรับเชื่อมตัวเชื่อมต่อบนแป้นพิมพ์. และนั่นก็ไม่ยาก

ในด้านซอฟต์แวร์ แม้ว่าบางทีฉันอาจเปลี่ยนโมดูล RN-42 Bluetooth ในโหมด Brainlink เป็น HID ได้ ซึ่งมีศักยภาพในการก่อกวน เนื่องจากหากโมดูลไม่เปลี่ยนกลับเป็น SPP ฉันคงพูดไม่ได้ Brainlink ผ่านโปรโตคอล Bluetooth

วิธีที่ง่ายกว่าคือใช้แอพคีย์บอร์ด BluezIME แบบโอเพนซอร์สที่อนุญาตให้เกมแพด Bluetooth ต่างๆ ทำหน้าที่เป็นตัวควบคุม Android และเพิ่มโหมดสำหรับลำดับหกไบต์ของ Palm One Wireless Keyboard แอปที่ได้คือแป้นพิมพ์ P1 ฟรีใน Google Play ทันที (ซอร์สโค้ดบน github)

ขั้นตอนที่ 2: อัปเกรดเฟิร์มแวร์ Brainklink

การอัพเกรดเฟิร์มแวร์ Brainklink
การอัพเกรดเฟิร์มแวร์ Brainklink
การอัพเกรดเฟิร์มแวร์ Brainklink
การอัพเกรดเฟิร์มแวร์ Brainklink

ในการเปิดใช้งานการสนับสนุนข้อมูลซีเรียลรูปแบบ IrDA บน Brainlink คุณต้องโหลดเฟิร์มแวร์ที่กำหนดเองของฉัน เป็นเรื่องง่ายด้วยอุปกรณ์ Android และตัวอัปโหลดเฟิร์มแวร์ที่ฉันเขียน (อย่างไรก็ตาม คุณสามารถแก้ไขตัวอัปโหลดให้เป็นตัวอัปโหลดแฟลชสำหรับวัตถุประสงค์ทั่วไปของ atmega/atxmega AVR109 ได้)

  1. จับคู่ Brainlink (PIN 1234) กับอุปกรณ์ Android - คุณจะต้องทำอย่างนั้นเพื่อเชื่อมต่อแป้นพิมพ์
  2. ดาวน์โหลด Brainlink Firmware Uploader ของฉันจาก Google Play (แหล่งที่มาสำหรับผู้อัปโหลดและเฟิร์มแวร์บน GitHub)
  3. ปิด Brainlink และเชื่อมต่อพิน 8 และ 2 (น่าแปลกที่พิน 8 คือพินซ้ายสุด และพิน 1 อยู่ทางขวา) บนพอร์ต 8 พิน
  4. จับหมุดที่เชื่อมต่อแล้วเปิด Brainlink ไฟ LED ควรเปลี่ยนเป็นสีน้ำเงิน
  5. เลือกเฟิร์มแวร์แบบกำหนดเองที่คุณต้องการ (หากคุณมี Roomba เฟิร์มแวร์ตัวใดตัวหนึ่งจะทำงานได้ดีกับ Roombas ที่ใหม่กว่าและอีกตัวหนึ่งสำหรับเฟิร์มแวร์รุ่นเก่า) แล้วกด "อัปโหลด"
  6. ที่ควรจะเป็น แม้ว่าหากคุณมีปัญหาในการเชื่อมต่อ คุณอาจต้องลองมากกว่าหนึ่งครั้ง

Brainlink ของคุณฉลาดขึ้นแล้ว: ไม่เพียงแต่รองรับการอ่านข้อมูลจากอุปกรณ์ IrDA บางตัวเท่านั้น (เมื่อคุณค้นหาสัญญาณที่ไม่ถูกมอดูเลตแล้ว) แต่ยังทำหน้าที่เป็นลิงก์ Roomba-to-Bluetooth มาตรฐาน และสามารถเก็บข้อมูลจากชุดหูฟัง Mindflex EEG ได้ และเฟิร์มแวร์นั้นเข้ากันได้แบบย้อนหลัง

ขั้นตอนที่ 3: เชื่อมต่อ Brainlink กับคีย์บอร์ด

การเชื่อมต่อ Brainlink กับคีย์บอร์ด
การเชื่อมต่อ Brainlink กับคีย์บอร์ด
การเชื่อมต่อ Brainlink กับคีย์บอร์ด
การเชื่อมต่อ Brainlink กับคีย์บอร์ด
การเชื่อมต่อ Brainlink กับคีย์บอร์ด
การเชื่อมต่อ Brainlink กับคีย์บอร์ด

คุณจะต้องมีขั้วต่อแบบโยงที่เหมาะกับหมุดสามขาซ้ายสุดบนพอร์ต 8 พินของ Brainlink เหล่านี้เป็นตัวเชื่อมต่อแบบ JST ที่มีระยะห่างพิน 1.25 มม. คุณสามารถใช้ขั้วต่อสามพิน (ตัวเลือกของฉัน) หรือขั้วต่อ 8 พิน คุณสามารถใช้ตัวเชื่อมต่อ 8 พินที่มาพร้อมกับ Brainlink ได้ แต่คุณจะต้องการสั่งซื้อเพิ่มเติม (ฉันพบว่าตัวเชื่อมต่อ 3- และ 8-pin ราคาถูกบนอีเบย์)

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

บนพอร์ต Brainlink 8 พินของคุณ การเชื่อมต่อด้านซ้ายสุดคือกราวด์ (พินซ้ายสุดของพอร์ต 8 พิน) และพินที่สามจากด้านซ้ายเป็นตัวรับสัญญาณแบบอนุกรม บัดกรีสายกราวด์บนขั้วต่อ Brainlink ของคุณเข้ากับสายกราวด์บนคีย์บอร์ด และต่อสายรับสัญญาณบน Brainlink เข้ากับสายสัญญาณ คุณอาจพบว่าไม่มีพื้นที่ว่างในบริเวณแป้นพิมพ์สำหรับการเชื่อมต่อแบบบัดกรีและขั้วต่อแบบ JST ที่อยู่ภายในแป้นพิมพ์ หากเป็นเช่นนั้น เพียงถอดขั้วต่อแบบ JST และบัดกรีสายไฟที่เกี่ยวข้องทั้งสามสาย (สายกราวด์คีย์บอร์ดสองเส้นและสายกราวด์ Brainlink หนึ่งเส้น สายสัญญาณคีย์บอร์ดสองเส้น และสายรับ Brainlink หนึ่งเส้น)

เป็นการดึงดูดที่จะถอดด้าน IR LED ของขั้วต่อแบบ JST เพื่อประหยัดแบตเตอรี่ อย่าทำมัน สัญญาณจะแตกสลายหากคุณทำเช่นนั้น ฉันตรวจสอบด้วยออสซิลโลสโคปของฉัน

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

สุดท้าย เมื่อทำเสร็จแล้ว ให้ปิดหน้าสัมผัสที่ไม่เกี่ยวข้องบนการเชื่อมโยงเครือข่ายของ Brainlink หรือเพียงแค่ตัดสายที่ไม่เกี่ยวข้องออก

คุณอาจต้องการกาว Velcro บน Brainlink และแป้นพิมพ์เพื่อให้ Brainlink เข้าที่

ขั้นตอนที่ 4: การใช้งานกับอุปกรณ์ Android

การใช้งานกับอุปกรณ์ Android
การใช้งานกับอุปกรณ์ Android
  1. จับคู่ Brainlink กับอุปกรณ์ Android ของคุณ (PIN 1234)
  2. ติดตั้งแอพคีย์บอร์ด P1 ของฉัน
  3. เปิดการตั้งค่าแป้นพิมพ์ P1 (ไอคอนควรอยู่ในตัวเรียกใช้ของคุณ)
  4. เปิดใช้งานแป้นพิมพ์ P1 ในการตั้งค่าวิธีการป้อนข้อมูลของ Android ในเวอร์ชัน Android ที่ใหม่กว่า คุณสามารถเปิดใช้งานแป้นพิมพ์ P1 โดยเลือก "เลือก IME" ในการตั้งค่าแป้นพิมพ์ P1 แล้วแตะ "ตั้งค่าวิธีการป้อนข้อมูล" (คุณจะได้รับคำเตือนว่าแป้นพิมพ์เห็นรหัสผ่านทั้งหมดของคุณ ฯลฯ นั่นเป็นคำเตือนมาตรฐานของ Android: แน่นอน โปรแกรมควบคุมแป้นพิมพ์จะเห็นทุกสิ่งที่คุณพิมพ์ หากคุณกลัว ให้ดูที่ซอร์สโค้ดของแป้นพิมพ์และสร้าง ของคุณเอง)
  5. แตะที่ "เลือกอุปกรณ์" และเลือก Brainlink ของคุณ (ของฉันแสดงเป็น RN42-A308)
  6. แตะที่ "เลือก IME" ในการตั้งค่าแป้นพิมพ์ P1 และเลือกแป้นพิมพ์ P1
  7. อาจใช้เวลาสักครู่ในการเชื่อมต่อ แต่คุณควรได้รับข้อความเกี่ยวกับการเชื่อมต่อหากทุกอย่างเป็นไปด้วยดี

และคุณทำเสร็จแล้ว! อย่าลังเลที่จะบริจาคให้กับผู้เขียน BluezIME ซึ่งใช้คีย์บอร์ด P1

ใน Android 4.0+ เมื่ออยู่ในช่องข้อความ จะมีการแจ้งเตือนที่อนุญาตให้เปลี่ยนวิธีการป้อนข้อมูลได้ ดังนั้นคุณจึงสามารถสลับกลับไปใช้วิธีป้อนข้อมูลอื่นได้อย่างง่ายดาย

ไดรเวอร์ที่ฉันเขียนสำหรับแป้นพิมพ์นั้นง่ายมาก รองรับปุ่มธรรมดา แต่ไม่รองรับปุ่มเน้นเสียงพิเศษหรือสิ่งพิเศษอื่นๆ มากมาย ฉันได้เพิ่มการรองรับสำหรับการใช้ปุ่มสองปุ่มกับบ้าน (FN-1 และปุ่มทางด้านซ้ายของช่องว่าง) เป็นปุ่ม Home โดยใช้ ปุ่ม Windows และ FN-2 เป็นเมนู และ FN-3 เป็นการค้นหา นอกจากนี้ ctrl-a, c, v, x ทำงานตามที่คาดไว้

ทำงานได้ดีพอที่ฉันเขียนร่างแรกของคำแนะนำนี้บนโทรศัพท์ Galaxy S2 ของฉันด้วยแป้นพิมพ์

ขั้นตอนที่ 5: คีย์บอร์ดอื่นๆ

คีย์บอร์ดอื่นๆ
คีย์บอร์ดอื่นๆ
คีย์บอร์ดอื่นๆ
คีย์บอร์ดอื่นๆ

หากคุณต้องการทดลองกับคีย์บอร์ดอินฟราเรดอื่นๆ คุณจะต้องค้นหาว่าพวกเขาส่งสัญญาณอะไรและอัตรารับส่งข้อมูลเท่าใด ด้วย Brainlink ที่อัปเดตเป็นซอฟต์แวร์ที่เข้ากันได้กับ IrDA คุณสามารถเชื่อมต่อกับ RealTerm กับ Brainlink ได้ เมื่อคุณเห็นสัญญาณ "BL" ซ้ำซึ่งเป็นลายเซ็นของ Brainlink ให้พิมพ์:

*J1Z

เครื่องหมายดอกจันเรียกร้องความสนใจ J1 เปลี่ยนเป็น 9600 baud IrDA (เพียงแค่ต้องพิมพ์ 1 อย่างรวดเร็วหลังจาก J มิฉะนั้นคุณจะได้รับข้อผิดพลาด) Z ใช้สำหรับโหมดบริดจ์ซีเรียลกับบลูทูธ

สลับ RealTerm เพื่อแสดงรหัสฐานสิบหกและกดปุ่มบนแป้นพิมพ์และดูว่าคุณสามารถเข้าใจได้หรือไม่

หากต้องการออกจากโหมดซีเรียลบริดจ์ ให้เปิดเครื่อง Brainlink

ฉันเดาว่า 9600 บอดเป็นอัตราบอดที่เหมาะสม หากไม่สำเร็จ คุณสามารถเปลี่ยนอัตราบอดของ Brainlink ได้ ฉันจะเริ่มต้นด้วยการลอง 57600 บอด:

*J1u57Z

แล้ว 1200 บอด:

*J1u12Z

เมื่อคุณทราบแล้วว่าแป้นพิมพ์ส่งข้อมูลอย่างไร แค่แก้ไขโค้ดของไดรเวอร์ของฉัน อาจแค่เปลี่ยนตัวเลขใน PalmOneWirelessKeyboard.java ก็เพียงพอแล้ว

แนะนำ: