Talaan ng mga Nilalaman:
- Mga gamit
- Hakbang 1: Ipunin ang Hardware
- Hakbang 2: Tiyaking Nakakonekta ang Iyong Pi sa Internet
- Hakbang 3: I-set up ang Camera
- Hakbang 4: I-install ang Flask
- Hakbang 5: Lumikha ng isang Klase sa Form
- Hakbang 6: Lumikha ng isang Template ng Flask
- Hakbang 7: Ibalik ang Template
- Hakbang 8: Lumikha ng isang Klase ng Operator ng Camera
- Hakbang 9: Lumikha ng Modyul ng Rekord
- Hakbang 10: Simulan ang Server
- Hakbang 11: TRY IT OUT
Video: Raspberry Pi Security Camera: 11 Hakbang (na may Mga Larawan)
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:11
Ito ay isang hakbang-hakbang na itinuturo sa kung paano lumikha ng isang IoT, galaw na aktibo ng security camera gamit ang isang Raspberry Pi. Malalaman mo kung paano lumikha ng isang flask web server at form na nagbibigay-daan sa gumagamit na ayusin ang pagkasensitibo at oras ng pagrekord ng camera, manu-manong magsimula / huminto sa isang pagrekord, at / o kumuha ng larawan na mai-save sa isang lokal.
Mga gamit
- Raspberry Pi 3
- Pi camera
- Sensor ng paggalaw ng PIR
- SD card
- Pinagkukunan ng lakas
Hakbang 1: Ipunin ang Hardware
Habang naka-off ang Pi, ipasok ang micro-SD card sa Pi. Ipasok ang module module ng camera ribbon cable sa port ng module ng camera sa Pi. Pagkatapos, ikonekta ang 3 mga pin (may label na VCC, OUT, at GND) ng detektor ng paggalaw ng PRI sa mga pin ng GPIO ng Pi. Ikonekta ang VCC sa 5.5V ng lakas, ang GND sa lupa, at ang OUT upang i-pin 11 sa Pi.
Hakbang 2: Tiyaking Nakakonekta ang Iyong Pi sa Internet
Ngayon, i-on ang Pi sa pamamagitan ng pagkonekta nito sa isang mapagkukunan ng kuryente at i-verify na nakakonekta ka sa internet gamit ang ping command. Kung hindi mo alam kung paano ikonekta ang iyong Pi sa internet, mag-click dito.
sudo ping www.google.com
Kung matagumpay ka, dapat mong makita na ang data ay natatanggap ng google.
Bilang karagdagan, maaari mong gamitin ang ifconfig upang makita ang iyong IP address.
sudo ifconfig
Hakbang 3: I-set up ang Camera
Gamitin ang sumusunod na utos upang buksan ang interface ng pagsasaayos, at paganahin ang camera sa "mga pagpipilian sa interfacing".
sudo raspi-config
Pagkatapos ng pag-reboot, maaari mong ipakita ang katayuan ng iyong camera upang matiyak na maayos itong konektado.
vcgencmd makakuha_camera
Panghuli, i-install ang module ng picamera.
pip install picamera
Hakbang 4: I-install ang Flask
I-install ang flask at flask-restful module para sa Python:
sudo apt-get install python-dev python-pip
python -m pip install flask flask-restful
Susunod, mag-i-install kami ng isang module ng python flask na ginamit para sa paglikha ng mga form.
pip install flask-wtf
Hakbang 5: Lumikha ng isang Klase sa Form
Gumawa ng isang direktoryo na tinatawag na iotProject upang maiimbak ang lahat ng iyong mga file sa.
sudo mkdir iotProject
Lumikha ng isang python file na pinangalanang "camControl.py".
sudo nano camControl.py
Sa file na ito lilikha kami ng aming klase ng form, na nagbibigay-daan sa amin upang lumikha ng isang form sa web na may mga kahon ng teksto at isang drop down na menu para mabago ng gumagamit ang mga setting ng camera, manu-manong magsimula / huminto sa isang pagrekord, at makakuha ng video.
mula sa flask_wtf import FlaskFormfrom wtforms.validators import DataRequired mula sa wtforms import SubmitField mula sa wtforms import validators, IntegerField, BooleanField, SelectField
klase camFrame (FlaskForm):
videoDuration = IntegerField ('Oras ng Pagre-record (sa mga segundo)')
pagkasensitibo = IntegerField ('Sensitivity ng Paggalaw (saklaw 2500-10000) n Ang mas mataas ang bilang, mas hindi gaanong sensitibo ang camera', validators = [validators. NumberRange (min = 2500, max = 10000, message = 'Value Out of Range')])
options = SelectField ('Mga Pagpipilian', mga pagpipilian = [('none', 'Walang aksyon'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), ('pic', 'Kumuha ng Larawan')])
isumite = KirimField ('Isumite')
Hakbang 6: Lumikha ng isang Template ng Flask
Upang likhain ang interface ng gumagamit, dapat kang magdisenyo ng isang template ng Flask na gumagamit ng form na ngayon mo lamang nilikha. Isusulat ang file na ito sa html, at maiimbak sa isang folder na tinatawag na mga template, na dapat ay nasa parehong direktoryo ng iyong form.
Sa loob ng iyong folder ng mga template, lumikha ng isang file na tinatawag na index.html. Sa loob ng file na ito, kopyahin ang code na ipinakita sa itaas.
Hakbang 7: Ibalik ang Template
Ngayon ay oras na upang lumikha ng isang file na naglalagay ng template. Lumikha ng isang file na pinangalanang appCam.py (tiyaking wala ka na sa folder ng mga template). Anumang mga dinamikong nilalaman na ginamit sa template ay dapat gamitin bilang isang pinangalanang argumento sa tawag na 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 (app)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Tagal ng video kapag nakita ang paggalaw') parser.add_argument ('sens', type = int, help = 'Antas ng paggalaw na kinakailangan upang mag-trigger ng isang recording') parser.add_argument ('opt', type = str, help = 'Manu-manong magrekord ng isang video o kumuha ng isang imahe')
pag-update sa klase (Mapagkukunan):
#Stuff para sa wtforms def post (sarili): args = parser.parse_args () # rc.input (args ['dur'], args ['sens'], args ['opt']) #write to the text file that pinag-uusapan ang camera na tumatakbo sa parallel 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 () ibalik ang '' dur ': args [' dur '],' sens ': args ['sense'], 'opt': args ['opt']}
@ app.route ('/', mga pamamaraan = ['GET', 'POST'])
def index (): "" "Controller home page" "" form = camControl.camFrame () #this is a form if 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 = bukas ("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"} bumalik render_template ('index.html', form = form, image = imageDictionary)
api.add_resource (Update, '/ update /')
kung _name_ == '_main_':
app.run (host = '0.0.0.0', port = 80, debug = True, sinulid = True)
Hakbang 8: Lumikha ng isang Klase ng Operator ng Camera
Ngayon nais naming lumikha ng isang file na tinatawag na camOperator.py. Sa loob nito gagawa kami ng klase ng camera na may mga pamamaraan upang mapatakbo ang camera, na ginagamit ang magagamit na mga pagpapaandar ng PiCamera. Gumagamit kami ng isang halimbawa ng bagay na ito sa susunod na hakbang kung saan pagsamahin namin ang pag-andar ng camera at sensor ng paggalaw.
Ang mga pamamaraan na tinukoy sa klase na ito ay binabago ang mga setting ng "record" sa security camera gamit ang pagiging sensitibo at tagal ng mga input na ibinibigay ng gumagamit, habang nagtataguyod ng mga default na halaga para sa mga variable na ito kung ang pag-input ng gumagamit ay wala.
i-import ang RPi. GPIO bilang GPIOimport ang oras sa pag-import ng picamera mula sa datime na pag-import ng datime
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
tuklasin = 0
class cameraOperator:
def _init _ (sarili):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "none"
record ng def (sarili, dur):
#Records para sa ibinigay na tagal na itinakda ng controller videoName = str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') Self.cam.start_recording ('/ home / pi / iotProject / videos /' + videoName + '.h264') oras. tulog (dur) self.cam.stop_recording ()
operasyon ng def (sarili, dur, sens):
#Pangunahan ang pagpapatakbo ng camera na kung saan ay patuloy na suriin upang makita kung ang isang tao ay malapit, kung ang isang tao ay mananatili sa paligid ng sapat na haba, nagsisimula kaming mag-record! pandaigdigang tiktikan i = GPIO.input (11) kung i == 0: #Kapag ang output mula sa sensor ng paggalaw ay LOW detect = 0 time.s Sleep (0.1) elif i == 1: #Kapag ang output mula sa sensor ng paggalaw ay MATAAS na naka-print (" nakita ang paggalaw "+ str (tuklasin)) kung nakita> = sens * 10: self.record (dur) print (" NAREKord ") tuklasin = 0 oras. pagtulog (0.1) tuklasin + = 1
Hakbang 9: Lumikha ng Modyul ng Rekord
Ang huling program na kinakailangan para sa proyektong ito ay isusulat sa isang file na pinangalanang rec.py. Sinasabi ng file na ito sa camera kung kailan magtatala, kung gaano katagal mag-record, at kung / kailan kumuha ng larawan. Ginagawa ito sa pamamagitan ng patuloy na pagsuri at pagbabasa ng data ng gumagamit na nakasulat sa file ng teksto mula sa hakbang 5. Kung na-update ang file na inaayos nito ang pagkasensitibo at tagal ng mga halaga nang naaayon at pagkatapos, kung ang isang pagrekord o larawan ay kinukuha, nai-save ang nilalaman sa ang pi, alinman sa isang.h264 o-j.webp
'' 'Tumatakbo nang kahanay sa flask server, binabasa ang mga variable ng kontrol na itinakda ng mga form ng server. Ang mga variable ng control ng server ay nakatakda sa isang magkakahiwalay na file sa sandaling maisumite ang mga form. Binabasa ng module ng rec ang mga variable na ito at ina-update ang camera batay sa mga ito. '' 'i-import ang camOperator mula sa oras ng pag-import ng datime ng oras ng pag-import
rc = camOperator.cameraOperator ()
cameraSettingsFile = bukas ("cameraSettings.txt", 'w') cameraSettingsFile.close () #dito, binubuksan at isinasara namin ang mode ng pagsulat upang matanggal ang mga nilalaman sa loob ng file bago tumakbo ang pangunahing loop
# Isang tuluy-tuloy na loop na nanonood upang makita kung ang mga tao ay malapit. Kung sila ay, kung gayon
Ang camera ay nagsisimulang magrekord. Ang pagpapaandar na ito ay tumatakbo sa paralell kasama ang flask #server na kumokontrol sa camera na ito. recordingInProcess = Mali habang Totoo: # check / record if (recordingInProcess == Mali): rc.operation (rc.dur, rc.sens) # baguhin ang mga setting ng camera batay sa server cameraSettingsFile = bukas ("cameraSettings.txt", 'r') settingNum = 0 para sa pagtatakda sa cameraSettingsFile.readlines (): kung settingNum == 0: #Duration pagbabago rc.dur = int (setting) elif settingNum == 1: #Sensitivity baguhin rc.sens = int (setting) setting ng elifNum == 2: #Action pagbabago rc.opt = setting settingNum + = 1 cameraSettingsFile.close ()
# magpatupad ng isang aksyon
# if rc.opt == "none": # magpatuloy kung rc.opt == "rec / n" at recordingInProcess == Mali: i-print ("Pagpapatakbo ng record ng record mula sa controller") #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 ') recordingInProcess = True elif rc.opt == "stop / n" at recordingInProcess == True: print ("Natigil ang command ng record mula sa controller") rc.cam.stop_recording () recordingInProcess = Maling cameraSettingsFile = bukas ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.sens) + '\ n') cameraSettingsFile. isulat ("none / n") rc.opt = "none / n" elif rc.opt == "pic / n" at recordingInProcess == Mali: i-print ("I-snap ang isang utos ng pic mula sa controller") pictureName = "snappedPic_ "+ str (datetime.now ()) pictureName = pictureName.replace (':', ') pictureName = pictureName.replace ('. ',') rc.cam.st art_preview () time.s Sleep (5) rc.cam.capture ('pictures /' + pictureName + '.jpg') rc.cam.stop_preview () cameraSettingsFile = bukas ("cameraSettings.txt", 'w') cameraSettingsFile. isulat (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.sens) + '\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
Hakbang 10: Simulan ang Server
SSH papunta sa pi at simulan ang server gamit ang linya ng utos na ipinakita sa itaas.
Hakbang 11: TRY IT OUT
I-access ang webpage gamit ang IP address at dapat mong makontrol ang camera nang malayuan!
Inirerekumendang:
Raven Pi Security Camera: 7 Hakbang (na may Mga Larawan)
Raven Pi Security Camera: Ang plastik na raven na ito ay nagtatamasa ng isang bagong buhay bilang isang praktikal ngunit katakut-takot na security camera, ang Raven Pi. Mayroon itong Raspberry Pi sa tiyan nito at isang Pi Camera na naka-embed sa leeg nito, kumukuha ng HD video tuwing nakikita ang paggalaw. Sa parehong instant nito
Gumawa ng Iyong Sariling GPS SMS Security Security System: 5 Hakbang (na may Mga Larawan)
Gawin ang Iyong Sariling Sistema ng Pagsubaybay sa Security ng GPS SMS: Sa proyektong ito ipapakita ko sa iyo kung paano pagsamahin ang isang module na SIM5320 3G sa isang Arduino at isang piezoelectric transducer bilang isang shock sensor upang lumikha ng isang sistema ng pagsubaybay sa seguridad na magpapadala sa iyo ng lokasyon ng iyong mahalagang sasakyan sa pamamagitan ng SMS kapag
DIY Professional Open Source Night Vision Security Camera: 10 Hakbang (na may Mga Larawan)
DIY Professional Open Source Night Vision Security Camera: Sa bagong tutorial na ito, magkakasama naming gagawin ang aming Raspberry Pi open source video surveillance camera. Oo, pinag-uusapan namin dito ang tungkol sa isang tunay na open source na panlabas na surveillance camera, na may kakayahang makakita ng gabi at makita ang paggalaw, lahat ay konektado sa aming Jeed
WoodThing IOT Security Camera: 8 Hakbang (na may Mga Larawan)
WoodThing IOT Security Camera: Ito ay isang malakas na IP cam batay sa Raspberry PI. Nagpapatakbo ito ng motionEyeOS, kaya maaaring magamit upang pamahalaan ang maraming mga remote IP camera pati na rin ang pagpapahintulot sa iyo na mag-attach ng hanggang sa apat na karagdagang mga murang mga USB web cam na mababang gastos. Mga Tampok: USB pinapatakbo, paggalaw ng pakiramdam sa s
VHS Library Pi Security Camera: 3 Mga Hakbang (na may Mga Larawan)
VHS Library Pi Security Camera: Ito ay isang lumang kaso ng VHS Video Library na nagbibigay ngayon ng isang perpektong tahanan para sa isang security camera ng Raspberry Pi. Naglalaman ang kaso ng isang Pi Zero at ang camera ay sumisilip sa gulugod ng pekeng libro. Ito ay isang napaka-simpleng build na may isang old-world na hitsura