Isi kandungan:
- Bekalan
- Langkah 1: Pasang Perkakasan
- Langkah 2: Pastikan Pi Anda Disambungkan ke Internet
- Langkah 3: Sediakan Kamera
- Langkah 4: Pasang Kelalang
- Langkah 5: Buat Kelas Tingkatan
- Langkah 6: Buat Templat Kelalang
- Langkah 7: Render Templat
- Langkah 8: Buat Kelas Operator Kamera
- Langkah 9: Buat Modul Rekod
- Langkah 10: Mulakan Pelayan
- Langkah 11: Cubalah
Video: Kamera Keselamatan Raspberry Pi: 11 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Ini adalah langkah demi langkah yang dapat dipelajari mengenai cara membuat IoT, kamera keselamatan yang diaktifkan gerakan menggunakan Raspberry Pi. Anda akan belajar bagaimana membuat pelayan web dan bentuk labu yang membolehkan pengguna menyesuaikan kepekaan dan masa rakaman kamera, memulakan / menghentikan rakaman secara manual, dan / atau mengambil gambar yang akan disimpan ke dalam negara.
Bekalan
- Raspberry Pi 3
- Kamera Pi
- Sensor gerakan PIR
- Kad SD
- Sumber kuasa
Langkah 1: Pasang Perkakasan
Semasa Pi dimatikan, masukkan kad micro-SD ke dalam Pi. Masukkan kabel pita modul kamera ke port modul kamera pada Pi. Kemudian, sambungkan 3 pin (berlabel VCC, OUT, dan GND) pengesan gerakan PRI ke pin GPIO Pi. Sambungkan VCC ke kuasa 5.5V, GND ke ground, dan OUT ke pin 11 pada Pi.
Langkah 2: Pastikan Pi Anda Disambungkan ke Internet
Sekarang, hidupkan Pi dengan menghubungkannya ke sumber kuasa dan sahkan bahawa anda tersambung ke internet menggunakan arahan ping. Sekiranya anda tidak tahu cara menyambungkan Pi ke internet, klik di sini.
sudo ping www.google.com
Sekiranya anda berjaya, anda harus melihat bahawa data diterima oleh google.
Selain itu, anda boleh menggunakan ifconfig untuk melihat alamat IP anda.
sudo ifconfig
Langkah 3: Sediakan Kamera
Gunakan perintah berikut untuk membuka antara muka konfigurasi, dan aktifkan kamera dalam "pilihan antara muka".
sudo raspi-config
Selepas reboot, anda dapat memaparkan status kamera anda untuk memastikan kamera disambungkan dengan betul.
vcgencmd get_camera
Akhir sekali, pasang modul picamera.
pip memasang picamera
Langkah 4: Pasang Kelalang
Pasang modul termos dan rehat termos untuk Python:
sudo apt-get install python-dev python-pip
python -m pip memasang termos-termos
Seterusnya, kami akan memasang modul python flask yang digunakan untuk membuat borang.
pip pasang kelalang-wtf
Langkah 5: Buat Kelas Tingkatan
Buat direktori bernama iotProject untuk menyimpan semua fail anda.
sudo mkdir iotProjek
Buat fail python bernama "camControl.py".
sudo nano camControl.py
Dalam fail ini, kami akan membuat kelas borang kami, yang memungkinkan kami membuat borang web dengan kotak teks dan menu drop-down untuk pengguna dapat mengubah pengaturan kamera, memulai / menghentikan rakaman secara manual, dan menangkap video.
dari flask_wtf import FlaskFormfrom wtforms.validators import Data Diperlukan dari wtforms import SubmitField dari wtforms import validator, IntegerField, BooleanField, SelectField
kelas camFrame (FlaskForm):
videoDuration = IntegerField ('Masa Rakaman (dalam beberapa saat)')
kepekaan = IntegerField ('Sensitiviti Gerak (julat 2500-10000) n Semakin tinggi bilangannya, semakin kurang sensitif kamera', validator = [validators. NumberRange (min = 2500, max = 10000, message = 'Value Out of Range')]))
pilihan = SelectField ('Pilihan', pilihan = [('tidak ada', 'Tidak ada tindakan'), ('rec', 'Start Recording'), ('stop', 'Stop Recording'), ('gambar', 'Ambil Gambar')])
hantar = SubmitField ('Kirim')
Langkah 6: Buat Templat Kelalang
Untuk membuat antara muka pengguna, anda mesti merancang templat Flask yang menggunakan bentuk yang baru anda buat. Fail ini akan ditulis dalam html, dan disimpan dalam folder yang disebut templat, yang harus berada dalam direktori yang sama dengan bentuk anda.
Di dalam folder templat anda, buat fail bernama index.html. Di dalam fail ini, replikasi kod yang ditunjukkan di atas.
Langkah 7: Render Templat
Kini tiba masanya untuk membuat fail yang membuat templat. Buat fail bernama appCam.py (pastikan anda tidak lagi berada di folder templat). Sebarang kandungan dinamik yang digunakan dalam templat mesti digunakan sebagai argumen bernama dalam panggilan ke render_template ().
import camControldari flask import Flask, render_template, request, Response dari flask_restful import Resource, Api, reqparse
aplikasi = Kelalang (_ nama_)
app.config ['SECRET_KEY'] = '13542' api = Api (aplikasi)
parser = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Durasi video ketika pergerakan dikesan') parser.add_argument ('sens', type = int, help = 'Tahap pergerakan yang diperlukan untuk mencetuskan rakaman') parser.add_argument ('opt', type = str, help = 'Merakam video secara manual atau menangkap gambar')
Kemas kini kelas (Sumber):
#Stuff for wtforms def post (self): args = parser.parse_args () # rc.input (args ['dur'], args ['sens'], args ['opt']) #write ke fail teks yang bercakap dengan kamera yang berjalan selari 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 ('/', kaedah = ['DAPATKAN', 'POST'])
def index (): "" "Halaman utama pengawal" "" form = camControl.camFrame () # ini adalah bentuk 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 = terbuka ("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 (Kemas kini, '/ kemas kini /')
jika _nama_ == '_main_':
app.run (host = '0.0.0.0', port = 80, debug = True, berulir = Benar)
Langkah 8: Buat Kelas Operator Kamera
Sekarang kita mahu membuat fail bernama camOperator.py. Di dalamnya kita akan membuat kelas kamera dengan kaedah untuk mengoperasikan kamera, menggunakan fungsi PiCamera yang sudah tersedia. Kami akan menggunakan contoh objek ini pada langkah seterusnya di mana kami akan menggabungkan fungsi kamera dan sensor gerakan.
Kaedah yang ditentukan dalam kelas ini mengubah tetapan "rekod" pada kamera keselamatan menggunakan input kepekaan dan durasi yang disediakan oleh pengguna, sambil menetapkan nilai lalai untuk pemboleh ubah ini jika input pengguna tidak ada.
import RPi. GPIO sebagai GPIOimport import picamera dari datetime import datetime
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
mengesan = 0
kamera kelasOperator:
def _init _ (diri):
#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "none"
rekod def (diri, dur):
#Rekod untuk jangka masa tertentu yang ditetapkan oleh pengawal 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):
# Operasi utama kamera yang sentiasa memeriksa untuk melihat sama ada manusia berada di dekatnya, jika manusia tinggal cukup lama, kita mula merakam! global mengesan i = GPIO.input (11) if i == 0: #Apabila output dari sensor gerakan RENDAH mengesan = 0 waktu.sleep (0.1) elif i == 1: #Apabila output dari sensor gerakan dicetak TINGGI (" gerakan dikesan "+ str (deteksi)) jika mengesan> = sens * 10: self.record (dur) print (" RECORDED ") detect = 0 time.sleep (0.1) mengesan + = 1
Langkah 9: Buat Modul Rekod
Program terakhir yang diperlukan untuk projek ini akan ditulis dalam fail bernama rec.py. Fail ini memberitahu kamera kapan hendak merakam, berapa lama untuk merakam, dan jika / kapan hendak mengambil gambar. Ia melakukannya dengan sentiasa memeriksa dan membaca data pengguna yang ditulis ke fail teks dari langkah 5. Jika fail telah diperbaharui, ia akan menyesuaikan nilai sensitiviti dan jangka masa yang sesuai dan kemudian, jika rakaman atau gambar diambil, ia menyimpan kandungannya ke pi, sama ada dalam format fail.h264 atau.jpg.
'' Berjalan selari dengan pelayan termos, membaca pemboleh ubah kawalan yang ditetapkan oleh borang pelayan. Pemboleh ubah kawalan pelayan ditetapkan dalam fail berasingan setelah borang dihantar. Modul rec membaca pemboleh ubah ini dan mengemas kini kamera berdasarkannya. '' 'import camOperator dari datetime import datetime time import
rc = camOperator.cameraOperator ()
cameraSettingsFile = buka ("cameraSettings.txt", 'w') cameraSettingsFile.close () #di sini, kita buka dan tutup dalam mod penulisan untuk menghapus kandungan dalam fail sebelum gelung utama berjalan
# Gelung berterusan yang memerhatikan untuk melihat apakah manusia berada berdekatan. Sekiranya mereka, maka
#kamera mula merakam. Fungsi ini berjalan selari dengan termos #server yang mengawal kamera ini. perekamanInProcess = False while True: # check / record if (recordingInProcess == False): rc.operation (rc.dur, rc.sens) # ubah tetapan kamera berdasarkan server serverSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 untuk pengaturan 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 ()
#laksanakan tindakan
# if rc.opt == "none": # teruskan jika rc.opt == "rec / n" dan recordingInProcess == False: print ("Running record command from controller") #Menjana nama untuk video berdasarkan videoName masa semasa = "snappedVid _" + str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('. ',') rc.cam.start_recording ('/ rumah / pi / iotProject / videos / '+ videoName +'.h264 ') rakamanInProcess = True elif rc.opt == "stop / n" dan rakamanInProcess == Benar: cetak ("Menghentikan arahan rakaman dari pengawal") rc.cam.stop_recording () rakamanInProcess = False cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.sens) + '\ n') cameraSettingsFile. tulis ("none / n") rc.opt = "none / n" elif rc.opt == "pic / n" dan rakamanInProcess == 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 = terbuka ("cameraSettings.txt", 'w') cameraSettingsFile. tulis (str (rc.dur) + '\ n') cameraSettingsFile.write (str (rc.sens) + '\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"
Langkah 10: Mulakan Pelayan
SSH ke dalam pi dan mulakan pelayan menggunakan baris arahan yang ditunjukkan di atas.
Langkah 11: Cubalah
Akses laman web menggunakan alamat IP dan anda seharusnya dapat mengawal kamera dari jauh!
Disyorkan:
Kamera Keselamatan Raven Pi: 7 Langkah (dengan Gambar)
Kamera Keselamatan Raven Pi: gagak plastik ini menikmati kehidupan akhir yang baru sebagai kamera keselamatan praktikal namun menyeramkan, Raven Pi. Ini memiliki Raspberry Pi di perutnya dan Kamera Pi tertanam di lehernya, menangkap video HD setiap kali pergerakan dikesan. Pada masa yang sama
Butang Keselamatan Tanpa Wayar untuk Keselamatan PLC: 6 Langkah (dengan Gambar)
Butang Keselamatan Tanpa Wayar untuk Keselamatan PLC: Projek ini adalah bukti konsep saya untuk menggunakan robotik IoT dan (akhirnya) untuk membuat lapisan keselamatan tambahan untuk kemudahan pembuatan berbahaya. Butang ini boleh digunakan untuk memulakan atau menghentikan beberapa proses, termasuk kawalan isyarat
Sistem Keselamatan Keselamatan Wanita Satu Sentuhan: 3 Langkah
Sistem Keselamatan Keselamatan Wanita Satu Sentuhan: Penggera satu sentuhan Sistem keselamatan wanita menggunakan pengawal mikro 8051 Dalam Keselamatan Wanita Dunia Hari Ini adalah Isu Paling Penting Di Negara Ini. Hari Ini Wanita Dilecehkan Dan Bermasalah Dan Kadang-kadang Apabila Bantuan Mendesak Diperlukan. Tidak ada Locati yang Diperlukan
Kamera Keselamatan Penglihatan Malam Sumber Terbuka DIY Profesional: 10 Langkah (dengan Gambar)
Kamera Keselamatan Penglihatan Malam Sumber Terbuka DIY Profesional: Dalam tutorial baru ini, kami bersama-sama akan membuat kamera pengawasan video sumber terbuka Raspberry Pi kami. Ya, kita bercakap di sini mengenai kamera pengawasan luaran sumber terbuka sebenar, yang mampu penglihatan malam dan pengesanan gerakan, semua bersambung dengan Jeed kami
Kamera Keselamatan WoodThing IOT: 8 Langkah (dengan Gambar)
Kamera Keselamatan WoodThing IOT: Ini adalah kamera IP yang kuat berdasarkan Raspberry PI. Ia menjalankan motionEyeOS, jadi dapat digunakan untuk mengurus banyak kamera IP jarak jauh dan juga membolehkan anda memasang hingga empat kamera web USB kos rendah tambahan. Ciri-ciri: USB berkuasa, penginderaan gerakan dengan s