תוכן עניינים:

שלט Bluetooth מעץ לרכבת לגו דופלו: 3 שלבים (עם תמונות)
שלט Bluetooth מעץ לרכבת לגו דופלו: 3 שלבים (עם תמונות)

וִידֵאוֹ: שלט Bluetooth מעץ לרכבת לגו דופלו: 3 שלבים (עם תמונות)

וִידֵאוֹ: שלט Bluetooth מעץ לרכבת לגו דופלו: 3 שלבים (עם תמונות)
וִידֵאוֹ: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, נוֹבֶמבֶּר
Anonim
שלט בלוטות 'מעץ לרכבת לגו דופלו
שלט בלוטות 'מעץ לרכבת לגו דופלו
שלט בלוטות 'מעץ לרכבת לגו דופלו
שלט בלוטות 'מעץ לרכבת לגו דופלו

הילדים שלי אהבו את רכבת הלגו הדופלו הקטנה במיוחד את הצעיר שלי שנאבק לתקשר עם מילים ולכן רציתי לבנות לה משהו שיעזור לה לשחק עם הרכבת ללא תלות במבוגרים או בטלפונים/טאבלטים. משהו שיוסיף מימד נוסף לרכבת וייתן לה ערך משחק נוסף

לסט הלגו כבר יש מעט דרכים לשלוט ברכבת, אתה יכול לדחוף אותה קדימה כדי להתחיל ולהחזיק אותה כדי לעצור אותה, אתה יכול לשלוט בה באמצעות תגי צבע שעולים על המסילה, כך שכאשר הרכבת עוברת אותה היא גורמת לפעולות שונות כלומר קדימה, אחורה, צלילי השמעה מדליקים את האורות. תוכל גם להוריד אפליקציה עבורך לטלפון או לטאבלט שתוכל להתחבר לרכבת באמצעות בלוטות '.

הנה סקירה מלאה של הרכבת

לאחר שחיפשתי באינטרנט גיליתי שיש לא מעט אנשים שונים שכולם היו מוכנים לכתוב קוד כדי לשלוט ברכבת. הצומת 'Poweredup' שנכתב על ידי nathan.kellenicki (https://nathan.kellenicki.com/node-poweredup/) נראה כמו התחלה מושלמת, הוא נכתב באמצעות Javascript שלא הכרתי באופן חלקי אבל חשבתי שאם אני יכול למצוא שבב מבוסס ג'אווה, זו תהיה התחלה טובה.

שוב לאחר שחיפשתי באינטרנט שוב מצאתי את מערכת האספרונו, זה דומה ל- ardiuno אך מבוסס על javascript. ניתן היה לטעון את קוד האספריו על מירוקיפ MDBT42Q שהטביעו בו Bluetooth. חשבתי שאם אוכל לטעון אליו את המודול "המופעל" אני אגיע למחצית הדרך, אולם פשוט זה לא היה המקרה שהמודול הכיל בספריות רבות עד גדולות כדי לטעון אותו ב- MDBT42Q, כך שנראה שאני חייב למצוא פתרון פשוט יותר …

שלב 1: הקוד

הקוד
הקוד

אספרינו

למי שלא מכיר את הפלטפורמה של Espruino https://www.espruino.com (ולא ידעתי) האם הוא דומה מאוד ל- Arduino, יש כמה הבדלים עיקריים שהוא כתב עבור javascript ולא c, הוא מרגיש מעט חדש יותר כך שיש דוגמאות אולם התמיכה דרך הפורומים נהדרת ועוזרת מאוד.

Javascript פוגשים את הרכבת

המכשול הראשון היה להתחבר לרכבת באמצעות בלוטות ', ניתן לעשות זאת באמצעות מחלקת NRF שנשלחת עם קוד האספרונו.

ניתן להשתמש ב- 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 = g; החזר gatt.getPrimaryService ("00001623-1212-efde-1623-785feabcd123"); }). ואז (function (service) {return service.getCharacteristic ("00001624-1212-efde-1623-785feabcd123");}). לאחר מכן (function (מאפיין) {Characteristic_store = character; return character.readValue ();}).אז (value => {console.log (value);}). לאחר מכן (function () {console.log ("Train Connected"); מחובר = 1;

הדברים המהנים

עכשיו התחברת לרכבת הגיע הזמן לכל הדברים המהנים כמו להזיז אותה קדימה, להשמיע קול ולהדליק ולכבות את האור. זה פשוט לשלוח לרכבת ערך הכנה, ואחריו הפקודה בפועל כלומר

פונקציה 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). ואז (_ => {Characteristic_store.writeValue (sendvalue);}); }

ייתכן שתצטרך לחפור קצת כדי למצוא פקודה אחרת מאלה שבהן השתמשתי

