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

מיינקראפט אינטראקטיבי אל תכניס חרב/סימן (ESP32-CAM): 15 שלבים (עם תמונות)
מיינקראפט אינטראקטיבי אל תכניס חרב/סימן (ESP32-CAM): 15 שלבים (עם תמונות)

וִידֵאוֹ: מיינקראפט אינטראקטיבי אל תכניס חרב/סימן (ESP32-CAM): 15 שלבים (עם תמונות)

וִידֵאוֹ: מיינקראפט אינטראקטיבי אל תכניס חרב/סימן (ESP32-CAM): 15 שלבים (עם תמונות)
וִידֵאוֹ: כיתה: ד', אורח חיים בריא - הגנת הצומח בישראל - אל תכניס מזיק 2024, יולי
Anonim
Image
Image
מוצר סופי
מוצר סופי

ישנן באמת מספר סיבות לכך שהפרויקט הזה נוצר:

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

2. עצם העובדה ש- ESP32 הוא מיקרו-בקר רב ליבות מרתקת. תמיד הייתי סקרן אם אני יכול לנצל את התכונה הזו. אז הניסוי כאן היה: האם ESP32 יכול להזרים וידאו בצורה חלקה באמצעות ליבה אחת תוך ביצוע משהו אחר (בעל משמעות ובעיקר אינטנסיבי משהו אחר) על הליבה השנייה. עוד יותר מעניין ?? תמשיך לקרוא…!

3. הייתי זקוק לאתר בדיקה לפרויקטים האחרונים שלי בנוגע לאספקת קושחה OTA וניהול תצורה …

4. רכשתי לפני שני זמן שני מודולי LED Dot Matrix ולא הצלחתי להבין מה לעשות איתם …

5. בני הוא שחקן מיינקראפט, וכמו שכל ילד קטן אוהב לקשט את הדלת שלו בפוסטרים של "אל תיכנס" …

אז הנה - כל הסיבות הטובות ל: אינטראקטיבי אל תכנס שלט לדלת עם הזרמת ESP32 -CAM של הזנת וידאו "מאחורי הדלת הסגורה" - או "מי מגיע לחדר שלי?"

אז … על מה מדובר?

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

  • דו -קיום של ריבוי משימות מקדימות ושיתופיות
  • שימוש סלקטיבי בליבות ESP32
  • שימוש בספריות מילון ו- EspBootstrap חדשות
  • הקצאת הקושחה של OTA
  • ניהול תצורה
  • הזרמת וידאו למספר לקוחות

והרבה יותר.

תהנה

אספקה

  • ESP32-CAM
  • מודול MAX7219 Dot Matrix 4-in-1 LED Display Module Geekcreit for Arduino
  • בנק כוח Attom Tech 2500mAh

שלב 1: מוצר סופי

מוצר סופי
מוצר סופי

אתחיל באיך נראה המוצר הסופי ולאחר מכן אסביר כיצד הוא נבנה וכיצד ניתן לשלוט בו.

זה נראה יותר מרתק ככה …

שלב 2: לוח חרב

לוח חרב
לוח חרב
לוח חרב
לוח חרב

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

  • סמנו חרב על לוח לבן
  • חותכים את לוח הפנים
  • סמנו את הריבועים (או הבלוקים)
  • צבע אותם בנפרד
  • הוסף קווים שחורים עם שארפי.

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

שלב 3: תצוגת LED Dot Matrix

תצוגת LED Dot Matrix
תצוגת LED Dot Matrix
תצוגת LED Dot Matrix
תצוגת LED Dot Matrix
תצוגת LED Dot Matrix
תצוגת LED Dot Matrix

היו לי 2 מהם, 4 חלקים כל אחד, אז החלטתי להכין אחד בן 8 קטעים.

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

הכותרת הגברית הנגדית תשמש לחיבור כותרת נקבה תואמת מה- veroboard עם ESP32-Cam ורכיבים אחרים.

שני המרכיבים מחוברים לגשר המודפס בתלת-ממד, הכולל גם מתג להפעלה וכיבוי של קבצי STL תלת-ממדיים לגשר ורכיבים אחרים ממוקמים בתיקיית הקבצים/3d ב- GitHub.

שלב 4: כוח

כּוֹחַ
כּוֹחַ

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

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

שלב 5: סכמטי

סכמטי
סכמטי
סכמטי
סכמטי
סכמטי
סכמטי

הסכימה האמיתית ממוקמת ב- GitHub, אך תמונה שווה 1000 מילים (1024 בטכנולוגיות מידע), אז הנה:

זה די פשוט אם אתה יודע את הדרך שלך עם אקדח הלחמה. הערה: חלק הגשר התלת מימדי מיועד לגודל ספציפי מאוד של veroboard: 30 x 70 מ מ. אם תחליט להשתמש באחד אחר, עליך לעצב מחדש את רכיב הגשר.

שלב 6: הדפסה תלת מימדית

הדפסה תלת מימדית
הדפסה תלת מימדית
הדפסה תלת מימדית
הדפסה תלת מימדית
הדפסה תלת מימדית
הדפסה תלת מימדית

מארז הסוללות וגשר המחבר את veroboard ESP32-CAM למכלול התצוגה של מטריצות הנקודות תוכננו והודפסו בתלת מימד.

מארז הסוללה מגיע בשני חלקים, אותם יש להדביק יחד לאחר ההדפסה כדי ליצור "כיס" לסוללה. רק צריך לנקות את הגשר מכל מבני התמיכה (אין התמצאות טובה באמת שממזערת אותם, למרבה הצער). קבצי STL נמצאים על מסמכי GitHub ו- TinkerCad נמצאים כאן.

עיצוב התלת מימד ב- TinkerCad כולל גם את סכמת ההרכבה המדומה של אופן התאמת החלקים וצריך לחבר אותם.

שלב 7: תכנות

ריבוי משימות

