Mundarija:
- Ta'minotlar
- 1 -qadam: Uskuna yig'ing
- 2 -qadam: Sizning Pi Internetga ulanganligiga ishonch hosil qiling
- 3 -qadam: Kamerani sozlash
- 4 -qadam: Shishani o'rnating
- 5 -qadam: Formalar sinfini yarating
- 6 -qadam: Shabloni shablonini yarating
- 7 -qadam: shablonni ko'rsatish
- 8 -qadam: Kamera operatorlari sinfini yarating
- 9 -qadam: Yozish modulini yarating
- 10 -qadam: Serverni ishga tushiring
- 11 -qadam: KO'RING
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-23 15:14
Bu asta -sekin Raspberry Pi yordamida IoT, harakatlanuvchi xavfsizlik kamerasini yaratish bo'yicha ko'rsatma. Siz kameraning sezgirligi va yozish vaqtini sozlash, qo'lda yozishni boshlash/to'xtatish va/yoki mahalliy sifatida saqlanadigan rasmni olish imkonini beradigan kolbadagi veb -server va shaklni yaratishni o'rganasiz.
Ta'minotlar
- Raspberry Pi 3
- Pi kamera
- PIR harakat sensori
- SD -karta
- Quvvat manbai
1 -qadam: Uskuna yig'ing
Pi o'chirilgan bo'lsa, micro-SD-kartani Pi-ga joylashtiring. Kamera modulining tasma kabelini Pi -dagi kamera moduli portiga joylashtiring. Keyin, PRI harakat detektorining 3 pinini (VCC, OUT va GND deb belgilangan) Pi GPIO pinlariga ulang. VCC -ni 5,5V kuchga, GND -ni erga va OUT -ni Pi -11 -piniga ulang.
2 -qadam: Sizning Pi Internetga ulanganligiga ishonch hosil qiling
Endi Pi -ni quvvat manbaiga ulab yoqing va ping buyrug'i yordamida Internetga ulanganligingizni tasdiqlang. Agar siz Pi -ni Internetga qanday ulashni bilmasangiz, bu erni bosing.
sudo ping www.google.com
Agar muvaffaqiyat qozongan bo'lsangiz, ma'lumotlar Google tomonidan qabul qilinayotganini ko'rishingiz kerak.
Bundan tashqari, ifconfig yordamida IP -manzilingizni ko'rishingiz mumkin.
sudo ifconfig
3 -qadam: Kamerani sozlash
Konfiguratsiya interfeysini ochish uchun quyidagi buyruqni ishlating va kamerani "interfeys imkoniyatlari" da yoqing.
sudo raspi-config
Qayta ishga tushirilgandan so'ng, siz to'g'ri ulanganligini tekshirish uchun kamerangiz holatini ko'rsatishingiz mumkin.
vcgencmd get_camera
Nihoyat, pikamera modulini o'rnating.
pikamera o'rnatish
4 -qadam: Shishani o'rnating
Python uchun kolba va kolbaga qulay modulni o'rnating:
sudo apt-get python-dev python-pip ni o'rnating
python -m pip kolbasini o'rnating
Keyinchalik, biz formalar yaratish uchun ishlatiladigan piton kolbasi modulini o'rnatamiz.
pip flask-wtf ni o'rnating
5 -qadam: Formalar sinfini yarating
Barcha fayllaringizni saqlash uchun iotProject nomli katalog yarating.
sudo mkdir iotProject
"CamControl.py" nomli python faylini yarating.
sudo nano camControl.py
Bu faylda biz formalar sinfini yaratamiz, bu bizga matn qutilari va ochiladigan menyudan iborat veb -shaklni yaratishga imkon beradi, buning uchun foydalanuvchi kamera sozlamalarini o'zgartirishi, qo'lda yozishni boshlashi/to'xtatishi va video yozib olishi mumkin.
flask_wtf import dan FlaskFormfrom dan wtforms.validators import DataRequired wtforms import SubmitField dan wtforms import validatorlari, IntegerField, BooleanField, SelectField
sinf camFrame (FlaskForm):
videoDuration = IntegerField ('Yozish vaqti (soniyalarda)')
sezuvchanlik = IntegerField ('Harakat sezuvchanligi (diapazoni 2500-10000) nRaqam qanchalik baland bo'lsa, kamera shunchalik sezgir emas', validatorlar = [validators. NumberRange (min = 2500, max = 10000, xabar = 'Qiymat chegaradan tashqarida')]))
variantlar = SelectField ('Tanlovlar', tanlovlar = [('hech biri', 'Hech qanday harakat'), ('rek', 'Yozishni boshlash'), ('to'xtatish', 'Yozishni to'xtatish'), ("rasm", "Rasmga olish")])
yuborish = SubmitField ("Yuborish")
6 -qadam: Shabloni shablonini yarating
Foydalanuvchi interfeysini yaratish uchun siz hozirgina yaratgan shaklni ishlatadigan Flask shablonini yaratishingiz kerak. Bu fayl html -da yoziladi va sizning shaklingiz bilan bir xil katalogda bo'lishi kerak bo'lgan andozalar nomli papkada saqlanadi.
Andoza papkasining ichida index.html nomli fayl yarating. Ushbu fayl ichida yuqorida ko'rsatilgan kodni takrorlang.
7 -qadam: shablonni ko'rsatish
Endi shablonni ko'rsatadigan faylni yaratish vaqti keldi. AppCam.py nomli fayl yarating (endi andozalar papkasida yo'qligingizga ishonch hosil qiling). Andoza ishlatilgan har qanday dinamik tarkib render_template () ga qo'ng'iroqda nomlangan argument sifatida ishlatilishi kerak.
import camControlfrom dan flask import Flask, render_template, request, flask_restful import dan javob Resource, Api, reqparse
app = Flask (_ nomi_)
app.config ['SECRET_KEY'] = '13542' api = Api (ilova)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Harakat aniqlanganda video davomiyligi') parser.add_argument ('sens', type = int, help = 'Yozuvni ishga tushirish uchun zarur bo'lgan harakat darajasi').add_argument ('opt', type = str, help = 'Videoni qo'lda yozib olish yoki rasmga olish')
sinf yangilanishi (manba):
#Wtforms def post (self) uchun narsalar: args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #matnli faylga yozing parallel ishlaydigan kameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (args ['dur'] + '\ n') #write dur cameraSettingsFile.write (args ['sens'] + '\ n') #write sensor cameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () return {'dur': args ['dur'], 'sens': args ['his'], 'opt': args ['opt']}
@app.route ('/', usullar = ['OLISH', 'POST'])
def index (): "" "Nazoratchining bosh sahifasi" "" form = camControl.camFrame () #bu formadir, agar request.method == 'POST': print (request.form) args = [i for i in request in ".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') #sensor kameraSettingsFile.write (yozish) args [2] [1] + '\ n') #write opt cameraSettingsFile.close () imageDictionary = {"fayl nomi": "image.jpg"} qaytish render_template ('index.html', form = shakl, image = imageDictionary))
api.add_resource (Yangilash, '/update/')
agar _name_ == "_main_" bo'lsa:
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
8 -qadam: Kamera operatorlari sinfini yarating
Endi biz camOperator.py nomli fayl yaratmoqchimiz. Unda biz PiCamera -ning mavjud funktsiyalaridan foydalangan holda kamerani ishlatish usullarini o'z ichiga olgan kamera sinfini yaratamiz. Keyingi bosqichda biz ushbu ob'ektning misolini ishlatamiz, u erda biz kamera va harakat sensori funksiyalarini birlashtiramiz.
Bu sinfda aniqlangan usullar xavfsizlik kamerasidagi "yozib olish" parametrlarini foydalanuvchi taqdim etadigan sezgirlik va davomiylik ma'lumotlari yordamida o'zgartiradi, shu bilan birga, agar foydalanuvchi kiritmagan bo'lsa, bu o'zgaruvchilar uchun standart qiymatlarni o'rnatadi.
RPi. GPIO -ni GPIOimporti sifatida import pikamerini datetime import datetime -dan import qilish
GPIO.setmode (GPIO. BOARD)
GPIO. sozlash (11, GPIO. IN)
aniqlash = 0
sinf kamerasi operatori:
def _init _ (o'zi):
#konstruktor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "yo'q"
def rekord (self, dur):
#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 operatsiyasi (o'z -o'zidan, dur, sezgi):
#Odamning yonida yoki yo'qligini, odam etarlicha tursa, biz yozishni boshlaymiz! global aniqlash i = GPIO.input (11) if i == 0: #Harakat sensori chiqqani LOW aniqlanganda = 0 vaqt. uyqu (0.1) elif i == 1: #Harakat sensori chiqishi yuqori bosilganda (" harakat aniqlandi " +str (aniqlash)) if if>> sens*10: self.record (dur) print (" RECORDED ") detect = 0 time.sleep (0.1) detect += 1
9 -qadam: Yozish modulini yarating
Ushbu loyiha uchun zarur bo'lgan oxirgi dastur rec.py nomli faylga yoziladi. Bu fayl kameraga qachon yozish, qancha vaqt yozish va qachon/qachon suratga olish kerakligini aytadi. Bu 5 -bosqichdan boshlab matnli faylga yozilgan foydalanuvchi ma'lumotlarini doimiy ravishda tekshirish va o'qish orqali amalga oshiriladi. Agar fayl yangilangan bo'lsa, u sezgirlik va davomiylik qiymatlarini mos ravishda o'zgartiradi, so'ngra yozuv yoki rasm olingan bo'lsa, u tarkibni saqlaydi. pi.h264 yoki-j.webp
'' 'Kolba serveri bilan parallel ravishda ishlaydi, server shakllari tomonidan o'rnatilgan boshqaruv o'zgaruvchilari o'qiladi. Shakllar yuborilgandan so'ng, serverni boshqarish o'zgaruvchilari alohida faylga o'rnatiladi. Rec moduli bu o'zgaruvchilarni o'qiydi va ular asosida kamerani yangilaydi. "" CamOperator -ni datetime -dan import qilish -import qilish
rc = camOperator.cameraOperator ()
cameraSettingsFile = ochiq ("cameraSettings.txt", 'w') cameraSettingsFile.close () #bu erda, asosiy tsikl ishga tushgunga qadar fayl ichidagi tarkibni o'chirish uchun yozish rejimida ochamiz va yopamiz.
#Odamlar yaqin yoki yo'qligini kuzatadigan uzluksiz tsikl. Agar ular bo'lsa, demak
#kamera yozishni boshlaydi. Bu funksiya ushbu kamerani boshqaruvchi #server kolbasi bilan parallel ishlaydi. recordInProcess = False rost bo'lsa: #tekshiring/yozing, agar (recordInProcess == False): rc.operation (rc.dur, rc.sens) #kamera sozlamalarini server kamerasi asosida o'zgartiring cameraSettingsFile = open ("cameraSettings.txt"), 'r') settingNum = 0 cameraSettingsFile.readlines () ga sozlash uchun (): agar settingNum == 0: #Duraning o'zgarishi rc.dur = int (sozlama) elif settingNum == 1: #Sensitivlik o'zgarishi rc.sens = int) elif settingNum == 2: #Action change rc.opt = settingsNum += 1 cameraSettingsFile.close ()
#harakatni bajaring
# if rc.opt == "none": # Continue if rc.opt == "rec / n" and recordInProcess == False: print ("Controllerdan yozib olish buyrug'ini ishga tushirish") # Hozirgi vaqtga qarab video nomini yarating videoName = "snappedVid _"+str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/home/pi/iotProject) /videos/' + videoName +'.h264 ') recordInProcess = Haqiqiy elif rc.opt == "stop / n" va recordInProcess == To'g'ri: chop etish ("Tekshirgichdan yozib olish buyrug'ini to'xtatish") rc.cam.stop_recording () recordInProcess = Soxta kameraSettingsFile = ochiq ("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 ("Tekshirgichdan rasm buyrug'ini olish") pictureName = "snappedPic_ "+str (datetime.now ()) PictureName = PictureName.replace (':', ') PictureName = PictureName.replace ('. ',') rc.cam.st art_preview () time.sleep (5) rc.cam.capture ('rasmlar/' + rasm nomi + '.jpg') rc.cam.stop_preview () cameraSettingsFile = ochiq ("cameraSettings.txt", "w ') cameraSettingsFile. yozish (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
10 -qadam: Serverni ishga tushiring
SSH -ni pi -ga joylashtiring va serverni yuqorida ko'rsatilgan buyruq satri yordamida ishga tushiring.
11 -qadam: KO'RING
IP -manzil yordamida veb -sahifaga kiring va siz kamerani masofadan boshqarishingiz mumkin!
Tavsiya:
Raven Pi xavfsizlik kamerasi: 7 qadam (rasmlar bilan)
Raven Pi xavfsizlik kamerasi: Bu plastik qarg'a hayotdan keyingi hayotdan zavqlanmoqda, ammo Raven Pi xavfsizlik kamerasi. Uning qornida Raspberry Pi va bo'yniga Pi kamerasi o'rnatilgan, u har qanday harakat aniqlanganda HD videoni yozib oladi. Ayni paytda uning
Raspberry Pi-ga asoslangan to'liq tashqi xavfsizlik kamerasi: 21 qadam
Raspberry Pi-ga asoslangan to'liq tashqi xavfsizlik kamerasi: Agar sizda arzon veb-kameralar, ularning noto'g'ri yozilgan dasturiy ta'minoti va/yoki etarli bo'lmagan uskunalari bilan xafa bo'lgan tajribangiz bo'lsa, siz Raspberry Pi va boshqa bir nechta elektron komponentli yarim professional veb-kamerani osongina qurishingiz mumkin. qaysi yugurish haqida bilish uchun
ESP32 CAM bilan ishlashni boshlash - Wifi orqali ESP CAM yordamida video oqim - ESP32 xavfsizlik kamerasi loyihasi: 8 qadam
ESP32 CAM bilan ishlashni boshlash | Wifi orqali ESP CAM yordamida video oqim | ESP32 xavfsizlik kamerasi loyihasi: Bugun biz ushbu yangi ESP32 CAM kartasini qanday ishlatishni va uni qanday kodlashni va uni xavfsizlik kamerasi sifatida ishlatishni va wifi orqali oqimli videoni olishni o'rganamiz
WoodThing IOT xavfsizlik kamerasi: 8 qadam (rasmlar bilan)
WoodThing IOT xavfsizlik kamerasi: Bu Raspberry PI -ga asoslangan kuchli IP -kamera. U motionEyeOS -da ishlaydi, shuning uchun siz bir nechta masofaviy IP -kameralarni boshqarishingiz mumkin, shuningdek, to'rtta qo'shimcha arzon USB -veb -kamerasini ulashingiz mumkin. Xususiyatlari: USB quvvat manbai, harakatni sezish
VHS kutubxonasi Pi xavfsizlik kamerasi: 3 qadam (rasmlar bilan)
VHS kutubxonasi Pi xavfsizlik kamerasi: bu eski VHS video kutubxonasi, hozirda Raspberry Pi xavfsizlik kamerasi uchun mukammal uy. Ishda Pi Zero bor va kamera qalbaki kitobning umurtqa pog'onasidan chiqib ketadi. Bu haqiqatan ham eski ko'rinishga ega oddiy qurilish