Satura rādītājs:
- Piegādes
- 1. darbība: salieciet aparatūru
- 2. darbība. Pārliecinieties, vai jūsu Pi ir savienots ar internetu
- 3. darbība: iestatiet kameru
- 4. solis: instalējiet kolbu
- 5. darbība: veidlapu klases izveide
- 6. darbība: izveidojiet kolbas veidni
- 7. darbība: atveidojiet veidni
- 8. darbība: izveidojiet kameras operatora klasi
- 9. solis: izveidojiet ierakstu moduli
- 10. darbība: palaidiet serveri
- 11. solis: Mēģiniet to izmēģināt
Video: Raspberry Pi drošības kamera: 11 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:52
Šis ir soli pa solim norādāms, kā izveidot IoT, kustību aktivizētu drošības kameru, izmantojot Raspberry Pi. Jūs uzzināsit, kā izveidot kolbas tīmekļa serveri un veidlapu, kas ļauj lietotājam pielāgot kameras jutību un ierakstīšanas laiku, manuāli sākt/pārtraukt ierakstīšanu un/vai uzņemt attēlu, kas tiks saglabāts lokāli.
Piegādes
- Raspberry Pi 3
- Pi kamera
- PIR kustības sensors
- SD karte
- Enerģijas avots
1. darbība: salieciet aparatūru
Kamēr Pi ir izslēgts, ievietojiet mikro-SD karti Pi. Ievietojiet kameras moduļa lentes kabeli Pi kameras moduļa portā. Pēc tam savienojiet PRI kustības detektora 3 tapas (ar apzīmējumu VCC, OUT un GND) ar Pi GPIO tapām. Pievienojiet VCC pie 5,5 V strāvas, GND pie zemes un OUT pie Pi tapas 11.
2. darbība. Pārliecinieties, vai jūsu Pi ir savienots ar internetu
Tagad ieslēdziet Pi, pievienojot to strāvas avotam, un pārbaudiet, vai esat izveidojis savienojumu ar internetu, izmantojot ping komandu. Ja jūs nezināt, kā savienot savu Pi ar internetu, noklikšķiniet šeit.
sudo ping www.google.com
Ja jums veicas, jums vajadzētu redzēt, ka Google saņem datus.
Turklāt, lai redzētu savu IP adresi, varat izmantot ifconfig.
sudo ifconfig
3. darbība: iestatiet kameru
Izmantojiet šo komandu, lai atvērtu konfigurācijas saskarni, un iespējojiet kameru "saskarnes opcijās".
sudo raspi-config
Pēc pārstartēšanas varat parādīt kameras statusu, lai pārliecinātos, ka tā ir pareizi pievienota.
vcgencmd get_camera
Visbeidzot, instalējiet picamera moduli.
pip instalēt picamera
4. solis: instalējiet kolbu
Instalējiet kolbu un kolbu nomierinošo moduli Python:
sudo apt-get instalēt python-dev python-pip
python -m pip uzstādīt kolbu kolba -nomierinoša
Tālāk mēs instalēsim pitona kolbas moduli, ko izmanto veidlapu izveidošanai.
pip instalēt kolbu-wtf
5. darbība: veidlapu klases izveide
Izveidojiet direktoriju ar nosaukumu iotProject, lai saglabātu visus savus failus.
sudo mkdir iotProject
Izveidojiet pitona failu ar nosaukumu "camControl.py".
sudo nano camControl.py
Šajā failā mēs izveidosim savu veidlapu klasi, kas ļauj mums izveidot tīmekļa veidlapu ar tekstlodziņiem un nolaižamo izvēlni, lai lietotājs varētu mainīt kameras iestatījumus, manuāli sākt/apturēt ierakstīšanu un uzņemt video.
no flask_wtf importēt FlaskFormfrom wtforms.validators importē datus Nepieciešams no wtforms importa
klases camFrame (FlaskForm):
videoDuration = IntegerField ('Ierakstīšanas laiks (sekundēs)')
jutība = IntegerField ('Kustības jutība (diapazons 2500-10000) nJo lielāks skaitlis, jo kamera ir mazāk jutīga', validatori = [validators. NumberRange (min = 2500, max = 10000, message = 'Value Out of Range'])
options = SelectField ('Options', options = [('none', 'No action'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), ('pic', 'Take picture')])
iesniegt = SubmitField ('Iesniegt')
6. darbība: izveidojiet kolbas veidni
Lai izveidotu lietotāja interfeisu, jums jāizstrādā kolbas veidne, kurā tiek izmantota tikko izveidotā veidlapa. Šis fails tiks rakstīts html formātā un saglabāts mapē ar nosaukumu veidnes, kurai jāatrodas tajā pašā direktorijā kā jūsu veidlapai.
Veidņu mapē izveidojiet failu ar nosaukumu index.html. Šajā failā atkārtojiet iepriekš parādīto kodu.
7. darbība: atveidojiet veidni
Tagad ir pienācis laiks izveidot failu, kas atveido veidni. Izveidojiet failu ar nosaukumu appCam.py (pārliecinieties, ka vairs neesat veidņu mapē). Jebkurš veidnē izmantotais dinamiskais saturs jāizmanto kā nosaukts arguments aicinājumā uz render_template ().
importēt camControl no kolbas importēt kolbu, render_template, pieprasījums, atbilde no flask_restful importēt resursus, Api, reqparse
app = kolba (_ name_)
app.config ['SECRET_KEY'] = '13542' api = Api (lietotne)
parsētājs = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Video ilgums, kad tiek konstatēta kustība') parser.add_argument ('sens', type = int, help = 'Kustības līmenis, kas nepieciešams, lai aktivizētu ierakstu') parser.add_argument ('opt', type = str, help = 'Manuāli ierakstiet videoklipu vai uzņemiet attēlu')
klases atjauninājums (resurss):
#Stuff wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #ierakstiet teksta failā, kas sarunājas ar kameru, kas darbojas paralēli + '\ n') #write sens cameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () return {'dur': args ['dur'], 'sens': args ['sense'], 'opt': args ['opt']}
@app.route ('/', metodes = ['GET', 'POST'])
def index (): "" "Kontroliera mājas lapa" "" form = camControl.camFrame () #šī ir veidlapa, ja 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 = {"faila nosaukums": "image.jpg"} atgriezt render_template ('index.html', form = forma, image = imageDictionary)
api.add_resource (Atjaunināt, '/update/')
ja _name_ == '_main_':
app.run (resursdators = '0.0.0.0', ports = 80, atkļūdošana = True, threaded = True)
8. darbība: izveidojiet kameras operatora klasi
Tagad mēs vēlamies izveidot failu ar nosaukumu camOperator.py. Tajā mēs izveidosim kameru klasi ar metodēm kameras darbināšanai, izmantojot jau pieejamās PiCamera funkcijas. Mēs izmantosim šī objekta eksemplāru nākamajā solī, kurā mēs apvienosim kameras un kustības sensora funkcionalitāti.
Šajā klasē definētās metodes maina drošības kameras "ieraksta" iestatījumus, izmantojot lietotāja sniegtās jutības un ilguma ievades, vienlaikus nosakot šo mainīgo noklusējuma vērtības, ja lietotāja ievades nav.
importēt RPi. GPIO kā GPIOimportēt laika importu picamera no datuma un laika importēšanas datuma
GPIO.setmode (GPIO. BOARD)
GPIO.iestatīšana (11, GPIO. IN)
atklāt = 0
klases kamera Operators:
def _init _ (sevi):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "nav"
def ieraksts (self, dur):
#Records uz noteiktu laiku, ko iestatījis kontrolieris 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 darbība (self, dur, sens):
#Kameras galvenā darbība, kas pastāvīgi pārbauda, vai tuvumā atrodas cilvēks, vai cilvēks uzturas pietiekami ilgi, mēs sākam ierakstīt! globālā noteikšana i = GPIO. ievade (11), ja i == 0: #Kad kustības sensora izeja ir LOW noteikšana = 0 laiks. miega (0,1) elif i == 1: #Ja izvade no kustības sensora ir HIGH print (" kustība konstatēta " +str (atklāt)), ja atklāt> = sens*10: self.record (dur) print (" RECORDED ") noteikt = 0 laiks. miega (0,1) noteikšana += 1
9. solis: izveidojiet ierakstu moduli
Pēdējā šim projektam nepieciešamā programma tiks ierakstīta failā ar nosaukumu rec.py. Šis fails norāda kamerai, kad ierakstīt, cik ilgi ierakstīt un vai/kad fotografēt. Tas tiek darīts, pastāvīgi pārbaudot un lasot lietotāja datus, kas rakstīti teksta failā no 5. darbības. Ja fails ir atjaunināts, tas attiecīgi pielāgo jutīguma un ilguma vērtības, un pēc tam, ja tiek uzņemts ieraksts vai attēls, tas saglabā saturu pi, vai nu.h264, vai-j.webp
'' 'Darbojas paralēli kolbas serverim, lasot servera veidlapu iestatītos kontroles mainīgos. Pēc veidlapu iesniegšanas servera vadības mainīgie tiek iestatīti atsevišķā failā. Rec modulis nolasa šos mainīgos un, pamatojoties uz tiem, atjaunina kameru. '' 'importēt camOperator no datuma un laika importēšanas datuma importēšanas laika
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #šeit mēs atveram un aizveram rakstīšanas režīmā, lai izdzēstu faila saturu pirms galvenās cilpas darbības
#Nepārtraukta cilpa, kas vēro, vai tuvumā atrodas cilvēki. Ja tie ir, tad
#kamera sāk ierakstīšanu. Šī funkcija darbojas paralēli kolbai #serveris, kas vada šo kameru. recordInProcess = False, kamēr True: #pārbaudiet/ierakstiet, ja (recordInProcess == False): rc.operation (rc.dur, rc.sens) #mainiet kameras iestatījumus, pamatojoties uz servera cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 kameras iestatīšanai) elif settingNum == 2: #Action change rc.opt = setting settingNum += 1 cameraSettingsFile.close ()
#izpildīt darbību
# if rc.opt == "none": # turpināt, ja rc.opt == "rec / n" un ierakstsInProcess == Nepareizi: print ("Running ieraksta komanda no kontroliera") # Ģenerēt videoklipa nosaukumu, pamatojoties uz pašreizējo videoName = "snappedVid _"+str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/home/pi/iotProject /videos/' + videoName +. = False cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile. rakstīt ("neviens / n") rc.opt = "neviens / n" elif rc.opt == "pic / n" un ierakstsInProcess == Nepareizi: drukāt ("Snap pic komanda no kontroliera") pictureName = "snappedPic_ "+str (datuma laiks. tagad ()) pictureName = pictureName.replace (':', ') pictureName = pictureName.replace ('. ',') rc.cam.st art_preview () time.sleep (5) rc.cam.capture ('bildes/' + pictureName + '.jpg') rc.cam.stop_preview () cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile. rakstīt (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("nav / n") rc.opt = "nav / n"
10. darbība: palaidiet serveri
SSH ievadiet pi un palaidiet serveri, izmantojot iepriekš parādīto komandrindu.
11. solis: Mēģiniet to izmēģināt
Piekļūstiet tīmekļa lapai, izmantojot IP adresi, un jums vajadzētu būt iespējai attālināti vadīt kameru!
Ieteicams:
Raven Pi drošības kamera: 7 soļi (ar attēliem)
Raven Pi drošības kamera: Šis plastmasas krauklis bauda jaunu pēcnāves dzīvi kā praktiska, bet rāpojoša drošības kamera-Raven Pi. Tā vēderā ir Raspberry Pi un kaklā iebūvēta Pi kamera, kas uzņem HD video, kad tiek konstatēta kustība. Tajā pašā mirklī tā
Vienkāršākā tīmekļa kamera kā drošības kamera - kustību noteikšana un e -pastā nosūtīti attēli: 4 soļi
Vienkāršākā tīmekļa kamera kā drošības kamera - kustību noteikšana un e -pastā nosūtītie attēli: jums vairs nav jālejupielādē vai jākonfigurē programmatūra, lai no jūsu tīmekļa kameras uz e -pastu saņemtu kustības noteiktus attēlus - vienkārši izmantojiet pārlūkprogrammu. Izmantojiet jaunāko pārlūkprogrammu Firefox, Chrome, Edge vai Opera operētājsistēmā Windows, Mac vai Android, lai uzņemtu attēlu
Viena pieskāriena sieviešu drošības drošības sistēma: 3 soļi
Sieviešu drošības pieskāriena sistēma ar vienu pieskārienu: viena pieskāriena signalizācija Sieviešu drošības sistēma, izmantojot 8051 mikrokontrolleri Mūsdienu pasaulē sieviešu drošība ir vissvarīgākā problēma valstī. Šodien sievietes tiek uzmāktas un satrauktas, un dažreiz, kad nepieciešama steidzama palīdzība. Nav obligāta atrašanās vieta
DIY profesionāla atvērtā koda nakts redzamības drošības kamera: 10 soļi (ar attēliem)
DIY profesionālā atvērtā pirmkoda nakts redzamības drošības kamera: šajā jaunajā apmācībā mēs kopā izveidosim mūsu Raspberry Pi atvērtā pirmkoda videonovērošanas kameru. Jā, mēs šeit runājam par īstu atvērtā pirmkoda āra novērošanas kameru, kas spēj redzēt naktī un noteikt kustības, visi ir saistīti ar mūsu Jeed
WoodThing IOT drošības kamera: 8 soļi (ar attēliem)
WoodThing IOT drošības kamera: šī ir jaudīga IP kamera, kuras pamatā ir aveņu PI. Tas darbojas ar MotionEyeOS, tāpēc to var izmantot, lai pārvaldītu vairākas attālinātas IP kameras, kā arī ļauj pievienot līdz četrām papildu zemām izmaksām paredzētām USB tīmekļa kamerām. Funkcijas: USB barošana, kustības noteikšana ar s