תוכן עניינים:
- שלב 1: הרכבת מארז רובוט
- שלב 2: חוט אלקטרוניקה
- שלב 3: צור תרשים בלוק ב- Vivado
- שלב 4: הגדרת סביבת פיתוח תוכנה
- שלב 5: שנה את תוכנית ההדגמה
- שלב 6: קושחת פלאש ל- QSPI
- שלב 7: הגדר את נקודת הגישה האלחוטית
- שלב 8: הפעל את תוכנית Java
- שלב 9: כיול מד טווח
- שלב 10: נגישות
וִידֵאוֹ: WiBot: 10 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
מדריך זה מפרט את התהליך לבניית רובוט Wi-Fi על פלטפורמת ZYBO. פרויקט זה משתמש במערכת הפעלה בזמן אמת לאיתור אובייקטים, מדידת מרחק ובקרה מגיבה. מדריך זה יעסוק בממשק ה- ZYBO עם ציוד היקפי, הפעלת קושחה מותאמת אישית ותקשורת באמצעות יישום Java. להלן רשימה של כל מרכיבי המפתח הנדרשים לפרויקט זה:
- 1 מועצת הפיתוח של ZYBO
- נתב אלחוטי TL-WR802N
- 1 מארז צל
- 2 גלגלים 65 מ"מ
- 2 מנועים של 140 סל"ד
- מקודדי 2 גלגלים
- 1 חיישן אולטרסאונד HC-SR04
- ממיר רמות לוגיות BSS138
- 1 נהג מנוע L293 H-Bridge
- ממיר DC/DC של 12V עד 5V
- סוללת LiPo 1 2200mAh
- 1 כבל אתרנט
- 1 כבל USB Micro-B
- מחבר XT60 נקבה
- 2 חוטי מגשר זכר לנקבה
- 30 חוטי מגשר בין זכר לזכר
- 2 נגדים של 10kΩ
- לוח אחד
בנוסף, יש להתקין את התוכנה הבאה במחשב היעד:
- סוויטת עיצוב Xilinx Vivado 2018.2
- Digilent Adept 2.19.2
- FreeRTOS 10.1.1
- ערכת פיתוח Java SE 8.191
שלב 1: הרכבת מארז רובוט
הרכיבו את שלדת הצל וחברו את מנועי ההילוכים והמקודדים למסגרת התחתונה. ניתן להרכיב את חיישן ה- ZYBO, קרש הלחם והאולטראסוני בעזרת החלקים המסופקים הניתנים להדפסה תלת-ממדית ולתיקון למארז באמצעות סטנדים וקלטת דו צדדית. מסגרות תחתונות. הרכבו את הנתב קרוב ל- ZYBO ואת ממיר DC/DC קרוב ללוח הלחם. חבר את הגלגלים למנועי ההילוכים ממש בסוף.
שלב 2: חוט אלקטרוניקה
חבר את הכניסה והיציאה של ממיר DC/DC לשתי מסילות החשמל בלוח הלחם בהתאמה. אלה ישמשו כציוד 12V ו- 5V למערכת. חבר את ה- ZYBO למעקה 5V כפי שמוצג בתמונה. השתמש גם בכבל אספקת USB Micro-B כדי לחבר את הנתב למעקה 5V. יש לחבר את כבל XT60 למעקה 12V. אין לחבר את הסוללה עד ששאר האלקטרוניקה מחוברת כראוי. חייבים לחבר את החיישן הקולי למעקה 5V. צור מסילת 3.3V על לוח הלחם באמצעות סיכה 6 של יציאת Pmod JC ב- ZYBO. יש לחבר את כניסת המתח הגבוה של ממיר הלוגי למעקה 5V ואילו כניסת המתח הנמוך של ממיר הלוגי צריכה להיות מחוברת למעקה 3.3V. חברו את מקודדי המנוע למעקה 3.3V. חבר את VCC1 של נהג המנוע למעקה 5V וחבר את VCC2 למעקה 12V. קשרו את כל סיכות ה- EN ל -5V וטחנו את כל סיכות ה- GND.
חבר את סיכות TRIG ו- ECHO של החיישן הקולי ל- HV1 ו- HV2 של ממיר הלוגיקה בהתאמה. LV1 צריך להיות מחובר ל- JC4 ו- LV2 צריך להיות מחובר ל- JC3. עיין בתרשים עבור pinouts של Pmod. חבר את המנועים לנהג המנוע. Y1 צריך להיות מחובר למסוף החיובי של המנוע הימני ו- Y2 צריך להיות מחובר למסוף השלילי של המנוע הימני. באופן דומה, Y3 צריך להיות מחובר למסוף החיובי של המנוע השמאלי ו- Y4 צריך להיות מחובר למסוף השלילי של המנוע השמאלי. A1, A2, A3 ו- A4 צריכים להיות ממופים ל- JB2, JB1, JB4 ו- JB3 בהתאמה. עיין בסכימה למספרי סיכות. חברו את JC2 למקודד הימני ו- JC1 למקודד השמאלי. ודא שמשמשים נגדי משיכה כדי לקשור אותות אלה למעקה 3.3V. לבסוף, השתמש בכבל ה- Ethernet כדי לחבר את ה- ZYBO לנתב.
שלב 3: צור תרשים בלוק ב- Vivado
צור פרויקט RTL חדש ב- Vivado. הקפד לא לציין מקורות בשלב זה. חפש את "xc7z010clg400-1" והכה סיום. הורד encoder_driver.sv ו- ultrasonic_driver.sv. הנח אותם בתיקיות משלהם. פתח את מארז ה- IP תחת "כלים" ובחר לארוז ספרייה שצוין. הדבק את הנתיב לתיקייה המכילה את מנהל ההתקן של המקודד ולחץ על "הבא". לחץ על "חבילת IP" וחזור על התהליכים עבור מנהל ההתקן של חיישן קולי. לאחר מכן, נווט אל מנהל המאגר תחת סעיף משנה ה- IP בתפריט ההגדרות. הוסף את הנתיבים לתיקיות מנהל ההתקן ולחץ על Apply כדי לכלול אותם בספריית ה- IP.
צור תרשים בלוק חדש והוסף את "מערכת העיבוד ZYNQ7". לחץ פעמיים על הבלוק וייבא את הקובץ ZYBO_zynq_def.xml שסופק. תחת "תצורת MIO", הפעל את טיימר 0 ו- GPIO MIO. לחץ על "אישור" כדי לשמור את התצורה. הוסף 3 בלוקים מסוג "AXI GPIO" ו -4 קוביות "AXI טיימר". הפעל אוטומציה של בלוקים ואחריו אוטומציה של חיבורים עבור S_AXI. לחץ פעמיים על בלוקים GPIO כדי להגדיר אותם. בלוק אחד צריך להיות ערוץ כפול עם קלט של 4 סיביות ופלט של 4 סיביות. הפוך את החיבורים האלה לחיצוניים ותייג אותם SW עבור קלט ו- LED עבור פלט. הבלוק השני צריך להיות גם ערוץ כפול עם 2 כניסות של 32 סיביות. בלוק GPIO האחרון יהיה קלט יחיד של 32 סיביות. הפוך את פלט pwm0 מכל בלוק טיימר חיצוני. סמן אותם PWM0, PWM1, PWM2 ו- PWM3.
הוסף את מנהל ההתקן לאתר תרשים הבלוק וחבר את CLK ל- FCLK_CLK0. חבר את OD0 ו- OD1 לערוצי הקלט של בלוק ה- GPIO השני. הפוך את ENC חיצוני ושנה את שם ENC_0 ל- ENC. הוסף את בלוק החיישנים הקולי וחבר את CLK ל- FCLK_CLK0. הפוך את TRIG ו- ECHO לחיצוניים ושנה את שמו של TRIG_0 ל- TRIG ו- ECHO_0 ל- ECHO. חבר RF לגוש ה- GPIO השלישי. עיין בתרשים הבלוקים המצורף לעיון.
לחץ באמצעות לחצן העכבר הימני על קובץ תרשים החסימה שלך בחלונית המקורות וצור עטיפת HDL. הקפד לאפשר עריכות משתמשים. הוסף את הקובץ ZYBO_Master.xdc המסופק כאילוץ. הקש על "צור ביטסטרים" וקח הפסקת קפה.
שלב 4: הגדרת סביבת פיתוח תוכנה
עבור תחת "קובץ" כדי לייצא חומרה ל- Vivado SDK. הקפד לכלול את bitstream. ייבא את פרויקט RTOSDemo בתוך "CORTEX_A9_Zynq_ZC702". הוא יהיה ממוקם בספריית ההתקנה של FreeRTOS. צור חבילת תמיכה חדשה בלוח בחר את הספרייה lwip202. שנה את ה- BSP שהוזכר בפרויקט RTOSDemo ל- BSP שיצרת זה עתה*.
*בזמן כתיבת הוראה זו, נראה כי ל- FreeRTOS יש באג בהתייחסות ל- BSP הנכון. כדי לתקן זאת, צור BSP חדש עם אותן הגדרות כמו הראשון. שנה את ה- BSP שהוזכר לחדש ולאחר מכן שנה אותו בחזרה לישן לאחר שהוא לא מצליח לבנות. FreeRTOS אמור להיערך כעת ללא שגיאות. אל תהסס למחוק את ה- BSP שאינו בשימוש.
שלב 5: שנה את תוכנית ההדגמה
צור תיקייה חדשה בשם "מנהלי התקנים" תחת ספריית "src" של RTOSDemo. העתק את ה- gpio.h שסופק. קבצי gpio.c, pwm.h, pwm.c, odometer.h, odometer.c, rangefinder.c, rangefinder.h, motor.h ו- motor.c לתוך ספריית "מנהלי ההתקנים".
פתח את main.c והגדר את mainSELECTED_APPLICATION ל- 2. החלף main_lwIP.c תחת "lwIP_Demo" בגרסה המעודכנת. BasicSocketCommandServer.c תחת "lwIP_Demo/apps/BasicSocketCommandServer" צריך גם להתעדכן בגרסה חדשה. לבסוף, נווט אל "FreeRTOSv10.1.1/FreeRTOS-Plus/Demo/Common/FreeRTOS_Plus_CLI_Demos" והחלף Sample-CLI-commands.c בגרסה המסופקת. בנה את הפרויקט וודא שהכל מתאסף בהצלחה.
שלב 6: קושחת פלאש ל- QSPI
צור פרויקט יישומים חדש בשם "FSBL" באמצעות התבנית "Zynq FSBL". לאחר עריכת פרויקט FSBL, צור תמונת אתחול של פרויקט RTOSDemo. וודא כי "FSBL/Debug/FSBL.elf" נבחר כמטען האתחול תחת "מחיצות תמונת אתחול". הוסף את הנתיב לקובץ זה באופן ידני אם הוא אינו מופיע ברשימה.
העבר את מגשר ה- JP5 ב- ZYBO ל- "JTAG". השתמש בכבל USB Micro-B לחיבור המחשב שלך ל- ZYBO. חבר את הסוללה והפעל את ה- ZYBO. הפעל את Adept כדי לוודא שה- ZYBO מזוהה כראוי על ידי המחשב. לחץ על "תוכנת פלאש" ב- Vivado SDK וספק את הנתיבים לקובץ BOOT.bin ב- RTOSDemo וקובץ FSBL.elf ב- FSBL. הקפד לבחור "אמת לאחר הבזק" לפני שתלחץ על "תוכנית". צפה במסוף כדי להבטיח שהפעולה המהבהבת הושלמה בהצלחה. לאחר מכן, כבה את ה- ZYBO ונתק את כבל ה- USB. העבר את מגשר JP5 ל- "QSPI".
שלב 7: הגדר את נקודת הגישה האלחוטית
כשהסוללה עדיין מחוברת, התחבר לרשת ה- Wi-Fi של הנתב. ברירת המחדל של ה- SSID והסיסמה צריכים להיות בתחתית הנתב. לאחר מכן, נווט אל https://tplinkwifi.net והתחבר באמצעות "admin" לשם המשתמש והסיסמה. הפעל את אשף ההגדרה המהירה כדי להגדיר את הנתב במצב נקודת גישה כאשר DHCP מופעל. הקפד לעדכן גם את שם המשתמש והסיסמה המוגדרים כברירת מחדל עבור המכשיר. הנתב אמור לאתחל אוטומטית למצב נקודת גישה לאחר שתסיים.
הפעל את ה- ZYBO והתחבר לנתב באמצעות ה- SSID שהקצאת. סביר להניח שהנתב יופיע בכתובת IP 192.168.0.100 או 192.160.0.101. ה- ZYBO יוקצה לכל כתובת שאין לנתב. כדי לקבוע במהירות את כתובת ה- IP של הנתב, תוכל להריץ "ipconfig" משורת הפקודה בחלונות או "ifconfig" מהמסוף ב- Linux או ב- MacOS. אם אתה עדיין מחובר לנתב, תראה את כתובת ה- IP שלו מוצגת לצד הממשק האלחוטי שלך. השתמש במידע זה כדי לקבוע את כתובת ה- IP של ה- ZYBO. כדי לאשר את כתובת ה- IP של ה- ZYBO, תוכל ללחוץ עליה משורת הפקודה או להתחבר אליה באמצעות telnet.
שלב 8: הפעל את תוכנית Java
הורד את RobotClient.java וערך את הקובץ באמצעות הפקודה "javac RobotClient.java" משורת הפקודה. הפעל את הפקודה "java RobotClient" כאשר "ip_address" היא כתובת ה- IP של ה- ZYBO. ממשק המשתמש הבקרה יופיע אם יוצר חיבור מוצלח בין המחשב ל- ZYBO. לאחר מיקוד החלון, הרובוט צריך להיות נשלט באמצעות מקשי החצים במקלדת. לחץ על כפתור הבריחה כדי לסיים את ההפעלה ולהתנתק מהרובוט.
ה- GUI יסמן את המקשים שנלחצים ויציג את פלט המנוע בפינה השמאלית העליונה. מד המרחק משמאל ממלא סרגל כל 2 מטרים עד לכל היותר 10 מטרים.
שלב 9: כיול מד טווח
ניתן להשתמש במתגים המשולבים ב- ZYBO כדי להגדיר את מד הטווח המשולב. מרחק הזיהוי המינימלי d ניתן כפונקציה של כניסת המתג i:
d = 50i + 250
הקלט יכול להשתנות בין 0 ל -15 בשלבים שלמים. זה מתרגם לטווח מרחק של 0.25 מטר עד מטר. במרחק המרבי, הנורית הראשונה תתחיל להבהב. מספר הלדים הפעילים פרופורציונאלי לקרבת האובייקט.
שלב 10: נגישות
הרובוט הזה נגיש מאוד. בשל פשטות השליטה שלו, ניתן לשלוט בו במלואו באצבע אחת בלבד. כדי לשפר את הנגישות, ניתן להוסיף תמיכה בהתקני קלט נוספים. זה יכול לאפשר לשימושים נכים לשלוט ברובוט עם חלק אחר בגוף שלהם.
מוּמלָץ:
צלם תמונות נהדרות באמצעות אייפון: 9 שלבים (עם תמונות)
צלם תמונות נהדרות עם אייפון: רובנו נושאים איתנו סמארטפון לכל מקום בימים אלה, לכן חשוב לדעת כיצד להשתמש במצלמת הסמארטפון שלך לצלם תמונות נהדרות! היה לי רק סמארטפון במשך כמה שנים, ואהבתי להחזיק מצלמה ראויה לתיעוד דברים שאני
מחזיק תמונות עם רמקול מובנה: 7 שלבים (עם תמונות)
מחזיק תמונות עם רמקול מובנה: הנה פרוייקט נהדר לביצוע בסוף השבוע, אם אתה רוצה ליצור רמקול משלך שיכול להכיל תמונות/גלויות או אפילו רשימת מטלות. כחלק מהמבנה אנו הולכים להשתמש ב- Raspberry Pi Zero W כלב הפרויקט, ו
בינה מלאכותית וזיהוי תמונות באמצעות האסקי לנס: 6 שלבים (עם תמונות)
בינה מלאכותית וזיהוי תמונות באמצעות HuskyLens: היי, מה קורה חבר'ה! אקרש כאן מ- CETech. בפרויקט זה, נסתכל על האסקי לנס מ- DFRobot. זהו מודול מצלמה המונע על ידי AI המסוגל לבצע מספר פעולות בינה מלאכותית כגון זיהוי פנים
שעון תמונות Google: 7 שלבים (עם תמונות)
שעון תמונות של Google: מדריכים אלה מראים כיצד להשתמש ב- ESP32 ו- LCD ליצירת שעון דיגיטלי עם תצוגת תמונות אקראית ברקע בכל דקה. התמונות הגיעו משיתוף אלבום תמונות Google שלך, פשוט הזן את קישור השיתוף ESP32 יעשה את העבודה; >
מסגרת תמונות Raspberry Pi בפחות מ -20 דקות: 10 שלבים (עם תמונות)
מסגרת תמונות Raspberry Pi בפחות מ -20 דקות: כן, זו עוד מסגרת צילום דיגיטלית! אבל רגע, הוא מלוטש יותר, וכנראה המהיר ביותר להרכבה ולריצה