בפוסט הזה אני מסביר ממש בקצרה ובאופן מאד פשוט איך מחברים מצלמה למיקרו בקר מסוג ESP32 ומתחברים אליה באמצעות מיקרופייתון. אני נעזר בגיט ריפו הזה.
נדרש ידע והבנה ב-ESP32 על מנת לקרוא ולהבין פוסט זה. אם אין לכם – ממש לא נורא ואפשר להתחיל בפוסט הזה שלי המסביר על ESP32 להורים וילדים והוא מבוא לסדרת פוסטים בנושא שקריאה שלהם תביא כל אחד למצב שהוא יודע לעבוד עם מיקרופייתון ו-ESP32.
המצרכים:
ESP32 עם מצלמה – זה לא ESP32 רגיל אלא ESP32 שיש בו מקום למצלמה וכמובן מצלמה. האמת היא שאפשר לקנות אותם בנפרד אבל אני ממליץ לרכוש אותם ביחד כשהם כבר מחוברים ומולחמים. זה עולה עוד שני שקלים (ליטרלי שני שקלים) אבל מונע הסתבכות באלקטרוניקה. דוגמה למה שאני קניתי ועובד איתו. שימו לב שזה לא לינק אפיליאציה כי אני לא משפיענית אינסטוש. אפשר גם לחפש ESP32-CAM ESP32-CAM-MB MICRO USB ESP32 Serial to WiFi ESP32 CAM Development Board בגוגל.
גם כשקונים את ה-ESP32 עם מצלמה, היא באה בנפרד וצריך לחבר אותה. אפשר לעשות את זה בלי כלים בכלל – יש תריס קטן שאפשר להרים אותו עם הציפורן (או מברג קטן) ואז משחילים את המצלמה כך שהמגעים הולכים למגעים.
בתמונה שלמעלה התריס פתוח – פתחתי אותו עם הציפורן בזהירות והשחלתי את הסרט של המצלמה.
אחרי שהשחלתי, אני סוגר את התריס והמצלמה מוכנה לפעולה.
שלב התוכנה
הכי קל, מהניסיון שלי, זה לצרוב Firmware שכולל בתוכו את הדרייבר של המצלמה ובמקרה של ESP32 camera זה ממש פשוט. יש לנו את esp32-cam-micropython-2022 שהוא יופי של דרייבר וגם בא עם הוראות פשוטות ומדויקות. אנחנו נוריד את firmware.bin למחשב. פשוט מאתרים את firmware.bin ברשימה (אפשר להעזר בקישור הישיר הזה) ולוחצים על האייקון של ההורדה.
את ה-Firmware שהורדנו אנחנו צורבים עם Thonny כפי שהסברתי בפוסט הזה. מי שמכיר ועובד עם ESP32 לא יתקשה להתמודד עם זה וזה שלב באמת פשוט.
נתחבר עם Thonny אחרי הצריבה (מהניסיון שלי – עדיף לנתק ולחבר שוב את ה-ESP32 ולהמתין כשתי דקות). אם הכל תקין, אנו נתחבר בקונסולה וב-REPL (המקום שבו אפשר להקליד פקודות של פייתון) את הסטטוס הזה:
MicroPython v1.18-610-gcf7d962cf-kaki5 on 2022-06-10; ESP32 CAMERA module (KAKI5) with ESP32
אחרי שנצחק קצת על זה שכתוב שם kaki, נכניס ל-REPL את הפקודות הבאות ונראה אם באמת יש את הפלט:
>>> import camera
>>> camera.init()
True # אם הוא לא מדפיס True, נתקו את המיקרובקר מהחשמל וחברו מהחשמל והמתינו כמה דקות
>>> img=camera.capture()
>>> len(img)
58810 # או מספר אחר
>>>
זה עובד? מעולה! הכל מוכן! אפשר להתחיל לעבוד!
אפשר כמובן לכתוב קוד ישיר, אבל האמת היא שיש בריפו הזה דוגמה מאד מאד נחמדה – אפשר להעתיק את הקבצים שנמצאים בתיקיה הראשית אל התיקיה הראשית ב-ESP32 – פשוט פותחים אותם ב-Thonny ושומרים אותם ב-ESP32 עם השם המתאים:
help.py
html.py
site.py
webcam.py
wifi.py
שימו לב להכניס ב-wifi.py את פרטי הרשת שלכם!
ואז להקליד ב-REPL:
execfile('webcam.py')
ירוץ שרת ווב עם קישור – תלחצו על הקישור שבו אפשר לראות בזמן אמת את הפלט של המצלמה!
ואפשר להכנס לכתובת, שזמינה ברשת שלכם ולבדוק את המצלמה בזמן אמת.
אפשר להריץ שם גם פיד חי והכל. מאד מאד כיפי!
אבל כמובן שזו רק ההתחלה. כלומר אם אתם רוצים מצלמה מרחוק – יש לכם את זה והכל בעלות של כלום (אם תחברו גם אנטנה בעוד שני שקלים, תוכלו לשים את המצלמה הזו מאד מרחוק). אבל ברגע שיש לנו וידאו או תמונה, אפשר גם להתחיל בדברים יותר רציניים ועל כך בפוסט הבא.
ועוד הערה רק על בטיחות. שימו לב שהשרת הזה פתוח החוצה תיאורטית וכל אחד חמוש ב-shodan יכול לגשת אליו. נכון, יש פה סוג של אבטחה אבל זה באמת לא יעצור מישהו שירצה להכנס. שימו לב להשתמש ב-FireWall או לפחות לא להציב את המצלמה במקום רגיש. מסדרון מחוץ לבית? זה בסדר. חדר השינה שלכם? פחות.
11 תגובות
למה אתה אומר פתוח ברשת? יש לנו את ההגנה של הNAT לא?
מעניין כתמיד! תודה!
מיגון וסגירה של השרת לפי כתובת MAC או משהו ספציפי אחר דורשת ציוד נוסף?
אחרי שלב ההתקנה מקבל את השגיאה הבאה:
Device is busy or does not respond. Your options:
– wait until it completes current work;
– use Ctrl+C to interrupt current work;
– reset the device and try again;
– check connection properties;
– make sure the device has suitable MicroPython / CircuitPython / firmware;
– make sure the device is not in bootloader mode.
יש לך רעיון למה זה?
ניסיתי כמה פעמים לנתק ולחבר.. לא עזר
נראה לי שכדאי לצרוב מחדש את ה firmware כי משהו השתבש שם.
תודה רבה רן האלוף על המדריכים הנהדרים, נתקלתי באותה שגיאה, ניסיתי לצרוב firmware אחרים אבל עדיין אני מקבל את השגיאה.
חשוב לציין שבזמן הצריבה, אני כן מקבל פידבק מטוני שהצריבה מתרחשת ופועלת, אבל בסוף אני נשאר בלי הדרייבר.
אשמח לעזרה, תודה רבה
או קיי, אם ניסית על מיקרובקרים אחרים ועדיין יש את השגיאה, נסה את הפעולות הבאות:
1. החלף את הכבל (נשבע לך).
2. נסה להוריד מחדש את קובץ ה-bin.
3. נסה להוריד מחדש את Thonny
4. נסה לצרוב ממחשב אחר.
אחרי שבוע של מחקר גיליתי משהו שעזר לי… תנסו גם אתם:
https://iot.stackexchange.com/questions/6220/esp32-cam-unable-to-use-micropython-and-connect-to-the-esp
אמלק; כנסו ל- thonny ובתפריט העליון תבחרו: /tools/open thonny data folder.
בתקייה שנפתחת תיכנסו לקובץ configuration.ini עם עורך קוד כלשהו (אולי אפילו nootpad). ואז מתחת לחלק של [ESP32] תכניסו את השורות :
dtr = False
rts = False
אני הצלחתי….
אותה תופעה כמו של Oz.
ממשיך להיאבק. אעדכן.
אוקיי,
התקנה ידנית של הדרייבר (CP210x_Universal_Windows_Driver)
פתרה את הבעיה.
הורדתי אותו מכאן:
https://www.silabs.com/developers/usb-to-uart-bridge-vcp-drivers?tab=downloads
טוב, השמחה היתה מוקדמת. הבקר ללא המצלמה עובד יפה אבל הבקר עם המצלמה עדיין מסרב להזדהות.
קניתי מהקישור שנתת, אבל כנראה דגם אחר – קיבלתי בקר ללא אפשרות לחיבור לחשמל.