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

משוב LED SONIC: 7 שלבים (עם תמונות)
משוב LED SONIC: 7 שלבים (עם תמונות)

וִידֵאוֹ: משוב LED SONIC: 7 שלבים (עם תמונות)

וִידֵאוֹ: משוב LED SONIC: 7 שלבים (עם תמונות)
וִידֵאוֹ: הפיזיקאי חושף את סודות המסע בזמן של עב"מים: נימיץ וטיק טק 2024, יולי
Anonim
משוב LED SONIC
משוב LED SONIC
משוב LED SONIC
משוב LED SONIC
משוב LED SONIC
משוב LED SONIC

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

אני אוהב להשתמש בפרו-מיני. הם בערך $ 2.50, עובדים כ- uno במלואם, והתקנת כותרות הופכת אותם לגמישים מאוד. משמש כמייקרו חיישן אתה יכול לתת לו 'לעשות מה שאתה רוצה' במקום מה שמכתיב חיישן שנרכש. כאשר I2C משתמש רק בשני חוטים ניתן לקשור אותם יחד על קו אחד. אז מעבר על MEGA אני יכול לקבל 4 מיני עם כל 4 שורות קוד נפרדות בו זמנית, במחיר של $ 10.00 בלבד. כאן אני משתמש במיני כדי להעביר את החיישנים הקוליים דרך 595 ולהראות מרחק לד בזמן אמת. אז פשוט שתף 8 סיביות של נתונים עם לוח האם. זה מוריד את העומס מלוח האם והופך את הקוד שלה לפשוט מאוד.

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

שלב 1: עשה PCB

עשה PCB
עשה PCB
עשה PCB
עשה PCB
עשה PCB
עשה PCB
עשה PCB
עשה PCB

לעשות PCB ולאכלס. זהירות … עשיתי טעות במחשב הלוח בחיבורי 4 פינים לחיבור החיישנים הקוליים. ה- ECHO ו- TRIGGER Vcc והמגרשים התכוונו להתחבר למחשב הלוח. אין מספיק מקום למחברים אז פשוט הכנתי את הלוח המודרני עם פינים. אז אתה יכול להלחם מחבר תיל למחשב הלוח ולהתחבר לחיישנים הקוליים בפועל. באשר ללדים שמתי נוריות צהובות בקצה הפנימי ואדום מבחוץ. זה עוזר לך לראות מרחוק אם החיישנים מודדים נכון.

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

ה- PCB מיועד לפרו-מיני עם A4-A5 בתוך כותרת הקצה. בכל מקרה פשוט חבר את A4-A5 ל- Master A4-A5. אל תשכח גם את ה- Vcc and Grounds.

שלב 2: טעויות רבות

הרבה טעויות
הרבה טעויות

עכשיו לטעויות שלי … ניסיתי לפוצץ את הטריגרים בבת אחת (כולם קשורים זה לזה) והמיון הזה עבד טוב אבל התקיימו כמה אינטראקציות. אז עכשיו כל ה- ECHOS עוברים למיקרו (8) וה- TRIGGERS נקבעים על ידי 595. עוד שלושה סיכות (3). באשר ללדים, ריבוב לא יעבוד. אתה צריך זמן ON מלא עבור כל LED. המשמעות היא שלכל שורה של 7 נוריות יש 595 משלה. ברגע שאתה מעדכן את 595, הנורות נשארות מוארות עד לעדכון הבא. כאשר ריבוב הנורות רק נורות למשך עשירית השנייה. זה עובד היטב בקוראים שלי וזה צריך מיקרו ייעודי. אין זמן לסרוק 8 חיישנים קוליים ולמדוד מרחקים. ניסיתי וקיבלתי תוצאות גרועות מאוד. ריבוי כפולות הנורות משמעו גם רשת של שורה + עמודה וזה אומר בסביבות 64+ הזנות דרך ב- PCB.

השתמשתי רק ב -7 יציאות מה- 595 בגלל העומס במחשב הלוח. מרחוק אתה לא יכול לדעת אם יש 7 או 8 נוריות רק התנועה שלהם. אתה עלול להתפתות לקשור את כל הנוריות לנגד אחד וזה עובד, אבל בהירות המערך משתנה עם כמות הנורות הלייט. אז הנגד אחד לכל לד הוא הטוב ביותר. אני פשוט אוהב את 595 אבל אם הם רק היו מזיזים את סיכות ה- Vcc ו- 0-out או עשו IC 18 פינים עם כל היציאות באותו צד … חיבור כל שמונה היציאות יהיה כל כך קל. אבל אז זה לא יימכר בפחות מ -30 סנט.

שלב 3: הרכבת חיישנים

חיישני הרכבה
חיישני הרכבה
חיישני הרכבה
חיישני הרכבה
חיישני הרכבה
חיישני הרכבה
חיישני הרכבה
חיישני הרכבה

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

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

שלב 4: חוט קשיח

חוט קשיח
חוט קשיח

חשבתי שיהיה מקום לשקעים ותקעים מהמחשב למחשב

סיכות קוליות אבל נגמר לי החדר. אז חיברתי את קצה ה- PCB ופשוט עשיתי הד והדק חוטים עם שקעי נקבה (8ea). קשרתי את 8ea Vcc ו- 8ea של החיישנים יחד כך שזה גרם רק 2 חיבורים ל- PCB עבורם.

עם 8 חיישנים ו -8 595s Uno או פרו-מיני לא יכול להפעיל את זה. חייב להיות מקור מוסדר של 5V כחלק מפרויקט זה. לרובוט שלי יש 7805 @ 1amp פשוט מהסוללות. זה קשור לכל 5V Vcc לכל המכשירים. 7805 טיפות על וולט אז אתה צריך לפחות 6.5 וולט כדי להאכיל אותו. כלומר 2 סוללות ליתיום במהירות 3.3v. ברובוט שלי יש ניקאדות ישנות מחבילות מקדחות משומשות ו -8 ניקאדות מפעילות את מנוע 12V הטיפוסי בסין במארז מסוג 20 טנק.

שלב 5: הורד סקיצה SONIC

הורד סקיצה סוניק
הורד סקיצה סוניק

הורד את הסקיצה והתקן. ישנן דרכים רבות לדבר איתן

עוד uno אבל אני אוהב I2c. הבלבול הוא פנייה ואדון/ עבד. כמו ברוב החיישנים (תחשוב על המיני השני כחיישן) אתה פונה לחיישן ומבקש כמות בתים x. אותו הדבר כאן. במיני השני אתה מפריש x כמות בתים שאתה רוצה לשלוח. הבלבול הוא ששמות לא חשובים. זה רק עוזר לך לזכור אם אתה משתף את השמות. אז במערכון אני שולח את 8 מדידות המרחק הקוליות בסנטימטרים כמו sendR1, sendR2, sendR3, sendR4, sendL1, sendL2, sendL3, sendL4. המאסטר מקבל רק 8 בתים אם הנתונים ואתה יכול לקרוא לבתים האלה כל מה שאתה רוצה. קראתי אותם כ- gotR1, gotR2, got….. סדר הבייטים שנשלח זהה. אז בית A, B, C … אל תחשוב ששינוי השם ייתן לך נתונים שונים. והיתר השני, אתה יכול לקבל רק נתונים שאומרים להם לשלוח אותם. אז אם אתה רוצה נתונים אחרים עליך לשנות את שני המאסטר ואת העבד.

שלב 6: תקשורת

תִקשׁוֹרֶת
תִקשׁוֹרֶת

אתה יכול לדלג על זה אם אתה יודע איך להגדיר 2 Uno כדי לדבר אחד עם השני. בסוף יש לי קצת מידע. כדי להקל על זה אני אקרא ל- uno בבסיס הרובוט M1 ולחיישן הקולי בשם S2. חבר Vcc, הקרקע, A4, A5 זה לזה.

במערכון עבור S2 זה מתחיל ב- #include

לאחר מכן צור את 8 הבייטים שיש לשלוח. בית R1, בת R2, בת L1 וכו '. Uno הוא מיקרו 8 ביט ולכן הם שולחים 1 בייט בכל פעם באמצעות' בת 'במקום' int 'הוא הנכון.

ב'הגדרות () 'הוסף' Wire.begin (כתובת) 'זה אומר ל- I2c באיזה מכשיר מדובר. הכתובת היא בדרך כלל כל מספר שאתה אוהב בין 4 - 200. בגודל של בייט אחד. כאן השתמשתי במספר 10. אז כדי לדבר עם חיישן S2 הזה על המאסטר להתקשר ל- Wire.requestFrom (10, 8). זוהי כתובת 10 ו- 8 היא כמה בתים רצו. כמו כן ב'הגדרות () 'הוסף Wire.onRequest (isr anyName). כאשר ה- M1 קורא לבקשה, חיישן S2 מגיב עם ההפרעה. זה רק מכנה את הפונקציה anyName. אז צריך ליצור את הפונקציה anyName הזו. תסתכל על הסקיצה ותראה את הפונקציה 'sendThis ()' זה המקום שבו הבייטים למעשה נשלחים ל- M1. הבייטים לבד הולכים ולא השמות ובמסדר שנשלח. מכאן מתחיל גודל וכמות הנתונים לשלוח. בפורמט קל של בתים השליחה והקבלה צריכים להתאים. כאן נשלחו 8 בתים ו -8 בתים התקבלו. הערה אחת כאן היא קריאה לפונקציה דורשת את (). כמו עיכוב (), מילי (), Serial.print (). בעת שימוש ב- ISR (שגרת שירות קטע) הפונקציה מורידה את (). אז Wire.onRequest (sendThis) לא Wire.onRequest (sendThis ()).

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

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

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

קַל:

int x = 5696; (כל ערך int תקף, המקסימום הוא 65k או 32k שלילי)

בייט היי = x >> 8; (22)

בת lo = x; (64)

שלח את הבייטים ושלב בקצה השני….

בייט היי = Wire.read ();

בייט lo = Wire.read ();

int newx = (hi << 8) + lo; (5696)

שלב 7: סגירה

סְגִירָה
סְגִירָה
סְגִירָה
סְגִירָה
סְגִירָה
סְגִירָה
סְגִירָה
סְגִירָה

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

מוּמלָץ: