สารบัญ:
วีดีโอ: รีโมท Bluetooth ไม้สำหรับรถไฟ Lego Duplo: 3 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
ลูกๆ ของฉันชอบรถไฟ 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: การสร้าง
รีโมทส่วนใหญ่เป็นไม้อัด A4 ขนาด 3 มม. 6 มม. หรือ 9 มม. พวกเขาตัดด้วยเครื่อง CNC ของฉัน แต่ใช้เทมเพลตที่ฉันจะทำแม้ว่ามันจะไม่สามารถทำได้ด้วยมือ
ฉันหวังว่าเทมเพลตและรูปถ่ายจะให้ทุกสิ่งที่คุณต้องการในการสร้างใหม่ แต่มีโน้ตสองสามตัวที่อาจช่วยได้
ตัวยึดปุ่มกดขนาด 3 มม. ใช้สำหรับติดปุ่มกด ช่องว่างจะจัดตำแหน่งปุ่มให้อยู่ในตำแหน่งที่ถูกต้อง แต่เราอนุญาตให้คุณเข้าถึงขาที่ด้านหลังเพื่อให้คุณสามารถประสานกับไมโครชิป ที่ด้านหลัง คุณยังสามารถติดตั้ง MDBT42Q ได้ โดยใช้กาว ด้านหน้าคุณจะต้องเพิ่มโฟมเพื่อให้ปุ่มกระดอนเล็กน้อยเมื่อคุณกดลง คุณสามารถใช้สปริงได้เช่นกัน
ปุ่มขนาด 9 มม. ต้องใช้โลโก้ของสี การแกะสลัก หรืออย่างอื่นเพื่อแสดงปุ่มอะไรทำหน้าที่
ก้าน/ที่จับจะต้องถูกจัดเป็นชั้นๆ ฉันใช้เดือยขนาด 6 มม. เพื่อช่วยจัดตำแหน่งให้อยู่ในตำแหน่งที่ถูกต้องทั้งหมด
แนะนำ:
รีโมท Servo Dropper สำหรับ Drone Fishing Super Neat: 7 ขั้นตอน
Remote Servo Dropper สำหรับ Drone Fishing Super Neat: นี่คือวิธีที่ฉันสร้างเซอร์โวหยดเล็ก ๆ น้อย ๆ ที่ยอดเยี่ยมอย่างรวดเร็วจากชิ้นส่วนที่ฉันได้นอนอยู่รอบ ๆ สิ่งนี้จะเหมาะสำหรับการตกปลาด้วยโดรน ทิ้งสิ่งของแบบสุ่มด้วยโดรนของคุณเพื่อความสนุกสนานเช่นการกินของว่างให้เพื่อน ๆ และวางน้ำ บอลลูนกับพวกเขา
รีโมท Arduino ที่ปลอดภัย: 5 ขั้นตอน
Secure Arduino Remote: นี่คือตัวอย่างวิธีการสร้างรีโมทไร้สาย (โรงรถ) ที่ปลอดภัยเป็นพิเศษ โดยปกติรีโมทจะมีรหัสการรักษาความปลอดภัยแบบโรลลิ่งโค้ด ซึ่งสามารถข้ามได้โดยโจรขั้นสูง ระบบระยะไกลนี้อาศัยการใช้คีย์ 16 ไบต์ ดังนั้น การแฮ็คเข้าไปจะเป็น ac
รีโมท IR ที่ควบคุมโดย Amazon Echo: 11 ขั้นตอน (พร้อมรูปภาพ)
รีโมท IR ที่ควบคุมโดย Amazon Echo: ระบบ Amazon Echo สามารถควบคุมหลาย ๆ ด้านของบ้านอัจฉริยะ แต่เต้ารับอัจฉริยะสามารถปิดและเปิดได้เท่านั้น อุปกรณ์จำนวนมากไม่ได้เปิดขึ้นทันทีโดยเสียบปลั๊กง่ายๆ และต้องการขั้นตอนเพิ่มเติม เช่น การกดปุ่มบนรีโมทหรือ
รีโมท Bluetooth "Retro Future": 9 ขั้นตอน (พร้อมรูปภาพ)
"อนาคตย้อนยุค" รีโมทบลูทูธ: ฉันชอบรูปลักษณ์ของ "โลกแห่งอนาคต" เราถูกนำเสนอในนิยายวิทยาศาสตร์และผลิตภัณฑ์แนวความคิดในช่วงกลางศตวรรษ โอเค นั่นไม่เป็นความจริง เมื่อฉันยังเด็ก ฉันคิดว่า Tricoders ใน Star Trek นั้นน่าเกลียดและเงอะงะ แต่ท
รีโมท iPod แบบถอดได้ 10 นาที: 6 ขั้นตอน (พร้อมรูปภาพ)
รีโมท iPod แบบถอดได้ 10 นาที: มีโปรเจ็กต์การควบคุมระยะไกลสำหรับ iPod ที่ยอดเยี่ยมมากมาย: บางโปรเจ็กต์มีปุ่มธรรมดา บางอันตอบสนองต่อ การเต้นของหัวใจหรือการเคลื่อนไหวของร่างกาย และอื่นๆ ได้รับการออกแบบเพื่อเชื่อมต่อโดยตรงกับซอฟต์แวร์ที่ทำงานบนคอมพิวเตอร์ อย่างไรก็ตาม ไม่ใช่หนึ่งในนั้น