İçindekiler:
- Gereçler
- Adım 1: Donanımı Birleştirin
- 2. Adım: Pi'nizin İnternete Bağlı Olduğundan Emin Olun
- 3. Adım: Kamerayı Kurun
- Adım 4: Flask'ı kurun
- Adım 5: Bir Form Sınıfı Oluşturun
- Adım 6: Bir Flask Şablonu Oluşturun
- 7. Adım: Şablonu Oluşturun
- 8. Adım: Bir Kamera Operatörü Sınıfı Oluşturun
- 9. Adım: Kayıt Modülünü Oluşturun
- Adım 10: Sunucuyu Başlatın
- Adım 11: DENEYİN
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-23 15:13
Bu, bir Raspberry Pi kullanarak IoT, hareketle etkinleştirilen bir güvenlik kamerasının nasıl oluşturulacağı konusunda adım adım talimat verilen bir kitaptır. Kullanıcının kameranın hassasiyetini ve kayıt süresini ayarlamasına, manuel olarak bir kaydı başlatmasına/durdurmasına ve/veya yerel olarak kaydedilecek bir resim çekmesine olanak tanıyan bir şişe web sunucusu ve formunun nasıl oluşturulacağını öğreneceksiniz.
Gereçler
- Ahududu Pi 3
- Pi kamera
- PIR hareket sensörü
- hafıza kartı
- Güç kaynağı
Adım 1: Donanımı Birleştirin
Pi kapalıyken, mikro SD kartı Pi'ye takın. Kamera modülü şerit kablosunu Pi üzerindeki kamera modülü bağlantı noktasına takın. Ardından, PRI hareket dedektörünün 3 pinini (VCC, OUT ve GND etiketli) Pi'nin GPIO pinlerine bağlayın. VCC'yi 5.5V güce, GND'yi toprağa ve OUT'u Pi üzerindeki pin 11'e bağlayın.
2. Adım: Pi'nizin İnternete Bağlı Olduğundan Emin Olun
Şimdi bir güç kaynağına bağlayarak Pi'yi açın ve ping komutunu kullanarak internete bağlı olduğunuzu doğrulayın. Pi'nizi internete nasıl bağlayacağınızı bilmiyorsanız buraya tıklayın.
sudo ping www.google.com
Başarılı olursanız, verilerin google tarafından alındığını görmelisiniz.
Ek olarak, IP adresinizi görmek için ifconfig'i kullanabilirsiniz.
sudo ifconfig
3. Adım: Kamerayı Kurun
Konfigürasyon arayüzünü açmak için aşağıdaki komutu kullanın ve "arayüz seçenekleri"nde kamerayı etkinleştirin.
sudo raspi yapılandırması
Yeniden başlattıktan sonra, düzgün şekilde bağlandığından emin olmak için kameranızın durumunu görüntüleyebilirsiniz.
vcgencmd get_camera
Son olarak, picamera modülünü kurun.
pip kurulum picamera
Adım 4: Flask'ı kurun
Python için matara ve matara dinlenme modülünü kurun:
sudo apt-get kurulum python-dev python-pip
python -m pip yükleme şişesi şişesi-huzurlu
Ardından, form oluşturmak için kullanılan bir python flask modülü kuracağız.
pip yükleme şişesi-wtf
Adım 5: Bir Form Sınıfı Oluşturun
Tüm dosyalarınızı depolamak için iotProject adında bir dizin oluşturun.
sudo mkdir iotProject
"camControl.py" adlı bir python dosyası oluşturun.
sudo nano camControl.py
Bu dosyada, kullanıcının kamera ayarlarını değiştirebilmesi, manuel olarak bir kaydı başlatabilmesi/durdurabilmesi ve video çekebilmesi için metin kutuları ve bir açılır menü içeren bir web formu oluşturmamıza izin veren form sınıfımızı oluşturacağız.
flask_wtf'den FlaskForm'u wtforms.validators'dan içe aktar DataRequired'ı wtforms'dan içe aktar SubmitField'i wtforms'dan içe aktar, IntegerField, BooleanField, SelectField
sınıf camFrame(FlaskForm):
videoDuration = IntegerField('Kayıt Süresi (saniye olarak)')
duyarlılık = IntegerField('Hareket Duyarlılığı (2500-10000 aralığı)\nSayı ne kadar yüksekse, kamera o kadar az hassastır', validators=[validators. NumberRange(min=2500, maks=10000, mesaj='Değer Aralık Dışı')])
options = SelectField('Seçenekler', seçimler=[('yok', 'İşlem yok'), ('kayıt', 'Kaydı Başlat'), ('durdur', 'Kaydı Durdur'), ('resim', 'Fotoğraf Çek')])
gönder= GönderField('Gönder')
Adım 6: Bir Flask Şablonu Oluşturun
Kullanıcı arabirimini oluşturmak için, az önce oluşturduğunuz formu kullanan bir Flask şablonu tasarlamanız gerekir. Bu dosya html ile yazılacak ve formunuzla aynı dizinde olması gereken şablonlar adlı bir klasörde saklanacaktır.
Templates klasörünüzün içinde index.html adlı bir dosya oluşturun. Bu dosya içinde yukarıda gösterilen kodu çoğaltın.
7. Adım: Şablonu Oluşturun
Şimdi şablonu oluşturan bir dosya oluşturma zamanı. appCam.py adlı bir dosya oluşturun (artık şablonlar klasöründe olmadığınızdan emin olun). Şablonda kullanılan herhangi bir dinamik içerik, render_template() çağrısında adlandırılmış bir argüman olarak kullanılmalıdır.
camControl from flask import Flask, render_template, request, Response from flask_restful import Resource, Api, reqparse
uygulama = Şişe(_name_)
app.config['SECRET_KEY'] = '13542' api = API(uygulama)
ayrıştırıcı = reqparse. RequestParser()
parser.add_argument('dur', type=int, help='Hareket algılandığında videonun süresi') parser.add_argument('sens', type=int, help='Bir kaydı tetiklemek için gereken hareket düzeyi') ayrıştırıcı.add_argument('opt', type=str, help='Manuel olarak bir video kaydedin veya bir görüntü yakalayın')
sınıf Güncellemesi(Kaynak):
#Stuff for wtforms def post(self): args = parser.parse_args() #rc.input(args['dur'], args['sens'], args['opt']) #yazdığınız metin dosyasına paralel çalışan kamerayla konuşur 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() return {'dur': args['dur'], 'sens': args['sense'], 'opt':args['opt']}
@app.route('/', yöntemler=['GET', 'POST'])
def index(): """Kontrolör ana sayfası""" form = camControl.camFrame() #bu bir form if request.method == 'POST': print(request.form) args = [i for i istekte bulunur.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(Güncelleme, '/güncelleme/')
eğer _name_ == '_main_':
app.run(host='0.0.0.0', bağlantı noktası =80, hata ayıklama=Doğru, iş parçacıklı=Doğru)
8. Adım: Bir Kamera Operatörü Sınıfı Oluşturun
Şimdi camOperator.py adında bir dosya oluşturmak istiyoruz. İçinde, zaten mevcut olan PiCamera işlevlerini kullanarak kamerayı çalıştırma yöntemlerini içeren bir kamera sınıfı yapacağız. Bir sonraki adımda kameranın ve hareket sensörünün işlevselliğini birleştireceğimiz bu nesnenin bir örneğini kullanacağız.
Bu sınıfta tanımlanan yöntemler, kullanıcının sağladığı hassasiyet ve süre girişlerini kullanarak güvenlik kamerası üzerindeki "kayıt" ayarlarını değiştirirken, kullanıcı girişi yoksa bu değişkenler için varsayılan değerler oluşturur.
RPi. GPIO'yu GPIOimport time olarak içe aktar picamera'yı datetime'dan içe aktar datetime
GPIO.setmode(GPIO. BOARD)
GPIO.setup(11, GPIO. IN)
algılama = 0
sınıf kameraOperatör:
tanım _init_(kendi):
#constructor self.cam = picamera. PiCamera() self.data = self.dur=10 self.sens=2500 self.opt="none"
def record(self, dur):
#Denetleyici tarafından belirlenen süre için kayıtlar 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 işlemi(self, dur, sens):
#Yakınlarda bir insan olup olmadığını sürekli kontrol eden kameranın ana çalışması, eğer bir insan yeterince uzun süre etrafta kalırsa kayda başlıyoruz! global algılama i = GPIO.input(11) if i == 0: #Hareket sensöründen çıkış DÜŞÜK olduğunda algılama=0 zaman.uyku(0.1) elif i == 1: #Hareket sensöründen çıkış YÜKSEK olduğunda yazdır(" hareket algılandı "+str(tespit)) if tespit >= sens*10: self.record(dur) print("KAYITLI") tespit = 0 time.sleep(0.1) tespit += 1
9. Adım: Kayıt Modülünü Oluşturun
Bu proje için gerekli olan son program rec.py adlı bir dosyaya yazılacaktır. Bu dosya kameraya ne zaman kayıt yapacağını, ne kadar süreyle kayıt yapacağını ve eğer/ne zaman fotoğraf çekeceğini söyler. Bunu, 5. adımdan itibaren metin dosyasına yazılan kullanıcı verilerini sürekli kontrol ederek ve okuyarak yapar. Dosya güncellendiyse hassasiyet ve süre değerlerini buna göre ayarlar ve daha sonra bir kayıt veya resim çekilirse içeriği kaydeder. pi,.h264 veya-j.webp
'''Şişe sunucusuyla paralel olarak çalışır, sunucu formları tarafından ayarlanan kontrol değişkenlerini okur. Formlar gönderildikten sonra sunucu kontrol değişkenleri ayrı bir dosyada ayarlanır. Kayıt modülü bu değişkenleri okur ve kamerayı bunlara göre günceller. ''' camOperator'ı datetime'dan import datetime import time'dan içe aktar
rc = camOperator.cameraOperator()
cameraSettingsFile = open("cameraSettings.txt", 'w') cameraSettingsFile.close() #burada ana döngü çalışmadan önce dosya içindeki içerikleri silmek için yazma modunda açıp kapatıyoruz
#İnsanların yakında olup olmadığını izleyen sürekli bir döngü. Eğer öyleyseler, o zaman
#kamera kayda başlar. Bu işlev, bu kamerayı kontrol eden şişe #sunucu ile paralel olarak çalışır. recordInProcess = False ise True: #check/record if (recordingInProcess == False): rc.operation(rc.dur, rc.sens) #sunucuya göre kameranın ayarlarını değiştirin cameraSettingsFile = open("cameraSettings.txt", 'r') settingsNum = 0 cameraSettingsFile.readlines() içindeki ayar için: if settingsNum == 0: #Süre değişikliği rc.dur = int(setting) elif settingsNum == 1: #Hassasiyet değişikliği rc.sens = int(setting) elif settingsNum == 2: #Eylem değişikliği rc.opt = ayar settingsNum += 1 cameraSettingsFile.close()
#bir eylem yürüt
# if rc.opt == "none": # devam if rc.opt == "rec\n" ve recordInProcess == False: print("Denetleyiciden kayıt komutu çalıştırılıyor") #Şu anki zamana göre video için ad oluştur videoAd = "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" ve recordInProcess == True: print("Denetleyiciden kayıt komutu durduruluyor") 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" ve recordInProcess == False: print("Denetleyiciden bir resim komutu yakala") pictureName = "snappedPic_ "+str(datetime.now()) resimAdı = resimAdı.replace(':', ') resimAdı = resimAdı.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. write(str(rc.dur)+'\n') cameraSettingsFile.write(str(rc.sens)+'\n') cameraSettingsFile.write("none\n") rc.opt = "none\n"
Adım 10: Sunucuyu Başlatın
Pi'ye SSH ekleyin ve yukarıda gösterilen komut satırını kullanarak sunucuyu başlatın.
Adım 11: DENEYİN
IP adresini kullanarak web sayfasına erişin ve kamerayı uzaktan kontrol edebilmelisiniz!
Önerilen:
Raven Pi Güvenlik Kamerası: 7 Adım (Resimli)
Raven Pi Güvenlik Kamerası: Bu plastik kuzgun, pratik ama ürkütücü bir güvenlik kamerası olan Raven Pi olarak yeni bir ölümden sonraki yaşamın tadını çıkarıyor. Karnında bir Raspberry Pi ve boynunda gömülü bir Pi Kamera vardır ve hareket algılandığında HD video yakalar. Aynı anda onun
Raspberry Pi Tabanlı Tam Özellikli Dış Mekan Güvenlik Kamerası: 21 Adım
Raspberry Pi Tabanlı Tam Özellikli Dış Mekan Güvenlik Kamerası: Ucuz web kameraları, kötü yazılmış yazılımları ve/veya yetersiz donanımları ile hayal kırıklığı yaratan deneyimleriniz varsa, Raspberry Pi ve diğer birkaç elektronik bileşenle kolayca yarı profesyonel bir web kamerası oluşturabilirsiniz. hangi koşuda olduğunu bulmak için
Güvenlik Kamerası Olarak En Kolay Web Kamerası - Hareket Algılama ve E-postayla Gönderilen Resimler: 4 Adım
Güvenlik Kamerası Olarak En Kolay Web Kamerası - Hareket Algılama ve E-postayla Gönderilen Resimler: Hareket algılanan resimleri web kameranızdan e-postanıza almak için artık yazılım indirmenize veya yapılandırmanıza gerek yok - sadece tarayıcınızı kullanın. Resmi çekmek için Windows, Mac veya Android'de güncel bir Firefox, Chrome, Edge veya Opera tarayıcısı kullanın
HP Web Kamerası 101 Aka 679257-330 Web Kamerası Modülünü Genel USB Web Kamerası Olarak Yeniden Kullanma: 5 Adım
HP Web Kamerası 101 Aka 679257-330 Web Kamerası Modülünü Genel USB Web Kamerası Olarak Yeniden Kullanın: 14 yaşındaki Panasonic CF-18'imi yepyeni bir web kamerası ile renklendirmek istiyorum, ancak Panasonic artık bu harika makineyi desteklemiyor, bu yüzden gri maddeyi b&b'den (biralar ve hamburgerler) daha kolay bir şey için kullanın. Bu ilk kısım
VHS Library Pi Güvenlik Kamerası: 3 Adım (Resimli)
VHS Kitaplığı Pi Güvenlik Kamerası: Bu, artık bir Raspberry Pi güvenlik kamerası için mükemmel bir yuva sağlayan eski bir VHS Video Kitaplığı kasasıdır. Kutu bir Pi Zero içeriyor ve kamera sahte kitabın sırtından dışarı bakıyor. Eski dünya görünümüne sahip gerçekten basit bir yapı