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

מאמן חכם DIY לאופניים פנימיים: 5 שלבים
מאמן חכם DIY לאופניים פנימיים: 5 שלבים

וִידֵאוֹ: מאמן חכם DIY לאופניים פנימיים: 5 שלבים

וִידֵאוֹ: מאמן חכם DIY לאופניים פנימיים: 5 שלבים
וִידֵאוֹ: סרטון מדהים ומרגש עם מסר חזק במיוחד 2024, סֶפּטֶמבֶּר
Anonim
מאמן חכם לאופניים מקורה DIY
מאמן חכם לאופניים מקורה DIY
מאמן חכם לאופניים מקורה DIY
מאמן חכם לאופניים מקורה DIY
מאמן חכם לאופניים מקורה DIY
מאמן חכם לאופניים מקורה DIY

מבוא

פרויקט זה התחיל כשינוי פשוט לאופניים פנימיים של Schwinn IC Elite שמשתמשים בורג פשוט וכריות לבד להגדרות ההתנגדות. הבעיה שרציתי לפתור היא שהמגרש של הבורג גדול מדי, כך שהטווח בין חוסר יכולת לדווש עד שהגלגל מסתובב חופשי היה רק כמה מעלות על כפתור ההתנגדות. בהתחלה שיניתי את הבורג ל- M6, אבל אז אצטרך לעשות כפתור, אז למה שלא פשוט להשתמש בסימן צעד NEMA 17 שנותר כדי לשנות את ההתנגדות? אם יש כבר קצת אלקטרוניקה, למה שלא תוסיף מד כוח לארכובה וחיבור בלוטות 'למחשב כדי ליצור מאמן חכם?

זה היה קשה יותר מהצפוי, כי לא היו דוגמאות כיצד לחקות מד כוח עם ארדואינו ו- bluetooth. בסופו של דבר הוצאתי בערך 20 שעות על תכנות ופרשנות מפרטי BLE GATT. אני מקווה שעל ידי מתן דוגמה אוכל לעזור למישהו שלא לבזבז זמן רב בניסיון להבין מה המשמעות של "שדה סוג מודעת נתוני שירות" בדיוק …

תוֹכנָה

הפרויקט כולו נמצא ב- GitHub:

github.com/kswiorek/ble-ftms

אני ממליץ בחום להשתמש ב- Visual Studio עם תוסף VisualGDB אם אתה מתכנן לעשות משהו רציני יותר מאשר פשוט להעתיק את הקוד שלי.

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

נקודות זכות

תודה ל stopi71 על המדריך שלו כיצד להכין מד כוח. עשיתי את הארכובה לפי העיצוב שלו.

אספקה:

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

כַּנֶנֶת:

  1. מודול ESP32
  2. חיישן משקל HX711 ADC
  3. מדי זן
  4. MPU - ג'ירוסקופ
  5. סוללת Li-Po קטנה (בסביבות 750 מיליאמפר / שעה)
  6. שרוול לכווץ חום
  7. נהג צעדים A4988
  8. רגולטור 5V
  9. שקע חבית של ארדואינו
  10. ספק כוח ארדואינו 12V

לְנַחֵם:

  1. צעד NEMA 17 (צריך להיות חזק למדי,> 0.4 ננומטר)
  2. מוט M6
  3. 12864 lcd
  4. WeMos LOLIN32
  5. מתגי טאקט

צִיוּד

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

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

שלב 1: הארכובה:

הארכובה
הארכובה
הארכובה
הארכובה
הארכובה
הארכובה

עדיף פשוט לעקוב אחר הדרכה זו:

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

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

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

להרכבת ה- PCB:

  1. הכנס סיכות זהב מלמטה (הצד עם עקבות) לכל החורים למעט אלה אנכיים ליד התחתית.
  2. מניחים את שלושת הלוחות (ESP32 למעלה, ואז MPU, HX711 בתחתית) כך שסיכות הזהב נדבקות דרך שני החורים.
  3. הלחם את הכותרות ללוחות למעלה
  4. חותכים את סיכות הזהב מלמטה. (נסה לחתוך אותם תחילה לפני ההרכבה, כך שתדע ש"סיכות הזהב "שלך אינן פלדה בפנים - זה כמעט בלתי אפשרי לחתוך אותן ואתה צריך לתקן או לטחון אותן)
  5. הלחמו את סיכות הזהב הנותרות לתחתית הלוח.
  6. העלה את הקושחה עבור הארכובה

