Daftar Isi:
- Perlengkapan
- Langkah 1: Pasang Perangkat Keras
- Langkah 2: Pastikan Pi Anda Terhubung ke Internet
- Langkah 3: Siapkan Kamera
- Langkah 4: Instal Flask
- Langkah 5: Buat Kelas Formulir
- Langkah 6: Buat Template Flask
- Langkah 7: Render Template
- Langkah 8: Buat Kelas Operator Kamera
- Langkah 9: Buat Modul Rekam
- Langkah 10: Mulai Server
- Langkah 11: COBALAH
Video: Kamera Keamanan Raspberry Pi: 11 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:54
Ini adalah petunjuk langkah demi langkah tentang cara membuat IoT, kamera keamanan yang diaktifkan gerakan menggunakan Raspberry Pi. Anda akan belajar cara membuat server web flask dan formulir yang memungkinkan pengguna untuk menyesuaikan sensitivitas kamera dan waktu perekaman, memulai/menghentikan perekaman secara manual, dan/atau mengambil gambar yang akan disimpan ke lokal.
Perlengkapan
- Raspberry Pi 3
- kamera pi
- Sensor gerak PIR
- kartu SD
- Sumber daya
Langkah 1: Pasang Perangkat Keras
Saat Pi dimatikan, masukkan kartu micro-SD ke dalam Pi. Masukkan kabel pita modul kamera ke port modul kamera di Pi. Kemudian, sambungkan 3 pin (berlabel VCC, OUT, dan GND) dari detektor gerakan PRI ke pin GPIO Pi. Hubungkan VCC ke daya 5.5V, GND ke ground, dan OUT ke pin 11 pada Pi.
Langkah 2: Pastikan Pi Anda Terhubung ke Internet
Sekarang, nyalakan Pi dengan menghubungkannya ke sumber listrik dan verifikasi bahwa Anda terhubung ke internet menggunakan perintah ping. Jika Anda tidak tahu cara menghubungkan Pi Anda ke internet, klik di sini.
sudo ping www.google.com
Jika Anda berhasil, Anda akan melihat bahwa data sedang diterima oleh google.
Selain itu, Anda dapat menggunakan ifconfig untuk melihat alamat IP Anda.
sudo ifconfig
Langkah 3: Siapkan Kamera
Gunakan perintah berikut untuk membuka antarmuka konfigurasi, dan aktifkan kamera di "opsi antarmuka".
sudo raspi-config
Setelah mem-boot ulang, Anda dapat menampilkan status kamera Anda untuk memastikan bahwa itu terhubung dengan benar.
vcgencmd get_camera
Terakhir, instal modul picamera.
pip menginstal picamera
Langkah 4: Instal Flask
Instal modul flask dan flask-restful untuk Python:
sudo apt-get install python-dev python-pip
python -m pip install flask flask-restful
Selanjutnya, kita akan menginstal modul labu python yang digunakan untuk membuat formulir.
pip install flask-wtf
Langkah 5: Buat Kelas Formulir
Buat direktori bernama iotProject untuk menyimpan semua file Anda.
sudo mkdir proyek iot
Buat file python bernama "camControl.py".
sudo nano camControl.py
Dalam file ini kami akan membuat kelas formulir kami, yang memungkinkan kami untuk membuat formulir web dengan kotak teks dan menu tarik-turun bagi pengguna untuk dapat mengubah pengaturan kamera, memulai/menghentikan perekaman secara manual, dan merekam video.
dari flask_wtf import FlaskFormfrom wtforms.validators import DataDiperlukan dari wtforms import SubmitField dari wtforms import validator, IntegerField, BooleanField, SelectField
kelas camFrame (FlaskForm):
videoDuration = IntegerField('Waktu Perekaman (dalam detik)')
sensitivitas = IntegerField('Sensitivitas Gerak (kisaran 2500-10000)\nSemakin tinggi angkanya, semakin tidak sensitif kamera', validators=[validators. NumberRange(min=2500, max=10000, message='Value Out of Range')])
options = SelectField('Options', options=[('none', 'No action'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), ('foto', 'Ambil Gambar')])
kirim= KirimField('Kirim')
Langkah 6: Buat Template Flask
Untuk membuat antarmuka pengguna, Anda harus mendesain template Flask yang menggunakan formulir yang baru saja Anda buat. File ini akan ditulis dalam html, dan disimpan dalam folder bernama templates, yang seharusnya berada di direktori yang sama dengan formulir Anda.
Di dalam folder template Anda, buat file bernama index.html. Dalam file ini, meniru kode yang ditunjukkan di atas.
Langkah 7: Render Template
Sekarang saatnya membuat file yang merender template. Buat file bernama appCam.py (pastikan Anda tidak lagi berada di folder template). Konten dinamis apa pun yang digunakan dalam template harus digunakan sebagai argumen bernama dalam panggilan ke render_template().
import camControlfrom flask import Flask, render_template, request, Response from flask_restful import Resource, Api, reqparse
aplikasi = Labu(_nama_)
app.config['SECRET_KEY'] = '13542' api = Api(aplikasi)
parser = reqparse. RequestParser()
parser.add_argument('dur', type=int, help='Durasi video saat gerakan terdeteksi') parser.add_argument('sens', type=int, help='Tingkat gerakan yang diperlukan untuk memicu rekaman') parser.add_argument('opt', type=str, help='Rekam video atau ambil gambar secara manual')
Pembaruan kelas (Sumber Daya):
#Stuff untuk wtforms def post(self): args = parser.parse_args() #rc.input(args['dur'], args['sens'], args['opt']) #tulis ke file teks yang berbicara dengan kamera yang berjalan secara paralel 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('/', metode=['GET', 'POST'])
def index(): """Halaman utama pengontrol""" form = camControl.camFrame() #ini adalah formulir jika 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 selama 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(Pembaruan, '/update/')
jika _name_ == '_main_':
app.run(host='0.0.0.0', port =80, debug=True, threaded=True)
Langkah 8: Buat Kelas Operator Kamera
Sekarang kita ingin membuat file bernama camOperator.py. Di dalamnya kita akan membuat kelas kamera dengan metode untuk mengoperasikan kamera, memanfaatkan fungsi PiCamera yang sudah tersedia. Kami akan menggunakan instance objek ini pada langkah berikutnya di mana kami akan menggabungkan fungsionalitas kamera dan sensor gerak.
Metode yang didefinisikan dalam kelas ini mengubah pengaturan "rekam" pada kamera keamanan menggunakan input sensitivitas dan durasi yang diberikan pengguna, sambil menetapkan nilai default untuk variabel ini jika input pengguna tidak ada.
impor RPi. GPIO sebagai GPIOimport waktu impor picamera dari datetime import datetime
GPIO.setmode(GPIO. PAPAN)
GPIO.setup(11, GPIO. IN)
mendeteksi = 0
kamera kelasOperator:
def _init_(sendiri):
#constructor self.cam = picamera. PiCamera() self.data = self.dur=10 self.sens=2500 self.opt="none"
catatan def (diri, dur):
#Records untuk durasi yang diberikan diatur oleh 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()
operasi def (diri, dur, sens):
#Pengoperasian utama kamera yang terus-menerus memeriksa untuk melihat apakah ada manusia di dekatnya, jika manusia tinggal cukup lama, kami mulai merekam! deteksi global i = GPIO.input(11) jika i == 0: #Ketika output dari sensor gerak RENDAH deteksi=0 waktu.sleep(0.1) elif i == 1: #Ketika output dari sensor gerak TINGGI print(" gerakan terdeteksi "+str(deteksi)) jika mendeteksi >= sens*10: self.record(dur) print("RECORDED") detect = 0 waktu.sleep(0.1) detect += 1
Langkah 9: Buat Modul Rekam
Program terakhir yang diperlukan untuk proyek ini akan ditulis dalam file bernama rec.py. File ini memberi tahu kamera kapan harus merekam, berapa lama merekam, dan jika/kapan mengambil gambar. Ini dilakukan dengan terus-menerus memeriksa dan membaca data pengguna yang ditulis ke file teks dari langkah 5. Jika file telah diperbarui, ia menyesuaikan nilai sensitivitas dan durasi yang sesuai dan kemudian, jika rekaman atau gambar diambil, ia menyimpan konten ke pi, baik dalam format file.h264 atau.jpg.
'''Berjalan secara paralel dengan server labu, membaca variabel kontrol yang ditetapkan oleh formulir server. Variabel kontrol server diatur dalam file terpisah setelah formulir dikirimkan. Modul rec membaca variabel-variabel ini dan memperbarui kamera berdasarkan variabel tersebut. ''' import camOperator dari datetime import datetime import time
rc = camOperator.cameraOperator()
cameraSettingsFile = open("cameraSettings.txt", 'w') cameraSettingsFile.close() #di sini, kita membuka dan menutup dalam mode tulis untuk menghapus konten di dalam file sebelum loop utama berjalan
#Sebuah loop terus menerus yang mengawasi untuk melihat apakah manusia berada di dekatnya. Jika ya, maka
#kamera mulai merekam. Fungsi ini berjalan secara paralel dengan labu #server yang mengontrol kamera ini. recordingInProcess = False while True: #check/record if (recordingInProcess == False): rc.operation(rc.dur, rc.sens) #ubah pengaturan kamera berdasarkan server cameraSettingsFile = open("cameraSettings.txt", 'r') settingNum = 0 untuk setting di 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()
#melakukan tindakan
# if rc.opt == "none": # lanjutkan jika rc.opt == "rec\n" dan recordingInProcess == False: print("Running record command from controller") #Hasilkan nama untuk video berdasarkan nama video waktu saat ini = "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 = Salah cameraSettingsFile = buka("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 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('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"
Langkah 10: Mulai Server
SSH ke pi dan mulai server menggunakan baris perintah yang ditunjukkan di atas.
Langkah 11: COBALAH
Akses halaman web menggunakan alamat IP dan Anda harus dapat mengontrol kamera dari jarak jauh!
Direkomendasikan:
Kamera Keamanan Raven Pi: 7 Langkah (dengan Gambar)
Kamera Keamanan Raven Pi: Gagak plastik ini menikmati kehidupan setelah kematian baru sebagai kamera keamanan yang praktis namun menyeramkan, Raven Pi. Ini memiliki Raspberry Pi di perutnya dan Kamera Pi tertanam di lehernya, menangkap video HD setiap kali gerakan terdeteksi. Pada saat yang sama itu
Tombol Keamanan Nirkabel untuk Keamanan PLC: 6 Langkah (dengan Gambar)
Tombol Keamanan Nirkabel untuk Keamanan PLC: Proyek ini adalah bukti konsep saya untuk menggunakan IoT dan (akhirnya) robotika untuk menciptakan lapisan keamanan tambahan untuk fasilitas manufaktur yang berbahaya. Tombol ini dapat digunakan untuk memulai atau menghentikan beberapa proses, termasuk kontrol sinyal
Kamera Keamanan Night Vision Sumber Terbuka Profesional DIY: 10 Langkah (dengan Gambar)
Kamera Keamanan Penglihatan Malam Sumber Terbuka Profesional DIY: Dalam tutorial baru ini, kita bersama-sama akan membuat kamera pengintai video sumber terbuka Raspberry Pi. semua terhubung ke Jeed kami
Kamera Keamanan IOT WoodThing: 8 Langkah (dengan Gambar)
Kamera Keamanan IOT WoodThing: Ini adalah kamera IP yang kuat berdasarkan Raspberry PI. Ini menjalankan motionEyeOS, sehingga dapat digunakan untuk mengelola beberapa kamera IP jarak jauh serta memungkinkan Anda untuk memasang hingga empat kamera web USB biaya rendah tambahan. Fitur: Bertenaga USB, sensor gerak dengan s
Kamera Keamanan Pi Perpustakaan VHS: 3 Langkah (dengan Gambar)
VHS Library Pi Security Camera: Ini adalah case VHS Video Library lama yang sekarang menyediakan rumah yang sempurna untuk kamera keamanan Raspberry Pi. Kasingnya berisi Pi Zero dan kamera mengintip melalui punggung buku palsu. Ini adalah bangunan yang sangat sederhana dengan tampilan dunia lama