תוכן עניינים:
- אספקה
- שלב 1: הרכבת החומרה
- שלב 2: ודא שה- Pi שלך מחובר לאינטרנט
- שלב 3: הגדר את המצלמה
- שלב 4: התקן את הבקבוק
- שלב 5: צור מחלקת טפסים
- שלב 6: צור תבנית בקבוק
- שלב 7: עיבד את התבנית
- שלב 8: צור כיתת מפעיל מצלמות
- שלב 9: צור את מודול הרשומה
- שלב 10: הפעל את השרת
- שלב 11: נסה זאת
וִידֵאוֹ: מצלמת אבטחה של פטל פי: 11 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:12
זהו מדריך שלב אחר שלב כיצד ליצור מצלמת אבטחה המופעלת בתנועה באמצעות IoT באמצעות פטל פטל. תלמד כיצד ליצור שרת אינטרנט וצורה המאפשרים למשתמש להתאים את הרגישות ואת זמן ההקלטה של המצלמה, להתחיל/לעצור באופן ידני הקלטה ו/או לצלם תמונה שתישמר באופן מקומי.
אספקה
- פטל פי 3
- מצלמת פי
- חיישן תנועה PIR
- כרטיס זיכרון
- מקור כוח
שלב 1: הרכבת החומרה
בזמן שה- Pi כבוי, הכנס את כרטיס ה- micro-SD לתוך ה- Pi. הכנס את כבל הסרט של מודול המצלמה ליציאת מודול המצלמה בפי. לאחר מכן, חבר את 3 הפינים (שכותרתם VCC, OUT ו- GND) של גלאי התנועה PRI לסיכות ה- GPIO של ה- Pi. חבר את VCC לחשמל של 5.5V, ה- GND לקרקע ואת ה- OUT לסיכה 11 בפי.
שלב 2: ודא שה- Pi שלך מחובר לאינטרנט
כעת, הפעל את ה- Pi על ידי חיבורו למקור חשמל וודא שאתה מחובר לאינטרנט באמצעות הפקודה ping. אם אינך יודע כיצד לחבר את ה- Pi שלך לאינטרנט, לחץ כאן.
sudo ping www.google.com
אם אתה מצליח, אתה אמור לראות ש- Google מתקבלת נתונים.
בנוסף, תוכל להשתמש ב- ifconfig כדי לראות את כתובת ה- IP שלך.
sudo ifconfig
שלב 3: הגדר את המצלמה
השתמש בפקודה הבאה כדי לפתוח את ממשק התצורה, ולהפעיל את המצלמה ב"אפשרויות הממשק ".
sudo raspi-config
לאחר אתחול מחדש, תוכל להציג את מצב המצלמה שלך כדי לוודא שהיא מחוברת כראוי.
vcgencmd get_camera
לבסוף, התקן את מודול פיקמרה.
pip להתקין picamera
שלב 4: התקן את הבקבוק
התקן את הבקבוק והמודול הנינוח-בקבוק עבור Python:
sudo apt-get להתקין python-dev python-pip
python -m pip התקן את הבקבוקון -רגוע
לאחר מכן, נתקין מודול בקבוק פייתון המשמש ליצירת טפסים.
pip התקן flask-wtf
שלב 5: צור מחלקת טפסים
צור ספרייה בשם iotProject לאחסון כל הקבצים שלך.
sudo mkdir iotProject
צור קובץ פייתון בשם "camControl.py".
sudo nano camControl.py
בקובץ זה ניצור את מחלקת הטפסים שלנו, המאפשרת לנו ליצור טופס אינטרנט עם תיבות טקסט ותפריט נפתח כדי שהמשתמש יוכל לשנות את הגדרות המצלמה, להתחיל/לעצור הקלטה באופן ידני ולצלם וידאו.
מ- flask_wtf ייבוא FlaskFormfrom wtforms.validators ייבוא נתוניםנדרש מ wtforms ייבוא SubmitField ממאמת ייבוא wtforms, IntegerField, BooleanField, SelectField
class camFrame (FlaskForm):
videoDuration = IntegerField ('זמן הקלטה (בשניות)')
רגישות = IntegerField ('רגישות תנועה (טווח 2500-10000) n ככל שהמספר גבוה יותר, כך המצלמה פחות רגישה', validators = [validators. NumberRange (min = 2500, max = 10000, message = 'Value Out out Range')])
options = SelectField ('אפשרויות', בחירות = [('אין', 'אין פעולה'), ('rec', 'התחל להקליט'), ('עצור', 'עצור הקלטה'), ('תמונה', 'צלם תמונה'])
submit = SubmitField ('שלח')
שלב 6: צור תבנית בקבוק
כדי ליצור את ממשק המשתמש, עליך לעצב תבנית בקבוק המשתמשת בטופס שיצרת זה עתה. קובץ זה ייכתב ב- html, ויאוחסן בתיקייה בשם תבניות, שאמורה להיות באותה ספרייה כמו הטופס שלך.
בתוך תיקיית התבניות שלך, צור קובץ בשם index.html. בתוך קובץ זה, העתק את הקוד המוצג למעלה.
שלב 7: עיבד את התבנית
כעת הגיע הזמן ליצור קובץ המעבד את התבנית. צור קובץ בשם appCam.py (ודא שאתה כבר לא בתיקיית התבניות). כל תוכן דינמי המשמש בתבנית חייב לשמש כארגומנט בשם בקריאה render_template ().
ייבוא camControl מתוך בקבוק ייבוא בקבוק, render_template, בקשה, תגובה ממשאב ייבוא flask_restful, Api, reqparse
אפליקציה = בקבוק (_ שם_)
app.config ['SECRET_KEY'] = '13542' api = Api (אפליקציה)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'משך הסרטון בעת זיהוי תנועה') parser.add_argument ('sens', type = int, help = 'רמת התנועה הנדרשת להפעלת הקלטה') מנתח.add_argument ('opt', type = str, help = 'הקלטת סרטון ידני או צילום תמונה')
עדכון מחלקה (משאב):
#Stuff for wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #כתוב לקובץ הטקסט מדבר עם המצלמה הפועלת במקביל cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (args ['dur'] + '\ n') #write dur cameraSettingsFile.write (args ['sens'] + '\ n') #write sens cameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () החזר {'dur': args ['dur'], 'sens': args ['sense'], 'opt': args ['opt']}
@app.route ('/', method = ['GET', 'POST'])
def index (): "" "דף הבית של הבקר" "" form = camControl.camFrame () #זוהי טופס אם request.method == 'POST': print (request.form) args = [i for i בבקשה.form.items ()] #rc.input (int (args [0] [1]), int (args [1] [1]), args [2] [1]) cameraSettingsFile = open ("cameraSettings.txt ", 'w') cameraSettingsFile.write (args [0] [1] + '\ n') #write במהלך cameraSettingsFile.write (args [1] [1] + '\ n') #write sens cameraSettingsFile.write (args [2] [1] + '\ n') #write opt cameraSettingsFile.close () imageDictionary = {"filename": "image.jpg"} החזר render_template ('index.html', form = form, image = imageDictionary)
api.add_resource (עדכון, '/עדכון/')
אם _name_ == '_ עיקר_':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
שלב 8: צור כיתת מפעיל מצלמות
כעת אנו רוצים ליצור קובץ בשם camOperator.py. בה נכין שיעור מצלמות עם שיטות להפעלת המצלמה, תוך שימוש בפונקציות PiCamera שכבר זמינות. נשתמש במופע של אובייקט זה בשלב הבא בו נשלב את הפונקציונליות של המצלמה וחיישן התנועה.
השיטות המוגדרות במחלקה זו משנות את הגדרות "הרשומה" במצלמת האבטחה באמצעות תשומות הרגישות והמשך שהמשתמש מספק, תוך קביעת ערכי ברירת מחדל עבור משתנים אלה אם אין קלט משתמש.
ייבוא RPi. GPIO כ- GPIO ייבוא זמן מצלמה מייבוא תאריך זמן
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
לזהות = 0
מצלמה בכיתה מפעיל:
def _init _ (עצמי):
#קונסטרוקטור self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "אין"
שיא def (עצמי, dur):
#Records למשך הזמן הנתון שהוגדר על ידי הבקר videoName = str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') Self.cam.start_recording ('/home/pi/iotProject/videos/' + videoName + '.h264') time.sleep (dur) self.cam.stop_recording ()
פעולת def (עצמי, dur, sens):
#הפעלה ראשית של המצלמה שכל הזמן בודקת אם אדם נמצא בקרבת מקום, אם בן אדם נשאר מספיק זמן, אנחנו מתחילים להקליט! זיהוי גלובלי i = GPIO.input (11) אם i == 0: #כאשר הפלט מחיישן התנועה הוא LOW detect = 0 time.sleep (0.1) elif i == 1: #כאשר הפלט מחיישן התנועה הוא הדפסה גבוהה (" תנועה זוהתה " +str (זיהוי)) אם זיהוי> = sens*10: self.record (dur) הדפסה (" RECORDED ") detect = 0 time.sleep (0.1) detect += 1
שלב 9: צור את מודול הרשומה
התוכנית האחרונה הדרושה לפרויקט זה תיכתב בקובץ בשם rec.py. קובץ זה אומר למצלמה מתי לצלם, כמה זמן להקליט ואם/מתי לצלם. הוא עושה זאת על ידי בדיקה וקריאה מתמדת של נתוני המשתמש שנכתבו לקובץ הטקסט משלב 5. אם הקובץ עודכן הוא מתאים את ערכי הרגישות והמשך בהתאם, ולאחר מכן, אם מצולמים הקלטה או תמונה, הוא שומר את התוכן ל pi, בפורמט קובץ.h264 או.jpg.
'' 'פועל במקביל לשרת הבקבוקון, קריאת משתני בקרה שנקבעו על ידי צורות השרת. משתני בקרת השרת מוגדרים בקובץ נפרד לאחר שליחת הטפסים. מודול ה- rec קורא משתנים אלה ומעדכן את המצלמה בהתבסס עליהם. '' 'יבוא camOperator משעת ייבוא datetime של datetime
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #כאן, אנו פותחים וסוגרים במצב כתיבה על מנת למחוק את התוכן בתוך הקובץ לפני הפעלת הלולאה הראשית.
#לולאה רציפה אשר צופה כדי לראות אם בני אדם נמצאים בקרבת מקום. אם הם כן, אז
#המצלמה מתחילה להקליט. פונקציה זו פועלת במקביל עם הבקבוק #שרת השולט במצלמה זו. recordingInProcess = False while True: #check/record if (recordingInProcess == False): rc.operation (rc.dur, rc.sens) #שנה את הגדרות המצלמה בהתבסס על השרת cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 להגדרה ב- cameraSettingsFile.readlines (): if settingNum == 0: #שינוי שינוי rc.dur = int (הגדרה) elif settingNum == 1: #שינוי רגישות rc.sens = int (הגדרה) elif settingNum == 2: #Action change rc.opt = setting settingNum += 1 cameraSettingsFile.close ()
#לבצע פעולה
# if rc.opt == "none": # המשך אם rc.opt == "rec / n" ו recordingInProcess == שקר: הדפס ("הפעלת פקודת רשומה מהבקר") # צור שם לסרטון המבוסס על שם וידאו בזמן אמת = "snappedVid _"+str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/home/pi/iotProject /videos/' + videoName +'.h264 ') recordingInProcess = true elif rc.opt == "stop / n" and recordingInProcess == True: הדפס ("הפסקת פקודת הקלטה מבקר") rc.cam.stop_recording () recordingInProcess = False cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile. כתוב ("none / n") rc.opt = "none / n" elif rc.opt == "pic / n" והקלטתInProcess == שקר: הדפס ("הצמד פקודת פיקוד מהבקר") pictureName = "snappedPic_ "+str (datetime.now ()) pictureName = pictureName.replace (':', ') pictureName = pictureName.replace ('. ',') rc.cam.st art_preview () time.sleep (5) rc.cam.capture ('images/' + pictureName + '.jpg') rc.cam.stop_preview () cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile. לכתוב (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("אין / n") rc.opt = "אין / n"
שלב 10: הפעל את השרת
SSH לתוך ה- pi והפעל את השרת באמצעות שורת הפקודה המוצגת למעלה.
שלב 11: נסה זאת
גש לדף האינטרנט באמצעות כתובת ה- IP ואתה אמור להיות מסוגל לשלוט במצלמה מרחוק!
מוּמלָץ:
מצלמת אבטחה של רייבן פי: 7 שלבים (עם תמונות)
מצלמת אבטחה רייבן פי: עורב הפלסטיק הזה נהנה מחיים חדשים לאחר מצלמת אבטחה מעשית אך מצמררת, רייבן פי. יש לו פטל פטל בבטן ומצלמת פי מוטמעת בצוואר, ומצלמת וידאו HD בכל פעם שמתגלה תנועה. באותו רגע זה
תצוגת/צג מצלמת IP באמצעות פטל פטל: 4 שלבים
תצוגת/צג מצלמת IP באמצעות פטל פטל: בעת הערכת אפשרויות NVR מתאימות, נתקלתי במאגר מצלמות התצוגה המאפשר לך להציג הזנות וידאו מרובות של מצלמות רשת. הוא תומך גם במעבר בין מסכים מרובים ואנו נשתמש בפרויקט זה עבור תוכנה זו
מצלמת אבטחה חיצונית עם כל התכונות המבוססות על פטל פטל: 21 שלבים
מצלמת אבטחה חיצונית במלואה המבוססת על פטל פאי: אם היו לך חוויות מאכזבות עם מצלמות אינטרנט זולות, התוכנה הלא כתובה שלהן ו/או חומרה לא מספקת, תוכל לבנות בקלות מצלמת רשת חצי מקצועית עם פטל פי ועוד כמה רכיבים אלקטרוניים אחרים. למצוא על איזה רץ
אבטחה ביתית עם פטל פטל: 6 שלבים (עם תמונות)
אבטחת הבית עם פטל פטל: זהו פתרון פשוט שיכול לגרום לך להרגיש רגוע יותר כאשר אתה עוזב את הדירה שלך - קבל הודעות דוא"ל עם תמונות של הנכס שלך מבקר על ידי אורחים לא רצויים, זרוע ופרק את מערכת האבטחה שלך בצורה הקלה והאמינה ביותר ( ללחוץ
SnapPiCam - מצלמת פטל פטל: 7 שלבים (עם תמונות)
SnapPiCam | מצלמת פטל פטל: Adafruit השיקה את ה- PiTFT שלה לא מזמן וקניתי אחת מיד מפימורוני. זמן קצר לאחר מכן פרסמה Adafruit הדרכה שכותרתה DIY WiFi Raspberry Pi מצלמת מסך מגע. קראתי אותו היטב ובעמוד האחרון את הסעיף האחרון