สารบัญ:

รีโมท Bluetooth ไม้สำหรับรถไฟ Lego Duplo: 3 ขั้นตอน (พร้อมรูปภาพ)
รีโมท Bluetooth ไม้สำหรับรถไฟ Lego Duplo: 3 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: รีโมท Bluetooth ไม้สำหรับรถไฟ Lego Duplo: 3 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: รีโมท Bluetooth ไม้สำหรับรถไฟ Lego Duplo: 3 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Lego City 60197 Passenger Train with Powered Up App 2024, พฤศจิกายน
Anonim
รีโมท Bluetooth ไม้สำหรับ Lego Duplo Train
รีโมท Bluetooth ไม้สำหรับ Lego Duplo Train
รีโมทบลูทูธไม้สำหรับ Lego Duplo Train
รีโมทบลูทูธไม้สำหรับ Lego Duplo Train

ลูกๆ ของฉันชอบรถไฟ Lego Duplo ตัวน้อยนี้มาก โดยเฉพาะน้องคนสุดท้องที่มีปัญหาในการสื่อสารตัวเองด้วยคำพูด ดังนั้นฉันจึงต้องการสร้างสิ่งที่จะช่วยให้เธอเล่นกับรถไฟได้โดยไม่ขึ้นกับผู้ใหญ่หรือโทรศัพท์/แท็บเล็ต สิ่งที่จะเพิ่มมิติพิเศษให้กับรถไฟและให้มูลค่าการเล่นเพิ่มขึ้น

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

นี่คือรีวิวรถไฟฉบับเต็ม

หลังจากค้นหาข้อมูลบนอินเทอร์เน็ต ฉันพบว่ามีคนไม่กี่คนที่พร้อมเขียนโค้ดเพื่อควบคุมรถไฟ โหนด 'Poweredup' ที่เขียนโดย nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) ดูเหมือนเป็นการเริ่มต้นที่สมบูรณ์แบบ มันเขียนโดยใช้ Javascript ซึ่งฉันไม่คุ้นเคยบางส่วน แต่คิดว่าถ้าฉัน สามารถหาไมโครชิปที่ใช้จาวาได้ นี่จะเป็นการเริ่มต้นที่ดี

อีกครั้งหลังจากค้นหาบนอินเทอร์เน็ตอีกครั้ง ฉันพบระบบ espruino ซึ่งคล้ายกับ ardiuno แต่มีพื้นฐานมาจากจาวาสคริปต์ สามารถโหลดรหัส espriuno ลงใน MDBT42Q mircochip ที่มีการฝังบลูทูธ ฉันคิดว่าถ้าฉันสามารถโหลดโมดูล "เพิ่มพลัง" ลงไปได้ ฉันจะไปถึงครึ่งทางแล้ว อย่างไรก็ตาม ความเรียบง่ายนี้ไม่ใช่กรณีที่โมดูลประกอบด้วยไลบรารีจำนวนมากจนถึงขนาดใหญ่เพื่อโหลดบน MDBT42Q ดังนั้น ดูเหมือนว่าฉันต้อง หาทางออกที่ง่ายกว่า ….

ขั้นตอนที่ 1: รหัส

รหัส
รหัส

Esprinuo

สำหรับผู้ที่ไม่รู้จักแพลตฟอร์ม Espruino https://www.espruino.com (และฉันไม่รู้) มันคล้ายกับ Arduino มากไหม มีข้อแตกต่างหลักบางประการที่เขียนขึ้นสำหรับ javascript มากกว่า c รู้สึกใหม่กว่าเล็กน้อย ดังนั้นจึงไม่มีตัวอย่าง อย่างไรก็ตาม การสนับสนุนผ่านฟอรัมนั้นยอดเยี่ยมและมีประโยชน์มาก

Javascript พบกับรถไฟ

อุปสรรคแรกคือการเชื่อมต่อกับรถไฟผ่านบลูทูธ ซึ่งสามารถทำได้โดยใช้คลาส NRF ที่มาพร้อมกับรหัส espruino

NRF.connect สามารถใช้เชื่อมต่อกับรถไฟได้ อย่างไรก็ตาม คุณต้องค้นหาที่อยู่ของรถไฟก่อน คุณสามารถใช้ NRF.findDevices เพื่อรับข้อมูลนี้

เมื่อคุณทำสิ่งนี้เสร็จแล้ว คุณจะต้องส่งค่ารถไฟสองค่าเพื่อจับมือกับรถไฟ สำหรับรถไฟของฉันนี่คือ "00001623-1212-efde-1623-785feabcd123" ตามด้วย "00001624-1212-efde-1623-785feabcd123" ฉันเชื่อว่า ชุดนี้จะเหมือนกันสำหรับชุดรถไฟไอน้ำทั้งหมด แต่รุ่นอื่นๆ เช่น ชุดบรรทุกอาจแตกต่างกัน

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

