สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: ดูวิดีโอ
- ขั้นตอนที่ 2: [ไม่บังคับ] เริ่มต้นใช้งาน ESP32
- ขั้นตอนที่ 3: การติดตั้งไลบรารีคีย์บอร์ด ESP32 Ble
- ขั้นตอนที่ 4: การดูตัวอย่าง
- ขั้นตอนที่ 5: เคล็ดลับอื่นๆ สำหรับห้องสมุด
- ขั้นตอนที่ 6: แป้นมาโคร
- ขั้นตอนที่ 7: รหัสสำหรับ Macro Keypad
- ขั้นตอนที่ 8: มาทำให้มันไร้สายกันเถอะ
- ขั้นตอนที่ 9: ทดสอบเลย
- ขั้นตอนที่ 10: ขอบคุณสำหรับการอ่าน
วีดีโอ: DIY Bluetooth Macro Keypad: 10 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:04
ในคำแนะนำนี้ เราจะมาดูการใช้บลูทูธในตัวของ ESP32 เพื่อจำลองแป้นพิมพ์บลูทูธ
Bluetooth HID (Human Interface Device) เป็นโปรโตคอลที่ใช้โดยคีย์บอร์ดและเมาส์ Bluetooth ทั่วไป และเป็นไปได้ที่จะจำลองสิ่งนี้ด้วย ESP32 ซึ่งยอดเยี่ยมมาก!
ด้วยบอร์ดพัฒนา ESP32 บางรุ่นที่มีราคาต่ำกว่า $5* ที่จ่ายไป นี่เป็นวิธีที่ไม่แพงและง่ายมากในการสร้างคีย์บอร์ดแบบกำหนดเองแบบไร้สาย เช่น คีย์แพดมาโคร แป้นพิมพ์มาโครสามารถใช้สำหรับควบคุมแอปพลิเคชันต่างๆ เช่น โปรแกรมตัดต่อวิดีโอหรือ Photoshop โดยส่วนตัวแล้วฉันใช้ของฉันเพื่อควบคุมฉากใน OBS เมื่อฉันสร้างวิดีโอหรือสตรีม
ก่อนอื่นเราจะมาดูวิธีใช้ไลบรารีแป้นพิมพ์ ESP32 HID ก่อน จากนั้นฉันจะแสดงให้คุณเห็นว่าฉันใช้สิ่งนี้เพื่อสร้างแป้นพิมพ์มาโคร Bluetooth ที่ใช้พลังงานจากแบตเตอรี่ได้อย่างไร
เสบียง
- บอร์ด TinyPICO ESP32 Dev (ESP32 ใด ๆ ก็ทำงานได้)
- 4*4 เมทริกซ์ คีย์แพด*
คุณจะต้องใช้แบตเตอรี่ lipo ด้วย ฉันเพิ่งใช้แบตเตอรี่แบบสุ่มที่วางอยู่รอบ ๆ ดังนั้นฉันจึงไม่สามารถเชื่อมโยงไปยังมันได้!
หากพีซีของคุณไม่มีบลูทูธ คุณสามารถใช้ดองเกิลแบบนี้ได้:
Amazon.co.uk*:
Amazon.com*:
Amazon.de*:
* = พันธมิตร
ขั้นตอนที่ 1: ดูวิดีโอ
ฉันได้ทำวิดีโอที่ครอบคลุมสิ่งเดียวกับคำแนะนำนี้ ดังนั้นหากคุณสนใจ โปรดตรวจสอบ! ฉันยังสร้างวิดีโอเกี่ยวกับโปรเจ็กต์ ESP8266 และ ESP32 เป็นประจำ ดังนั้นอาจมีวิดีโออื่นๆ ในช่องของฉันที่คุณอาจสนใจ
ขั้นตอนที่ 2: [ไม่บังคับ] เริ่มต้นใช้งาน ESP32
ESP32s เป็นไมโครคอนโทรลเลอร์ที่เข้ากันได้กับ Arduino IDE และมาพร้อมกับ WiFi และ Bluetooth พวกมันค่อนข้างถูกดังนั้นจึงเป็นชิปที่มีประโยชน์มากสำหรับโครงการของคุณ
คุณจะต้องเพิ่มคำจำกัดความของบอร์ด ESP32 ให้กับ Arduino IDE ของคุณ โดยคุณสามารถทำตามขั้นตอนที่ระบุไว้ในโครงการ ESP32 Arduino Github Page
ขั้นตอนที่ 3: การติดตั้งไลบรารีคีย์บอร์ด ESP32 Ble
เป็นไปได้ที่จะใช้ Bluethooth HID บน ESP32 โดยไม่มีไลบรารี่ภายนอก แต่ผู้ใช้ Github T-Vk ได้เขียนไลบรารีชื่อ ESP32-BLE-Keyboard ที่ทำให้เหมือนกับไลบรารีคีย์บอร์ด Arduino มาตรฐานซึ่งทำให้ใช้งานได้ง่ายขึ้นมาก
ไลบรารีนี้ไม่มีอยู่ในตัวจัดการไลบรารี ดังนั้นคุณจะต้องดาวน์โหลดจาก Github
- ไปที่หน้าเผยแพร่โครงการและดาวน์โหลด ESP32-BLE-Keyboard.zip. ล่าสุด
- เมื่อดาวน์โหลดแล้ว คุณสามารถเพิ่มลงใน Arduino IDE ได้ แต่ไปที่ Sketch -> Include Library จากนั้นเพิ่ม Zip ลงในไลบรารี แล้วเลือก ESP32-BLE-Keyboard.zip จากขั้นตอนก่อนหน้า
ขั้นตอนที่ 4: การดูตัวอย่าง
เมื่อเพิ่มเข้าไปแล้ว เราสามารถเปิดตัวอย่างที่มาพร้อมกับมันได้ เป็นตัวอย่างที่ดีทีเดียว เพราะมันแสดงให้เห็นสิ่งต่าง ๆ ที่คุณสามารถทำได้ด้วยห้องสมุด แต่ฉันจะเพิ่มรายละเอียดเพิ่มเติมเล็กน้อยซึ่งฉันคิดว่าน่าจะมีประโยชน์
คุณสามารถเข้าถึงตัวอย่างได้โดยไปที่ไฟล์ -> ตัวอย่าง -> แป้นพิมพ์ ESP32 BLE -> SendKeyStrokes
การตั้งค่าการเชื่อมต่อบลูทูธ
ในการตั้งค่า การเชื่อมต่อบลูทูธจะเริ่มขึ้น ในขั้นตอนนี้ คุณควรจับคู่กับอุปกรณ์ของคุณได้
bleKeyboard.begin();
ภายในลูปยังตรวจสอบด้วยว่าเชื่อมต่อกับอุปกรณ์หรือไม่
bleKeyboard.isConnected()
กำลังพิมพ์
สิ่งแรกที่ตัวอย่างแสดงให้เห็นคือวิธีที่คุณสามารถพิมพ์ข้อความเมื่อเชื่อมต่อแล้วจะพิมพ์ "สวัสดีชาวโลก" ก่อนโดยใช้
bleKeyboard.print("สวัสดีชาวโลก");
กดปุ่มเดียว
จากนั้นจะแสดงให้เห็นว่าคุณสามารถ "เขียน" คีย์ย้อนกลับได้อย่างไร โดยพื้นฐานแล้วเป็นการเลียนแบบการกดปุ่มเดียวของปุ่มนี้
bleKeyboard.write (KEY_RETURN);
คุณสามารถเปิดไฟล์ BleKeyboard.h ของไลบรารีเพื่อดูคีย์ทั้งหมดที่กำหนดไว้เช่นนี้ คุณยังสามารถส่งอักขระ ascii ได้โดยใส่ลงในเครื่องหมายจุลภาคเดียว
bleKeyboard.write('A');
คีย์สื่อ
นอกจากนี้ยังสาธิตวิธีส่งคีย์สื่อ ซึ่งคล้ายกับวิธีควบคุมระดับเสียงหรือข้ามแทร็กด้วยหูฟังบลูทูธ ตัวอย่างแสดงปุ่มเล่น/หยุดชั่วคราว แต่คุณสามารถเปิด BleKeyboard.h อีกครั้งเพื่อดูตัวเลือกอื่นๆ ที่พร้อมใช้งาน
bleKeyboard.write (KEY_MEDIA_PLAY_PAUSE);
การกดและปล่อยปุ่ม
สิ่งสุดท้ายที่ตัวอย่างแสดงให้เห็นคือวิธีที่คุณสามารถกดปุ่มค้างไว้ ซึ่งจะเป็นประโยชน์สำหรับการสร้างแป้นพิมพ์มาโคร ตัวอย่างที่แสดงที่นี่มีไว้สำหรับ Ctrl + Alt + Delete
bleKeyboard.press(KEY_LEFT_CTRL);
bleKeyboard.press(KEY_LEFT_ALT);
bleKeyboard.press (KEY_DELETE);
จากนั้นจะเรียก releaseAll ซึ่งคุณสามารถเดาได้จากชื่อที่จะปล่อยปุ่มที่กดทั้งหมด
bleKeyboard.releaseAll();
คุณยังสามารถปล่อยคีย์เฉพาะได้หากต้องการโดยใช้คำสั่ง release กับคีย์ที่คุณต้องการปล่อย
bleKeyboard.release(KEY_DELETE);
ขั้นตอนที่ 5: เคล็ดลับอื่นๆ สำหรับห้องสมุด
เราได้กล่าวถึงฟังก์ชันหลักของห้องสมุดในขั้นตอนที่แล้ว แต่ต่อไปนี้คือสิ่งพิเศษบางอย่างที่ฉันคิดว่าอาจเป็นประโยชน์ที่จะรู้
ใช้ทริกเกอร์ภายนอก
วิธีที่ดีที่สุดคือการควบคุมอุปกรณ์ HID แบบนี้โดยใช้ทริกเกอร์ภายนอก เช่น การกดปุ่ม หากคุณใช้ตัวจับเวลาและมีบางอย่างผิดปกติ อาจทำให้การตัดการเชื่อมต่อไม่สะดวก ลองนึกภาพว่าคุณต้องลองปิด Bluetooth หากคุณตั้งโปรแกรมให้กด Ctrl+Alt+Del ทุก ๆ 100mS โดยไม่ได้ตั้งใจ!
เปลี่ยนชื่อเครื่อง
ตามค่าเริ่มต้น ชื่ออุปกรณ์จะแสดงเป็น "ESP32 BLE Keyboard" ซึ่งสามารถเปลี่ยนแปลงได้เมื่อคุณสร้างอินสแตนซ์ของไลบรารี คุณสามารถตั้งชื่ออุปกรณ์ ผู้ผลิต และระดับแบตเตอรี่เริ่มต้นได้
BleKeyboard bleKeyboard("ชื่ออุปกรณ์บลูทูธ", "ผู้ผลิตอุปกรณ์บลูทูธ", 100);
การตั้งค่าระดับแบตเตอรี่ (อย่างน้อยก็ใช้งานไม่ได้สำหรับฉัน)
ห้องสมุดอ้างว่าคุณสามารถตั้งค่าระดับแบตเตอรี่ได้ แต่มันใช้ไม่ได้กับฉันบนพีซี Windows ของฉัน (มันอยู่กับค่าเริ่มต้นอะไรก็ตาม) และโทรศัพท์ Android ของฉันไม่แสดงระดับของมันทั้งหมด นี่คือคำสั่งสำหรับมันในกรณีที่มันเหมาะกับคุณ
bleKeyboard.setBatteryLevel(50)
ความเข้ากันได้ของอุปกรณ์
ฉันรันตัวอย่างได้สำเร็จบนพีซี Windows 10 โทรศัพท์ Android และ Mac ของฉัน (แม้ว่าจะยังใช้งาน Sierra อยู่ก็ตาม!)
นอกจากนี้ยังสามารถเชื่อมต่อกับอุปกรณ์ได้ครั้งละหนึ่งเครื่องเท่านั้น
การแก้ไขปัญหาการจับคู่
หากคุณประสบปัญหาในการจับคู่ ให้ลองรีสตาร์ท ESP32 ขณะที่อุปกรณ์ของคุณกำลังค้นหา ครั้งหนึ่งฉันเคยต้องเปิดและปิดบลูทูธบนพีซีเพื่อจับคู่
ขั้นตอนที่ 6: แป้นมาโคร
ตอนนี้เรามีพื้นฐานหมดแล้ว มาทำอะไรที่เป็นประโยชน์กับมันกันเถอะ!
ในคู่มือก่อนหน้านี้ ฉันแสดงวิธีสร้างแป้นมาโครที่ง่ายที่สุดจาก Arduino pro Micro และแป้นพิมพ์ราคาถูก สำหรับแต่ละปุ่มบนแป้นพิมพ์ จะส่งปุ่มที่แตกต่างกันออกไป ซึ่งสามารถใช้เพื่อควบคุมแอปพลิเคชัน โดยส่วนตัวแล้วฉันใช้สำหรับ OBS ซอฟต์แวร์ที่ฉันใช้สำหรับการบันทึกวิดีโอ และสำหรับเมื่อฉันสตรีม ดูเหมือนว่าจะเป็นโครงการที่ดีในการพอร์ต ESP32 เพื่อให้เราสามารถสร้างเวอร์ชันไร้สายได้
สำหรับงานสร้างนี้ ฉันจะใช้บอร์ด TinyPICO ESP32 ของ Unexpected Maker เหตุผลหลักในการเลือกบอร์ดนี้คือบอร์ดที่ประหยัดพลังงานมาก และมีวงจรสำหรับวิ่งออกและชาร์จแบตเตอรี่ Lipo ในตัว สิ่งที่ฉันต้องทำคือเสียบแบตเตอรี่เข้าไป
ฉันจะโกหกถ้ามันมีระยะห่างแถวเดียวกับ Pro Micro และฉันสามารถใช้ประโยชน์จากกระดานฝ่าวงล้อมที่ฉันทำไว้ก่อนหน้านี้ก็ไม่น่าสนใจเช่นกัน!
แป้นพิมพ์ต้องใช้พิน GPIO 8 พินจึงจะใช้งานได้ และ TinyPICO มีพิน GPIO 8 อันติดต่อกัน ดังนั้นเราจะใช้พวกมัน คุณสามารถเชื่อมต่อปุ่มกดกับ TinyPICO อย่างง่ายดังที่แสดงในภาพด้านบน
ขั้นตอนที่ 7: รหัสสำหรับ Macro Keypad
รหัสสำหรับร่าง Macro Keypad สามารถพบได้ใน Github ของฉัน
เช่นเดียวกับไลบรารี BleKeyboard ที่ติดตั้งในขั้นตอนก่อนหน้า คุณจะต้องติดตั้งไลบรารีสำหรับแป้นพิมพ์ด้วย ซึ่งทำได้โดยเปิดตัวจัดการไลบรารีโดยไปที่ Sketch -> Include Library -> Manage Libraries
ภายในตัวจัดการห้องสมุด ค้นหา "ปุ่มกด" และติดตั้งโดย Mark Stanley และ Alexander Brevig
การกำหนดค่าหนึ่งอย่างที่คุณอาจต้องทำหากคุณใช้ ESP32 ที่แตกต่างจาก TinyPICO คือพินของปุ่มกด ซึ่งถูกตั้งค่าในแถว rowPins และ colPins array เมื่อมองที่ด้านหน้าของแป้นกดและเริ่มจากด้านซ้าย หมุด 4 อันแรกคือหมุดแถว และ 4 หมุดที่สองคือหมุดโคล
เมื่อเสร็จแล้ว ให้อัปโหลดโค้ดไปที่บอร์ด และคุณควรทดสอบในขั้นตอนนี้ว่ามันใช้งานได้
ขั้นตอนที่ 8: มาทำให้มันไร้สายกันเถอะ
ดังที่ได้กล่าวไว้ก่อนหน้านี้ TinyPICO มีวงจรสำหรับจัดการกับ Lipo ในตัว ดังนั้นสิ่งที่เราต้องทำคือเชื่อมต่อ มันมาพร้อมกับตัวเชื่อมต่อ JST ที่สามารถบัดกรีไปที่ด้านล่าง หรือคุณสามารถใช้หมุด Bat และ GND หากคุณต้องการทำผ่านหมุด
หากคุณกำลังใช้ตัวเชื่อมต่อ JST โปรดตรวจสอบอีกครั้งว่าขั้วของแบตเตอรี่ของคุณตรงกับ TinyPICO ไม่มีมาตรฐานสำหรับวิธีการต่อสายเหล่านี้ มีโอกาสสูงที่แบตเตอรี่ของคุณจะไม่ตรงกัน
ตรวจสอบแรงดันไฟฟ้าของแบตเตอรี่ lipo ของคุณก่อนใช้งาน แป้งที่ดีต่อสุขภาพควรเป็น 3V หรือสูงกว่า แบตเตอรี่ที่ฉันพบด้วยตัวเชื่อมต่อ JST ที่ถูกต้องคือ 0V!
ฉันลงเอยด้วยการใช้เซลล์ 18650 ในที่ยึดและบัดกรีกับขั้วต่อ JST ของแบตเตอรี่ที่ตายแล้ว
TinyPICO ช่วยลดการใช้พลังงานเมื่อแบตเตอรี่หมดโดยไม่ได้เปิดไฟ LED ใดๆ ของมัน ดังนั้นแม้ว่าจะไม่ได้มองแต่ก็หวังว่าจะเป็นเช่นนั้น! การปรับปรุงในอนาคตของโปรเจ็กต์อาจเป็นการพัลส์ LED dotstar ออนบอร์ดเมื่อเริ่มต้นเพื่อให้คุณรู้ว่ามันเปิดอยู่จริง ๆ และอาจจะอีกครั้งเมื่อเชื่อมต่อ สำหรับตอนนี้ คุณสามารถตรวจสอบในระบบของคุณ เมนู Bluetooth ที่เปิดและเชื่อมต่อได้
ขั้นตอนที่ 9: ทดสอบเลย
มาทดสอบกัน ถ้าฉันเปิดส่วนฮ็อตคีย์ของ OBS ฉันสามารถคลิกการกระทำต่างๆ เพื่อบันทึกการรวมกันของปุ่มที่จะควบคุมมันได้ สำหรับสิ่งนี้ เราสามารถคลิกที่ปุ่มบนปุ่มกดของเราแล้วมันจะอัปเดต
หลังจากที่คุณคลิกนำไปใช้ คุณจะไม่สามารถใช้ปุ่มกดเพื่อควบคุมฉากใน OBS ได้
ขั้นตอนที่ 10: ขอบคุณสำหรับการอ่าน
หวังว่าคุณจะพบว่าคำแนะนำนี้มีประโยชน์ ฉันชอบที่จะได้ยินเกี่ยวกับสิ่งที่คุณจะทำกับการตั้งค่าประเภทนี้ โปรดแจ้งให้เราทราบในความคิดเห็นด้านล่าง หรือเข้าร่วมกับฉันและผู้ผลิตรายอื่นๆ บนเซิร์ฟเวอร์ Discord ของฉัน ที่ซึ่งเราสามารถพูดคุยเกี่ยวกับหัวข้อนี้หรือผู้ผลิตรายอื่นที่เกี่ยวข้องกับสิ่งที่คุณมี ผู้คนช่วยเหลือดีมากที่นั่น เป็นสถานที่ที่ดีในการแขวน ออก
ฉันยังอยากจะขอบคุณมากสำหรับผู้สนับสนุน Github ของฉันที่ช่วยสนับสนุนสิ่งที่ฉันทำ ฉันรู้สึกซาบซึ้งจริงๆ หากคุณไม่ทราบ Github กำลังจับคู่การสนับสนุนสำหรับปีแรก ดังนั้นหากคุณเป็นผู้สนับสนุน พวกเขาจะจับคู่ 100% ในอีกไม่กี่เดือนข้างหน้า
ขอบคุณที่อ่าน!
แนะนำ:
Arduino Mechanical Keypad: 5 ขั้นตอน (พร้อมรูปภาพ)
Arduino Mechanical Keypad: ฉันต้องการพินแพดสำหรับโปรเจ็กต์อื่น ดังนั้นฉันจึงตัดสินใจทำปุ่มกดที่มีชิ้นส่วนที่บ้าน
บทช่วยสอน Arduino Keypad 4x4: 4 ขั้นตอน (พร้อมรูปภาพ)
บทช่วยสอน Arduino Keypad 4x4: การป้อนข้อมูลด้วยปุ่มกดแสดงบนจอภาพอนุกรมด้วยรหัสเต็มของปุ่มกด Arduino uno และ 4x4
Lego 4x4 Keypad Matrix: 8 ขั้นตอน (พร้อมรูปภาพ)
Lego 4x4 Keypad Matrix: ในขณะที่ฉันติดอยู่ในบ้านในช่วงสองสามสัปดาห์ที่ผ่านมา ในที่สุดฉันก็ได้ทำโปรเจ็กต์ที่วนเวียนอยู่ในหัวจนเสร็จ ฉันใช้ Lego เป็นพื้นฐานสำหรับโครงการส่วนใหญ่ของฉันในช่วงสองสามสัปดาห์ที่ผ่านมา
Custom Macro Mechanical Keypad: 12 ขั้นตอน (พร้อมรูปภาพ)
Custom Macro Mechanical Keypad: ในคำแนะนำนี้ ฉันจะนำคุณผ่านพื้นฐานการสร้างมาโครแพด 6 คีย์ของคุณเอง ซึ่งควบคุมโดย Arduino ฉันจะพาคุณผ่านสิ่งที่คุณต้องการ วิธีการประกอบ วิธีการตั้งโปรแกรม และวิธีปรับปรุงหรือทำให้เป็นของคุณเอง
DIY LCD Keypad Shield สำหรับ Arduino Uno: 6 ขั้นตอน (พร้อมรูปภาพ)
DIY LCD Keypad Shield สำหรับ Arduino Uno: ฉันค้นหาจำนวนมากเพื่อสร้าง DIY LCD Keypad shield และฉันไม่พบเลยดังนั้นฉันจึงสร้างมันขึ้นมาและต้องการแบ่งปันกับพวกคุณ