עיצוב זה משתמש ב- FreeRTOS עבור ריבוי משימות מונעות וספריית TaskScheduler עבור אחת שיתופית. ההתנהגות וההודעות של חרב נשלטות באמצעות אפליקציית Blynk. לאחר ההתקנה (פינים, מצלמה ומאתרי מטריצות, התחברות ל- WiFi וכו '), שתי משימות RTOS עיקריות נוצרות:

  • משימת RTOS להזרמת וידאו, מוצמדת לליבת היישומים של ESP32 (ליבה 1)
  • תצוגת טקסט ו- Blynk שולטים במשימת RTOS, המוצמדים ל- Core Core של ESP32 (core 0), שאחראי גם לכל המשימות הקשורות ל- WiFi. טקסט וביצוע הקשור ל- Blynk מנוהל באמצעות משימות TaskScheduler.

גיליתי שמספיק שטח הערימה של 4K מספיק למשימות RTOS, אך ישנה אפשרות להיגמר הערימה, כך שאם אתה מעדיף תעשה 8K - יש הרבה זיכרון RAM ב- ESP32.

כל צילום והזרמת הסרטונים מתרחשים ב- Core 1. כל השאר - ב- Core 0.

ל- ESP32 יש מספיק כוח להתמודד עם כל זה עם קצת זיעה (הלוח מתחמם בעת הזרמת וידאו).

זו הייתה המטרה העיקרית של הפרויקט: דו -קיום שליו ופרודוקטיבי של ריבוי משימות מונעות ושיתופיות!

שלב 8: בקרת נקודות מטריקס

אני משתמש בספריות MD_Parola ו- MD_MAX72xx חזקות מאוד הזמינות גם במנהל הספרייה Arduino IDE.

כל האפקטים המיוחדים הטקסטואליים נעשים באמצעות ספריות אלה. נדרש קצת מאמץ כדי לקבוע את סוג החומרה הנכון MAX72XX (MD_MAX72XX:: ICSTATION_HW במקרה שלי, שלך עשוי להיות שונה), לאחר מכן שליטה בטקסט היא משב רוח.

החרב מאפשרת את הפקדים הבאים:

  • בְּהִירוּת
  • עִפעוּף
  • הֶבזֵק
  • מהירות וכיוון גלילה (למעלה/למטה, שמאלה/ימינה, יציבה)
  • אתה יכול גם להפוך אותו לשעון קיר

שלב 9: הזרמת וידאו

ל- Blynk App יש ווידג'ט קטן להזרמת וידאו, אך ניתן להזרים לדפדפן, לנגן VLC או לכל דבר התומך בתקן MJPEG.

נתמכים עד 10 לקוחות מחוברים.

יהיה עליך לברר את כתובת ה- IP של ESP32-CAM שלך בכדי שתוכל להתחבר אליה. תוכל לחפש אותו בנתב שלך, או לאסוף את הסקיצה הזו כאשר האפשרות _DEBUG_ מופעלת תחילה, ולקרוא את כתובת ה- IP של הטרמינל כשהיא מתחברת לרשת שלך.

חשוב: רצוי מאוד להקצות כתובת IP קבועה למודול ESP32-CAM, או ליצור הזמנת DHCP, כך שכתובתו לא תשתנה עם תום תקופת החכירה. תוכל גם לשנות את אפליקציית Blynk לעדכון כתובת ה- IP בכתובת ה- URL של הזרם - הקצאת שיעורי בית מעניינת אם אתה עומד בזה.

הסקיצה הנוכחית משתמשת ברזולוציית QVGA: 320x240 פיקסלים, מה שהופך אותה למהירה למדי. אתה חופשי ומעודד לשחק עם החלטות אחרות ולהחליט מה מתאים לך.

זיכרון RAM לא אמור להוות בעיה מכיוון שהשרטוט אכן מנצל את ה- PSRAM.

שלב 10: תצורה

המערכון מנצל את ספריות המילון שלי ו- EspBootstrap כדי לטעון פרמטרי תצורה משרת התצורה בעת האתחול.

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

תוכל גם להשתמש בכל אחד מהשירותים המקוונים הזמינים למשימה: (OTADrive, Microsoft Azure, AWS IoT וכו '). במקרה זה אנא שנה את שיטת String makeConfig (נתיב מחרוזת) כדי לבנות כראוי כתובת אתר המצביעה על מקור התצורה שלך. לחלופין, תוכל לשמור את קובץ התצורה במערכת הקבצים SPIFFS ב- ESP32-CAM ולקרוא אותו משם, או פשוט לקודד את כל הערכים. אנא ראה README של ספריית EspBootstrap לאפשרויות שלך.

דוגמה לקובץ תצורה ניתנת ב- GitHub.

אם אתה מעדיף פרמטרים של hardcode, להלן דוגמה:

pd ("כותרת", "הגדרת חרב DND");

pd ("ssid", "ssid wifi"); pd ("סיסמה", "סיסמת ה- wifi שלך"); pd ("msg", "Hello!"); pd ("התקנים", "8"); pd ("blynk_auth", "blynk AUTH UUID שלך"); // אם אתה מפעיל שרת משלך בלבד: pd ("blynk_host", "IP שרת blynk שלך"); pd ("blynk_port", "יציאת השרת שלך");

שלב 11: עדכוני קושחה של OTA

הסקיצה גם מפעילה עדכון קושחה של OTA (Over The Air) ובודקת קושחה חדשה בכל אתחול.

שוב, אני מפעיל שרת עדכוני OTA משלי, שתוכל לעשות גם כן (זהו שרת אינטרנט פשוט של Apache2 עם מעט סקריפטים של PHP המשרת קבצים בינאריים).

תוכל גם להשתמש בכל אחד משירותי ה- IoT המקוונים הזמינים למשימה: (OTADrive, Microsoft Azure, AWS IoT וכו '). במקרה זה אנא שנה את שיטת ה- voID checkOTA () כדי לבנות כראוי כתובת אתר עדכון המצביעה על מקור הקובץ הבינארי שלך.

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

שלב 12: שרת MJPEG

נושא זה מתואר בפירוט כאן.

שלב 13: אפליקציית Blynk

אפליקציית Blynk
אפליקציית Blynk
אפליקציית Blynk
אפליקציית Blynk
אפליקציית Blynk
אפליקציית Blynk

Blynk היא פלטפורמת IoT מבוססת ענן המאפשרת פיתוח אפליקציות מהיר. זה בחינם לשימוש אישי ואפילו יש לו אפשרות להפעיל שרת Blynk משלך.

אני (כפי שכבר ניחשתם) מפעיל שרת Blynk משלי, אך אולי יהיה לכם קל יותר להשתמש בגרסת הענן. התקן את אפליקציית Blynk iOS או Android, ועקוב אחר התמונות למטה כדי לשחזר את האפליקציה בטלפון שלך.

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

חשוב: ודא שפרויקט Blynk שלך מוגדר להודיע למכשירים כאשר האפליקציה מחוברת.

הערה בווידג'ט הזרמת הווידיאו: לפעמים הסרטון אינו מופעל. לא נראה שזו בעיה ב- ESP32, אלא ביישומון הווידאו של אפליקציית Blynk. נסה לסגור ולפתוח מחדש את האפליקציה או לעצור/להתחיל את הפרויקט שוב. בסופו של דבר, זה אכן מתחיל. נראה כי בעיה זו אינה קיימת בדפדפן או בנגן VLC (למשל).

שלב 14: תהנה

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

שלב 15: ספריות וקוד

ספריות:

  • שרת בלינק
  • ספריית EspBootstrap
  • ספריית TaskSplaner
  • ספריית מילונים
  • ספריית LED מטריקס
  • ספרייה לתצוגות טקסט של מטריצת LED מודולרית

מאגר בפועל:

Minecraft Interactive אל תכניס חרב/סימן (ESP32-CAM)

מוּמלָץ: