เมื่อตอนที่ฉันยังเด็ก ฉันอยากมีช่างเลโก้มาประดิษฐ์ของเจ๋งๆ อยู่เสมอ รถถังอัตโนมัติพร้อมป้อมปืนหมุนที่ยิงอิฐเลโก้ แต่แล้วฉันก็ไม่มีชุดดังกล่าว
และไม่มีแม้แต่ตัวต่อเลโก้ธรรมดาด้วยซ้ำ ฉันมีเพียงเพื่อนคนหนึ่งที่น้องชายของเขามีของเล่นราคาแพงพวกนี้
และตอนนี้ฉันมีลูกชายวัยนั้นแล้ว และเขาสร้างรถถังที่ ... ไปข้างหน้าอย่างโง่เขลาจนชนเข้ากับกำแพง 🙂
และตอนนี้ก็ถึงเวลาสำหรับ ESP32 และความมหัศจรรย์ของหัวแร้ง - มาประกอบรีโมทคอนโทรลที่เหมาะสมสำหรับพวกเขากันเถอะ!
ไม่ แน่นอน ฉันรู้เกี่ยวกับการมีอยู่ของรีโมทดังกล่าว แต่ไม่มีสิ่งใดที่เหมาะกับฉันอย่างสมบูรณ์แบบ เป็นอินฟราเรดที่มีเทคโนโลยียุค 80 หรือมีขนาดใหญ่เกินไป หรือของแพงๆ และที่สำคัญที่สุด ฉันไม่สามารถบอกลูกชายเกี่ยวกับเรื่องเหล่านี้ได้: “ฉันทำเพื่อคุณโดยเฉพาะ!”
ดังนั้นมาสร้างรีโมตคอนโทรลที่ได้รับการปรับปรุงใหม่เพื่อควบคุมทุกคนกันเถอะ!
ส่วนผสม:
- ESP32-WROOM-32D | WiFi, BLE และโปรเซสเซอร์พร้อม I/O - เพียงพอที่จะควบคุมสองตัว
มอเตอร์ иนำ . - DRV8833 | สะพาน H สองเท่าที่มีกำลังเพียงพอสำหรับมอเตอร์
- TPS62162 | ลดแรงดันไฟฟ้าลงเหลือ 17V เพื่อความสนุกสนานเมื่อบัดกรีเคส WSON-8 2x2 มม
- CP2104 | สำหรับการเขียนโปรแกรม ESP32
-
การเชื่อมต่อ สำหรับเชื่อมต่อมอเตอร์และไดโอด ตัดสายไฟและบัดกรีที่ด้านล่างแล้วกาวขั้วต่อเลโก้ที่ด้านบน
ทั้งหมดนี้จะถูกวางไว้บนกระดานที่ค่อนข้างเล็ก - นี่คือลักษณะที่ปรากฏในตัวแก้ไข EasyEDA:
สายไฟซึ่งมองเห็นได้ในภาพชื่อเรื่องนั้นไม่จำเป็นสำหรับการแก้ไขข้อผิดพลาดบางอย่าง แต่เพื่อจ่ายไฟจาก USB อาจจะไม่เพียงพอสำหรับมอเตอร์ แต่น่าเสียดายที่การติดต่อจากจีนยังไม่มาหาฉัน ดังนั้นฉันจึงตรวจสอบการทำงานของ LED ก่อน เพื่อความสวยงามของภาพ ผมแค่ติดคอนเนคเตอร์จากมอเตอร์ไว้บนบอร์ดครับ
บอร์ดของฉันเวอร์ชัน 1.1 (ต่างจากเวอร์ชัน 1.2 ที่มีอยู่แล้วใน EasyEDA) ไม่มี LED ดังนั้นฉันจึงบัดกรีไดโอดต่อต้านขนานสองตัวเข้ากับเอาต์พุตเพื่อที่ฉันจะได้เห็นว่าเกิดอะไรขึ้น หากมองอย่างใกล้ชิด วิดีโอจะแสดงสวิตช์เปิดของไดโอด 0603 คู่หนึ่ง ซึ่งระบุการเคลื่อนที่ไปข้างหน้า/ข้างหลัง
สำหรับรีโมทคอนโทรลในตอนแรกฉันแค่อยากประกอบบอร์ดเพิ่มเติมพร้อมปุ่มและ ESP32 อีกอันซึ่งเป็นรีโมทคอนโทรลแบบคลาสสิก
อย่างไรก็ตาม ฉันจำได้ว่า Steam Controller มีโหมดการทำงานของ Bluetooth Low Energy (BLE) ฉันตัดสินใจที่จะจัดการกับปัญหานี้ และหลังจากนั้นไม่กี่ชั่วโมง ฉันก็เรียนรู้วิธีรับแพ็กเก็ตจากคอนโทรลเลอร์
ในการดำเนินการนี้ คุณเพียงแค่ต้องค้นหาอุปกรณ์ HID ที่เรียกตัวเองว่า SteamController และเชื่อมต่อกับอุปกรณ์นั้น จากนั้นใช้บริการที่ไม่มีเอกสารจาก Valve และอีกสองสามราย
ฉันยังพบรูปแบบรายงานที่ไม่มีเอกสารซึ่งฉันแยกวิเคราะห์ด้วยตนเอง
หลังจากผ่านไปประมาณหนึ่งชั่วโมง ความหมายของแฟล็กและค่าต่างๆ ก็ชัดเจนสำหรับฉัน และฉันก็จัดการให้ไฟ LED กะพริบโดยใช้ Steam controller และ ESP32 ลาก_(ツ)_/¯
ไฟล์
- แผนผังและ PCB บน EasyEDA
easyeda.com/EFS-GH/legoremote - แหล่งที่มาสำหรับ Arduino:
github.com/g3gg0/LegoRemote
v1.0: "แนวทางการทดลอง"
- ตัวเลือกแรกที่ฉันเลือกตัวควบคุมแรงดันไฟฟ้าผิด TPS62291 รับแรงดันไฟฟ้าสูงสุดที่ 6V เท่านั้น ฉันกำลังพัฒนาหลายโครงการแบบขนานและฉันลืมไปว่าอุปกรณ์ต้องทำงานกับ 9V
v1.1: "ดีพอแล้ว"
- ตัวเลือกนี้มองเห็นได้ในวิดีโอและทุกอย่างใช้งานได้
v1.2: "สุดท้าย"
- เพิ่มไฟ LED แสดงสถานะที่เอาต์พุตและปรับขนาดและเค้าโครงของบอร์ดให้เหมาะสม
วิดีโอสั้นต่อไปนี้แสดงเฟสการเชื่อมต่อ (1-3 วินาทีหลังจากเปิดเครื่อง) และการควบคุมเอาท์พุตของมอเตอร์ ขั้วต่อจาก Lego ยังไม่ได้เชื่อมต่อ มันจะไปที่พื้นที่ว่างข้างขั้วต่ออื่นๆ โดยมีสี่เหลี่ยมสีขาวกำกับไว้
ตอนนี้ลูกชายของฉันใช้คอนโทรลเลอร์นี้เป็นประจำเพื่อควบคุมเครื่องจักรที่เขาประกอบไว้
ในระหว่างการทดสอบความเครียด ฉันพบปัญหาเดียว: ฉันคิดว่าโหมด "สลายเร็ว" (สลายอย่างรวดเร็ว) ของตัวขับมอเตอร์จะทำงานได้ดีที่สุด แต่ด้วยเหตุนี้ หลังจากทำงานไม่กี่วินาที ความเร็วของมอเตอร์จึงลดลงอย่างมาก . เลยเปลี่ยนโค้ดมาใช้คำว่า "สลายช้า" [สลายช้า]
ขณะที่ฉันไม่แน่ใจว่า DRV ทำงานอย่างไร และเหตุใดมอเตอร์จึงหมุนเร็วในตอนแรก และหลังจากนั้น 10 วินาทีก็เริ่มค่อยๆ ช้าลง บางที MOSFET อาจร้อนขึ้นและความต้านทานของพวกมันก็เพิ่มขึ้นมากเกินไป
ฉันหวังว่าตัวอย่างวิธีใช้ Arduino นี้จะสร้างแรงบันดาลใจให้ผู้อื่นได้อย่างง่ายดาย และช่วยให้พวกเขาแนะนำอุปกรณ์อิเล็กทรอนิกส์ให้บุตรหลานได้
ที่มา: will.com