Tartalomjegyzék:
- Kellékek
- Lépés: Szerelje össze a hardvert
- 2. lépés: Győződjön meg arról, hogy a Pi csatlakozik az internethez
- 3. lépés: Állítsa be a kamerát
- 4. lépés: Telepítse a lombikot
- 5. lépés: Hozzon létre egy űrlaposztályt
- 6. lépés: Lombik sablon létrehozása
- 7. lépés: A sablon megjelenítése
- 8. lépés: Hozzon létre egy kamera kezelői osztályt
- 9. lépés: Hozza létre a rögzítési modult
- 10. lépés: Indítsa el a szervert
- 11. lépés: PRÓBÁLJA KI
Videó: Raspberry Pi biztonsági kamera: 11 lépés (képekkel)
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:40
Ez lépésről lépésre oktatható arról, hogyan lehet IoT, mozgással aktivált biztonsági kamerát létrehozni egy Raspberry Pi segítségével. Megtanulja, hogyan hozhat létre egy lombik webszervert és űrlapot, amely lehetővé teszi a felhasználó számára a fényképezőgép érzékenységének és rögzítési idejének beállítását, a felvétel kézi indítását/leállítását és/vagy a helyben mentendő kép készítését.
Kellékek
- Raspberry Pi 3
- Pi kamera
- PIR mozgásérzékelő
- SD kártya
- Áramforrás
Lépés: Szerelje össze a hardvert
Amíg a Pi ki van kapcsolva, helyezze be a mikro-SD kártyát a Pi-be. Csatlakoztassa a kameramodul szalagkábelét a kamera kameramoduljának portjához. Ezután csatlakoztassa a PRI mozgásérzékelő 3 érintkezőjét (VCC, OUT és GND) a Pi GPIO csapjaihoz. Csatlakoztassa a VCC -t 5,5 V -os tápellátáshoz, a GND -t a földhöz, és az OUT -t a Pi 11 -es tűjéhez.
2. lépés: Győződjön meg arról, hogy a Pi csatlakozik az internethez
Most kapcsolja be a Pi -t áramforráshoz csatlakoztatva, és ellenőrizze, hogy csatlakozik -e az internethez a ping paranccsal. Ha nem tudja, hogyan csatlakoztassa a Pi -t az internethez, kattintson ide.
sudo ping www.google.com
Ha sikeres vagy, látnod kell, hogy a Google fogadja az adatokat.
Ezenkívül az ifconfig használatával megtekintheti IP -címét.
sudo ifconfig
3. lépés: Állítsa be a kamerát
A következő paranccsal nyissa meg a konfigurációs felületet, és engedélyezze a kamerát az "interfész opciók" menüben.
sudo raspi-config
Az újraindítás után megjelenítheti fényképezőgépének állapotát, hogy megbizonyosodjon arról, hogy megfelelően van csatlakoztatva.
vcgencmd get_camera
Végül telepítse a picamera modult.
pip install picamera
4. lépés: Telepítse a lombikot
Telepítse a lombikot és a lombiknyugtató modult a Python számára:
sudo apt-get install python-dev python-pip
python -m pip install lombik lombik -nyugtató
Ezután telepítünk egy űrlapok létrehozásához használt python -lombik modult.
pip install flask-wtf
5. lépés: Hozzon létre egy űrlaposztályt
Készítse el az iotProject nevű könyvtárat az összes fájl tárolására.
sudo mkdir iotProject
Hozzon létre egy "camControl.py" nevű python fájlt.
sudo nano camControl.py
Ebben a fájlban létrehozjuk űrlaposztályunkat, amely lehetővé teszi számunkra, hogy webes űrlapot hozzunk létre szövegdobozokkal és egy legördülő menüvel, hogy a felhasználó módosítsa a kamera beállításait, manuálisan indítsa el/állítsa le a felvételt, és készítsen videót.
from flask_wtf import FlaskFormfrom wtforms.validators import DataR Required from wtforms import SubmitField from wtforms import validators, IntegerField, BooleanField, SelectField
osztály camFrame (FlaskForm):
videoDuration = IntegerField ('Felvételi idő (másodpercben)')
érzékenység = IntegerField ('Mozgásérzékenység (2500-10000 tartomány) nMinél magasabb a szám, annál kevésbé érzékeny a kamera', érvényesítők = [validators. NumberRange (min = 2500, max = 10000, message = 'Value Out of Range'])
options = SelectField ('Options', options = [('none', 'No action'), ('rec', 'Recording Start'), ('stop', 'Stop Recording'), ('pic', 'Take Picture')]))
benyújtás = SubmitField ('Küldés')
6. lépés: Lombik sablon létrehozása
A felhasználói felület létrehozásához meg kell terveznie egy lombik sablont, amely az imént létrehozott űrlapot használja. Ezt a fájlt html -ben írják, és a sablonok nevű mappában tárolják, amelynek ugyanabban a könyvtárban kell lennie, mint az űrlap.
A sablonok mappájában hozzon létre egy index.html nevű fájlt. Ebben a fájlban ismételje meg a fent látható kódot.
7. lépés: A sablon megjelenítése
Itt az ideje, hogy hozzon létre egy fájlt, amely megjeleníti a sablont. Hozzon létre egy appCam.py nevű fájlt (győződjön meg arról, hogy már nincs a sablonok mappában). A sablonban használt minden dinamikus tartalmat a render_template () hívásban megnevezett argumentumként kell használni.
import camControl lombikból import Flask, render_template, request, Response from flask_restful import Resource, Api, reqparse
app = Lombik (_ név_)
app.config ['SECRET_KEY'] = '13542' api = Api (alkalmazás)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'A videó időtartama mozgás észlelésekor') parser.add_argument ('sens', type = int, help = 'A felvétel elindításához szükséges mozgásszint') parser.add_argument ('opt', type = str, help = 'Videó kézi rögzítése vagy kép készítése')
osztály frissítése (forrás):
#Stuff for wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #írjuk be a szövegfájlba, amely beszélget a párhuzamosan futó kamerával 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 ('/', metódus = ['GET', 'POST'])
def index (): "" "A vezérlő honlapja" "" form = camControl.camFrame () #ez egy űrlap, ha 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 = {"fájlnév": "image.jpg"} return render_template ('index.html', form = forma, image = imageDictionary)
api.add_resource (Frissítés, '/update/')
ha _name_ == '_main_':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
8. lépés: Hozzon létre egy kamera kezelői osztályt
Most egy camOperator.py nevű fájlt szeretnénk létrehozni. Ebben elkészítünk egy kameraosztályt a kamera működésének módszereivel, a már rendelkezésre álló PiCamera funkciók felhasználásával. A következő lépésben ennek az objektumnak egy példányát fogjuk használni, ahol egyesítjük a kamera és a mozgásérzékelő funkcióit.
Az ebben az osztályban meghatározott módszerek megváltoztatják a biztonsági kamera "rekord" beállításait a felhasználó által megadott érzékenységi és időtartam -bemenetek segítségével, miközben alapértelmezett értékeket állítanak be ezekhez a változókhoz, ha nincs felhasználói bevitel.
importálja az RPi. GPIO -t GPIO -ként importálja az időt, importálja a fényképezőgépet a dátum és idő dátum importálás időpontjából
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
észlelni = 0
osztály kamera Operátor:
def _init _ (saját):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "nincs"
def rekord (önálló, dur):
#Records a vezérlő által megadott időtartamra 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 művelet (self, dur, sens):
#A kamera fő működése, amely folyamatosan ellenőrzi, hogy van -e ember a közelben, és ha egy ember elég sokáig a közelben tartózkodik, elkezdjük a felvételt! globális észlelés i = GPIO.input (11), ha i == 0: #Amikor a mozgásérzékelő kimenete LOW detect = 0 time.sleep (0,1) elif i == 1: #Amikor a mozgásérzékelő kimenete HIGH print (" mozgás észlelve " +str (észlelés)) ha észlel> = sens*10: self.record (dur) print (" RECORDED ") detect = 0 time.sleep (0,1) észlelés += 1
9. lépés: Hozza létre a rögzítési modult
A projekthez szükséges utolsó program egy rec.py nevű fájlba lesz írva. Ez a fájl megmondja a fényképezőgépnek, hogy mikor kell felvételt készíteni, mennyi ideig kell rögzíteni, és ha/mikor kell fényképezni. Ezt úgy teszi, hogy folyamatosan ellenőrzi és elolvassa a szövegfájlba írt felhasználói adatokat az 5. lépéstől kezdve. Ha a fájlt frissítették, ennek megfelelően állítja be az érzékenységet és az időtartamot, majd, ha felvételt vagy képet készít, elmenti a tartalmat a a pi, akár.h264, akár-j.webp
'' 'Párhuzamosan fut a lombik szerverrel, beolvassa a szerver űrlapok által beállított vezérlőváltozókat. A szervervezérlő változókat az űrlapok elküldése után külön fájlban állítják be. A rec modul beolvassa ezeket a változókat, és ezek alapján frissíti a kamerát. '' 'import camOperator from datetime import datetime import time
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #itt, írási módban nyitunk és zárunk, hogy töröljük a fájlban lévő tartalmat, mielőtt a fő ciklus fut
#Folyamatos hurok, amely figyeli, hogy vannak -e emberek a közelben. Ha vannak, akkor
#a fényképezőgép elkezdi a felvételt. Ez a funkció párhuzamosan fut a kamerát vezérlő #szerver lombikkal. recordInProcess = Hamis, míg igaz: #ellenőrizze/rögzítse, ha (recordInProcess == Hamis): rc.operation (rc.dur, rc.sens) #módosítsa a kamera beállításait a szerver cameraSettingsFile = open ("cameraSettings.txt") alapján, 'r') settingNum = 0 a cameraSettingsFile.readlines () beállításához) elif settingNum == 2: #Action change rc.opt = setting settingNum += 1 cameraSettingsFile.close ()
#végrehajt egy műveletet
# if rc.opt == "none": # folytassa, ha rc.opt == "rec / n" és recordInProcess == Hamis: print ("Futtatás rekordparancs a vezérlőből") #Generate name for video based on current time videoName = "snappedVid _"+str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/home/pi/iotProject /videos/' + videoName +'.h264 ') = 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 recordInProcess == Hamis: 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 ('images/' + 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 ("nincs / n") rc.opt = "nincs / n"
10. lépés: Indítsa el a szervert
SSH -t a pi -be, és indítsa el a szervert a fenti parancssor segítségével.
11. lépés: PRÓBÁLJA KI
Lépjen be a weboldalra az IP -cím használatával, és képesnek kell lennie arra, hogy távolról vezérelje a kamerát!
Ajánlott:
Raven Pi biztonsági kamera: 7 lépés (képekkel)
Raven Pi biztonsági kamera: Ez a műanyag holló új utóéletét élvezi, mint egy praktikus, de hátborzongató biztonsági kamera, a Raven Pi. A hasában egy Raspberry Pi és a nyakába épített Pi kamera van, amelyek mozgás észlelésekor HD videót rögzítenek. Ugyanebben a pillanatban az
Egygombos női biztonsági biztonsági rendszer: 3 lépés
Egygombos női biztonsági biztonsági rendszer: Egyérintéses riasztó Női biztonsági rendszer 8051 mikrovezérlővelA mai világban a nők biztonsága a legfontosabb kérdés az országban. Ma a nőket zaklatják és zavarják, és néha, amikor sürgős segítségre van szükség. Nincs kötelező helymeghatározás
DIY professzionális nyílt forráskódú éjszakai látás biztonsági kamera: 10 lépés (képekkel)
DIY professzionális nyílt forráskódú éjszakai látás biztonsági kamera: Ebben az új oktatóanyagban közösen elkészítjük a Raspberry Pi nyílt forráskódú videokamerát. Igen, itt egy valódi nyílt forráskódú kültéri megfigyelő kameráról beszélünk, amely képes éjszakai látásra és mozgásérzékelésre, mind kapcsolódik a Jeedhez
WoodThing IOT biztonsági kamera: 8 lépés (képekkel)
WoodThing IOT biztonsági kamera: Ez egy erős IP kamera, amely a Raspberry PI -n alapul. A MotionEyeOS -t futtatja, így több távoli IP -kamera kezelésére is használható, és lehetővé teszi akár négy további olcsó USB -webkamera csatlakoztatását. Jellemzők: USB -tápellátás, mozgásérzékelés az
Újrahasznosított videokamera biztonsági mentési kamera: 7 lépés (képekkel)
Újrahasznosított videokamera biztonsági mentési kamera: Biztos vagyok benne, hogy a legtöbb olvasónak van fiókja vagy szekrénye valahol, tele egykor szeretett technikával, amely túl régi és elavult. Határozottan részem van a régi technológiában, és szomorú látni, hogy az ilyen lehetőségek kárba vesznek. Nos, ebben az útmutatóban én