כפתורים ומנופים

הצד הפיזי של השלט רחוק מאוד קדימה ארבעה כפתורים (להשמעת צלילים, הדלקת וכיבוי האורות) ופוטנציומטר אחד המחובר למנוף כך שתוכל לשלוט במהירות ובכיוון הרכבת

הכפתור אינו צריך נגד הרים למעלה במקום זאת אתה יכול לעשות זאת בקוד, כלומר

pinMode (D15, 'input_pulldown');

אתה יכול לחבר את הפוטנציומטר לאחת הכניסות ולאחר מכן לקרוא לו את האות האנלוגי באמצעות הפקודה הבאה

var קריאה = analogRead (D31);

ההבדל הנוסף לארדואינו הוא של- esprunio אין התקנה ולולאה. אז במקום זאת אני ממקם את כל הפקודות/הטריגרים הנפרדים לפונקציות ולאחר מכן מגדיר setInterval הלולאה כל 100 אלפיות השנייה, מקשיב ללחצן ואז מפעיל את הפונקציה הנדרשת כאשר הכפתור נלחץ.

אם (digitalRead (D15) == 1) {play_horn (); }

פעולת המנוף הייתה קצת יותר מסובכת מכיוון שרציתי להתאים את המהירות בהדרגה אז קודם כל הייתי צריך לשלוח את הערך האנלוגי לתפקוד

var קריאה = analogRead (D31);

כיוון_רכבת (קריאה * 1024);

ואז בפונקציית train_direction שברתי את הפקודה ל -6 תוספות שונות בהתבסס על ערך הסיר

כל הדרך למעלה, אומר לרכבת לנסוע במלוא המהירות

באמצע הדרך למעלה, אומר לרכבת לנסוע קדימה במהירות של 50%

אמצע, אומר לרכבת לעצור

באמצע הדרך למטה, אומר לרכבת לנסוע אחורה במהירות של 50%

כל הדרך למטה, אומר לרכבת לנסוע במלוא המהירות לאחור

כְּלוֹמַר

פונקציה train_direction (dir_val) {

//console.log("message = ", מאפיין_חנות); const prepval = Uint8Array חדש ([0x0a, 0x00, 0x41, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x01]); const sendvalue = Uint8Array חדש ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x00]); if (dir_val> 300 && dir_val 400 && dir_val 500) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0x64]); } if (dir_val 200) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xe2]); } if (dir_val 100) {const sendvalue = new Uint8Array ([0x08, 0x00, 0x81, 0x00, 0x01, 0x51, 0x00, 0xce]); } if (dir_val {Characteristic_store.writeValue (sendvalue);}); }

הקוד המלא יכול להיות למטה לקישור למטה

שלב 2: החיווט

החיווט
החיווט
החיווט
החיווט

החיווט היה החלק הפשוט ביותר

הוא פשוט כלל 4 כפתורי לחיצה המחוברים ל- D15, D16, D17 ו- D18 ללא כל נגד משיכה מכיוון שזה בוצע בקוד ונגד 10k אחד המחובר ל- D31

אני עדיין עובד על ספק הכוח אבל כרגע כל הכוח מגיע מפריצת מיקרו USB וזה יכול להיות מחובר ישירות לבנק חשמל או ליציאת USB

שלב 3: הבנייה

המבנה
המבנה
המבנה
המבנה
המבנה
המבנה
המבנה
המבנה

השלט עשוי ברובו מ -3 מ"מ, 6 מ"מ או 9 מ"מ גיליונות דיקט A4, הם נחתכו על מכונת ה- CNC שלי עם זאת באמצעות התבנית שניתנה לו למרות שזה לא יהיה אפשרי ביד.

אני מקווה שהתבנית והתמונות יעניקו לך את כל מה שאתה צריך כדי ליצור מחדש אולם יש כמה הערות שעשויות לעזור

הר כפתור 3 מ מ מיועד לחיצת כפתור הלחיצה, הפער ימקם את הכפתור במקום הנכון אך אנו מאפשרים לך לגשת לרגל על הגב כך שתוכל להלחם לשבב, בצד האחורי תוכל גם להרכיב את ה- MDBT42Q בעזרת קצת דבק. בחזית תצטרך להוסיף קצף כל כך כדי לתת לכפתורים להקפיץ מעט כאשר אתה לוחץ עליהם למטה, תוכל גם להשתמש במעיינות

כפתורי 9 מ מ יזדקקו לצבע, לחריטה של הלוגו או למשהו אחר שיראה איזה כפתור עושה מה

המנוף/הידית יצטרכו להיות מורכבים בשכבה, השתמשתי בפבל 6 מ מ כדי לעזור ליישר אותם בכל המיקומים הנכונים

מוּמלָץ: