Kazalo:
- Zaloge
- 1. korak: Sestavite strojno opremo
- 2. korak: Prepričajte se, da je vaš Pi povezan z internetom
- 3. korak: Nastavite kamero
- 4. korak: Namestite Flask
- 5. korak: Ustvarite razred obrazca
- 6. korak: Ustvarite predlogo steklenice
- 7. korak: Upodobite predlogo
- 8. korak: Ustvarite razred operaterja kamere
- 9. korak: Ustvarite zapisni modul
- 10. korak: Zaženite strežnik
- 11. korak: PREIZKUSITE
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-23 15:08
To je korak za korakom navodila, kako z Raspberry Pi ustvariti varnostno kamero IoT, aktivirano z gibanjem. Naučili se boste ustvariti spletni strežnik in obrazec za bučke, ki uporabniku omogoča, da prilagodi občutljivost fotoaparata in čas snemanja, ročno zažene/ustavi snemanje in/ali posname sliko, ki bo shranjena lokalno.
Zaloge
- Malina Pi 3
- Pi kamera
- PIR senzor gibanja
- sD kartice
- Vir energije
1. korak: Sestavite strojno opremo
Ko je Pi izklopljen, vstavite kartico micro-SD v Pi. Vstavite tračni kabel modula kamere v vrata modula kamere na Pi. Nato priključite 3 nožice (označene z VCC, OUT in GND) detektorja gibanja PRI na nožice Pi GPIO. VCC priključite na napajanje 5,5 V, GND na maso, izhod pa na pin 11 na Pi.
2. korak: Prepričajte se, da je vaš Pi povezan z internetom
Zdaj vklopite Pi tako, da ga priključite na vir napajanja in preverite, ali ste povezani z internetom z ukazom ping. Če ne veste, kako svoj Pi povezati z internetom, kliknite tukaj.
sudo ping www.google.com
Če ste uspešni, bi morali videti, da Google prejema podatke.
Poleg tega lahko uporabite ifconfig za ogled vašega naslova IP.
sudo ifconfig
3. korak: Nastavite kamero
Z naslednjim ukazom odprite konfiguracijski vmesnik in omogočite kamero v "možnostih vmesnika".
sudo raspi-config
Po ponovnem zagonu lahko prikažete stanje fotoaparata in se prepričate, da je pravilno priključen.
vcgencmd get_camera
Nazadnje namestite modul picamera.
pip namestite pikamero
4. korak: Namestite Flask
Namestite bučko in modul za počitek bučke za Python:
sudo apt-get install python-dev python-pip
python -m pip install flask flask -restful
Nato bomo namestili modul bučke python, ki se uporablja za ustvarjanje obrazcev.
pip install flask-wtf
5. korak: Ustvarite razred obrazca
Naredite imenik iotProject, v katerega bodo shranjene vse vaše datoteke.
sudo mkdir iotProject
Ustvarite datoteko python z imenom "camControl.py".
sudo nano camControl.py
V tej datoteki bomo ustvarili naš razred obrazcev, ki nam omogoča ustvarjanje spletnega obrazca z besedilnimi polji in spustnim menijem, da lahko uporabnik spremeni nastavitve fotoaparata, ročno zažene/ustavi snemanje in zajame video.
iz flask_wtf uvoz FlaskFormiz wtforms.validators uvoz DataRequired from wtforms import SubmitField iz potrjevalnikov uvoza wtforms, IntegerField, BooleanField, SelectField
razred camFrame (FlaskForm):
videoDuration = IntegerField ('Čas snemanja (v sekundah)')
občutljivost = IntegerField ('Občutljivost gibanja (razpon 2500-10000) nVišja kot je številka, manj občutljiva je kamera', validators = [validators. NumberRange (min = 2500, max = 10000, message = 'Value Out of Range')])
options = SelectField ('Options', choices = [('none', 'No action'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), ('pic', 'Fotografiraj')])
submit = SubmitField ('Predloži')
6. korak: Ustvarite predlogo steklenice
Če želite ustvariti uporabniški vmesnik, morate oblikovati predlogo Flask, ki uporablja obrazec, ki ste ga pravkar ustvarili. Ta datoteka bo zapisana v html -u in shranjena v mapi, imenovani templates, ki naj bo v istem imeniku kot obrazec.
Znotraj mape s predlogami ustvarite datoteko, imenovano index.html. V tej datoteki ponovite zgoraj prikazano kodo.
7. korak: Upodobite predlogo
Zdaj je čas, da ustvarite datoteko, ki upodobi predlogo. Ustvarite datoteko z imenom appCam.py (poskrbite, da niste več v mapi s predlogami). Vsako dinamično vsebino, uporabljeno v predlogi, je treba uporabiti kot imenovani argument v klicu render_template ().
import camControlfrom flask import Flask, render_template, request, Response from flask_restful import Resource, Api, reqparse
app = Flask (_ name_)
app.config ['SECRET_KEY'] = '13542' api = Api (aplikacija)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Trajanje videa, ko zazna gibanje') parser.add_argument ('sens', type = int, help = 'Raven gibanja, potrebna za sprožitev snemanja') parser.add_argument ('opt', type = str, help = 'Ročno posnemite video ali posnemite sliko')
posodobitev razreda (vir):
#Stuff for wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #write v besedilno datoteko, ki govori s kamero, ki deluje vzporedno 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 (): "" "Domača stran krmilnika" "" form = camControl.camFrame () #to je obrazec, če request.method == 'POST': print (request.form) args = [i za i v zahtevi.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"} return render_template ('index.html', form = form, image = imageDictionary)
api.add_resource (Posodobi, '/update/')
če _name_ == '_main_':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
8. korak: Ustvarite razred operaterja kamere
Zdaj želimo ustvariti datoteko z imenom camOperator.py. V njem bomo naredili razred fotoaparatov z metodami upravljanja kamere, pri čemer bomo uporabili že razpoložljive funkcije PiCamera. V naslednjem koraku bomo uporabili primerek tega predmeta, kjer bomo združili funkcionalnost kamere in senzorja gibanja.
Metode, opredeljene v tem razredu, spremenijo nastavitve "snemanja" na varnostni kameri z uporabo vnosov občutljivosti in trajanja, ki jih poda uporabnik, obenem pa določijo privzete vrednosti za te spremenljivke, če uporabniški vnos ni prisoten.
uvoz RPi. GPIO kot GPIOimport časa uvoz pikamere iz datuma in časa uvoz datetime
Način nastavitve GPIO (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
zazna = 0
razred fotoaparata Operater:
def _init _ (samo):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "none"
def zapis (self, dur):
#Zapisi za dano trajanje, ki jih nastavi krmilnik 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 operacija (self, dur, sens):
#Glavno delovanje kamere, ki nenehno preverja, ali je v bližini človek, če ostane dovolj dolgo, začnemo snemati! globalno zaznavanje i = GPIO.input (11), če je i == 0: #Ko je izhod iz senzorja gibanja LOW zaznan = 0 time.sleep (0.1) elif i == 1: #Ko je izhod iz senzorja gibanja HIGH print (" zaznano gibanje " +str (zaznavanje)), če zazna> = sens*10: self.record (dur) print (" RECORDED ") zaznavanje = 0 time.sleep (0,1) zaznavanje += 1
9. korak: Ustvarite zapisni modul
Zadnji program, potreben za ta projekt, bo zapisan v datoteki z imenom rec.py. Ta datoteka pove fotoaparatu, kdaj naj snema, kako dolgo snema in ali/kdaj posname fotografijo. To stori tako, da nenehno preverja in bere uporabniške podatke, zapisane v besedilno datoteko od 5. koraka. Če je bila datoteka posodobljena, se temu ustrezno prilagodi vrednosti občutljivosti in trajanja, nato pa, če je posnet posnetek ali slika, vsebino shrani v pi v obliki zapisa datoteke.h264 ali.jpg.
'' 'Deluje vzporedno s strežnikom za bučke in bere kontrolne spremenljivke, ki jih določijo obrazci strežnika. Spremenljivke strežnika za upravljanje so nastavljene v ločeni datoteki, ko so obrazci predloženi. Modul rec bere te spremenljivke in na podlagi njih posodobi kamero. '' 'uvoz camOperator iz datuma in časa uvoza datuma in časa uvoza
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #tukaj odpremo in zapremo v načinu pisanja, da izbrišemo vsebino v datoteki, preden se zažene glavna zanka
#Neprekinjena zanka, ki opazuje, ali so ljudje v bližini. Če so, potem
#kamera začne snemati. Ta funkcija deluje paralelno s strežnikom bučke #server, ki upravlja to kamero. recordInProcess = False, medtem ko je True: #preverite/zapišite if (recordInProcess == False): rc.operation (rc.dur, rc.sens) #spremenite nastavitve kamere glede na strežnik cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 za nastavitev v cameraSettingsFile.readlines (): če settingNum == 0: #Sprememba trajanja rc.dur = int (nastavitev) elif nastavitevNum == 1: #Sprememba občutljivosti rc.sens = int (nastavitev) elif settingNum == 2: #Action change rc.opt = setting settingNum += 1 cameraSettingsFile.close ()
#izvedite dejanje
# if rc.opt == "no" = "snappedVid _"+str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/home/pi/iotProject /videos/' + videoName +'.h264 ') recordInProcess = True elif rc.opt == "stop / n" in recordInProcess == True: print ("Ustavitev ukaza za snemanje iz krmilnika") rc.cam.stop_recording () recordInProcess = 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" in recordInProcess == False: print ("Ustrezi ukaz pic iz krmilnika") 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"
10. korak: Zaženite strežnik
SSH v pi in zaženite strežnik z uporabo zgornje ukazne vrstice.
11. korak: PREIZKUSITE
Dostopajte do spletne strani z naslovom IP in kamero bi morali upravljati na daljavo!
Priporočena:
Varnostna kamera Raven Pi: 7 korakov (s slikami)
Varnostna kamera Raven Pi: Ta plastični gavran uživa v novem posmrtnem življenju kot praktična, a grozljiva varnostna kamera, Raven Pi. V trebuhu ima Raspberry Pi, v vratu pa kamero Pi, ki posname HD video, kadar zazna gibanje. V istem trenutku je
Najlažja spletna kamera kot varnostna kamera - zaznavanje gibanja in slike po e -pošti: 4 koraki
Najlažja spletna kamera kot varnostna kamera - zaznavanje gibanja in slike po e -pošti: ni vam treba več nalagati ali konfigurirati programske opreme, da bi slike, zaznane z gibanjem iz spletne kamere, prešle na vaš e -poštni naslov - preprosto uporabite brskalnik. Za zajem slike uporabite posodobljen brskalnik Firefox, Chrome, Edge ali Opera v operacijskih sistemih Windows, Mac ali Android
DIY profesionalna odprtokodna varnostna kamera za nočno opazovanje: 10 korakov (s slikami)
DIY profesionalna odprtokodna varnostna kamera za nočno opazovanje: V tej novi vadnici bomo skupaj izdelali našo odprtokodno kamero za video nadzor Raspberry Pi. Da, tukaj govorimo o resnični odprtokodni zunanji nadzorni kameri, ki omogoča nočni vid in zaznavanje gibanja, vsi povezani z našim Jeedom
Varnostna kamera WoodThing IOT: 8 korakov (s slikami)
Varnostna kamera WoodThing IOT: To je zmogljiva IP kamera, ki temelji na Raspberry PI. Uporablja motionEyeOS, zato ga lahko uporabljate za upravljanje več oddaljenih IP -kamer, poleg tega pa lahko priključite do štiri dodatne nizkocenovne spletne kamere USB. Lastnosti: Napajanje prek USB -ja, zaznavanje gibanja s
Tretja varnostna kamera zavorne luči (brezžična): 6 korakov (s slikami)
Tretja varnostna kamera zavorne luči (brezžična): Pozdravljeni vsi! V današnjem projektu bom v svojo tretjo zavorno luč namestil vzvratno kamero. Za ta projekt bom uporabljal svoj avto, ki je Mitsubishi lancer GTS iz leta 2010. Ta tehnika bo delovala z vsemi Mitsubishi Lancer / Lanc