Mündəricat:
- Təchizat
- Addım 1: Avadanlıq yığın
- Addım 2: Pi'nizin İnternetə bağlı olduğundan əmin olun
- Addım 3: Kameranı qurun
- Addım 4: Şüşəni quraşdırın
- Addım 5: Form Sınıfı yaradın
- Addım 6: Şüşə Şablon yaradın
- Addım 7: Şablonu göstərin
- Addım 8: Kamera Operatoru Sınıfı yaradın
- Addım 9: Qeyd Modulunu yaradın
- Addım 10: Serveri işə salın
- Addım 11: SINAŞIN
Video: Raspberry Pi Təhlükəsizlik Kamerası: 11 Addım (Şəkillərlə birlikdə)
2024 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2024-01-30 07:44
Bu, Raspberry Pi istifadə edərək IoT, hərəkəti aktivləşdirilmiş təhlükəsizlik kamerasının necə yaradılacağı ilə bağlı addım -addım təlimatdır. İstifadəçiyə kameranın həssaslığını və qeyd müddətini tənzimləməyə, əl ilə yazmağa başlamağı/dayandırmağı və/və ya lokal olaraq saxlanılacaq bir şəkil çəkdirməyi təmin edən bir balon veb server və forma yaratmağı öyrənəcəksiniz.
Təchizat
- Moruq Pi 3
- Pi kamera
- PIR hərəkət sensoru
- SD kart
- Enerji mənbəyi
Addım 1: Avadanlıq yığın
Pi söndürüldükdə, micro-SD kartı Pi-yə daxil edin. Kamera modulu lent kabelini Pi üzərindəki kamera modulu portuna daxil edin. Sonra, PRI hərəkət detektorunun 3 sancağını (etiketli VCC, OUT və GND) Pi'nin GPIO pinlərinə bağlayın. VCC -ni 5.5V gücə, GND -ni yerə və OUT -u Pi -də pin 11 -ə bağlayın.
Addım 2: Pi'nizin İnternetə bağlı olduğundan əmin olun
İndi Pi -ni bir enerji mənbəyinə qoşaraq açın və ping əmrindən istifadə edərək internetə qoşulduğunuzu yoxlayın. Pi -ni internetə necə bağlayacağınızı bilmirsinizsə, bura vurun.
sudo ping www.google.com
Uğurlu olsanız, məlumatların google tərəfindən alındığını görməlisiniz.
Əlavə olaraq, IP ünvanınızı görmək üçün ifconfig istifadə edə bilərsiniz.
sudo ifconfig
Addım 3: Kameranı qurun
Konfiqurasiya interfeysini açmaq üçün aşağıdakı əmri istifadə edin və kameranı "interfeys seçimlərində" aktiv edin.
sudo raspi-config
Yenidən başladıqdan sonra, kameranızın düzgün bağlandığından əmin olmaq üçün onun vəziyyətini göstərə bilərsiniz.
vcgencmd get_camera
Nəhayət, picamera modulunu quraşdırın.
pip picamera quraşdırın
Addım 4: Şüşəni quraşdırın
Python üçün balon və balaca istirahət modulunu quraşdırın:
sudo apt-get python-dev python-pip quraşdırın
python -m pip baloncuq -balaca quraşdır
Sonra, forma yaratmaq üçün istifadə olunan bir python flask modulu quraşdıracağıq.
pip flask-wtf quraşdırın
Addım 5: Form Sınıfı yaradın
Bütün fayllarınızı saxlamaq üçün iotProject adlı bir kataloq yaradın.
sudo mkdir iotProject
"CamControl.py" adlı bir python faylı yaradın.
sudo nano camControl.py
Bu faylda, istifadəçinin kameranın parametrlərini dəyişdirə bilməsi, əl ilə bir qeyd başlatması/dayandırması və video çəkməsi üçün mətn qutuları və açılan menyu ilə bir web formu yaratmağımıza imkan verən form sinifimizi yaradacağıq.
flask_wtf idxalından FlaskFormfromdan wtforms.validatorlar idxal DataRequired
sinif camFrame (FlaskForm):
videoDuration = IntegerField ('Qeyd müddəti (saniyə)')
həssaslıq = IntegerField ('Hərəkət Həssaslığı (2500-10000 aralığı) nSayı nə qədər çox olarsa, kamera o qədər həssas olmaz', doğrulayıcılar = [validators. NumberRange (min = 2500, max = 10000, mesaj = 'Dəyər Aralığında')]))
options = SelectField ('Seçimlər', seçimlər = [('heç biri', 'Əməliyyat yoxdur'), ('rec', 'Kayda Başla'), ('dayandır', 'Kaydı dayandır'), ('şəkil', 'Şəkil çək')])
təqdim = SubmitField ('Göndər')
Addım 6: Şüşə Şablon yaradın
İstifadəçi interfeysi yaratmaq üçün yeni yaratdığınız formanı istifadə edən bir Şüşə şablonu hazırlamalısınız. Bu fayl html -də yazılacaq və formalarınızla eyni qovluqda olmalı olan şablonlar adlı qovluqda saxlanılacaq.
Şablon qovluğunuzun içərisində index.html adlı bir fayl yaradın. Bu fayl içərisində yuxarıda göstərilən kodu təkrarlayın.
Addım 7: Şablonu göstərin
İndi şablonu göstərən bir fayl yaratmağın vaxtı gəldi. AppCam.py adlı bir fayl yaradın (şablonlar qovluğunda olmadığınızdan əmin olun). Şablonda istifadə olunan hər hansı bir dinamik məzmun render_template () çağırışında adlandırılmış bir arqument olaraq istifadə edilməlidir.
idxal camControlfrom qabdan idxal Flask, render_template, sorğu, flask_restful idxal Resource, Api, reqparse
app = Şüşə (_ adı_)
app.config ['SECRET_KEY'] = '13542' api = Api (tətbiq)
ayrıştırıcı = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Hərəkət aşkar edildikdə videonun müddəti') parser.add_argument ('sens', type = int, help = 'Bir qeydin tetiklenmesi üçün lazım olan hərəkət səviyyəsi') ayrıştırıcısı.add_argument ('opt', type = str, help = 'Videonu əl ilə yazın və ya şəkil çəkin')
sinif yeniləməsi (Mənbə):
Wtforms def post (self) üçün materiallar: args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #mətn faylına yazın paralel işləyən kamera ilə danışır cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (args ['dur'] + '\ n') #wr dur dur cameraSettingsFile.write (args ['sens'] + '\ n') #write sens kameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () return {'dur': args ['dur'], 'sens': args ['hissi'], 'seç': args ['opt']}
@app.route ('/', üsullar = ['GET', 'POST'])
def index (): "" "Nəzarətçi ana səhifəsi" "" form = camControl.camFrame () #bu, request.method == 'POST' olduğu təqdirdə bir formadır: 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 = açıq ("cameraSettings.txt ", 'w') cameraSettingsFile.write (args [0] [1] + '\ n') #write dur cameraSettingsFile.write (args [1] [1] + '\ n') #sensor kameraSettingsFile.write (yaz args [2] [1] + '\ n') #write opt cameraSettingsFile.close () imageDictionary = {"fayl adı": "image.jpg"} qayıt render_template ('index.html', forma = forma, görüntü = imageDictionary))
api.add_resource (Güncelleme, '/update/')
əgər _ adı_ == '_ əsas_' olarsa:
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
Addım 8: Kamera Operatoru Sınıfı yaradın
İndi camOperator.py adlı bir fayl yaratmaq istəyirik. İçərisində, artıq mövcud olan PiCamera funksiyalarından istifadə edərək kameranı idarə etmək üsulları ilə bir kamera sinfi təşkil edəcəyik. Növbəti addımda bu obyektin bir nümunəsini istifadə edəcəyik ki, burada kamera və hərəkət sensoru birləşsin.
Bu sinifdə təyin olunan üsullar, istifadəçi daxil olmadığı təqdirdə bu dəyişənlər üçün standart dəyərlər təyin edərkən, istifadəçinin təmin etdiyi həssaslıq və müddət girişlərindən istifadə edərək təhlükəsizlik kamerasındakı "qeyd" parametrlərini dəyişdirir.
RPi. GPIO -nu GPIOimport olaraq, datetime idetime datetime -dan picamera idxal edin
GPIO.setmode (GPIO. BOARD)
GPIO. quraşdırma (11, GPIO. IN)
aşkar = 0
sinif kamerası Operator:
def _init _ (özünü):
#konstruktor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "heç biri"
def rekord (özünü, 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 əməliyyatı (self, dur, sens):
#Bir insanın yaxınlıqda olub -olmadığını, bir insanın kifayət qədər uzun müddət qaldığını, yoxlamağa davam edən kameranın əsas işi. qlobal algılama i = GPIO.input (11), əgər i == 0: #Hərəkət sensöründən çıxma LOW algılandığında = 0 zaman.yuxu (0.1) elif i == 1: #Hərəkət sensöründən çıxışı YÜKSƏK çap edildikdə (" hərəkət algılandı " +str (algıla)) əgər algılarsa> = sens*10: self.record (dur) print (" QEYD EDİLDİ ") detect = 0 zaman.yuxu (0.1) algılama += 1
Addım 9: Qeyd Modulunu yaradın
Bu layihə üçün lazım olan son proqram rec.py adlı bir faylda yazılacaq. Bu fayl kameraya nə vaxt yazacağını, nə qədər yazacağını və nə vaxt şəkil çəkəcəyini bildirir. Mütəmadi olaraq 5 -ci addımdan mətn sənədinə yazılmış istifadəçi məlumatlarını yoxlayaraq oxuyaraq bunu edir. Fayl yenilənmişsə, həssaslıq və müddət dəyərlərini buna uyğun olaraq düzəldir və sonra bir qeyd və ya şəkil çəkilərsə məzmunu saxlayır. pi, ya.h264 ya da-j.webp
'' 'Şüşə serveri ilə paralel olaraq çalışır, server formaları tərəfindən təyin edilən nəzarət dəyişənlərini oxuyur. Formalar təqdim edildikdən sonra server nəzarət dəyişənləri ayrı bir faylda qurulur. Rec modulu bu dəyişənləri oxuyur və bunlara əsaslanaraq kameranı yeniləyir. '' 'datametime -dan idxal camOperator datetime idxal zamanı
rc = camOperator.cameraOperator ()
cameraSettingsFile = açıq ("cameraSettings.txt", 'w') cameraSettingsFile.close () #burada, əsas döngə başlamazdan əvvəl faylın içindəki məzmunu silmək üçün yazma rejimində açıb bağlayırıq.
#İnsanların yaxınlıqda olub olmadığını izləyən davamlı bir döngə. Əgər belədirsə, deməli
#kamera qeyd etməyə başlayır. Bu funksiya, bu kameranı idarə edən kolba #server ilə paralel olaraq çalışır. recordInProcess = Doğru olarkən Yanlış: #yoxlayın/qeyd edin ((yazmaInProcess == Yanlış): rc.operation (rc.dur, rc.sens) #kameranın parametrlərini serverə əsaslanaraq dəyişdirin cameraSettingsFile = open ("cameraSettings.txt"), 'r') settingSum = 0 kameraSettingsFile.readlines () üçün ayarlama (): əgər settingNum == 0: #Duration dəyişikliyi rc.dur = int (ayar) elif settingNum == 1: #Həssaslıq dəyişikliyi rc.sens = int (ayar) elif settingNum == 2: #Action change rc.opt = setting settingNum += 1 cameraSettingsFile.close ()
#bir hərəkət edin
# if rc.opt == "none": # Continue if rc.opt == "rec / n" and recordInProcess == False: print ("Controller -dən qeyd əmri işlədilir") # Cari vaxt videoName əsasında video üçün ad yaradın = "snappedVid _"+str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/home/pi/iotProject /videos/' + videoName +'.h264 ') recordInProcess = True elif rc.opt == "stop / n" və recordInProcess == Doğru: print ("Controller -dən qeyd əmrinin dayandırılması") rc.cam.stop_recording () recordInProcess = Yanlış cameraSettingsFile = açıq ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile. yaz ("yox / n") rc.opt = "yox / n" elif rc.opt == "şəkil / n" və qeydInProcess == Yanlış: çap et ("Kontrolördən bir şəkil əmri çək") pictureName = "snappedPic_ "+str (datetime.now ()) pictureName = pictureName.replace (':', ') pictureName = pictureName.replace ('. ',') rc.cam.st art_preview () time.sleep (5) rc.cam.capture ('pictures/' + pictureName + '.jpg') rc.cam.stop_preview () cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile. yaz (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
Addım 10: Serveri işə salın
SSH -ni pi -yə daxil edin və yuxarıda göstərilən əmr satırını istifadə edərək serveri işə salın.
Addım 11: SINAŞIN
IP ünvanından istifadə edərək veb səhifəsinə daxil olun və kameranı uzaqdan idarə edə biləcəksiniz!
Tövsiyə:
Raven Pi Təhlükəsizlik Kamerası: 7 Adım (Şəkillərlə birlikdə)
Raven Pi Təhlükəsizlik Kamerası: Bu plastik qarğa, praktik, lakin ürpertici bir təhlükəsizlik kamerası olan Raven Pi olaraq yeni bir həyatdan zövq alır. Qarnında bir Raspberry Pi və boynunda gömülü bir Pi Kamerası var, hərəkət aşkar edildikdə HD video çəkir. Eyni zamanda onun
Təhlükəsizlik Kamerası Olaraq Ən Asan Veb Kamera - Hərəkət Algılama və E -poçtlu Şəkillər: 4 Addım
Təhlükəsizlik Kamerası Olaraq Ən Asan Veb Kamera - Hərəkət Algılama və E -poçtla Göndərilən Şəkillər: Veb kameranızdan hərəkət aşkarlanan şəkilləri e -poçtunuza çatdırmaq üçün proqramı yükləməyinizə və ya konfiqurasiya etməyinizə ehtiyac yoxdur - sadəcə brauzerinizi istifadə edin. Şəkil çəkmək üçün Windows, Mac və ya Android-də ən son Firefox, Chrome, Edge və ya Opera brauzerindən istifadə edin
DIY Professional Açıq Mənbə Gecə Görmə Təhlükəsizlik Kamerası: 10 Addım (Şəkillərlə birlikdə)
DIY Professional Açıq Mənbə Gecə Görmə Təhlükəsizlik Kamerası: Bu yeni dərslikdə birlikdə Raspberry Pi açıq mənbəli video nəzarət kameramızı düzəldəcəyik. hamısı Jeed ilə əlaqəlidir
WoodThing IOT Təhlükəsizlik Kamerası: 8 Addım (Şəkillərlə birlikdə)
WoodThing IOT Təhlükəsizlik Kamerası: Bu, Raspberry PI -yə əsaslanan güclü bir IP kameradır. MotionEyeOS -da işləyir, buna görə birdən çox uzaq IP kameranı idarə etmək üçün istifadə edilə bilər, eyni zamanda dörd əlavə aşağı qiymətli USB veb kamerası əlavə edə bilərsiniz. Xüsusiyyətlər: USB ilə işləyən, s ilə hərəkət algılayan
VHS Library Pi Təhlükəsizlik Kamerası: 3 Adım (Şəkillərlə birlikdə)
VHS Library Pi Təhlükəsizlik Kamerası: Bu, Raspberry Pi təhlükəsizlik kamerası üçün mükəmməl bir ev təmin edən köhnə bir VHS Video Kitabxanasıdır. Çantada Pi Zero var və kamera saxta kitabın onurğasından keçir. Köhnə dünya görünüşü ilə həqiqətən sadə bir quruluşdur