Turinys:
- Prekės
- 1 žingsnis: Surinkite aparatūrą
- 2 veiksmas: įsitikinkite, kad jūsų „Pi“yra prijungtas prie interneto
- 3 veiksmas: nustatykite fotoaparatą
- 4 žingsnis: įdiekite kolbą
- 5 veiksmas: sukurkite formos klasę
- 6 žingsnis: sukurkite kolbos šabloną
- 7 žingsnis: pateikite šabloną
- 8 veiksmas: sukurkite fotoaparato operatoriaus klasę
- 9 veiksmas: sukurkite įrašų modulį
- 10 veiksmas: paleiskite serverį
- 11 žingsnis: Išbandykite
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-23 14:58
Tai žingsnis po žingsnio instrukcija, kaip sukurti „IoT“judesio aktyvuotą apsaugos kamerą naudojant „Raspberry Pi“. Sužinosite, kaip sukurti kolbos žiniatinklio serverį ir formą, leidžiančią vartotojui reguliuoti fotoaparato jautrumą ir įrašymo laiką, rankiniu būdu pradėti/sustabdyti įrašymą ir (arba) padaryti nuotrauką, kuri bus išsaugota vietoje.
Prekės
- Raspberry Pi 3
- Pi kamera
- PIR judesio jutiklis
- SD kortelė
- Maitinimo šaltinis
1 žingsnis: Surinkite aparatūrą
Kai „Pi“yra išjungtas, įdėkite „micro-SD“kortelę į „Pi“. Įkiškite fotoaparato modulio juostos kabelį į fotoaparato modulio prievadą „Pi“. Tada prijunkite 3 PRI judesio detektoriaus kaiščius (pažymėtus VCC, OUT ir GND) prie „Pi“GPIO kaiščių. Prijunkite VCC prie 5,5 V maitinimo, GND prie žemės, o OUT prie Pi 11 kaiščio.
2 veiksmas: įsitikinkite, kad jūsų „Pi“yra prijungtas prie interneto
Dabar įjunkite „Pi“prijungdami jį prie maitinimo šaltinio ir patikrinkite, ar esate prisijungę prie interneto naudodami ping komandą. Jei nežinote, kaip prijungti „Pi“prie interneto, spustelėkite čia.
sudo ping www.google.com
Jei jums sekasi, turėtumėte pamatyti, kad „Google“gauna duomenis.
Be to, galite naudoti ifconfig, kad pamatytumėte savo IP adresą.
sudo ifconfig
3 veiksmas: nustatykite fotoaparatą
Naudokite šią komandą, kad atidarytumėte konfigūracijos sąsają, ir įjunkite fotoaparatą „sąsajos parinktyse“.
sudo raspi-config
Po perkrovimo galite rodyti fotoaparato būseną, kad įsitikintumėte, jog ji tinkamai prijungta.
vcgencmd get_camera
Galiausiai įdiekite „picamera“modulį.
pip įdiegti picamera
4 žingsnis: įdiekite kolbą
Įdiekite „Python“kolbą ir kolbą atpalaiduojantį modulį:
sudo apt-get įdiegti python-dev python-pip
python -m pip įdiegti kolbos kolba
Toliau įdiegsime python kolbos modulį, naudojamą formoms kurti.
pip įdiegti kolbą-wtf
5 veiksmas: sukurkite formos klasę
Sukurkite katalogą „iotProject“, kuriame bus saugomi visi failai.
sudo mkdir iotProject
Sukurkite „Python“failą pavadinimu „camControl.py“.
sudo nano camControl.py
Šiame faile sukursime savo formos klasę, kuri leis mums sukurti žiniatinklio formą su teksto laukais ir išskleidžiamuoju meniu, kad vartotojas galėtų pakeisti fotoaparato nustatymus, rankiniu būdu pradėti/sustabdyti įrašymą ir užfiksuoti vaizdo įrašą.
iš „flask_wtf“importavimo „FlaskFormfrom“iš „wtforms.validators“importuoja duomenis
klasės „camFrame“(„FlaskForm“):
videoDuration = IntegerField („Įrašymo laikas (sekundėmis)“)
jautrumas = IntegerField ('Judesio jautrumas (diapazonas 2500–10000) n Kuo didesnis skaičius, tuo fotoaparatas mažiau jautrus “, validatoriai = [validators. NumberRange (min = 2500, max = 10000, message = 'Value out of Range'])
options = SelectField ('Parinktys', pasirinkimai = [('nėra', 'Jokių veiksmų'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), („nuotrauka“, „Fotografuoti“)])
pateikti = SubmitField ('Pateikti')
6 žingsnis: sukurkite kolbos šabloną
Norėdami sukurti vartotojo sąsają, turite sukurti kolbos šabloną, kuriame būtų naudojama ką tik sukurta forma. Šis failas bus parašytas html ir saugomas aplanke, vadinamame šablonais, kuris turėtų būti tame pačiame kataloge kaip ir jūsų forma.
Šablonų aplanko viduje sukurkite failą pavadinimu index.html. Šiame faile pakartokite aukščiau parodytą kodą.
7 žingsnis: pateikite šabloną
Dabar atėjo laikas sukurti failą, kuris atvaizduoja šabloną. Sukurkite failą pavadinimu appCam.py (įsitikinkite, kad nebėra šablonų aplanke). Bet koks dinaminis turinys, naudojamas šablone, turi būti naudojamas kaip įvardytas argumentas raginant render_template ().
importuoti camControl iš kolbos importo kolba, render_template, request, Response from flask_restful import Resource, Api, reqparse
programa = kolba (_ vardas_)
app.config ['SECRET_KEY'] = '13542' api = Api (programa)
parseris = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Vaizdo įrašo trukmė, kai aptinkamas judesys') parser.add_argument ('sens', type = int, help = 'Judėjimo lygis, reikalingas įrašui suaktyvinti') parser.add_argument ('opt', type = str, help = 'Rankiniu būdu įrašykite vaizdo įrašą arba užfiksuokite vaizdą')
klasės atnaujinimas (šaltinis):
#Stuff for wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #įrašykite į tekstinį failą, kuris kalbasi su lygiagrečiai veikiančia kamera + '\ n') #write sens cameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () return {'dur': args ['dur'], 'sens': args ['sense'], 'opt': args ['opt']}
@app.route ('/', metodai = ['GET', 'POST'])
def index (): "" "Valdiklio pagrindinis puslapis" "" form = camControl.camFrame () #tai yra forma, jei 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"} return render_template ('index.html', form = forma, image = imageDictionary)
api.add_resource (Atnaujinti, '/update/')
jei _vardas_ == '_main_':
app.run (priegloba = '0.0.0.0', prievadas = 80, derinimas = tiesa, sriegis = tiesa)
8 veiksmas: sukurkite fotoaparato operatoriaus klasę
Dabar norime sukurti failą, pavadintą camOperator.py. Jame sudarysime fotoaparato klasę su fotoaparato valdymo metodais, naudodami jau turimas „PiCamera“funkcijas. Kitame žingsnyje naudosime šio objekto egzempliorių, kuriame sujungsime fotoaparato ir judesio jutiklio funkcijas.
Šioje klasėje apibrėžti metodai pakeičia apsaugos kameros „įrašymo“nustatymus, naudojant vartotojo pateiktus jautrumo ir trukmės įvestis, tuo pačiu nustatant numatytąsias šių kintamųjų reikšmes, jei nėra vartotojo įvesties.
importuoti RPi. GPIO kaip GPIOimportuoti laiko importavimą picamera iš datetime import data datetime
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
aptikti = 0
klasės kamera Operatorius:
def _init _ (savarankiškai):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "nėra"
def rekordas (savarankiškas, sunkus):
#Records už nurodytą trukmę, kurią nustatė valdiklis '/home/pi/iotProject/videos/' + videoName + '.h264') time.sleep (dur) self.cam.stop_recording ()
def operacija (savarankiškas, sunkus, senas):
#Pagrindinis fotoaparato veikimas, kuris nuolat tikrina, ar šalia yra žmogus, ar žmogus lieka pakankamai ilgai, pradedame įrašinėti! visuotinis aptikimas i = GPIO.input (11), jei i == 0: #Kai judesio jutiklio išvestis yra LOW detekcija = 0 laiko. miego (0,1) elif i == 1: #Kai iš judesio jutiklio išvedamas HIGH print (" aptiktas judesys " +str (aptikti)), jei aptinkama> = sens*10: self.record (dur) print (" RECORDED ") aptikti = 0 laiko. miego (0,1) aptikti += 1
9 veiksmas: sukurkite įrašų modulį
Paskutinė šiam projektui reikalinga programa bus įrašyta į failą pavadinimu rec.py. Šis failas nurodo fotoaparatui, kada įrašyti, kiek laiko įrašyti ir ar/kada fotografuoti. Tai daroma nuolat tikrinant ir skaitant vartotojo duomenis, įrašytus į tekstinį failą nuo 5 veiksmo. Jei failas buvo atnaujintas, jis atitinkamai pakoreguoja jautrumo ir trukmės vertes, o tada, kai padaromas įrašas ar nuotrauka, jis išsaugo turinį pi, arba.h264, arba-j.webp
'' 'Veikia lygiagrečiai su kolbos serveriu, nuskaito serverio formų nustatytus valdymo kintamuosius. Pateikus formas, serverio valdymo kintamieji nustatomi atskirame faile. Rec modulis skaito šiuos kintamuosius ir pagal juos atnaujina fotoaparatą. »importuoti„ camOperator “nuo datos ir laiko importavimo datos importavimo laiko
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #čia, atidarome ir uždarome rašymo režimu, kad ištrintume failo turinį prieš paleidžiant pagrindinę kilpą
#Nuolatinė kilpa, kuri stebi, ar netoliese yra žmonių. Jei jie yra, tada
#kamera pradeda įrašinėti. Ši funkcija veikia kartu su kolba #serveris, valdanti šią kamerą. recordInProcess = Netiesa, o tiesa: #patikrinkite/įrašykite, jei (recordInProcess == False): rc.operation (rc.dur, rc.sens) #pakeiskite fotoaparato nustatymus pagal serverio cameraSettingsFile = open ("cameraSettings.txt"), 'r') settingNum = 0 nustatymui kamerojeSettingsFile.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 ()
#vykdykite veiksmą
# if rc.opt == "none": # tęsti, jei rc.opt == "rec / n" ir įrašymasInProcess == Netiesa: print ("Vykdoma įrašo komanda iš valdiklio") #Generuoti vaizdo įrašo pavadinimą pagal dabartinį vaizdo įrašo pavadinimą = "snappedVid _"+str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/home/pi/iotProject /videos/' + videoName +'.h264 ') recordInProcess = Tikras elifas rc.opt == "stop / n" ir įrašymasInProcess == Tiesa: spausdinti ("Sustabdyti įrašymo komandą iš valdiklio") 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" and recordInProcess == 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 ('images/' + pictureName + '.jpg') rc.cam.stop_preview () cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile. rašyti (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
10 veiksmas: paleiskite serverį
SSH į pi ir paleiskite serverį naudodami aukščiau pateiktą komandinę eilutę.
11 žingsnis: Išbandykite
Pasiekite tinklalapį naudodami IP adresą ir turėtumėte turėti galimybę nuotoliniu būdu valdyti fotoaparatą!
Rekomenduojamas:
„Raven Pi“apsaugos kamera: 7 žingsniai (su nuotraukomis)
„Raven Pi“apsaugos kamera: Šis plastikinis varnas mėgaujasi nauju pomirtiniu gyvenimu kaip praktiška, tačiau šiurpuliuojanti apsaugos kamera „Raven Pi“. Jo pilve yra „Raspberry Pi“ir kakle įterpta „Pi“kamera, fiksuojanti HD vaizdo įrašą, kai aptinkamas judesys. Tuo pačiu metu jo
Lengviausia internetinė kamera kaip apsaugos kamera - judesio aptikimas ir nuotraukos el. Paštu: 4 žingsniai
Lengviausia kamera kaip apsaugos kamera - judesio aptikimas ir el. Paštu siunčiami paveikslėliai: nebereikia atsisiųsti ar konfigūruoti programinės įrangos, kad judesio aptiktos nuotraukos iš jūsų kameros būtų siunčiamos į jūsų el. Paštą - tiesiog naudokite naršyklę. Norėdami užfiksuoti vaizdą, naudokite naujausią „Firefox“, „Chrome“, „Edge“arba „Opera“naršyklę „Windows“, „Mac“ar „Android“
„Pasidaryk pats“profesionali atvirojo kodo naktinio matymo apsaugos kamera: 10 žingsnių (su nuotraukomis)
„Pasidaryk pats“profesionali atvirojo kodo naktinio matymo apsaugos kamera: šioje naujoje pamokoje mes kartu sukursime atvirojo kodo vaizdo stebėjimo kamerą „Raspberry Pi“. Taip, čia kalbame apie tikrą atviro kodo lauko stebėjimo kamerą, galinčią matyti naktį ir judėti, visi prisijungę prie mūsų „Jeed“
„GreyBOX“- apsaugos nuo nelaimingų atsitikimų ir apsaugos nuo vagystės sistema: 4 žingsniai (su paveikslėliais)
„GrayBOX“- apsaugos nuo nelaimingų atsitikimų ir vagysčių sistema: „GrayBOX“yra įrenginys, apsaugantis jus ir jūsų transporto priemonę*. Šis prietaisas bus sumontuotas jūsų automobilyje*ir automatiškai atliks kai kurias užduotis, kad išgelbėtų jus ir jūsų transporto priemonę*. „GrayBOX“yra SIM kortelė, todėl galite bendrauti su juo teksto žinute
„Raspberry Pi“lazerio apsaugos sistema: 13 žingsnių (su nuotraukomis)
„Raspberry Pi“lazerio apsaugos sistema: ačiū, kad patikrinote mano nurodymus. Pasibaigus šiam nurodymui, jūs sukursite aviečių pi lazerinę tripwire sistemą su el. Pašto įspėjimo funkcija, kuri parodyta vaizdo įraše. Norėdami įvykdyti šią instrukciją, turite būti pažįstami