Obsah:
- Zásoby
- Krok 1: Sestavte hardware
- Krok 2: Zajistěte, aby byl váš Pi připojen k internetu
- Krok 3: Nastavení kamery
- Krok 4: Nainstalujte baňku
- Krok 5: Vytvořte třídu formuláře
- Krok 6: Vytvořte šablonu baňky
- Krok 7: Vykreslení šablony
- Krok 8: Vytvořte třídu kamerových operátorů
- Krok 9: Vytvořte modul záznamu
- Krok 10: Spusťte server
- Krok 11: VYZKOUŠEJTE TO
2025 Autor: John Day | [email protected]. Naposledy změněno: 2025-01-23 14:38
Toto je krok za krokem s pokyny, jak vytvořit bezpečnostní kameru aktivovanou pohybem internetu věcí pomocí Raspberry Pi. Dozvíte se, jak vytvořit webový server v baňce a formulář, který uživateli umožňuje upravit citlivost a dobu záznamu kamery, ručně spustit/zastavit záznam a/nebo pořídit snímek, který bude uložen na místo.
Zásoby
- Raspberry Pi 3
- Pi kamera
- PIR pohybový senzor
- SD karta
- Zdroj energie
Krok 1: Sestavte hardware
Když je Pi vypnuté, vložte do něj kartu micro-SD. Vložte plochý kabel modulu kamery do portu modulu kamery na Pi. Poté připojte 3 piny (označené VCC, OUT a GND) detektoru pohybu PRI k pinům GPIO Pi. Připojte VCC k napájení 5,5 V, GND k zemi a OUT ke kolíku 11 na Pi.
Krok 2: Zajistěte, aby byl váš Pi připojen k internetu
Nyní zapněte Pi připojením ke zdroji napájení a ověřte, že jste připojeni k internetu pomocí příkazu ping. Pokud nevíte, jak připojit Pi k internetu, klikněte sem.
sudo ping www.google.com
Pokud jste úspěšní, měli byste vidět, že společnost Google přijímá data.
Kromě toho můžete použít ifconfig k zobrazení vaší IP adresy.
sudo ifconfig
Krok 3: Nastavení kamery
Pomocí následujícího příkazu otevřete konfigurační rozhraní a povolte kameru v „možnostech rozhraní“.
sudo raspi-config
Po restartu můžete zobrazit stav kamery a ujistit se, že je správně připojena.
vcgencmd get_camera
Nakonec nainstalujte modul picamera.
pip install picamera
Krok 4: Nainstalujte baňku
Nainstalujte modul baňky a modul pro odpočinek v baňce pro Python:
sudo apt-get install python-dev python-pip
python -m pip install flask flask -restful
Dále nainstalujeme modul baňky pythonu používaný pro vytváření formulářů.
pip install flask-wtf
Krok 5: Vytvořte třídu formuláře
Vytvořte adresář s názvem iotProject, do kterého budete ukládat všechny své soubory.
sudo mkdir iotProject
Vytvořte soubor pythonu s názvem „camControl.py“.
sudo nano camControl.py
V tomto souboru vytvoříme naši třídu formulářů, která nám umožňuje vytvořit webový formulář s textovými poli a rozbalovací nabídkou, aby uživatel mohl měnit nastavení fotoaparátu, ručně spouštět/zastavovat záznam a pořizovat video.
from flask_wtf import FlaskFormfrom wtforms.validators import DataRequired from wtforms import SubmitField from wtforms import validators, IntegerField, BooleanField, SelectField
třída camFrame (FlaskForm):
videoDuration = IntegerField ('doba záznamu (v sekundách)')
citlivost = IntegerField ('Citlivost na pohyb (rozsah 2500-10000) nČím vyšší číslo, tím je kamera méně citlivá', validátory = [validators. NumberRange (min = 2500, max = 10 000, zpráva = 'Hodnota mimo rozsah')])
options = SelectField ('Options', options = [('none', 'No action'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), ('pic', 'Take Picture')])
submit = SubmitField ('Odeslat')
Krok 6: Vytvořte šablonu baňky
Chcete -li vytvořit uživatelské rozhraní, musíte navrhnout šablonu baňky, která používá formulář, který jste právě vytvořili. Tento soubor bude zapsán v html a uložen do složky s názvem šablony, která by měla být ve stejném adresáři jako váš formulář.
Ve složce šablon vytvořte soubor s názvem index.html. V tomto souboru replikujte výše uvedený kód.
Krok 7: Vykreslení šablony
Nyní je čas vytvořit soubor, který vykreslí šablonu. Vytvořte soubor s názvem appCam.py (ujistěte se, že již nejste ve složce šablon). Jakýkoli dynamický obsah použitý v šabloně musí být použit jako pojmenovaný argument ve volání render_template ().
importovat kameru
app = Flask (_ name_)
app.config ['SECRET_KEY'] = '13542' api = Api (aplikace)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Trvání videa, když je detekován pohyb') parser.add_argument ('sens', type = int, help = 'Úroveň pohybu nutná ke spuštění záznamu') analyzátor.add_argument ('opt', type = str, help = 'Ručně nahrát video nebo zachytit obrázek')
aktualizace třídy (zdroj):
#Stuff for wtforms def post (self): args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #zapište do textového souboru, který hovoří s kamerou běžící paralelně + '\ n') #write sens cameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () return {'dur': args ['dur'], 'sens': args ['sense'], 'opt': args ['opt']}
@app.route ('/', methods = ['GET', 'POST'])
def index (): "" "Domovská stránka ovladače" "" form = camControl.camFrame () #toto je formulář, pokud 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 (Aktualizace, '/aktualizovat/')
if _name_ == '_main_':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
Krok 8: Vytvořte třídu kamerových operátorů
Nyní chceme vytvořit soubor s názvem camOperator.py. V něm vytvoříme třídu kamer s metodami ovládání kamery s využitím již dostupných funkcí PiCamera. Instanci tohoto objektu použijeme v dalším kroku, kde spojíme funkčnost kamery a pohybového senzoru.
Metody definované v této třídě mění nastavení „záznamu“na bezpečnostní kameře pomocí vstupů citlivosti a doby trvání, které poskytuje uživatel, a stanoví výchozí hodnoty pro tyto proměnné, pokud není zadán vstup uživatele.
importovat RPi. GPIO jako GPIOimportovat čas importovat pikamery z datetime import datetime
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
detekovat = 0
fotoaparát třídy Operátor:
def _init _ (self):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "none"
def záznam (vlastní, dur):
#Records for the fixed 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 operace (self, dur, sens):
#Hlavní provoz kamery, která neustále kontroluje, zda je poblíž člověk, pokud člověk pobývá dostatečně dlouho, spouštíme nahrávání! global detect i = GPIO.input (11) if i == 0: #When output from motion sensor is LOW detect = 0 time.sleep (0.1) elif i == 1: #When output from motion sensor is HIGH print (" detekován pohyb " +str (detekovat)) pokud detekovat> = sens*10: self.record (dur) tisk (" RECORDED ") detekovat = 0 čas.spánek (0,1) detekovat += 1
Krok 9: Vytvořte modul záznamu
Poslední program potřebný pro tento projekt bude zapsán do souboru s názvem rec.py. Tento soubor říká fotoaparátu, kdy má nahrávat, jak dlouho nahrávat a zda/kdy pořídit snímek. Toho je dosaženo neustálou kontrolou a čtením uživatelských dat zapsaných do textového souboru od kroku 5. Pokud byl soubor aktualizován, upraví odpovídajícím způsobem hodnoty citlivosti a doby trvání, a pokud je pořízen záznam nebo obrázek, uloží obsah do pi, buď ve formátu souboru.h264 nebo.jpg.
'' 'Běží souběžně s bankovým serverem, čte kontrolní proměnné nastavené serverovými formuláři. Proměnné řízení serveru jsou po odeslání formulářů nastaveny v samostatném souboru. Modul rec čte tyto proměnné a na základě nich aktualizuje kameru. '' 'import camOperator z datetime import datetime import time
rc = camOperator.cameraOperator ()
cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #zde otevíráme a zavíráme v režimu zápisu, abychom odstranili obsah v souboru před spuštěním hlavní smyčky
#Nepřetržitá smyčka, která sleduje, zda jsou poblíž lidé. Pokud ano, pak
#kamera začne nahrávat. Tato funkce běží paralelně s bankou #server, který ovládá tuto kameru. recordingInProcess = False while True: #check/record if (záznamInProcess == False): rc.operation (rc.dur, rc.sens) #změňte nastavení kamery na základě serveru cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 pro nastavení 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 ()
#provést akci
# 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 = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile. zapište ("none / n") rc.opt = "none / n" elif rc.opt == "pic / n" and 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: Spusťte server
SSH do pí a spusťte server pomocí výše uvedeného příkazového řádku.
Krok 11: VYZKOUŠEJTE TO
Vstupte na webovou stránku pomocí IP adresy a měli byste mít možnost ovládat kameru na dálku!
Doporučuje:
Bezpečnostní kamera Raven Pi: 7 kroků (s obrázky)
Bezpečnostní kamera Raven Pi: Tento plastový havran si užívá nového posmrtného života jako praktická, ale strašidelná bezpečnostní kamera, Raven Pi. V břiše má Raspberry Pi a v krku integrovanou kameru Pi, která zachycuje HD video vždy, když je detekován pohyb. Ve stejný okamžik je
Plně vybavená venkovní bezpečnostní kamera založená na Raspberry Pi: 21 kroků
Plně vybavená venkovní bezpečnostní kamera založená na Raspberry Pi: Pokud jste měli neuspokojivé zkušenosti s levnými webkamerami, jejich špatně napsaným softwarem a/nebo nedostatečným hardwarem, můžete snadno postavit poloprofesionální webovou kameru s Raspberry Pi a několika dalšími elektronickými součástmi snadno zjistit, na kterém běhu
Nejjednodušší webová kamera jako bezpečnostní kamera - detekce pohybu a obrázky zaslané e -mailem: 4 kroky
Nejjednodušší webová kamera jako bezpečnostní kamera - Detekce pohybu a fotografie zaslané e -mailem: Už nebudete muset stahovat ani konfigurovat software, který by přenášel snímky detekované pohybem z vaší webové kamery na váš e -mail - jednoduše použijte svůj prohlížeč. K zachycení obrázku použijte aktuální prohlížeč Firefox, Chrome, Edge nebo Opera ve Windows, Mac nebo Android
Profesionální bezpečnostní kamera s otevřeným zdrojovým kódem pro noční vidění: 10 kroků (s obrázky)
Profesionální bezpečnostní kamera s otevřeným zdrojovým kódem pro noční vidění: V tomto novém tutoriálu společně vyrobíme naši otevřenou kamerovou kameru s otevřeným zdrojovým kódem Raspberry Pi. Ano, mluvíme zde o skutečné venkovní kamerové kameře s otevřeným zdrojovým kódem, schopné nočního vidění a detekce pohybu, vše spojené s naším Jeedem
Bezpečnostní kamera WoodThing IOT: 8 kroků (s obrázky)
Bezpečnostní kamera WoodThing IOT: Jedná se o výkonnou IP kameru založenou na Raspberry PI. Běží na systému motionEyeOS, takže jej lze použít ke správě více vzdálených IP kamer a také k připojení dalších čtyř levných webových kamer USB. Funkce: USB napájení, snímání pohybu s