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

מודול מעקב לרוכבי אופניים: 5 שלבים
מודול מעקב לרוכבי אופניים: 5 שלבים

וִידֵאוֹ: מודול מעקב לרוכבי אופניים: 5 שלבים

וִידֵאוֹ: מודול מעקב לרוכבי אופניים: 5 שלבים
וִידֵאוֹ: 10 הטוסטוסים החשמליים של קפה-רייסר 2024, יולי
Anonim
מודול מעקב לרוכבי אופניים
מודול מעקב לרוכבי אופניים

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

לפני שתוכל ליצור מודול מעקב אחר רוכבי אופניים, עליך לאסוף את החומרים שלך. אתה יכול למצוא את הכלים והציוד ברשימות למטה, או שאתה יכול להוריד את קובץ ה- BOM (Build Of Materials).

אספקה:

  • זכוכית מקלעת (56 מ"מ X 85 מ"מ)
  • ברגים 10 X 2M 10 מ"מ ואומים
  • ברגים 10 X 3M 10 מ"מ ואומים
  • 2 X 3M ברגים 50 מ"מ ואומים
  • נימה PLA להדפסת תלת-ממד של מארז ה- LCD שלך
  • מכווץ חום
  • כבלים זכר לנקבה
  • PCB בסיסי
  • כותרות זכריות
  • פטל פי 3b+
  • כרטיס SD בנפח 16GB
  • מסך LCD funfun 4X20
  • חיישן מגע קיבולי
  • זמזם
  • מד תאוצה + גירוס בעל 3 צירים
  • מודול GPS
  • לוח SODAQ Mbili
  • מודול LoRa WAN
  • סוללת 3.7V 1000mAh
  • ספק כוח Raspberry Pi 3b+

כלים:

  • פח הלחמה
  • מלחם
  • יַתוּך
  • מברגים
  • פאזל
  • מקדחה
  • 2.5 ו -3.5 תרגילים
  • אקדח קל יותר / אוויר חם

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

שלב 1: תוכנית פריצה

תוכנית פריצה
תוכנית פריצה
תוכנית פריצה
תוכנית פריצה

השלב הראשון הוא בניית המעגלים. לפרויקט זה יש לנו 2 מעגלים חשמליים, אחד עם פי פטל ואחד עם לוח SADAQ Mbili. נתחיל במעגל Raspberry Pi.

תכנית Fritzing Raspberry Pi:

ערכת ה- Raspberry Pi היא די פשוטה, הדבר היחיד שאנו מתחברים אליו עם ה- Pi הוא צג LCD 4X20 Sparkfun. התצוגה פועלת עם תקשורת טורית, SPI או I2C. איזה פרוטוקול תקשורת שאתה משתמש בו תלוי בך. השתמשתי בפרוטוקול SPI מכיוון שהוא פשוט מאוד. אם אתה משתמש ב- SPI כמוני, אתה צריך את החיבורים הבאים:

  • VCC LCD VCC פטל פטל
  • GND LCD GND פטל פטל
  • SDI LCD MOSI (GPIO 10) פטל פטל
  • SDO LCD MISO (GPIO 9) פטל פטל
  • SCK LCD SCLK (GPIO 11) פטל פטל
  • CS LCD CS0 (GPIO 8) פטל פטל

בתוכנית Fritzing תוכלו לראות שתצוגת ה- LCD היא צג בגודל 2X16. הסיבה לכך היא שלא מצאתי מסך 4X20 על פריזטינג. עם זאת, כל החיבורים הם חלקם כך שזה לא ממש משנה.

תוכנית SODAQ Mbili Fritzing:

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

  • חיישן מגע OUT D5 Mbili
  • חיישן מגע VCC 3.3V Mbili
  • חיישן מגע GND GND Mbili

המרכיב השני הוא חיישן ה- acces + ג'יירו טריפל. השתמשתי בלוח GY-521 המשתמש בפרוטוקול I2C כדי לתקשר עם לוח ה- Mbili. שים לב שצריך לחבר את פין ה- AD0 של לוח GY-521 ללוח ה- VCC של לוח ה- Mbili! הסיבה לכך היא שללוח Mbili יש שעון עם אותה כתובת I2C כמו ה- GY-521. על ידי חיבור הפין AD0 ל- VCC אנו משנים את כתובת I2C של ה- GY-521. החיבורים הם כדלקמן:

  • VCC GY-521 3.3V Mbili
  • GND GY-521 GND Mbili
  • SCL GY-521 SCL Mbili
  • SDA GY-521 SDA Mbili
  • AD0 GY-521 3.3V Mbili

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

  • + באזר D4 Mbili
  • - באזר GND Mbili

אחרון חביב, נחבר את מודול ה- GPS. מודול ה- GPS מתקשר באמצעות RX ו- TX. החיבורים הם כדלקמן:

  • VCC GPS 3.3V Mbili
  • GND GPS GND Mbili
  • TX GPS RX Mbili
  • RX GPS TX Mbili

שלב 2: מסד נתונים מנורמל

מסד נתונים מנורמל
מסד נתונים מנורמל

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

שולחן 'פלוג':

שולחן זה הוא שולחן למועדוני הרכיבה. הוא מכיל מזהה מועדון רכיבה ושם מועדון רכיבה.

שולחן 'רנרס':

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

שולחן 'מקומות':

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

שולחן 'תחרות':

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

שולחן 'gebeurtenissen':

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

שולחן 'wedstrijdrenner':

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

שלב 3: רשום את מודול ה- LoRa שלך

רשום את מודול ה- LoRa שלך
רשום את מודול ה- LoRa שלך

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

לאחר שנרשמת ב- AllThingsTalk, עליך לרשום את צומת LoRa שלך. לשם כך, תוכל לבצע את השלבים הבאים או שתוכל להסתכל על התמונה למעלה.

  1. עבור אל 'מכשירים' בתפריט הראשי
  2. לחץ על 'מכשיר חדש'
  3. בחר את הצומת LoRa שלך
  4. מלא את כל המפתחות.

עכשיו סיימת! כל הנתונים שאתה שולח עם הצומת LoRa שלך יופיעו ב- AllThingsTalk. אם יש לך בעיות ברישום, תוכל תמיד להתייעץ עם מסמכי AllThingsTalk.

שלב 4: הקוד

הקוד
הקוד
הקוד
הקוד
הקוד
הקוד
הקוד
הקוד

לפרויקט זה נצטרך 5 שפות קידוד: HTML, CSS, Java Script, Python (Flask) ושפת Arduino. ראשית אסביר את התוכנית Arduino.

תוכנית ארדואינו:

בתחילת התוכנית, אני מכריז על כמה משתנים גלובליים. אתה תראה שאני משתמש ב- SoftwareSerial לחיבור עם ה- GPS שלי. הסיבה לכך היא שללוח Mbili יש רק 2 יציאות טוריות. אתה יכול לחבר את ה- GPS ל- Serial0, אך לא תוכל להשתמש במסוף Arduino לצורך איתור באגים. זו הסיבה מדוע אני משתמש ב- SoftwareSerial.

לאחר המשתנים הגלובליים, אני מכריז על כמה פונקציות שמקלות על קריאת התוכנית. הם קוראים את קואורדינטות ה- GPS, משמיעים את צליל הזמזם, שולחים ערכים באמצעות LoRa, …

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

לאחר בלוק ההתקנה מגיעה התוכנית הראשית. בתחילת הלולאה הראשית הזו, אני בודק אם חיישן המגע פעיל. אם כן, אני משמיע את צליל הבאזר, מקבל את נתוני ה- GPS ושולח את כל הערכים באמצעות LoRa או בלוטות 'ל- PI של Raspberry. לאחר חיישן המגע, קראתי את ערכי מד התאוצה. בעזרת נוסחה אני מחשב את הזווית המדויקת של ציר X ו- Y. אם ערכים אלה גדולים מדי, נוכל להסיק כי רוכב האופניים התרסק. כאשר מתרחש התרסקות, אני משמיע שוב את הבאזר, מקבל את נתוני ה- GPS ושולח את כל הערכים באמצעות LoRa או בלוטות 'ל- Raspberry PI.

אתה בוודאי חושב: 'מדוע אתה משתמש ב- bluetooth ו- LoRa?'. הסיבה לכך היא שהיתה לי בעיה עם הרישיון של מודול הלורה בו השתמשתי. אז כדי לגרום לתוכנית לפעול עבור ההדגמה שלי, נאלצתי להשתמש ב- Bluetooth לזמן מה.

2. הקצה האחורי:

הקצה האחורי הוא מעט מורכב. אני משתמש בבקבוק עבור המסלולים שלי הנגישים לממשק הקדמי, אני משתמש ב- socketio לעדכן כמה מדפי הקצה באופן אוטומטי, אני משתמש בסיכות GPIO כדי להציג הודעות בתצוגת LCD ולקבל הודעות באמצעות Bluetooth (אין צורך אם אתה משתמש LoRa) ואני משתמש ב- Threading and Timers כדי לקרוא באופן קבוע את ה- API של AllThinksTalk ולהפעיל את שרת הבקבוקונים.

