תוכן עניינים:
- שלב 1: איך זה עובד?
- שלב 2: כיצד להגדיר את שלוש תחנות החיישן והאובייקטים
- שלב 3: כיצד להגדיר את תחנת המאסטר
- שלב 4: רשימת החומרים
וִידֵאוֹ: מערכת מיקום מבוססת אולטראסאונד: 4 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:14
כל הגרסאות של מכ"מים אולטראסוניים שמצאתי למכשירי ארדואינו (Arduino - Radar/Ultrasonic גלאי, Arduino Ultrasonic Radar Project) הינם מכ"מים נחמדים מאוד אך כולם "עיוורים". כלומר, המכ"ם מזהה משהו אבל מה הוא מזהה?
אז אני מציע לעצמי לפתח מערכת המסוגלת לזהות אובייקטים ולזהות אותם. במילים אחרות מערכת מיקום ללא שימוש במכשירי GPS אלא גלאי קולי.
זו התוצאה שאני מקווה שתאהבו.
שלב 1: איך זה עובד?
מערכות המיקום נוצרות על ידי שלוש תחנות חיישנים עם גלאים אולטראסוניים ו- id_node 1, 2 ו- 3 היוצרות מלבן או ריבוע שסוחפים זווית של 90º והמקומות ביניהם ידועים כפי שמוצג בתמונה 1.
const float distance between1and2 = 60.0;
const float distance between2and3 = 75.0;
חיישנים אלה מודדים את המרחק והזווית של אובייקטים אחרים עם id_node הגדול מ -3 שיש להם גם גלאי קולי שסוחף זווית של 170 °.
כולם שולחים את המרחקים, הזוויות הנמדדות ואת ה- id_node לתחנת אב אחרת באמצעות תקשורת אלחוטית לניתוח, חישוב מיקום האובייקטים באמצעות חישוב טריגונומטריה וזיהוים.
כדי להימנע מהפרעות תחנת המאסטר מסנכרנת את כל גלאי האולטרסוניקה באופן שרק גלאי קולי אחד מודד בכל רגע
לאחר מכן ובאמצעות תקשורת טורית תחנת המאסטר שולחת את המידע (זווית, מרחק, id_object) לשרטוט עיבוד כדי לשרטט את התוצאות.
שלב 2: כיצד להגדיר את שלוש תחנות החיישן והאובייקטים
הפונקציה היחידה של כל תחנת חיישן היא לזהות עצמים ולשלוח את רשימת המרחק, הזווית וצומת המזהים הנמדדים לתחנת הראשית.
אז עליך לעדכן את מרחק הגילוי המרבי ("valid_max_distance") המותר ואת המינימום ("valid_min_distance") (סנטימטרים) כדי לשפר את הזיהוי ולהגביל את אזור הזיהוי:
int valid_max_distance = 80;
int valid_min_distance = 1;
צומת המזהה של תחנות החיישנים הללו ("הצומת הזה" בקוד שלהלן) הן 1, 2 ו -3 וצומת המזהה של תחנת האב היא 0.
const uint16_t this_node = 01; // כתובת הצומת שלנו בפורמט Octal (Node01, Node02, Node03)
const uint16_t other_node = 00; // כתובת הצומת הראשי (Node00) בפורמט Octal
כל תחנת חיישן גורפת וזווית של 100º ("max_angle" בקוד למטה)
#הגדר min_angle 0
#הגדר max_angle 100
כנ"ל הפונקציה היחידה של אובייקט היא לזהות אובייקטים ולשלוח את רשימת המרחקים, הזוויות ואובייקט ה- ID הנמדד לתחנת האב. המזהה של אובייקט אחד ("זה_צומת" בקוד שלהלן) חייב להיות גדול מ -3.
כל אובייקט מטאטא וזווית של 170º וכאמור לעיל, ניתן לעדכן את מרחק הזיהוי המקסימלי והמינימלי.
const uint16_t this_node = 04; // כתובת הצומת שלנו בפורמט אוקטל (Node04, Node05, …)
const uint16_t other_node = 00; // כתובת הצומת הראשי (Node00) בפורמט Octal int valid_max_distance = 80; int valid_min_distance = 1; #הגדר צלע מינימלית 0 #הגדר צירוף מקסימלי 170
שלב 3: כיצד להגדיר את תחנת המאסטר
תפקידה של תחנת האב הוא לקבל את שידורי תחנות החיישנים והאובייקטים ולשלוח את התוצאות באמצעות היציאה הסדרתית למערכון עיבוד כדי להתוות אותן. יתר על כן, מסנכרן את כל האובייקטים ואת שלוש תחנות החיישנים באופן שרק אחת מהן נמדדת בכל פעם כדי להימנע מהפרעות.
ראשית עליך לעדכן את המרחק (סנטימטרים) בין חיישן 1 ל -2 ואת המרחק בין 2 ל -3.
const float distancebetween1and2 = 60.0;
const float distancebetween2and3 = 70.0;
הסקיצה מחשבת את מיקום האובייקטים באופן הבא:
- עבור כל שידורי האובייקטים (id_node הגדול מ -3) חפשו את אותו המרחק בכל שידור של החיישנים האולטראסוניים (id_node 1, 2 או 3).
- כל הנקודות הללו יוצרות רשימה של "מועמדים" (מרחק, זווית, id_node) למיקום של אובייקט אחד ("process_pointobject_with_pointssensor" בסקיצה).
- עבור כל "מועמד" מהרשימה הקודמת, הפונקציה "מועמד_בחירה_בין_חיישן 2 ו -3" מחשבת מנקודת מבטו של החיישן האולטראסוני 2 ו -3 מי מהם תואם את המצב הטריגונומטרי הבא (ראו תמונות 2 ו -3)
מרחק צף 2 = sin (רדיאנים (זווית)) * מרחק;
float distancefroms3 = cos (radians (angle_candidate)) * distance_candidate; // מצב טריגונומטריה 1 שרירי הבטן (distancefroms2 + distancefroms3 - distancebetween2and3) <= float (max_diference_distance)
כאמור, עבור כל "מועמד" מהרשימה הקודמת, הפונקציה "מועמד_בחר_בין_סנסור 1 ו -2" מחשבת מנקודת מבטו של החיישן האולטראסוני 1 ו -2 מי מהם תואם את הקשר הטריגונומטרי הבא (ראו תמונה 2 ו -3)
מרחק צף 1 = sin (רדיאנים (זווית)) * מרחק; מרחק צף 2 = cos (רדיאנים (זווית_מועמד)) * מרחק_מועמד; // מצב טריגונומטריה 2 שרירי הבטן (distancefroms1 + distancefroms2 - distancebetween1and2) <= float (max_diference_distance)
רק המועמדים (מרחק, זווית, id_node) התואמים לתנאי הטריגונומטריה 1 ו -2 הם אובייקטים מזוהים שזוהו על ידי תחנות החיישנים 1, 2 ו -3
לאחר מכן התוצאות נשלחות על ידי תחנת המאסטר למערכון עיבוד כדי להתוות אותן.
שלב 4: רשימת החומרים
רשימת החומרים הדרושים לתחנת חיישן אחת או לאובייקט אחד היא כדלקמן:
- לוח ננו
- חיישן קולי
- מנוע מיקרו סרוו
- מודול אלחוטי NRF24L01
- מתאם NRF24L01
ורשימת החומרים לתחנת האב היא כדלקמן:
- לוח ננו
- מודול אלחוטי NRF24L01
- מתאם NRF24L01
מוּמלָץ:
מערכת מיקום אחסון הנגד "Resys": 7 שלבים (עם תמונות)
מערכת מיקום אחסון הנגד "Resys": זוהי מערכת המאפשרת למצוא את הנגדים שלך בקלות. חפש בערך הרצוי, והמגירה הימנית נדלקת. ניתן להרחיב את המערכת למספר מגירות רצוי
מערכת מיון צבעים: מערכת מבוססת ארדואינו עם שתי חגורות: 8 שלבים
מערכת מיון צבעים: מערכת מבוססת ארדואינו עם שתי חגורות: הובלה ו/או אריזה של מוצרים ופריטים בתחום התעשייתי מתבצעת באמצעות קווים המיוצרים באמצעות מסוע. חגורות אלה עוזרות להעביר את הפריט מנקודה אחת לאחרת במהירות מסוימת. חלק ממשימות העיבוד או הזיהוי עשויות להיות
מערכת גישה מבוססת אולטרסאונד: 6 שלבים (עם תמונות)
מערכת גישה מבוססת אולטראסאונד: הפעם אני מציג בפניך מערכת גישה מבוססת אולטראסוני. לנסות לא
מערכת תזמון מבוססת לייזר Arduino: 6 שלבים (עם תמונות)
מערכת תזמון מבוססת לייזר Arduino: כחלק מההוראה שלי, הייתי צריך מערכת למדידה מדויקת של מהירות נסיעה של דגם 10 מטרים. בהתחלה חשבתי שאקנה מערכת מוכנה זולה מאיביי או Aliexpress, מערכות אלה ידועות בשמות אור קלים, פו
מערכת GPS מבוססת Arduino מבוססת GPS+GPRS למניעת גניבה: 5 שלבים (עם תמונות)
מערכת GPS מבוססת Arduino מלאה+מערכת גניבת GPRS: שלום לכולם! רציתי לבנות פתרון מלא למכשיר נגד גניבה לרכב GPS, שיהיה: כמה שיותר זול, שלם ככל האפשר כפי שהוא פשוט עובד -אין-דבר-אחר-לעשות ככל האפשר אז בסופו של דבר בניתי פתרונות מבוססי ארדואינו