Obsah:
- Zásoby
- Krok 1: Zostavte hardvér
- Krok 2: Zaistite, aby bol váš Pi pripojený k internetu
- Krok 3: Nastavte fotoaparát
- Krok 4: Nainštalujte banku
- Krok 5: Vytvorte triedu formulárov
- Krok 6: Vytvorte šablónu banky
- Krok 7: Vykreslite šablónu
- Krok 8: Vytvorte triedu operátorov kamery
- Krok 9: Vytvorte záznamový modul
- Krok 10: Spustite server
- Krok 11: VYSKÚŠAJTE TO
2025 Autor: John Day | [email protected]. Naposledy zmenené: 2025-01-23 15:05
Toto je podrobný návod, ako vytvoriť bezpečnostnú kameru s aktivovaným pohybom internetu vecí pomocou Raspberry Pi. Dozviete sa, ako vytvoriť webový server v banke a formulár, ktorý používateľovi umožní nastaviť citlivosť fotoaparátu a čas záznamu, manuálne spustiť/zastaviť nahrávanie a/alebo nasnímať obrázok, ktorý sa lokálne uloží.
Zásoby
- Raspberry Pi 3
- Pi kamera
- Snímač pohybu PIR
- SD karta
- Zdroj energie
Krok 1: Zostavte hardvér
Keď je Pi vypnuté, vložte do neho kartu micro-SD. Vložte plochý kábel modulu kamery do portu modulu kamery na zariadení Pi. Potom pripojte 3 piny (označené VCC, OUT a GND) detektora pohybu PRI k pinom GPIO Pi. Pripojte VCC k 5,5 V napájania, GND k zemi a OUT ku kolíku 11 na Pi.
Krok 2: Zaistite, aby bol váš Pi pripojený k internetu
Teraz zapnite Pi pripojením k zdroju napájania a pomocou príkazu ping overte, či ste pripojení k internetu. Ak neviete, ako pripojiť svoje Pi k internetu, kliknite sem.
sudo ping www.google.com
Ak ste úspešní, mali by ste vidieť, že spoločnosť Google prijíma údaje.
Okrem toho môžete na zobrazenie svojej adresy IP použiť ifconfig.
sudo ifconfig
Krok 3: Nastavte fotoaparát
Nasledujúcim príkazom otvoríte konfiguračné rozhranie a povolíte kameru v „možnostiach rozhrania“.
sudo raspi-config
Po reštarte môžete zobraziť stav fotoaparátu a uistiť sa, že je správne pripojený.
vcgencmd get_camera
Nakoniec nainštalujte modul picamera.
pip install picamera
Krok 4: Nainštalujte banku
Nainštalujte banku a modul na oddych v banke pre Python:
sudo apt-get install python-dev python-pip
python -m pip nainštalujte banku flask -restful
Ďalej nainštalujeme modul banky python, ktorý sa používa na vytváranie formulárov.
pip install flask-wtf
Krok 5: Vytvorte triedu formulárov
Vytvorte adresár s názvom iotProject, do ktorého sa budú ukladať všetky vaše súbory.
sudo mkdir iotProject
Vytvorte súbor pythonu s názvom „camControl.py“.
sudo nano camControl.py
V tomto súbore vytvoríme triedu formulárov, ktorá nám umožní vytvoriť webový formulár s textovými poliami a rozbaľovacou ponukou, pomocou ktorej bude môcť používateľ meniť nastavenia fotoaparátu, manuálne spúšťať/zastavovať nahrávanie a snímať video.
z flask_wtf import FlaskForm z wtforms.validators import DataRequired from wtforms import SubmitField from wtforms import validators, IntegerField, BooleanField, SelectField
trieda camFrame (FlaskForm):
videoDuration = IntegerField ('Čas záznamu (v sekundách)')
citlivosť = IntegerField („Citlivosť na pohyb (rozsah 2 500-10 000) nČím vyššie je číslo, tým je fotoaparát menej citlivý“, validátory = [validátory. NumberRange (min = 2500, max = 10 000, správa = 'Hodnota mimo rozsah')])
options = SelectField ('Options', options = [('none', 'No action'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), ('pic', 'Take Picture')])
submit = SubmitField ('Odoslať')
Krok 6: Vytvorte šablónu banky
Na vytvorenie používateľského rozhrania musíte navrhnúť šablónu banky, ktorá používa formulár, ktorý ste práve vytvorili. Tento súbor bude zapísaný v html a uložený v priečinku s názvom šablóny, ktorý by mal byť v rovnakom adresári ako váš formulár.
V priečinku so šablónami vytvorte súbor s názvom index.html. V tomto súbore replikujte kód uvedený vyššie.
Krok 7: Vykreslite šablónu
Teraz je načase vytvoriť súbor, ktorý vykreslí šablónu. Vytvorte súbor s názvom appCam.py (uistite sa, že sa už nenachádzate v priečinku so šablónami). Akýkoľvek dynamický obsah použitý v šablóne musí byť použitý ako pomenovaný argument vo výzve na render_template ().
importovať kameru
app = Flask (_ name_)
app.config ['SECRET_KEY'] = '13542' api = Api (aplikácia)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Trvanie videa pri detekcii pohybu') parser.add_argument ('sens', type = int, help = 'Úroveň pohybu potrebná na spustenie záznamu') analyzátor.add_argument ('opt', type = str, help = 'Manuálne nahrať video alebo zachytiť obrázok')
Aktualizácia triedy (zdroj):
#Stuff for wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #napíšte do textového súboru, ktorý hovorí s kamerou bežiacou paralelne 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 () návrat {'dur': args ['dur'], 'sens': args ['sense'], 'opt': args ['opt']}
@app.route ('/', methods = ['GET', 'POST'])
def index (): "" "Domovská stránka ovládača" "" form = camControl.camFrame () #toto je formulár, ak 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 = form, image = imageDictionary)
api.add_resource (Aktualizácia, '/aktualizovať/')
if _name_ == '_main_':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
Krok 8: Vytvorte triedu operátorov kamery
Teraz chceme vytvoriť súbor s názvom camOperator.py. V ňom vytvoríme triedu kamier s metódami na ovládanie kamery s využitím už dostupných funkcií PiCamera. Inštanciu tohto objektu použijeme v nasledujúcom kroku, kde spojíme funkcionalitu kamery a pohybového senzora.
Metódy definované v tejto triede menia nastavenia „záznamu“na bezpečnostnej kamere pomocou vstupov citlivosti a trvania, ktoré poskytuje používateľ, a stanovujú predvolené hodnoty pre tieto premenné, ak nie je prítomný vstup používateľa.
importovať RPi. GPIO ako GPIOimport času importovať pikamery z dátumu a času importu dátumu a času
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
detekovať = 0
triedna kamera Operátor:
def _init _ (self):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "none"
def record (self, dur):
#Records for the certain duration set by the controller 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 operácia (self, dur, sens):
#Hlavná prevádzka kamery, ktorá neustále kontroluje, či je v blízkosti človek, a ak tam človek pobýva dostatočne dlho, začíname nahrávať! globálna detekcia i = GPIO.vstup (11) ak i == 0: #Keď je výstup zo snímača pohybu NÍZKY, detekcia = 0 čas.spánok (0,1) elif i == 1: #Keď je výstup zo snímača pohybu VYSOKÝ, tlač (" detekovaný pohyb " +str (detekovať)) ak je detekovaný> = senzor*10: self.record (dur) tlač (" RECORDED ") detekovať = 0 čas.spánok (0,1) detekovať += 1
Krok 9: Vytvorte záznamový modul
Posledný program potrebný pre tento projekt bude zapísaný do súboru s názvom rec.py. Tento súbor informuje fotoaparát, kedy má nahrávať, ako dlho nahrávať a či/kedy má nasnímať obrázok. Vykonáva to neustálou kontrolou a čítaním používateľských údajov zapísaných do textového súboru od kroku 5. Ak bol súbor aktualizovaný, zodpovedajúcim spôsobom upraví hodnoty citlivosti a trvania a potom, ak sa nasníma záznam alebo obrázok, uloží obsah do pi, buď vo formáte súboru.h264 alebo.jpg.
'' 'Beží súbežne s bankovým serverom a číta riadiace premenné nastavené serverovými formulármi. Riadiace premenné servera sú po odoslaní formulárov nastavené v samostatnom súbore. Rec modul číta tieto premenné a aktualizuje na základe nich kameru. '' 'import camOperator z dátumu a času importu
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #tu, v režime zápisu otvárame a zatvárame, aby sme pred spustením hlavnej slučky odstránili obsah zo súboru.
#Súvislá slučka, ktorá sleduje, či sú v blízkosti ľudia. Ak sú, tak
#kamera začne nahrávať. Táto funkcia je súbežne s bankou #server, ktorý ovláda túto kameru. recordingInProcess = False while True: #check/record if (záznamInProcess == False): rc.operation (rc.dur, rc.sens) #zmeňte nastavenia kamery na základe servera CameraSettingsFile = otvorený ("cameraSettings.txt", 'r') settingNum = 0 pre nastavenie v CameraSettingsFile.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 ()
#vykonajte akciu
# if rc.opt == "none": # continue if rc.opt == "rec / n" and recordingInProcess == False: print ("Running record command from 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" and recordingInProcess == True: print ("Stopping record command from controller") rc.cam.stop_recording () recordingInProcess = False cameraSettingsFile = otvorený ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile. zapíšte ("nikto / n") rc.opt = "nikto / n" odstráňte rc.opt == "obrázok / n" a recordingInProcess == 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. write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
Krok 10: Spustite server
SSH do pí a spustite server pomocou príkazového riadka uvedeného vyššie.
Krok 11: VYSKÚŠAJTE TO
Prejdite na webovú stránku pomocou adresy IP a mali by ste byť schopní ovládať kameru na diaľku!
Odporúča:
Bezpečnostná kamera Raven Pi: 7 krokov (s obrázkami)
Bezpečnostná kamera Raven Pi: Tento plastový havran si užíva nový život ako praktická, ale strašidelná bezpečnostná kamera Raven Pi. V bruchu má Raspberry Pi a na krku vstavanú kameru Pi, ktorá zachytáva HD video vždy, keď je detekovaný pohyb. V rovnakom okamihu je
Plne vybavená vonkajšia bezpečnostná kamera založená na Raspberry Pi: 21 krokov
Plne vybavená vonkajšia bezpečnostná kamera založená na Raspberry Pi: Ak máte sklamajúce skúsenosti s lacnými webkamerami, ich zle napísaným softvérom a/alebo nedostatočným hardvérom, môžete si ľahko postaviť poloprofesionálnu webovú kameru s Raspberry Pi a niekoľkými ďalšími elektronickými komponentmi. zistiť, na ktorých pretekoch
Najľahšia webová kamera ako bezpečnostná kamera - detekcia pohybu a obrázky odoslané e -mailom: 4 kroky
Najľahšia webová kamera ako bezpečnostná kamera - Detekcia pohybu a obrázky zaslané e -mailom: Na to, aby ste mohli dostávať obrázky rozpoznané pohybom z webovej kamery do e -mailu, si už nemusíte sťahovať ani konfigurovať softvér - jednoducho použite prehliadač. Na zachytenie obrázku použite aktuálny prehliadač Firefox, Chrome, Edge alebo Opera v systéme Windows, Mac alebo Android
Profesionálna bezpečnostná kamera s otvoreným zdrojom pre nočné videnie: 10 krokov (s obrázkami)
Profesionálna bezpečnostná kamera s otvoreným zdrojovým kódom pre nočné videnie: V tomto novom návode spoločne vyrobíme našu otvorenú video monitorovaciu kameru Raspberry Pi. Áno, hovoríme tu o skutočnej vonkajšej sledovacej kamere s otvoreným zdrojom, schopnej nočného videnia a detekcie pohybu, všetko spojené s naším Jeedom
Bezpečnostná kamera WoodThing IOT: 8 krokov (s obrázkami)
Bezpečnostná kamera IOT WoodThing: Je to výkonná IP kamera založená na Raspberry PI. Beží na systéme motionEyeOS, takže ho možno použiť na správu viacerých vzdialených IP kamier a tiež vám umožňuje pripojiť až štyri ďalšie lacné webové kamery USB. Vlastnosti: USB napájanie, snímanie pohybu s