השלב האחרון הוא לארוז את כל הארכובה עם שרוול כיווץ חום.

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

אם מישהו יוכל לעצב את הלוח, יהיה נהדר אם יש לו מעגל הגנה על הסוללה וחיישן שיפעיל את ה- ESP אם הארכובה מתחילה לנוע.

חָשׁוּב

חיישן HX711 כברירת מחדל מוגדר ל -10 הרץ - הוא מאוד איטי למדידת ההספק. עליך להרים את סיכה 15 מהלוח ולחבר אותו לסיכה 16. זה מניע את הסיכה HIGH ומאפשר את מצב 80 הרץ. 80 הרץ הזה, אגב, קובע את קצב הלולאה הארדואינית כולה.

נוֹהָג

ה- ESP32 מתוכנת ללכת לישון אחרי שנות ה -30 ללא מכשיר Bluetooth. כדי להפעיל אותו מחדש עליך ללחוץ על כפתור האיפוס. החיישנים מופעלים גם מסיכה דיגיטלית, שהופכת את LOW למצב שינה. אם אתה רוצה לבדוק את החיישנים עם הקוד לדוגמה מספריות אתה צריך להניע את הסיכה HIGH ולחכות קצת לפני שהחיישנים נדלקים.

לאחר ההרכבה יש לכייל את החיישנים על ידי קריאת הערך ללא כוח ולאחר מכן בעזרת משקל (השתמשתי בקוטבל 12 ק"ג או 16 ק"ג תלוי על הדוושה). יש להכניס ערכים אלה לקוד powerCrank.

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

  1. שים את הארכובה ישר למטה עד שהנורית מתחילה להבהב.
  2. לאחר מספר שניות האור יישאר דולק - אל תיגע בו אז
  3. כאשר האור נכבה הוא מגדיר את הכוח הנוכחי המזוהה כ 0 חדש.

אם אתה רוצה פשוט להשתמש בארכובה, ללא הקונסולה, הקוד נמצא כאן ב- github. כל השאר עובד אותו דבר.

שלב 2: הקונסולה

הקונסולה
הקונסולה
הקונסולה
הקונסולה
הקונסולה
הקונסולה

המארז נחתך מאקריליק 3 מ"מ, הכפתורים מודפסים בתלת מימד ויש מרווחים עבור ה- LCD, חתוכים מאקריליק 5 מ"מ. הוא מודבק בדבק חם (הוא נדבק די טוב לאקריליק) ויש "סוגר" מודפס בתלת -ממד כדי להחזיק את הלוח המודפס ל- LCD. הפינים עבור ה- LCD מולחמים מהצד התחתון כך שהוא אינו מפריע ל- ESP.

ה- ESP מולחם הפוך, כך שיציאת ה- USB מתאימה למארז

הלוח הלחצן הנפרד מודבק בדבק חם, כך שהלחצנים נלכדים בחורים שלהם, אך הם עדיין לוחצים על המתגים. הכפתורים מחוברים ללוח עם מחברי JST PH 2.0 וקל להסיק את סדר הסיכות מהסכימה

חשוב מאוד להתקין את נהג הצעד בכיוון הנכון (הפוטנציומטר ליד ה- ESP)

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

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

שלב 3: המנוע

המנוע
המנוע
המנוע
המנוע
המנוע
המנוע

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

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

החוט צריך להיות עדין יותר מאשר בורג המניות. המגרש שלה הוא כ -1.3 מ"מ, ול- M6 הוא 0.8 מ"מ. למנוע אין מספיק מומנט להפעלת בורג המניות.

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

שלב 4: תצורה

תְצוּרָה
תְצוּרָה
תְצוּרָה
תְצוּרָה

כדי להעלות קוד ל- ESP32 מ- Arduino IDE עליך לעקוב אחר הדרכה זו:

הלוח הוא "WeMos LOLIN32", אך גם "מודול ה- Dev" עובד

אני מציע להשתמש ב- Visual Studio, אך לעתים קרובות הוא עלול להישבר.

לפני השימוש הראשון

יש להגדיר את הארכובה בהתאם לשלב "הארכובה"

באמצעות אפליקציית "nRF Connect" עליך לבדוק את כתובת ה- MAC של ה- crp ESP32 ולהגדיר אותה בקובץ BLE.h.

בשורה 19 של indoorBike.ino אתה צריך להגדיר, כמה סיבובים של הבורג דרושים כדי להגדיר את ההתנגדות משחרור לחלוטין למקסימום. ("המקסימום" הוא סובייקטיבי בכוונה, אתה מתאים את הקושי עם ההגדרה הזו.)

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

הכפתור השמאלי ביותר עובר ממצב ERG (התנגדות מוחלטת) למצב סימולציה (הילוכים וירטואליים). מצב סימולציה ללא חיבור מחשב אינו עושה דבר מכיוון שאין נתוני סימולציה.

קו 36. קובע את ההילוכים הווירטואליים - המספר והיחסים. אתה מחשב אותן על ידי חלוקת מספר השיניים בהילוך הקדמי במספר השיניים בהילוך האחורי.

בשורה 12. אתה שם את משקל הרוכב והאופנוע (ב [ניוטון], מסה כפולת האצת הכבידה!)

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

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

יציאת ה- Debug COM שולחת נתונים בינאריים ישירים המתקבלים על ידי Bluetooth במרכאות ('') ונתוני סימולציה.

המגדיר

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

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

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

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

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

המתמטיקה (והפיזיקה)

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

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

F = Fg*G

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

t = F*R

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

tp = tw*gr

ובחזרה מנוסחת המומנט אנו מקבלים את הכוח הנדרש להפעלת הדוושה

Fp = tp/r

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

כוח הוא כוח כפול המהירות (בהנחה של אותו כיוון של וקטורים)

P = F*V

והמהירות הלינארית של הדוושה קשורה למהירות הזוויתית:

V = ω*r

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

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

זוהי טכנית פונקציה תלת מימדית המייצגת מטוס (אני חושב) שלוקח את הציון ויחס ההילוכים כטיעונים, ושלושת המקדמים הללו קשורים לאלה הדרושים להגדרת מטוס, אך מכיוון שההילוכים הם מספרים נפרדים, היה קל יותר להפוך אותו לפרמטר במקום להתמודד עם תחזיות וכאלה. ניתן להגדיר את המקדמים הראשונה והשלישית על ידי שורה אחת ו- (-1)* המקדם השני הוא קואורדינטת ה- X של הנקודה, כאשר הקו "מסתובב" מסביב בעת החלפת הילוכים.

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

שלב 5: סיים

עכשיו אתה צריך כמה אפליקציות לרכוב איתן על המאמן החדש שלך (מה שחסך לך בסביבות 900 $:)). להלן הדעות שלי על כמה מהן.

  • RGT רכיבה על אופניים - לדעתי הטובה ביותר - יש לה אופציה חינמית לחלוטין, אבל יש לה מעט מסלולים. מתייחס לחלק החיבור בצורה הטובה ביותר, מכיוון שהטלפון שלך מתחבר באמצעות Bluetooth ומחשב מציג את המסלול. משתמש בוידאו ריאליסטי עם רוכב אופניים
  • Rouvy - הרבה מסלולים, מנוי בתשלום בלבד, משום מה אפליקציית ה- PC לא עובדת עם זה, עליך להשתמש בטלפון שלך. ייתכנו בעיות כאשר המחשב הנייד שלך משתמש באותו כרטיס עבור Bluetooth ו- WiFi, הוא לעיתים קרובות מפגר ואינו רוצה לטעון אותו
  • Zwift - משחק אנימציה, בתשלום בלבד, עובד די טוב עם המאמן, אבל ממשק המשתמש הוא די פרימיטיבי - המשגר משתמש ב- Internet Explorer כדי להציג את התפריט.

אם נהנית מהבנייה (או לא), ספר לי זאת בתגובות ואם יש לך שאלות תוכל לשאול כאן או להגיש בעיה ל- github. אני אסביר בשמחה את הכל מכיוון שזה די מסובך.

מוּמלָץ: