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

נעילת חכם לזיהוי פנים עם כובע LTE Pi: 4 שלבים
נעילת חכם לזיהוי פנים עם כובע LTE Pi: 4 שלבים

וִידֵאוֹ: נעילת חכם לזיהוי פנים עם כובע LTE Pi: 4 שלבים

וִידֵאוֹ: נעילת חכם לזיהוי פנים עם כובע LTE Pi: 4 שלבים
וִידֵאוֹ: CS50 2014 - Week 10 2024, יולי
Anonim
נעילת חכם לזיהוי פנים עם כובע LTE Pi
נעילת חכם לזיהוי פנים עם כובע LTE Pi

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

שלב 1: דברים המשמשים בפרויקט זה

רכיבי חומרה

  • פטל פי 3 דגם ב '
  • מודול מצלמת Raspberry Pi V2
  • גרוב - ממסר
  • כובע LTE Cat 1 Pi (אירופה)
  • צג 10.1 אינץ '1200x1980 HDMI IPS LCD

אפליקציות תוכנה ושירותים מקוונים

  • WinSCP
  • פנקס ++

שלב 2: חיבור חומרה

חיבור חומרה
חיבור חומרה

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

אז אתה צריך לחבר מצלמה לממשק המצלמות של Raspberry Pi, ולהתקין אנטנה ו- Grove - ממסר לכובע LTE Pi, ואז חבר HAT ל- Pi שלך. ניתן לחבר את המסך ל- Raspberry Pi באמצעות כבל HDMI, אל תשכח לחבר כוח למסך ול- Pi.

שלב 3: תכנות תוכנה

זיהוי פנים

תודה על אדם Geitgey ופרויקט זיהוי הפנים שלו, נוכל להשתמש בספריית זיהוי הפנים הפשוטה ביותר בעולם ב- Raspberry Pi. השלבים הבאים יראו לך כיצד להתקין זיהוי פנים ב- Pi.

שלב 1. השתמש ב- raspi-config כדי להגדיר את המצלמה ואת זיכרון ה- GPU.

sudo raspi-config

בחירת אפשרויות ממשק - מצלמה בכדי לאפשר את מצלמת הפיקרה, ולאחר מכן בחירה באפשרויות מתקדמות - פיצול זיכרון כדי להגדיר זיכרון GPU, יש לשנות אותה ל- 64. לאחר סיום, הפעל מחדש את ה- Raspberry Pi שלך.

שלב 2. התקן את הספריות הנדרשות.

עדכון sudo apt-get

sudo apt-get upgrade sudo apt-get install build-essential / cmake / gfortran / git / wget / curl / graphicsmagick / libgraphicsmagick1-dev / libatlas-dev / libavcodec-dev / libavformat-dev / libboost-all-dev / libgtk2. 0-dev / libjpeg-dev / liblapack-dev / libswscale-dev / pkg-config / python3-dev / python3-numpy / python3-picamera / python3-pip / zip sudo apt-get clean

שלב 3. צור picamerea תומך במערך.

sudo pip3 להתקין -שדרג פיקמרה [מערך]

שלב 4. התקן dlib וזיהוי פנים.

sudo pip3 התקן dlib

sudo pip3 התקן face_recognition

שלב 5. הורד והפעל דוגמה לזיהוי פנים

שיבוט git-ענף יחיד

cd./face_recognition/exemples python3 facerec_on_raspberry_pi.py

הודעה: אם קיבלת את ImportError: libatlas.so.3: לא ניתן לפתוח קובץ אובייקט משותף: אין קובץ או ספרייה כאלה, הפעל את הפקודה הבאה כדי לתקן אותו.

ממסר

כאשר זיהוי הפנים מוכן, נוכל להמשיך להוסיף תכונות נוספות. חיברנו את Grove - ממסר ל- LTE Cat 1 Pi HAT, אך הוא משתמש ביציאה דיגיטלית ולא ביציאת I2C.

זהו סיכת היציאה ל- Raspberry Pi 3B, אנו יכולים לראות סיכת SDA וסיכת SCL הממוקמים בסיכה 3 וסיכה 5 של הלוח.

תמונה
תמונה

כך שנוכל לשלוט בממסר על ידי יציאות אות דיגיטלי לפין 5. הפעל את תוכנית הפייתון למטה ב- Raspberry Pi שלך, אם שום דבר לא משתבש, תשמע Ti-Ta מממסר.

ייבא RPi. GPIO כ- GPIO

RELAY_PIN = 5 GPIO.setmode (GPIO. BOARD) GPIO.setup (RELAY_PIN, GPIO. OUT) פלט GPIO.out (RELAY_PIN, GPIO. HIGH)

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

def load_known_faces (עצמי):

known_faces = os.listdir (self._ known_faces_path) עבור known_face ב- known_faces: self._ known_faces_name.append (known_face [0: len (known_face) - len ('. jpg')]) known_face_image = face_recognition.load_image_file (self._ known_faces_pface) self._ known_faces_encoding.append (face_recognition.face_encodings (known_face_image) [0]) return len (self._ known_faces_encoding) def unlock (self): if self._ matched.count (True)> 0: GPIO.output (self._ relay_pin, GPIO. HIGH) הדפסה ('דלת נפתחה') time.sleep (5) GPIO.output (self._ relay_pin, GPIO. LOW) self._ reset_recognise_params () return self true._ retry_count += הדפסה אחת ('נסה שוב … { } '. פורמט (self._ retry_count)) החזר שקר

תחשוב בצורה מעבר, אנו יכולים להראות את התמונה מי זיהה, ספריות PIL ו- matplotlib יכולות להיות מועילות, ביניהן, matplotlib צריך להיות מותקן באופן ידני, הפעל פקודה זו במסוף ה- Raspberry Pi שלך.

sudo pip3 התקן matplotlib

ייבא אותם בקוד שלך ושנה אם חסימת שיטת נעילת () כך:

img = Image.open ('{}/{}. jpg'.format (self._ known_faces_path, self._ known_faces_name [0]))

plt.imshow (img) plt.ion () GPIO.output (self._ relay_pin, GPIO. HIGH) הדפסה ('דלת נפתחה') plt.pause (3) plt.close () GPIO.output (self._ relay_pin, GPIO. LOW) עצמי._ reset_recognise_params () החזר True

כעת, אם זיהה פנים, התמונה בתיקייה תוצג על המסך.

תמונה
תמונה

סמס

לפעמים אנחנו רוצים לדעת מי נמצא בחדר שלנו, ועכשיו יש מקום ל- LTE Cat 1 Pi HAT. חבר אליו כרטיס SIM ובצע את השלבים למטה כדי לבדוק אם הוא עובד או לא.

שלב 1. הפעל UART0 ב- Raspberry Pi

השתמש ב- nano לעריכת config.txt ב- /boot

sudo nano /boot/config.txt

הוסף dtoverlay = pi3-disable-bt לתחתיתו, והשבת את שירות hciuart

sudo systemctl השבת hciuart

ואז מחק קונסולה = serial0, 115200 ב- cmdline.txt ב /אתחול

sudo nano /boot/cmdline.txt

לאחר שהכל נעשה, עליך לאתחל את ה- Raspberry Pi שלך.

שלב 2. הורד דוגמה והפעל אותה.

פתח מסוף ב- Raspberry Pi שלך, הקלד אליו את הפקודה הזו שורה אחר שורה.

תקליטור ~

שיבוט git https://github.com/Seeed-Studio/ublox_lara_r2_pi_hat.git cd ublox_lara_r2_pi_hat sudo python setup.py התקן cd test sudo python test01.py

אם אתה רואה את הפלטים האלה במסוף שלך, ה- LTE Cat 1 Pi HAT עובד היטב.

זוהה כותרת GPIO עם 40 פינים

הפעלת CTS0 ו- RTS0 ב- GPIOs 16 ו- 17 rts cts בהתעוררות … שם המודול: LARA-R211 RSSI: 3

עכשיו ידענו שה- HAT פועל היטב, כיצד להשתמש בו לשליחת SMS? הדבר הראשון שאתה צריך לדעת הוא ש- Raspberry Pi מתקשרים עם ה- HAT באמצעות פקודות שלח AT על ידי UART. אתה יכול לשלוח פקודות AT ל- LTE HAT על ידי הפעלת קוד זה בפייתון

מיבוא ublox_lara_r2 *

u = Ublox_lara_r2 () u.initialize () u.reset_power () # סגור עיסוי באגים u.debug = שווא u.sendAT ('')

הפקודה AT לשליחת SMS היא כדלקמן

AT+CMGF = 1

AT+CMGS =

אז הנה שיטת _send_sms ():

def _send_sms (עצמי):

אם עצמי._ phonenum == אין: החזר שקר עבור הנעילה בעצמי._ מזהה_פנים_שמות (): אם עצמי._ ublox.sendAT ('AT+CMGF = 1 / r / n'): הדפס (עצמי._ ublox.response) אם עצמי. _ublox.sendAT ('AT+CMGS = "{}" / r / n'.format (self._ phonenum)): הדפס (self._ ublox.response) אם עצמי._ ublox.sendAT (' {} היכנס לחדר. / x1a'.format (ביטול נעילה)): הדפסה (self._ ublox.response)

הערה: ספריית LTE Cat 1 Pi HAT שנכתבה על ידי python2, שאינה תואמת במיוחד ל- python3, אם ברצונך להשתמש בה באמצעות זיהוי פנים, אנא הורד אותה מהקישור מסוף מאמר זה.

מוּמלָץ: