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

רובוט מצלמה ESP32 - FPV: 6 שלבים
רובוט מצלמה ESP32 - FPV: 6 שלבים

וִידֵאוֹ: רובוט מצלמה ESP32 - FPV: 6 שלבים

וִידֵאוֹ: רובוט מצלמה ESP32 - FPV: 6 שלבים
וִידֵאוֹ: Esp32 Cam #arduino #engineer #programming #robot #techologies #arduinorobot 2024, יולי
Anonim
Image
Image
רובוט מצלמה ESP32 - FPV
רובוט מצלמה ESP32 - FPV
רובוט מצלמה ESP32 - FPV
רובוט מצלמה ESP32 - FPV

מודול מצלמת ESP32 הוא PLC זול ורב עוצמה. זה אפילו כולל זיהוי פנים!

בואו לבנות רובוט נקודת מבט מגוף ראשון שאתה מניע באמצעות ממשק אינטרנט מובנה!

פרויקט זה משתמש במודול Geekcreit ESP32 עם מצלמת OV2640. הוא מבוסס על מודול AIThinker.

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

הרובוט עובד כדלקמן.

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

כאשר ה- ESP32 מקבל לחיצות על מקשים, הוא מעביר את הבייטים האלה ל- Arduino Nano אשר מניע את המנועים כדי לגרום לרובוט לזוז.

פרויקט זה הינו בעל קושי בינוני-גבוה. בבקשה קח את הזמן.

בואו נתחיל!

אספקה

  • מודול מצלמה ESP -32 עם מצלמת OV2640 - אני ממליץ על מוצר Geekcreit
  • אנטנת הצמד חיצונית ל- ESP-32 למקסם את עוצמת האות
  • ארדואינו ננו
  • ארדואינו לאונרדו עבור מודול הג'ויסטיק (אנחנו צריכים אמולציית מקלדת USB המסופקת על ידי לאונרדו)
  • מודול ג'ויסטיק כללי
  • שבב L293D Quad H-bridge
  • ממיר באק DC-DC עם פלט 5V להפעלת ה- ESP32
  • מתאם סידורי FTDI לתכנות ה- ESP32
  • שלדת רובוט כללית עם שני מנועים עם הילוכים - כל שלדה תעבוד. מומלץ מנועי 3 עד 6V
  • 2 x 7.4V 1300mAh סוללות LiPo (או דומה) להפעלת ה- ESP32 והמנועים
  • 1 x סוללת 9V להנעת ה- Arduino Nano

שלב 1: תכנת את מצלמת ESP32

תכנות את מצלמת ESP32
תכנות את מצלמת ESP32
תכנות את מצלמת ESP32
תכנות את מצלמת ESP32

בעזרת לוח לחם, חבר את מצלמת ה- ESP32 שלך למתאם FTDI כדלקמן:

FTDI ESP32

3.3V ----------- 3.3V

GND ----------- GND

TX ----------- U0R

Rx ----------- U0T

בנוסף, חבר את פין IO0 ("עין-או-אפס") ל- GND. עליך לעשות זאת כדי להכניס את ESP32 למצב תכנות.

פתח את הקובץ esp32CameraWebRobotforInstructable.zip.

ישנם 4 קבצים בפרויקט זה:

esp32CameraWebRobotforInstructable.ino הוא הסקיצה של Arduino.

ap_httpd.cpp הוא הקוד המנהל את שרת האינטרנט ועוסק בהגדרת תכונות המצלמה מדף האינטרנט וקבלת לחיצות מקשים מדף האינטרנט.

camera_index.h מכיל את קוד HTML/JavaScript ליישום האינטרנט כמערכי בתים. שינוי יישום האינטרנט הוא הרבה מעבר להיקף הפרויקט הזה. אכלול קישור כיצד לשנות את ה- HTML/JavaScript מאוחר יותר.

camera_pins.h הוא קובץ הכותרת הנוגע לתצורת הפינים של מצלמת ESP32.

כדי להכניס את ESP32 למצב תכנות, עליך לחבר את IO0 ("עין-אפס") לאדמה.

הפעל את Arduino IDE שלך ועבור אל כלים/לוחות/מנהל לוחות. חפש את esp32 והתקן את ספריית esp32.

פתח את הפרויקט ב- Arduino IDE שלך.

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

עבור לתפריט כלים ובצע את הבחירות כפי שמוצג בתמונה למעלה.

לוח: ESP32 Wrover

מהירות העלאה: 115200

תוכנית חלוקה: "APP ענק (3MB ללא OTA)"

ובחר את היציאה שאליה מחובר מתאם ה- FTDI שלך.

לחץ על כפתור "העלה".

עכשיו, לפעמים, ESP32 לא יתחיל להעלות. אז היה מוכן ללחוץ על כפתור האיפוס בגב ה- ESP32 כאשר אתה מתחיל לראות את התווים … --- … המופיעים במסוף במהלך ההעלאה. לאחר מכן הוא יתחיל להעלות.