NRF.connect("e0:7d:ea:0c:03:29") จากนั้น (ฟังก์ชัน(g) {

console.log("กำลังเริ่มการเชื่อมต่อ2"); กัต = ก.; ส่งคืน gatt.getPrimaryService("00001623-1212-efde-1623-785feabcd123"); }). จากนั้น (ฟังก์ชัน (บริการ) { ส่งคืน service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123"); }). จากนั้น (ฟังก์ชัน (ลักษณะเฉพาะ) { Characteristic_store = ลักษณะเฉพาะ; ส่งคืน character.readValue (); }).then(value => { console.log(value); }).then(function() { console.log("Train Connected"); เชื่อมต่อ = 1;

เรื่องสนุก

ตอนนี้คุณเชื่อมต่อกับรถไฟแล้ว ก็ถึงเวลาสนุกไปกับกิจกรรมสนุกๆ เช่น การเคลื่อนขบวนไปข้างหน้า สร้างเสียง และเปิดและปิดไฟ เป็นงานง่าย ๆ ในการส่งค่าเตรียมการรถไฟ ตามด้วยคำสั่งจริง ie

ฟังก์ชั่น play_horn () {

console.log("message = ", Characteristic_store); const prepval = Uint8Array ใหม่ ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = Uint8Array ใหม่ ([0x08, 0x00, 0x81, 0x01, 0x11, 0x51, 0x01, 0x09]); Characteristic_store.writeValue (prepval).then (_ => { Characteristic_store.writeValue (sendvalue); }); }); }; }

คุณอาจต้องทำการขุดค้นเล็กน้อยเพื่อค้นหาคำสั่งอื่นที่ไม่ใช่คำสั่งที่ฉันใช้

ปุ่มและคันโยก

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

ปุ่มไม่ต้องการตัวต้านทานแบบดึงขึ้นแทนคุณสามารถทำได้ในโค้ดเช่น

pinMode(D15, 'input_pulldown');

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

การอ่าน var = analogRead (D31);

ข้อแตกต่างอื่น ๆ ของ Arduino คือ esprunio ไม่มีการตั้งค่าและวนซ้ำ ดังนั้นฉันจึงวางคำสั่ง/ทริกเกอร์ที่แยกจากกันทั้งหมดลงในฟังก์ชัน แล้วตั้งค่า setInterval ที่วนซ้ำทุกๆ 100 มิลลิวินาที ฟังปุ่มแล้วเรียกใช้ฟังก์ชันที่จำเป็นเมื่อกดปุ่ม

ถ้า (digitalRead (D15) == 1) { play_horn (); }

การบังคับคันโยกนั้นซับซ้อนกว่าเล็กน้อยเนื่องจากต้องการจะปรับความเร็วทีละน้อย ดังนั้นก่อนอื่นผมต้องส่งค่าแอนะล็อกให้ทำงาน

การอ่าน var = analogRead (D31);

train_direction(การอ่าน * 1024);

จากนั้นในฟังก์ชัน train_direction ฉันแบ่งคำสั่งออกเป็น 6 ส่วนที่เพิ่มขึ้นตามค่า pot

ขึ้นสุดบอกรถไฟให้เดินหน้าเต็มที่

ขึ้นครึ่งทางบอกให้รถไฟเดินหน้าด้วยความเร็ว 50%

กลางบอกให้รถไฟหยุด

ลงครึ่งทางบอกให้รถไฟถอยหลังด้วยความเร็ว 50%

ลงไปสุดทางบอกให้รถไฟวิ่งกลับเต็มความเร็ว

เช่น

ฟังก์ชัน train_direction (dir_val) {

//console.log("message = ", Characteristic_store); const prepval = Uint8Array ใหม่ ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = Uint8Array ใหม่ ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); ถ้า (dir_val > 300 && dir_val 400 && dir_val 500) { const sendvalue = ใหม่ Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } ถ้า (dir_val 200) { const sendvalue = ใหม่ Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) { const sendvalue = ใหม่ Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } ถ้า (dir_val { Characteristic_store.writeValue (sendvalue); }); }

รหัสเต็มสามารถลงลิงค์ด้านล่าง

ขั้นตอนที่ 2: การเดินสายไฟ

การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ
การเดินสายไฟ

การเดินสายไฟเป็นส่วนที่ง่ายที่สุด

มันประกอบด้วยปุ่มกด 4 ปุ่มที่เชื่อมต่อกับ D15, D16, D17 และ D18 โดยไม่มีตัวต้านทานแบบดึงขึ้นเนื่องจากทำในโค้ดและตัวต้านทาน 1 10k 1 ตัวที่เชื่อมต่อกับ D31

ฉันยังคงทำงานกับแหล่งจ่ายไฟ แต่ขณะนี้พลังงานทั้งหมดมาจากการฝ่าวงล้อม micro usb และสามารถเชื่อมต่อโดยตรงกับธนาคารพลังงานหรือพอร์ต USB

ขั้นตอนที่ 3: การสร้าง

The Build
The Build
The Build
The Build
The Build
The Build
The Build
The Build

รีโมทส่วนใหญ่เป็นไม้อัด A4 ขนาด 3 มม. 6 มม. หรือ 9 มม. พวกเขาตัดด้วยเครื่อง CNC ของฉัน แต่ใช้เทมเพลตที่ฉันจะทำแม้ว่ามันจะไม่สามารถทำได้ด้วยมือ

ฉันหวังว่าเทมเพลตและรูปถ่ายจะให้ทุกสิ่งที่คุณต้องการในการสร้างใหม่ แต่มีโน้ตสองสามตัวที่อาจช่วยได้

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

ปุ่มขนาด 9 มม. ต้องใช้โลโก้ของสี การแกะสลัก หรืออย่างอื่นเพื่อแสดงปุ่มอะไรทำหน้าที่

ก้าน/ที่จับจะต้องถูกจัดเป็นชั้นๆ ฉันใช้เดือยขนาด 6 มม. เพื่อช่วยจัดตำแหน่งให้อยู่ในตำแหน่งที่ถูกต้องทั้งหมด

แนะนำ: