- רכיבים נדרשים
- דברים שכדאי לזכור לגבי מודול המצלמה OV7670
- תרשים מעגל
- תכנות Arduino UNO
- כיצד להשתמש בקורא יציאות סדרתי לקריאת תמונות
- להלן תמונות לדוגמא שצולמו מה- OV7670
- אמצעי זהירות בעת השימוש ב- OV7670
מצלמות תמיד שלטו בתעשיית האלקטרוניקה כיוון שיש לה הרבה יישומים כמו מערכת ניטור מבקרים, מערכת מעקב, מערכת נוכחות וכו '. מצלמות בהן אנו משתמשים כיום הן חכמות ויש להן הרבה תכונות שלא היו קיימות במצלמות קודמות. בעוד שמצלמות דיגיטליות של ימינו לא רק מצלמות תמונות אלא גם מצלמות תיאורים ברמה גבוהה של הסצנה ומנתחות את מה שהן רואות. נעשה בו שימוש נרחב ברובוטיקה, בינה מלאכותית, למידת מכונה וכו '. המסגרות שנתפסו מעובדות באמצעות בינה מלאכותית ולמידת מכונה, ואז משתמשים בהן ביישומים רבים כמו זיהוי לוחית מספר, זיהוי עצמים, זיהוי תנועה, זיהוי פנים וכו'.
במדריך זה נתממש את מודול המצלמה הנפוץ ביותר OV7670 עם Arduino UNO. ניתן לממשק את מודול המצלמה OV7670 עם Arduino Mega עם אותה תצורת סיכה, קוד ושלבים. קשה לממשק את מודול המצלמה מכיוון שיש לו מספר רב של סיכות וחיווט מעורבב לביצוע. כמו כן החוט הופך לחשוב מאוד בעת שימוש במודולי מצלמה שכן בחירת החוט ואורך החוט יכולה להשפיע באופן משמעותי על איכות התמונה ועלולה להביא לרעש.
כבר עשינו פרויקטים רבים במצלמות עם סוגים שונים של בקרי מיקרו והתקני IoT כגון:
- מערכת ניטור מבקרים עם Raspberry Pi ו- Pi Camera
- מערכת אבטחה ביתית Raspberry Pi מבוססת IOT עם התראת דוא"ל
- מצלמת מעקב פטל פי עם לכידת תנועה
מצלמת OV7670 עבודות על 3.3V, כך הוא הופך להיות מאוד חשוב להימנע Arduino אשר נותן תפוקת 5V ב סיכות GPIO הפלט שלהם. OV7670 היא מצלמת FIFO. אבל במדריך זה, התמונה או המסגרות יתפסו ללא FIFO. במדריך זה יהיו שלבים פשוטים ותכנות פשוט לממשק OV7670 עם Arduino UNO.
רכיבים נדרשים
- ארדואינו UNO
- מודול מצלמה OV7670
- נגדים (10k, 4.7k)
- מגשרים
תוכנה נדרשת:
- ארדואינו IDE
- קורא יציאות טוריות (לניתוח תמונת פלט)
דברים שכדאי לזכור לגבי מודול המצלמה OV7670
מודול המצלמה OV7670 הוא מודול מצלמת FIFO הזמין מיצרנים שונים עם תצורות פינים שונות. TheOV7670 מספק תמונות בעלות 8 סיביות עם חלונות מלאים במגוון רחב של פורמטים. מערך התמונות מסוגל לפעול עד 30 פריימים לשנייה (fps) ב- VGA. ה- OV7670 כולל
- מערך חיישני תמונה (של כ- 656 x 488 פיקסלים)
- מחולל תזמון
- מעבד אותות אנלוגי
- ממירי A / D
- מחולל דפוסי בדיקה
- מעבד אותות דיגיטלי (DSP)
- Scaler תמונה
- יציאת וידאו דיגיטלית
- פלט בקרת פלאש LED ו- Strobe
חיישן התמונה של OV7670 נשלט באמצעות אוטובוס בקרת מצלמה סידורי (SCCB) שהוא ממשק I2C (SIOC, SIOD) בתדר שעון מרבי של 400KHz.
המצלמה מגיעה עם אותות לחיצת יד כגון:
- VSYNC: פלט סינכרון אנכי - נמוך במהלך המסגרת
- HREF: הפניה אופקית - גבוהה במהלך פיקסלים פעילים של השורה
- PCLK: פלט שעון פיקסל - שעון פועל בחינם. הנתונים תקפים בקצה העולה
בנוסף לכך, יש לו כמה אותות נוספים כמו
- D0-D7: פלט דיגיטלי של רכיב וידיאו YUV / RGB של 8 סיביות
- PWDN: בחירת מצב כיבוי - מצב רגיל ומצב כיבוי
- XCLK: קלט שעון מערכת
- איפוס: איפוס אות
ה- OV7670 שעון מתנד 24 מגה-הרץ. זה נותן פלט של שעון פיקסל (PCLK) של 24 מגה-הרץ. ה- FIFO מספק 3Mbps של זיכרון חיץ מסגרת וידאו. מחולל דפוסי הבדיקה כולל דפוס סרגל צבעים 8 ברים, דפוס בר צבעים דוהה לאפור. עכשיו נתחיל לתכנת את Arduino UNO לבדיקת מצלמה OV7670 ולתפוס מסגרות באמצעות קורא יציאה טורית.
תרשים מעגל
תכנות Arduino UNO
התכנות מתחיל בהכללת הספריה הנדרשת לצורך OV7670. מכיוון ש- OV7670 פועל על ממשק I2C, הוא כולללאחר מכן, יש לשנות את הרישומים עבור OV7670. התוכנית מחולקת לפונקציות קטנות להבנה טובה יותר.
Setup () כולל את כל ההגדרות הראשוניות הנדרשת עבור לכידת תמונה בודדת בלבד. הפונקציה הראשונה היא arduinoUnoInut () המשמשת לאתחול ה- arduino uno. בתחילה הוא משבית את כל ההפרעות הגלובליות ומגדיר את תצורות ממשק התקשורת כגון שעון ה- PWM, בחירת סיכות הפסקה, בחירת presclaer, הוספת זוגיות וסיביות עצירה.
ArduinoUnoInut ();
לאחר הגדרת התצורה של הארדואינו, יש להגדיר את המצלמה. כדי לאתחל את המצלמה, יש לנו רק אפשרויות לשנות את ערכי הרישום. יש לשנות את ערכי הרישום מברירת המחדל למנהג. הוסף גם עיכוב נדרש בהתאם לתדר המיקרו-בקר בו אנו משתמשים. כמו, למיקרו-בקרים איטיים יש פחות זמן עיבוד ומוסיף עיכוב רב יותר בין לכידת המסגרות.
בטל camInit (בטל) { writeReg (0x12, 0x80); _עיכוב_מס (100); wrSensorRegs8_8 (ov7670_default_regs); writeReg (REG_COM10, 32); // PCLK אינו מחליף את HBLANK. }
המצלמה מוגדרת לצלם תמונה QVGA ולכן יש לבחור את הרזולוציה. הפונקציה מגדירה את הרישום לצילום תמונה של QVGA.
setResolution ();
במדריך זה התמונות מצולמות במונוכרום, ולכן ערך הרישום מוגדר להפקת תמונה מונוכרום. הפונקציה מגדירה את ערכי הרישום מרשימת הרשומות אשר מוגדרת מראש בתוכנית.
setColor ();
הפונקציה שלהלן היא לכתוב לפונקציה הרשומה אשר כותבת את ערך ה- hex כדי לרשום. אם אתה מקבל את התמונות המקושקשות, נסה לשנות את המונח השני כלומר 10 ל- 9/11/12. אך לרוב ערך זה עובד בסדר ולכן אין צורך לשנות אותו.
writeReg (0x11, 10);
פונקציה זו משמשת לקבלת גודל רזולוציית התמונה. בפרויקט זה אנו מצלמים בגודל 320 x 240 פיקסלים.
captureImg (320, 240);
מלבד זאת, בקוד יש גם תצורות I2C המחולקות למספר חלקים. רק כדי לקבל את הנתונים מהמצלמה, בתצורות I2C יש פונקצית התחלה, קריאה, כתיבה, הגדרת כתובת שחשובות בעת שימוש בפרוטוקול I2C.
תוכל למצוא את הקוד השלם עם סרטון הדגמה בסוף הדרכה זו. פשוט העלה את הקוד ופתח את Reader Port Reader ותפס את המסגרות.
כיצד להשתמש בקורא יציאות סדרתי לקריאת תמונות
Reader Port Reader הוא ממשק משתמש פשוט, הורד אותו מכאן. זה לוכד את קידוד base64 ומפענח אותו ליצירת תמונה. פשוט בצע את הצעדים הפשוטים הבאים לשימוש בקורא הנמלים הסידורישלב 1: חבר את Arduino שלך לכל יציאת USB במחשב שלך
שלב 2: לחץ על "בדוק" כדי למצוא את יציאת ה- Arduino COM שלך
שלב 3: לבסוף לחץ על כפתור "התחל" כדי להתחיל לקרוא באופן סדרתי.
שלב 4: ניתן גם לשמור את התמונות על ידי לחיצה על "שמור תמונה".
להלן תמונות לדוגמא שצולמו מה- OV7670
אמצעי זהירות בעת השימוש ב- OV7670
- נסה להשתמש בחוטים או במגשרים קצרים ככל האפשר
- הימנע מכל מגע רופף לסיכות על Arduino או OV7670
- היזהר בחיבור מכיוון שמספר רב של חיווט יכול להוביל לקצר
- אם ה- UNO נותן פלט של 5 וולט ל- GPIO, השתמש ב- Shifter ברמה.
- השתמש בקלט 3.3V עבור OV7670 כמתח גדול מכך עלול לפגוע במודול OV7670.
פרויקט זה נוצר בכדי לתת סקירה על השימוש במודול מצלמה עם Arduino. מכיוון שלארדואינו יש פחות זיכרון, כך שהעיבוד לא יכול להיות כצפוי. אתה יכול להשתמש בבקרים שונים שיש בהם יותר זיכרון לעיבוד.