אני משתמש גם במאגר הנתונים של SQL כדי לאחסן את כל התאונות הנכנסות, לקרוא את הנתונים האישיים של רוכבי האופניים ואת נתוני המרוצים. מסד נתונים זה מחובר לקצה האחורי ופועל גם על ה- Raspberry Pi. אני משתמש בכיתה 'Database.py' כדי ליצור אינטראקציה עם מסד הנתונים.

כפי שאתה יודע מתוכנית Fritzing, ה- lcd מחובר ל- Raspberry Pi באמצעות פרוטוקול SPI. כדי להפוך את זה ליותר קל, כתבתי שיעור 'LCD_4_20_SPI.py'. עם שיעור זה אתה יכול לשנות את הניגודיות, לשנות את צבע התאורה האחורית, לכתוב הודעות על המסך, … אם ברצונך להשתמש ב- Bluetooth, תוכל להשתמש במחלקה 'SerialRaspberry.py'. מחלקה זו קובעת את התקשורת הטורית בין מודול ה- Bluetooth לבין ה- Raspberry Pi. הדבר היחיד שאתה צריך לעשות הוא לחבר מודול בלוטות 'ל- Raspberry Pi על ידי חיבור ה- RX ל TX ו- virsa versa.

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

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

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

3. קצה השוליים:

הקצה הקדמי מורכב מ -3 שפות. HTML לטקסט של האתר, CSS לסימון האתר ו- JavaScript לתקשורת עם החלק האחורי. יש לי 4 דפי אתר לפרויקט זה:

  • Index.html שבו תוכל למצוא את כל מרוצי האופניים.
  • דף עם כל ההתרסקויות והתקלות המכניות למירוץ ספציפי.
  • דף שבו תוכל להוסיף גלילי מסד הנתונים ולערוך את הצוות שלהם.
  • דף שבו תוכל להוסיף מרוץ חדש עם כל משתתפיו למאגר המידע.

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

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

אתה יכול להסתכל על כל הקוד שלי כאן ב- Github שלי.

שלב 5: בנה את המבנים

בנה את המבנים
בנה את המבנים
בנה את המבנים
בנה את המבנים
בנה את המבנים
בנה את המבנים

לפני שנוכל להתחיל בבנייה, וודא שיש ברשותך את כל החומרים מתוך קובץ הפריטים או מדף 'כלים + חומרים מתכלים'.

פטל פי + LCD

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

  1. לקדוח חור בכריכת המארז. עשיתי זאת עם מקדחה של 7 מ"מ בצד המכסה. אתה יכול לראות זאת בתמונה למעלה.
  2. הוצא את החוטים מתצוגת ה- LCD והחלק ראש מתכווץ מעל החוטים.
  3. השתמש במצית או באקדח אוויר חם כדי לגרום לכווץ הראש להתכווץ.
  4. משוך את החוטים כשהראש מתכווץ דרך החור במארז וחבר אותם בחזרה על ה- LCD.

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

בניית SODAQ MBili

לא ממש יצרתי תיק ללוח SODAQ Mbili. השתמשתי בזכוכית מקלעת כדי למקם את הרכיבים שלי ללא מארז סביב הבנייה. אם אתה רוצה גם לעשות זאת, תוכל לבצע את השלבים הבאים:

  1. חתמו על הפרספקס עם הגושיות של לוח SODAQ Mbili. המידות הן: 85 מ"מ X 56 מ"מ
  2. חותכים את הפרספקס בעזרת פאזל.
  3. הניחו את הרכיבים האלקטרוניים על הפרספקס וחתמו את החורים בעיפרון.
  4. מקדחים את החורים שחתמתם זה עתה ואת החורים לעמידות עם מקדחה 3.5 מ"מ.
  5. הרכיבו את כל הרכיבים האלקטרוניים על הפרספקס בעזרת הברגים והאומים של 3 מ"מ.
  6. השלב האחרון הוא הרכבת הפרספקס מעל לוח ה- Mbili. אתה יכול לעשות את זה עם עמידות, אבל השתמשתי בשני ברגים של 3 מ"מ 50 מ"מ ו -8 אגוזים של 3 מ 'כדי להרכיב את הפרספקס מעל הלוח.

מוּמלָץ: