Мазмұны:
- Жабдықтар
- 1 -қадам: Жабдықты жинаңыз
- 2 -қадам: Сіздің Pi Интернетке қосылғанына көз жеткізіңіз
- 3 -қадам: камераны орнатыңыз
- 4 -қадам: Колбаны орнатыңыз
- 5 -қадам: Форма класын жасаңыз
- 6 -қадам: Колбаның үлгісін жасаңыз
- 7 -қадам: Үлгіні көрсету
- 8 -қадам: Камера операторы класын жасаңыз
- 9 -қадам: Жазу модулін жасаңыз
- 10 -қадам: Серверді іске қосыңыз
- 11 -қадам: СЫНАП көріңіз
Бейне: Raspberry Pi қауіпсіздік камерасы: 11 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:23
Бұл қадамдық нұсқаулық, Raspberry Pi көмегімен IoT, қозғалысты белсендірілген қауіпсіздік камерасын жасау әдісі. Сіз қолданушыға камераның сезімталдығы мен жазылу уақытын реттеуге, жазбаны қолмен бастауға/тоқтатуға және/немесе жергілікті сақталатын суретке түсуге мүмкіндік беретін колбаның веб -сервері мен формасын жасауды үйренесіз.
Жабдықтар
- Таңқурай Pi 3
- Pi камерасы
- PIR қозғалыс сенсоры
- SD картасы
- Қуат көзі
1 -қадам: Жабдықты жинаңыз
Pi өшірілген кезде, micro SD картасын Pi ұясына салыңыз. Камера модулінің таспалы кабелін Pi камералық модуль портына салыңыз. Содан кейін PRI қозғалыс детекторының 3 түйреуішін (VCC, OUT және GND деп белгіленген) Pi GPIO түйреуіштеріне қосыңыз. VCC -ті 5,5 В қуатына, GND -ді жерге және OUT -ті Пи -ге 11 -штыруға қосыңыз.
2 -қадам: Сіздің Pi Интернетке қосылғанына көз жеткізіңіз
Енді Pi -ді қуат көзіне қосу арқылы қосыңыз және ping пәрменін пайдаланып интернетке қосылғаныңызды тексеріңіз. Егер сіз Pi -ді интернетке қалай қосуды білмесеңіз, мына жерді басыңыз.
sudo ping www.google.com
Егер сіз табысты болсаңыз, сіз google -ге деректерді қабылдап жатқанын көруіңіз керек.
Сонымен қатар, ifconfig көмегімен IP мекенжайын көруге болады.
sudo ifconfig
3 -қадам: камераны орнатыңыз
Конфигурация интерфейсін ашу үшін келесі пәрменді қолданыңыз және камераны «интерфейс опцияларында» қосыңыз.
sudo raspi-config
Қайта жүктеуден кейін камераның дұрыс қосылғанына көз жеткізу үшін оның күйін көрсетуге болады.
vcgencmd get_camera
Соңында пикамера модулін орнатыңыз.
пикамераны орнатыңыз
4 -қадам: Колбаны орнатыңыз
Python үшін колбаны және колбаға демалатын модульді орнатыңыз:
sudo apt-get python-dev python-pip орнатыңыз
python -m pip колбасын орнатады
Әрі қарай, біз формаларды жасау үшін қолданылатын питон колбасы модулін орнатамыз.
pip flask-wtf орнатыңыз
5 -қадам: Форма класын жасаңыз
Барлық файлдарды сақтау үшін iotProject деп аталатын каталог жасаңыз.
sudo mkdir iotProject
«CamControl.py» деп аталатын питон файлын жасаңыз.
sudo nano camControl.py
Бұл файлда біз пайдаланушыға камера параметрлерін өзгертуге, қолмен жазуды бастау/тоқтатуға және бейне түсіруге мүмкіндік беретін мәтін ұялары мен ашылмалы мәзірі бар веб -форма жасауға мүмкіндік беретін біздің форма класын құрамыз.
flask_wtf импортынан FlaskFormfrom wtforms.validators импорттау DataRequired wtforms импорттау SubmitField wtforms импорт валидаторларынан, IntegerField, BooleanField, SelectField
сынып camFrame (FlaskForm):
videoDuration = IntegerField ('Жазу уақыты (секундпен)')
сезімталдық = IntegerField ('Қозғалыс сезімталдығы (диапазоны 2500-10000) nСан неғұрлым жоғары болса, камераның сезімталдығы соғұрлым төмен болады', валидаторлар = [validators. NumberRange (min = 2500, max = 10000, хабарлама = 'Мәннен тыс' '])
options = SelectField ('Options', choices = [('none', 'Action'), ('rec', 'Start Recording'), ('stop', 'Stop Stop'), ('сурет', 'Суретке түсіру')])
жіберу = SubmitField ('Жіберу')
6 -қадам: Колбаның үлгісін жасаңыз
Пайдаланушы интерфейсін құру үшін сіз жаңа жасаған пішінді қолданатын Flask үлгісін жасауыңыз керек. Бұл файл html -де жазылады және сіздің пішініңізбен бір каталогта болуы керек шаблондар қалтасында сақталады.
Үлгілер қалтасының ішінде index.html деп аталатын файл жасаңыз. Бұл файлдың ішінде жоғарыда көрсетілген кодты қайталаңыз.
7 -қадам: Үлгіні көрсету
Енді үлгіні көрсететін файлды жасау уақыты келді. AppCam.py атты файл жасаңыз (бұдан былай шаблондар қалтасында болмағаныңызға көз жеткізіңіз). Үлгіде пайдаланылатын кез келген динамикалық мазмұн render_template () шақыруында аталған аргумент ретінде қолданылуы керек.
import camControlfrom колбадан импорттау Колбасы, render_template, сұрау, flask_restful импорттаудың жауабы Resource, Api, reqparse
app = Flask (_ аты _)
app.config ['SECRET_KEY'] = '13542' api = Api (қолданба)
талдаушы = reqparse. RequestParser ()
parser.add_argument ('dur', type = int, help = 'Қозғалыс анықталған кездегі бейне ұзақтығы') parser.add_argument ('sens', type = int, help = 'Жазуды бастау үшін қажет қозғалыс деңгейі') талдаушы.add_argument ('opt', type = str, help = 'Қолмен бейне жазу немесе суретке түсіру')
сынып жаңарту (ресурс):
Wtforms def post (self) үшін материалдар: args = parser.parse_args () #rc.input (args ['dur'], args ['sens'], args ['opt']) #мәтіндік файлға жазу параллель жұмыс істейтін камерамен сөйлеседі cameraSettingsFile = 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 ['сезім'], 'таңдау': args ['таңдау']}
@app.route ('/', әдістер = ['АЛУ', 'ПОСТ'])
def index (): «» «Контроллердің бастапқы беті» «» form = camControl.camFrame () #бұл сұраныс.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 dur cameraSettingsFile.write (args [1] [1] + '\ n') #жазу камерасыSettingsFile.write (args [2] [1] + '\ n') #write opt cameraSettingsFile.close () imageDictionary = {«файл атауы»: «image.jpg»} қайтару render_template ('index.html', форма = пішін, сурет = imageDictionary))
api.add_resource (Жаңарту, '/update/')
егер _ аты _ == '_ негізгі _':
app.run (host = '0.0.0.0', port = 80, debug = True, threaded = True)
8 -қадам: Камера операторы класын жасаңыз
Енді біз camOperator.py деп аталатын файл жасағымыз келеді. Онда біз бұрыннан бар PiCamera функцияларын қолдана отырып, камераны басқару әдістері бар камера сыныбын жасаймыз. Келесі қадамда біз осы объектінің данасын қолданамыз, онда біз камера мен қозғалыс сенсорының функционалдығын біріктіреміз.
Бұл сыныпта анықталған әдістер қолданушы беретін сезімталдық пен ұзақтықты енгізуді қолдана отырып, қауіпсіздік камерасындағы «жазба» параметрлерін өзгертеді, ал егер пайдаланушы енгізуі болмаса, осы айнымалылар үшін әдепкі мәндерді орнатады.
RPi. GPIO импорттау уақыты GPIO импорттық уақытты импорттау датамадан datetime импорттау
GPIO.setmode (GPIO. BOARD)
GPIO.setup (11, GPIO. IN)
анықтау = 0
сынып камерасы Оператор:
def _init _ (өзін):
#конструктор self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = «none»
def рекорды (өзіндік, ұзақ):
#NameVideoName = 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 = GPIO.input (11) if i == 0: #Қозғалыс сенсорынан шығыс LOW анықталса = 0 уақыт.ұйқы (0.1) қозғалыс анықталды « +str (анықтау)) егер анықтау> = sens*10: self.record (dur) басып шығару (» RECORDED «) анықтау = 0 уақыт.ұйқы (0.1) анықтау += 1
9 -қадам: Жазу модулін жасаңыз
Бұл жобаға қажет соңғы бағдарлама rec.py файлында жазылады. Бұл файл камераға қашан жазылатынын, қанша уақыт жазылатынын және егер/қашан суретке түсіру керектігін айтады. Ол 5 -қадамнан бастап мәтіндік файлға жазылған пайдаланушы деректерін үнемі тексеріп, оқу арқылы жасайды, егер файл жаңартылған болса, ол сәйкесінше сезімталдық пен ұзақтық мәндерін реттейді, содан кейін, егер жазба немесе сурет түсірілсе, ол мазмұнды сақтайды. pi.h264 немесе-j.webp
'' 'Колба серверімен қатар жұмыс істейді, сервер формалары орнатқан басқару айнымалыларын оқиды. Пішіндер жіберілгеннен кейін серверді басқару айнымалылары бөлек файлда орнатылады. Rec модулі бұл айнымалыларды оқиды және олардың негізінде камераны жаңартады. '' 'camOperator -ды datetime импорттау datetime импорттау уақыты
rc = camOperator.cameraOperator ()
cameraSettingsFile = open («cameraSettings.txt», 'w') cameraSettingsFile.close () #мұнда біз негізгі цикл іске қосылмай тұрып файл ішіндегі мазмұнды жою үшін жазу режимінде ашамыз және жабамыз.
#Адамдардың жақын жерде екенін тексеретін үздіксіз цикл. Егер олар болса, онда
#камера жазуды бастайды. Бұл функция осы камераны басқаратын #server колбасымен қатар жұмыс істейді. recordInProcess = «False» кезінде «жалған»: #тексеріңіз/жазыңыз, егер (recordInProcess == False): rc.operation (rc.dur, rc.sens) #камераның параметрлерін камераныңSettingsFile = open негізінде өзгертіңіз («cameraSettings.txt», 'r') settingNum = 0 cameraSettingsFile.readlines () параметріне орнатуға арналған (): if settingNum == 0: #Ұзақтықты өзгерту rc.dur = int (параметр) elif settingNum == 1: #Сезімталдықты өзгерту rc.sens = int (параметр) elif settingNum == 2: #Action change rc.opt = setting settingNum += 1 cameraSettingsFile.close ()
#әрекетті орындау
# if rc.opt == «none»: # жалғастырыңыз, егер rc.opt == «rec / n» және recordInProcess == False: print (басып шығару («Контроллерден жазу пәрмені»)) # Ағымдағы уақытқа байланысты бейне атауын жасаңыз videoName = «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» and recordInProcess == True: басып шығару («Контроллерден жазба пәрменін тоқтату») 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» and recordInProcess == False: print («Контроллерден суретке түсіру командасын алу») pictureName = «snappedPic_ «+str (datetime.now ()) pictureName = pictureName.replace (':', ') pictureName = pictureName.replace ('. ',') rc.cam.st art_preview () time.sleep (5) rc.cam.capture ('суреттер/' + сурет атауы + '.jpg') rc.cam.stop_preview () cameraSettingsFile = ашық («cameraSettings.txt», 'w') cameraSettingsFile. жазу (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write («none / n») rc.opt = «none / n»
10 -қадам: Серверді іске қосыңыз
SSH -ді pi -ге енгізіңіз және серверді жоғарыда көрсетілген пәрмен жолымен іске қосыңыз.
11 -қадам: СЫНАП көріңіз
IP -адрес арқылы веб -бетке кіріңіз, сонда сіз камераны қашықтан басқара аласыз!
Ұсынылған:
Raven Pi қауіпсіздік камерасы: 7 қадам (суреттермен)
Қауіпсіздік камерасы Raven Pi: Бұл пластикалық қарға практикалық, бірақ қорқынышты қауіпсіздік камерасы ретінде Raven Pi ретінде жаңа өмірден ләззат алады. Ішінде Raspberry Pi және мойынға Pi камерасы орнатылған, ол қозғалыс анықталған кезде HD бейне түсіреді. Дәл сол сәтте оның
Қауіпсіздік камерасы ретінде ең оңай веб -камера - қозғалысты анықтау және электрондық пошта арқылы жіберілетін суреттер: 4 қадам
Қауіпсіздік камерасы ретінде ең оңай веб -камера - Қозғалысты анықтау және электрондық пошта арқылы жіберілген суреттер: Сізге веб -камерадан электрондық поштаға қозғалысты анықтайтын суреттерді алу үшін бағдарламалық жасақтаманы жүктеудің немесе конфигурациялаудың қажеті жоқ - жай ғана шолғышты пайдаланыңыз. Суретті түсіру үшін Windows, Mac немесе Android жүйелерінде жаңартылған Firefox, Chrome, Edge немесе Opera шолғышын қолданыңыз
Сәйкестік қораптағы сымсыз қауіпсіздік камерасы: 7 қадам
Matchbox ішіндегі сымсыз қауіпсіздік камерасы: Ей, балалар, не болды? Akarsh мұнда CETech-тен. Бүгін біз бортында Wi-Fi бар және сіріңке қорабына сыйатындай интернетке қосылған камераны жасамақпыз, сондықтан сіздің құндылықтарыңызды ешкімге күмән келтірместен сақтауға болады
WoodThing IOT қауіпсіздік камерасы: 8 қадам (суреттермен)
WoodThing IOT қауіпсіздік камерасы: Бұл Raspberry PI негізіндегі қуатты IP -камера. Ол motionEyeOS жүйесінде жұмыс істейді, сондықтан оны бірнеше қашықтағы IP камераларды басқару үшін пайдалануға болады, сонымен қатар төрт қосымша арзан USB веб -камерасын қосуға мүмкіндік береді. Ерекшеліктер: USB -ден қуат алу, қозғалыс сенсоры
VHS Library Pi қауіпсіздік камерасы: 3 қадам (суреттермен)
VHS Library Pi қауіпсіздік камерасы: бұл VHS бейне кітапханасының ескі корпусы, ол қазір Raspberry Pi қауіпсіздік камерасы үшін тамаша үй береді. Корпуста Pi Zero бар және камера жалған кітаптың омыртқасынан көрінеді. Бұл ескі әлемнің көрінісі бар өте қарапайым құрылыс