תוכן עניינים:
- שלב 1: רשימת חלקים
- שלב 2: הגדרת ה- Raspberry Pi
- שלב 3: פטל פאי והר מצלמה
- שלב 4: הרכבה של רמזורים
- שלב 5: חיווט (חלק 1)
- שלב 6: בניית הסביבה
- שלב 7: סיום מסגרת ה- PVC
- שלב 8: חיווט (חלק 2)
- שלב 9: סיים
- שלב 10: תוספות (תמונות)
וִידֵאוֹ: מנתח תבניות תנועה באמצעות זיהוי אובייקטים חיים: 11 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
בעולם של היום, רמזורים חיוניים לכביש בטוח. עם זאת, פעמים רבות, רמזורים יכולים להטריד במצבים בהם מישהו מתקרב אל האור בדיוק כשהוא הופך לאדום. זה מבזבז זמן, במיוחד אם האור מונע מכלי רכב אחד לעבור את הצומת כאשר אין אף אחד אחר על הכביש. החידוש שלי הוא רמזור חכם המשתמש בזיהוי אובייקטים חיים מתוך מצלמה כדי לספור את מספר המכוניות בכל כביש. החומרה שבה אשתמש לפרויקט זה היא Raspberry Pi 3, מודול מצלמה וחומרה אלקטרונית למיניהן לאור עצמו. השימוש ב- OpenCV ב- Raspberry Pi, המידע שנאסף יופעל באמצעות קוד השולט בנורות דרך ה- GPIO. בהתאם למספרים אלה, הרמזור ישתנה ויאפשר למכוניות לעבור בצורה האופטימלית ביותר. במקרה זה, הנתיב המכיל הכי הרבה מכוניות יינתן לעבור כך שהנתיב עם פחות מכוניות יסתובב, ויפחית את זיהום האוויר. זה יבטל מצבים שבהם מכוניות רבות נעצרות כשאין מכוניות על הכביש המצטלב. זה לא רק חוסך זמן לכולם, אלא גם חוסך את הסביבה. פרק הזמן שאנשים נעצרים ליד תמרור עצור כשהמנוע שלהם בסרק מגביר את כמות זיהום האוויר, כך שעל ידי יצירת רמזור חכם אני יכול לייעל את דפוסי האור כך שמכוניות מבלות את הזמן הפחות אפשרי כשהרכב עצור.. בסופו של דבר, מערכת רמזורים זו יכולה להיות מיושמת בערים, בפרברים או אפילו באזורים כפריים, כך שיעילותם של אנשים תפחית את זיהום האוויר.
שלב 1: רשימת חלקים
חומרים:
Raspberry Pi 3 דגם B v1.2
מצלמת Raspberry Pi v2.1
ספק כוח מיקרו USB 5V/1A
צג HDMI, מקלדת, כרטיס SD עכבר עם ג'סי Raspbian
כבל פריצה של Raspberry Pi GPIO
נוריות אדומות, צהובות, ירוקות (2 מכל צבע)
מחברים נקבים ל- Raspberry Pi (7 צבעים ייחודיים)
חוט 24 מד שונה (צבעים שונים) + צינורות כיווץ חום
לוח או פלטפורמה מעץ 2'x2 '
ברגים מעץ
משטח שחור (קרטון, לוח קצף, לוח פוסטרים וכו ')
סרט לבן (או כל צבע אחר מאשר שחור) לסימון כבישים
צבע ריסוס שחור (ל- PVC)
צינור PVC בגודל חצי אינץ 'עם מפרקי מרפקים 90 מעלות (2), שקע T (1), מתאם נקבה (2)
כלים
מלחם
מדפסת תלת מימד
מקדחה עם מקדחים שונים
לוח לחם
אקדח חום
שלב 2: הגדרת ה- Raspberry Pi
טען את כרטיס ה- SD ב- Raspberry Pi והפעל אתחול.
עקוב אחר מדריך זה להתקנת ספריות OpenCV הנדרשות. ודא שיש לך זמן לבצע את השלב הזה, מכיוון שהתקנת ספריית OpenCV עשויה להימשך מספר שעות. הקפד להתקין ולהגדיר את המצלמה שלך כאן.
עליך גם להתקין פיפ:
פיקמרה
gpiozero
RPi. GPIO
להלן הקוד הסופי:
מייבוא picamera.array PiRGBArray
מייבוא picamera PiCamera
ייבא picamera.array
ייבא numpy כמו np
זמן יבוא
יבוא cv2
ייבא RPi. GPIO כ- GPIO
זמן יבוא
GPIO.setmode (GPIO. BCM)
עבור i in (23, 25, 16, 21):
GPIO.setup (i, GPIO. OUT)
cam = PiCamera ()
cam.resolution = (480, 480)
cam.framerate = 30
raw = PiRGBArray (מצלמה, גודל = (480, 480))
time.sleep (0.1)
colorLower = np.array ([0, 100, 100])
colorUpper = np.array ([179, 255, 255])
initvert = 0
inithoriz = 0
מונה = 0
למסגרת ב- cam.capture_continuous (raw, format = "bgr", use_video_port = True):
frame = frame.array
hsv = cv2.cvtColor (מסגרת, cv2. COLOR_BGR2HSV)
mask = cv2.inRange (hsv, colorLower, colorUpper)
מסכה = cv2.blur (מסכה, (3, 3))
מסכה = cv2.dilate (מסכה, ללא, איטרציות = 5)
mask = cv2.erode (מסכה, ללא, איטרציות = 1)
מסכה = cv2.dilate (מסכה, ללא, איטרציות = 3)
אני, גוש = cv2.threshold (מסכה, 127, 255, cv2. THRESH_BINARY)
cnts = cv2.findContours (גוש, cv2. RETR_TREE, cv2. CHAIN_APPROX_SIMPLE) [-2]
מרכז = אין
vert = 0
אופק = 0
אם len (cnts)> 0:
עבור c ב- cnts:
(x, y), רדיוס = cv2.min סגירת מעגל (c)
מרכז = (int (x), int (y))
רדיוס = int (רדיוס)
cv2.circle (מסגרת, מרכז, רדיוס, (0, 255, 0), 2)
x = int (x)
y = int (y)
אם 180 <x <300:
אם y> 300:
vert = vert +1
elif y <180:
vert = vert +1
אַחֵר:
vert = vert
אם 180 <y <300:
אם x> 300:
אופק = אופק +1
elif x <180:
אופק = אופק +1
אַחֵר:
אופק = אופק
אם vert! = initvert:
- "מכוניות בנתיב אנכי:" + str (vert)
initvert = vert
- "מכוניות בנתיב אופקי:" + str (אופק)
inithoriz = אופק
הדפס '----------------------------'
אם אופק! = inithoriz:
- "מכוניות בנתיב אנכי:" + str (vert)
initvert = vert
- "מכוניות בנתיב אופקי:" + str (אופק)
inithoriz = אופק
הדפס '----------------------------'
אם vert <אופק:
פלט GPIO.out (23, GPIO. HIGH)
פלט GPIO. 21 (GPIO. HIGH)
פלט GPIO.out (16, GPIO. LOW)
פלט GPIO.out (25, GPIO. LOW)
אם אופק <vert:
פלט GPIO (16, GPIO. HIGH)
פלט GPIO.out (25, GPIO. HIGH)
פלט GPIO.out (23, GPIO. LOW)
פלט GPIO.out (21, GPIO. LOW)
cv2.imshow ("מסגרת", מסגרת)
cv2.imshow ("HSV", hsv)
cv2.imshow ("סף", גוש)
raw.truncate (0)
אם cv2.waitKey (1) & 0xFF == ord ('q'):
לשבור
cv2.destroyAllWindows ()
GPIO.cleanup ()
שלב 3: פטל פאי והר מצלמה
הדפס תלת -ממד את המארז ותושבת המצלמה והרכבה.
שלב 4: הרכבה של רמזורים
בדוק את הרמזור בעזרת לוח לחם. כל קבוצת נוריות מנוגדות חולקות אנודה, וכולן חולקות קתודה (קרקע) משותפת. סך הכל צריכים להיות 7 חוטי קלט: 1 לכל זוג נוריות (6) + חוט קרקע אחד. הלחמה והרכבת הרמזורים.
שלב 5: חיווט (חלק 1)
הלחם את סיכות הכותרת הנשית בכ -5 מטרים של חוט. אלה הם הצדדים שחוטים אלה יחטפו דרך צינורות ה- PVC בהמשך. הקפד להיות מסוגל להבחין בין מערכות האורות השונות (2 x 3 צבעים ואחד קרקע). במקרה זה, סימנתי את הקצוות של קבוצה נוספת של חוטים אדומים, צהובים וכחולים בעזרת שארפי כך שאדע איזה מהם.
שלב 6: בניית הסביבה
בניית הסביבה צור משטח עץ מרובע בגודל 2 מטר כזה. גרוטאות עץ בסדר כיוון שהוא יהיה מכוסה. לקדוח חור שמתאים בדיוק למתאם שלך. מקדחים ברגים בצידי המזרן כדי לאבטח את צינור ה- PVC במקומו. חותכים את לוח הקצף השחור כך שיתאים למשטח העץ שמתחתיו. לקדוח חור שמתאים לצינור ה- PVC. חזור על הפעולה בפינה הנגדית. סמנו את הכבישים בעזרת סרט לבן.
שלב 7: סיום מסגרת ה- PVC
על הצינור העליון, לקדוח חור שיכול להתאים לצרור חוטים. חור מחוספס בסדר גמור כל עוד ניתן לגשת אל פנים הצינורות. נחש את החוטים דרך צינורות ה- PVC ומפרקי המרפק להתאמת מבחן. לאחר שהכל סיים, צבעו את ה- PVC בעזרת צבע ריסוס שחור כדי לנקות את מראה המסגרת הראשית. חותכים פער קטן באחד מצינורות ה- PVC כך שיתאימו למפרק T. הוסף צינור PVC למפרק ה- t כדי שהרמזור יתקע ממנו. הקוטר יכול להיות זהה למסגרת הראשית (1/2 אינץ '), אם כי אם אתה משתמש בצינור דק יותר, וודא ש -7 החוטים יכולים להתגנב דרכו. קדח חור דרך הצינור כדי שהרמזור יתלוש ממנו.
שלב 8: חיווט (חלק 2)
חבר מחדש הכל כפי שנבדק בעבר. בדוק שוב את הרמזור והחיווט עם לוח לחם כדי לוודא שכל החיבורים בוצעו. הלחם את הרמזור לחוטים המגיעים דרך זרוע מפרק ה- T. עטפו את החוטים החשופים בעזרת סרט חשמלי למניעת מכנסיים קצרים ולמראה נקי יותר.
שלב 9: סיים
כדי להפעיל את הקוד, הקפד להגדיר את המקור שלך כ ~/.profile ו- cd למיקום הפרויקט שלך.
שלב 10: תוספות (תמונות)
מוּמלָץ:
פיקסלים חיים - תארו לעצמכם שלטכנולוגיה יש חיים: 4 שלבים (עם תמונות)
פיקסלים חיים - תארו לעצמכם שלטכנולוגיה יש חיים: כשראיתי שמוצרים ביתיים חכמים נפוצים יותר בחיינו, התחלתי לחשוב על מערכת היחסים בין אנשים ומוצרים אלה. אם יום אחד מוצרי הבית החכם יהפכו לחלק בלתי נפרד מחיי כולם, אילו עמדות עלינו לנקוט
ניטור טרריום לטאה באמצעות בקר Adoia IoT WiFi + זיהוי תנועה: 17 שלבים (עם תמונות)
ניטור טרריום לטאה באמצעות בקר WiFi של Adosia IoT + זיהוי תנועה: במדריך זה נראה לך כיצד לבנות טרריום לטאה פשוט לקומץ ביצי קמצן שמצאנו והפרענו בטעות בגינון בחוץ. אנו רוצים שהביצים יבקעו בבטחה, אז כל שנעשה הוא ליצור מרחב בטוח באמצעות פלסטיק
זיהוי אובייקטים W/ Dragonboard 410c או 820c באמצעות OpenCV ו- Tensorflow .: 4 שלבים
אובייקט זיהוי W/ Dragonboard 410c או 820c באמצעות OpenCV ו- Tensorflow .: הוראות הוראה אלה מתארות כיצד להתקין מסגרות OpenCV, Tensorflow ולמידת מכונה עבור Python 3.5 להפעלת היישום זיהוי אובייקטים
זיהוי תנועה באמצעות פטל פטל: 4 שלבים
זיהוי תנועה באמצעות פטל פטל: במדריך זה נלמד כיצד אנו יכולים להשתמש בחיישן PIR (פסיבי אינפרא אדום) עם פטל פי, על מנת לבנות גלאי תנועה פשוט. הוא משמש לחישת תנועה של אנשים, בעלי חיים או אובייקטים אחרים. הם משמשים בדרך כלל בבורג
זיהוי אובייקטים חזותיים באמצעות מצלמה (TfCD): 15 שלבים (עם תמונות)
זיהוי אובייקטים חזותיים באמצעות מצלמה (TfCD): שירותים קוגניטיביים שיכולים לזהות רגשות, פנים של אנשים או אובייקטים פשוטים נמצאים עדיין בשלב מוקדם של התפתחות, אך עם למידת מכונה הטכנולוגיה הזו הולכת ומתפתחת. אנו יכולים לצפות לראות יותר מהקסם הזה ב