כאשר אתה רואה 'הקש על RST' במסוף, ההעלאה הושלמה.

נתק IO0 מהקרקע. נתק את קו 3.3V בין מתאם FTDI לבין ESP32.

מצלמת ESP32 דורשת זרם רב כדי לעבוד היטב. חבר מתאם מתח 5V 2A לסיכות 5V ו- GND ב- ESP32.

פתח את הצג הסידורי, הגדר את קצב השידור ל- 115200 ולאחר מכן צפה כאשר ה- ESP32 מופעל מחדש. בסופו של דבר תראה את כתובת האתר של השרת.

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

שלב 2: בנה את הרובוט

בנה את הרובוט
בנה את הרובוט

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

לאחר מכן חבר את הרובוט לפי התרשים. השאר את חיבורי הסוללה לעת עתה.

ה- L293D משמש לשליטה במנועים. שימו לב שחצי החריץ בשבב הוא לקראת ה- ESP32.

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

רובוט זה דורש רק 4 סיכות ועדיין עובד באופן מלא.

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

בכיוונים קדימה, סיכות INPUT מוגדרות ל- LOW וסיכות אפנון גל הדופק של המנוע מוגדרות לערכים שבין 0 ל -255 עם 0 כלומר OFF ו- 255 כלומר מהירות מרבית.

בכיוונים הפוכים, סיכות INPUT מוגדרות ל- HIGH וערכי ה- PWM הפוכים. 0 פירושו מהירות מקסימלית ו- 255 פירושו כבוי.

שחרר והעלה את הסקיצה של ArduinoMotorControl ל- Arduino Nano.

שלב 3: היי! חכי שנייה! למה אני צריך ננו ארדואינו?

אתם בוודאי חושבים, "היי! יש לפחות 4 סיכות IO זמינות במצלמת ESP32. למה אני לא יכול להשתמש בהן לשליטה במנועים?"

ובכן, זה נכון, יש סיכות ב- ESP32 כדלקמן:

IO0 - נחוץ להכנסת ESP32 למצב תכנות

IO2 - זמין

IO4 - נורית הפלאש

IO12, IO13, IO14, IO15, IO16 - סיכות GPIO נוספות.

אם אתה רק טוען סקיצה בסיסית על ESP32 כדי לשלוט בסיכות באמצעות פקודות PWM, הן אכן עובדות.

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

אז הדבר הכי קל לעשות הוא פשוט להשתמש בננו כדי לשלוט במנועים באמצעות PWM ולשלוח את הפקודות מה- ESP32 באמצעות תקשורת טורית על חוט אחד (ESP32 U0T ל- Arduino Rx0) ו- GND. פשוט מאוד.

שלב 4: חבר את ג'ויסטיק ה- USB (אופציונלי)

אתה יכול להניע את הרובוט על ידי שליחת לחיצות מקשים לדף האינטרנט כדלקמן:

8 - קדימה

9 - קדימה ימינה

7 - קדימה שמאלה

4 - סובב שמאלה

5 - עצור

1 - הפוך שמאלה

2 - הפוך

3 - הפוך ימינה.

סקיצת הג'ויסטיק של USB מתרגמת את כניסות הג'ויסטיק ללחיצות מפתחות ושולחת אותן לממשק האינטרנט שמעביר אותן אל הארדואינו כדי להניע את הרובוט.

חבר את הג'ויסטיק ל- Arduino LEONARDO כדלקמן:

ג'ונסטיק לאונרדו

5V ---------- VCC

GND ---------- GND

A0 ---------- VRx

A1 ---------- VRy

פתח את הסקיצה usbJoyStick, בחר Arduino Leonardo כמו הלוח והעלה אותו ל- Leonardo.

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

שלב 5: בואו לרכוב

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

לאחר מכן, חבר את הסוללות שלך כדלקמן.

1. הפעל את מצלמת ESP32. נדרשת מספר שניות להפעלת שרת האינטרנט.

2. הפעל את ה- Arduino Nano.

3. הפעל את המנועים.

הפעל את הדפדפן ועבור לכתובת ה- ESP32.

לחץ על הלחצן התחל הזרמה.

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

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

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

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

עכשיו לכו והפכו משהו למופלא!

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

שלושת המתגים הקדמיים המותקנים הם כדלקמן:

שמאל - סוללת כוח מנוע

מרכז - סוללת ארדואינו

ימין - סוללת מצלמה ESP32

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

רובוט עכשיו בנקודת גישה

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

שלב 6: פרטים כיצד לשנות את קוד HTML/Javascript עבור שרת האינטרנט

זה לא הכרחי, אבל היו לי כמה בקשות.

מסרתי ל- Google Doc הזה פרטים על אופן השימוש ב- CyberChef כדי להמיר הלוך ושוב בין HTML/Javascript לבין ייצוג מערכי הבייטים בקובץ camera_index.h.

מוּמלָץ: