Cuprins:
- Provizii
- Pasul 1: Asamblați hardware-ul
- Pasul 2: Asigurați-vă că Pi-ul dvs. este conectat la Internet
- Pasul 3: configurați camera
- Pasul 4: Instalați Flask
- Pasul 5: Creați o clasă de formular
- Pasul 6: Creați un șablon de balon
- Pasul 7: redați șablonul
- Pasul 8: Creați o clasă de operator de cameră
- Pasul 9: Creați modulul de înregistrare
- Pasul 10: Porniți serverul
- Pasul 11: ÎNCERCAȚI
Video: Cameră de securitate Raspberry Pi: 11 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
Acesta este un pas cu pas care poate fi instruit despre cum să creați o cameră de securitate activată prin mișcare, utilizând un Raspberry Pi. Veți învăța cum să creați un server web și un formular care să permită utilizatorului să regleze sensibilitatea camerei și timpul de înregistrare, să pornească / să oprească manual o înregistrare și / sau să facă o fotografie care va fi salvată local.
Provizii
- Raspberry Pi 3
- Camera Pi
- Senzor de mișcare PIR
- card SD
- Sursa de putere
Pasul 1: Asamblați hardware-ul
În timp ce Pi este oprit, introduceți cardul micro-SD în Pi. Introduceți cablul panglică al modulului camerei în portul modulului camerei de pe Pi. Apoi, conectați cei 3 pini (etichetați VCC, OUT și GND) ai detectorului de mișcare PRI la pinii GPIO ai lui Pi. Conectați VCC la 5,5V de putere, GND la masă și OUT la pinul 11 de pe Pi.
Pasul 2: Asigurați-vă că Pi-ul dvs. este conectat la Internet
Acum, porniți Pi conectându-l la o sursă de alimentare și verificați dacă sunteți conectat la internet folosind comanda ping. Dacă nu știți cum să vă conectați Pi-ul la internet, faceți clic aici.
sudo ping www.google.com
Dacă aveți succes, ar trebui să vedeți că datele sunt primite de google.
În plus, puteți utiliza ifconfig pentru a vă vedea adresa IP.
sudo ifconfig
Pasul 3: configurați camera
Utilizați următoarea comandă pentru a deschide interfața de configurare și activați camera în „opțiunile de interfață”.
sudo raspi-config
După repornire, puteți afișa starea camerei dvs. pentru a vă asigura că aceasta este conectată corect.
vcgencmd get_camera
În cele din urmă, instalați modulul picamera.
pip instala picamera
Pasul 4: Instalați Flask
Instalați balonul și modulul de odihnă pentru Python:
sudo apt-get install python-dev python-pip
python -m pip instala balon balon-odihnitor
Apoi, vom instala un modul flacon python utilizat pentru crearea formularelor.
pip instala flask-wtf
Pasul 5: Creați o clasă de formular
Creați un director numit iotProject pentru a stoca toate fișierele în.
sudo mkdir iotProject
Creați un fișier python numit „camControl.py”.
sudo nano camControl.py
În acest fișier vom crea clasa noastră de formular, care ne permite să creăm un formular web cu casete de text și un meniu derulant pentru ca utilizatorul să poată schimba setările camerei, să pornească / oprească manual o înregistrare și să captureze videoclipuri.
din flask_wtf import FlaskFormde la wtforms.validators import DataRequired from wtforms import SubmitField from wtforms import validators, IntegerField, BooleanField, SelectField
clasa camFrame (FlaskForm):
videoDuration = IntegerField ('Timp de înregistrare (în secunde)')
sensibilitate = IntegerField („Sensibilitate la mișcare (interval 2500-10000) n Cu cât este mai mare numărul, cu atât camera este mai puțin sensibilă”, validators = [validators. NumberRange (min = 2500, max = 10000, mesaj = 'Valoare în afara intervalului')])
options = SelectField ('Options', options = [('none', 'No action'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), ('pic', 'Take Picture')])
submit = SubmitField („Trimiteți”)
Pasul 6: Creați un șablon de balon
Pentru a crea interfața cu utilizatorul, trebuie să proiectați un șablon Flask care utilizează formularul pe care tocmai l-ați creat. Acest fișier va fi scris în html și stocat într-un folder numit șabloane, care ar trebui să fie în același director cu formularul dvs.
În interiorul folderului șabloane, creați un fișier numit index.html. În acest fișier, copiați codul de mai sus.
Pasul 7: redați șablonul
Acum este timpul să creați un fișier care redă șablonul. Creați un fișier numit appCam.py (asigurați-vă că nu mai sunteți în folderul șabloane). Orice conținut dinamic utilizat în șablon trebuie utilizat ca argument numit în apelul la render_template ().
import camControlfrom flask import Flask, render_template, request, Răspuns de la flask_restful import Resource, Api, reqparse
app = Flask (_ nume_)
app.config ['SECRET_KEY'] = '13542' api = Api (aplicație)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Durata videoclipului când este detectată mișcarea') parser.add_argument ('sens', type = int, help = 'Nivelul de mișcare necesar pentru declanșarea unei înregistrări') parser.add_argument ('opt', type = str, help = 'Înregistrați manual un videoclip sau capturați o imagine')
Actualizare clasă (resursă):
#Stuff for wtforms def post (self): args = parser.parse_args () # rc.input (args ['dur'], args ['sens'], args ['opt']) #write în fișierul text care vorbește cu camera care rulează în paralel 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 () return {'dur': args ['dur'], 'sens': args ['sense'], 'opt': args ['opt']}
@ app.route ('/', methods = ['GET', 'POST'])
def index (): "" "Pagina principală a controlerului" "" form = camControl.camFrame () # acesta este un formular dacă request.method == 'POST': print (request.form) args = [i for i in request.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 dur cameraSettingsFile.write (args [1] [1] + '\ n') #write sens cameraSettingsFile.write (args [2] [1] + '\ n') #write opt cameraSettingsFile.close () imageDictionary = {"filename": "image.jpg"} returnează model_rend ('index.html', form = form, image = imageDictionary)
api.add_resource (Actualizare, '/ update /')
dacă _name_ == '_main_':
app.run (gazdă = '0.0.0.0', port = 80, depanare = Adevărat, subiect = Adevărat)
Pasul 8: Creați o clasă de operator de cameră
Acum vrem să creăm un fișier numit camOperator.py. În acesta vom crea o clasă de camere cu metode de acționare a camerei, utilizând funcțiile PiCamera deja disponibile. Vom folosi o instanță a acestui obiect în pasul următor în care vom combina funcționalitatea camerei și senzorul de mișcare.
Metodele definite în această clasă modifică setările de „înregistrare” de pe camera de securitate utilizând intrările de sensibilitate și durată pe care le furnizează utilizatorul, stabilind în același timp valori implicite pentru aceste variabile dacă intrarea utilizatorului nu este prezentă.
importați RPi. GPIO ca GPIOimportați picamera de import timp din datetime import datetime
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
detect = 0
camera de clasa Operator:
def _init _ (auto):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "none"
înregistrare def (auto, dur):
#Records pentru durata dată setată de controler 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 ()
operație def (self, dur, sens):
#Funcționarea principală a camerei care verifică în mod constant pentru a vedea dacă un om este în apropiere, dacă un om rămâne în jur suficient de mult timp, începem să înregistrăm! global detect i = GPIO.input (11) if i == 0: #When output from sensor motion is LOW detect = 0 time.sleep (0.1) elif i == 1: #When output from motion motion is HIGH print (" mișcare detectată "+ str (detect)) dacă detect> = sens * 10: auto.record (dur) print (" RECORDED ") detect = 0 time.sleep (0.1) detect + = 1
Pasul 9: Creați modulul de înregistrare
Ultimul program necesar acestui proiect va fi scris într-un fișier numit rec.py. Acest fișier îi spune camerei când să înregistreze, cât timp să înregistreze și dacă / când să facă o fotografie. Face acest lucru verificând și citind în mod constant datele utilizatorului scrise în fișierul text de la pasul 5. Dacă fișierul a fost actualizat, acesta ajustează valorile sensibilității și duratei în mod corespunzător și apoi, dacă se face o înregistrare sau o fotografie, salvează conținutul în pi, fie într-un format de fișier.h264, fie.jpg.
'' 'Rulează în paralel cu serverul balon, citind variabilele de control stabilite de formularele serverului. Variabilele de control ale serverului sunt setate într-un fișier separat odată cu trimiterea formularelor. Modulul rec citește aceste variabile și actualizează camera pe baza acestora. '' 'import camOperator de la data de import data de timp de import de timp
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #aici, deschidem și închidem în modul de scriere pentru a șterge conținutul din fișier înainte de a rula bucla principală
# O buclă continuă care urmărește pentru a vedea dacă oamenii sunt în apropiere. Dacă sunt, atunci
#camera începe să înregistreze. Această funcție rulează în paralel cu balonul #server care controlează această cameră. recordingInProcess = False în timp ce True: # check / record if (recordingInProcess == False): rc.operation (rc.dur, rc.sens) #change the settings of the camera based on the server cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 pentru setarea în cameraSettingsFile.readlines (): if settingNum == 0: #Duration change rc.dur = int (setting) elif settingNum == 1: #Sensitivity change rc.sens = int (setting) elif settingNum == 2: #Action change rc.opt = setting SettingNum + = 1 cameraSettingsFile.close ()
#execută o acțiune
# if rc.opt == "none": # continuați dacă rc.opt == "rec / n" și recordingInProcess == False: print ("Rularea comenzii de înregistrare de la controler") # Generați numele pentru video în funcție de ora curentă videoName = "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: print ("Oprirea comenzii de înregistrare de la controler") rc.cam.stop_recording () recordingInProcess = False cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.sens) + '\ n') cameraSettingsFile. write ("none / n") rc.opt = "none / n" elif rc.opt == "pic / n" and recordingInProcess == False: print ("Snap a pic command from the controller") pictureName = "snappedPic_ "+ str (datetime.now ()) pictureName = pictureName.replace (':', ') pictureName = pictureName.replace ('. ',') rc.cam.st art_preview () time.sleep (5) rc.cam.capture ('pictures /' + pictureName + '.jpg') rc.cam.stop_preview () cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile. write (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.sens) + '\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
Pasul 10: Porniți serverul
SSH în pi și porniți serverul folosind linia de comandă prezentată mai sus.
Pasul 11: ÎNCERCAȚI
Accesați pagina web utilizând adresa IP și ar trebui să puteți controla camera de la distanță!
Recomandat:
Camera de securitate Raven Pi: 7 pași (cu imagini)
Cameră de securitate Raven Pi: acest corb din plastic se bucură de un nou post-viață ca o cameră de securitate practică, dar înfiorătoare, Raven Pi. Are un Raspberry Pi în burtă și o cameră Pi încorporată în gât, captând videoclipuri HD ori de câte ori este detectată mișcare. În același moment este
Cea mai ușoară cameră web ca cameră de securitate - Detecție de mișcare și imagini prin e-mail: 4 pași
Cea mai ușoară cameră web ca cameră de securitate - Detecție mișcare și imagini trimise prin e-mail: Nu mai trebuie să descărcați sau să configurați software pentru a obține imagini detectate de mișcare de pe camera dvs. web către e-mail - pur și simplu utilizați browserul. Utilizați un browser Firefox, Chrome, Edge sau Opera actualizat pe Windows, Mac sau Android pentru a captura imaginea
Cameră de securitate pentru vizionare nocturnă cu sursă deschisă profesională: 10 pași (cu imagini)
Cameră de securitate pentru vizionare nocturnă cu sursă deschisă profesională DIY: În acest nou tutorial, vom face împreună camera noastră de supraveghere video open source Raspberry Pi. toate conectate la Jeed-ul nostru
Camera de securitate WoodThing IOT: 8 pași (cu imagini)
Camera de securitate WoodThing IOT: Aceasta este o cameră IP puternică bazată pe Raspberry PI. Rulează motionEyeOS, deci poate fi utilizat pentru a gestiona mai multe camere IP la distanță, precum și pentru a vă permite să atașați până la patru camere web USB cu cost redus. Caracteristici: Alimentat prin USB, detectarea mișcării cu s
Camera de securitate VHS Library Pi: 3 pași (cu imagini)
Cameră de securitate VHS Library Pi: Aceasta este o carcasă de bibliotecă video VHS veche, care oferă acum o casă perfectă pentru o cameră de securitate Raspberry Pi. Carcasa conține un Pi Zero, iar camera aruncă o privire prin coloana vertebrală a cărții false. Este o construcție foarte simplă, cu un aspect din lumea veche