ዝርዝር ሁኔታ:

Raspberry Pi Security Camera: 11 ደረጃዎች (ከስዕሎች ጋር)
Raspberry Pi Security Camera: 11 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: Raspberry Pi Security Camera: 11 ደረጃዎች (ከስዕሎች ጋር)

ቪዲዮ: Raspberry Pi Security Camera: 11 ደረጃዎች (ከስዕሎች ጋር)
ቪዲዮ: How to Install Kali Linux 2021.1 in Amharic on VirtualBox On Windows | Haking in Amharic | ሃኪንግ 2024, ህዳር
Anonim
Raspberry Pi ደህንነት ካሜራ
Raspberry Pi ደህንነት ካሜራ

Raspberry Pi ን በመጠቀም IoT ን ፣ በእንቅስቃሴ ላይ የሚንቀሳቀስ የደህንነት ካሜራ እንዴት መፍጠር እንደሚቻል ይህ ደረጃ በደረጃ የሚያስተምር ነው። ተጠቃሚው የካሜራውን ትብነት እና የመቅጃ ጊዜ እንዲያስተካክል ፣ ቀረጻን እራስዎ እንዲጀምር/እንዲያቆም እና/ወይም በአከባቢው የሚቀመጥ ስዕል እንዲወስድ የሚያስችል የፍላሽ ድር አገልጋይ እና ቅጽ እንዴት እንደሚፈጥሩ ይማራሉ።

አቅርቦቶች

  • Raspberry Pi 3
  • ፒ ካሜራ
  • PIR እንቅስቃሴ ዳሳሽ
  • ኤስዲ ካርድ
  • የኃይል ምንጭ

ደረጃ 1: ሃርድዌሩን ያሰባስቡ

ሃርድዌር ይሰብስቡ
ሃርድዌር ይሰብስቡ
ሃርድዌር ይሰብስቡ
ሃርድዌር ይሰብስቡ
ሃርድዌር ይሰብስቡ
ሃርድዌር ይሰብስቡ
ሃርድዌር ይሰብስቡ
ሃርድዌር ይሰብስቡ

ፒው ሲጠፋ ማይክሮ-ኤስዲ ካርዱን ወደ ፒ ውስጥ ያስገቡ። በ Pi ላይ የካሜራ ሞዱሉን ሪባን ገመድ ወደ ካሜራ ሞዱል ወደብ ያስገቡ። ከዚያ ፣ የ PRI እንቅስቃሴ መፈለጊያውን 3 ፒን (የተሰየመ VCC ፣ OUT እና GND) ከ Pi ጂፒኦ ፒኖች ጋር ያገናኙ። ቪሲሲውን ከ 5.5 ቪ ኃይል ፣ GND ን ከመሬት ፣ እና OUT ን በ Pi ላይ ለመሰካት 11 ን ያገናኙ።

ደረጃ 2: የእርስዎ ፒ ከበይነመረቡ ጋር መገናኘቱን ያረጋግጡ

የእርስዎ ፓይ ከበይነመረቡ ጋር መገናኘቱን ያረጋግጡ
የእርስዎ ፓይ ከበይነመረቡ ጋር መገናኘቱን ያረጋግጡ

አሁን Pi ን ከኃይል ምንጭ ጋር በማገናኘት ያብሩ እና የፒንግ ትዕዛዙን በመጠቀም ከበይነመረቡ ጋር መገናኘቱን ያረጋግጡ። የእርስዎን Pi እንዴት ከበይነመረቡ ጋር ማገናኘት እንደሚችሉ ካላወቁ እዚህ ጠቅ ያድርጉ።

sudo ping www.google.com

ስኬታማ ከሆንክ ፣ ውሂብ በ google እየተቀበለ መሆኑን ማየት አለብህ።

በተጨማሪም ፣ የአይፒ አድራሻዎን ለማየት ifconfig ን መጠቀም ይችላሉ።

sudo ifconfig

ደረጃ 3 ካሜራውን ያዘጋጁ

የውቅረት በይነገጽን ለመክፈት እና ካሜራውን በ “በይነገፅ አማራጮች” ውስጥ ለማንቃት የሚከተለውን ትእዛዝ ይጠቀሙ።

sudo raspi-config

ዳግም ከተነሳ በኋላ በትክክል መገናኘቱን ለማረጋገጥ የካሜራዎን ሁኔታ ማሳየት ይችላሉ።

vcgencmd get_camera

በመጨረሻም ፣ የፒካሜራ ሞዱሉን ይጫኑ።

ፒፓ ጫን picamera

ደረጃ 4 Flask ን ይጫኑ

ለፓይዘን ብልቃጡን እና ብልቃጡን የሚያርፍ ሞዱሉን ይጫኑ-

sudo apt-get install Python-dev Python-pip ን ይጫኑ

python -m pip install flask flask -restful

በመቀጠልም ፣ ቅጾችን ለመፍጠር የሚያገለግል የፓይዘን flask ሞዱልን እንጭናለን።

pip install flask-wtf

ደረጃ 5 የቅጽ ክፍል ይፍጠሩ

ሁሉንም ፋይሎችዎን ለማከማቸት iotProject የተባለ ማውጫ ያዘጋጁ።

sudo mkdir iotProject

“CamControl.py” የተባለ የፓይዘን ፋይል ይፍጠሩ።

sudo nano camControl.py

በዚህ ፋይል ውስጥ የጽሑፍ ሳጥኖች እና ለተጠቃሚው የካሜራ ቅንብሮችን ለመለወጥ ፣ ቀረጻን እራስዎ ለማስጀመር/ለማቆም እና ቪዲዮን ለመያዝ እንዲቻል የድር ቅጽን ለመፍጠር የሚያስችለንን የቅፅ ክፍላችን እንፈጥራለን።

ከ flask_wtf ማስመጣት FlaskFormfrom wtforms.validators ውሂብ ያስመጣሉ ከ wtforms ማስመጣት SubmitField ከ wtforms አስመጪ አረጋጋጮች ፣ IntegerField ፣ BooleanField ፣ SelectField

ክፍል camFrame (FlaskForm):

videoDuration = IntegerField ('የመቅጃ ጊዜ (በሰከንዶች)')

ትብነት = IntegerField ('የእንቅስቃሴ ትብነት (ክልል 2500-10000) n ቁጥሩ ከፍ ባለ መጠን ካሜራው ያነሰ ስሜታዊ ነው' ፣

validators = [validators. NumberRange (ደቂቃ = 2500 ፣ ቢበዛ = 10000 ፣ መልእክት = 'ከክልል ውጭ ዋጋ')])

አማራጮች = SelectField ('አማራጮች' ፣ ምርጫዎች = [('ምንም' ፣ 'ምንም እርምጃ')) ፣ ('ሪከርድ' ፣ 'ቀረጻ ጀምር') ፣ ('አቁም' ፣ 'ቀረጻን አቁም') ፣

('ስዕል' ፣ 'ፎቶ አንሳ')])

submit = SubmitField ('አስገባ')

ደረጃ 6 የፍላሽ አብነት ይፍጠሩ

የፍላሽ አብነት ይፍጠሩ
የፍላሽ አብነት ይፍጠሩ

የተጠቃሚ በይነገጽ ለመፍጠር ፣ እርስዎ የፈጠሩትን ቅጽ የሚጠቀም የፍላሽ አብነት መንደፍ አለብዎት። ይህ ፋይል በኤችቲኤምኤል ውስጥ ይፃፋል ፣ እና ከእርስዎ ቅጽ ጋር በተመሳሳይ ማውጫ ውስጥ መሆን ያለበት አብነቶች ተብሎ በሚጠራ አቃፊ ውስጥ ይቀመጣል።

በአብነቶችዎ አቃፊ ውስጥ ፣ index.html የሚባል ፋይል ይፍጠሩ። በዚህ ፋይል ውስጥ ፣ ከላይ የሚታየውን ኮድ መድገም።

ደረጃ 7 ፦ አብነቱን ይስጡ

አብነቱን የሚያቀርብ ፋይል ለመፍጠር ጊዜው አሁን ነው። AppCam.py የሚባል ፋይል ይፍጠሩ (ከአብነቶች አቃፊ ውስጥ ከአሁን በኋላ አለመሆንዎን ያረጋግጡ)። በአብነት ውስጥ ጥቅም ላይ የዋለ ማንኛውም ተለዋዋጭ ይዘት በ ‹render_template ()› ጥሪ ውስጥ እንደ ስሙ ክርክር ሆኖ ጥቅም ላይ መዋል አለበት።

ከካሜራ ማስመጣት ከ flask ማስመጣት Flask ፣ render_template ፣ ጥያቄ ፣ ምላሽ ከ flask_restful ማስመጣት ሀብት ፣ ኤፒአይ ፣ እንደገና መመርመር

መተግበሪያ = ብልጭታ (_ ስም_)

app.config ['SECRET_KEY'] = '13542' api = Api (መተግበሪያ)

parser = reqparse. RequestParser ()

parser. ።

የክፍል ዝመና (ግብዓት)

#ስቱፍ ለ wtforms def post (ራስን): args = parser.parse_args () #rc.input (args ['dur'] ፣ args ['sens'] ፣ args ['opt']) #ወደዚያ የጽሑፍ ፋይል ይጻፉ በትይዩ ካሜራ ውስጥ እያሄደ ካለው ካሜራ ጋር ይነጋገራል SetetFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (args ['dur'] + '\ n') #dur dur cameraSettingsFile.write (args ['sens'] + '\ n') #የስሜት ካሜራ ይፃፉ SettingsFile.write (args ['opt'] + '\ n') #opt camera cameraSettingsFile.close () ተመለስ {'dur': args ['dur'] ፣ 'sens': args ['sense'], 'opt': args ['opt']}

@app.route ('/' ፣ ዘዴዎች = ['GET' ፣ 'POST'])

def index (): "" "" ተቆጣጣሪ መነሻ ገጽ "" "ቅጽ = camControl.camFrame () #ይህ ቅጽ request.method == 'POST' ከሆነ ማተም (request.form) args = [i for in 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') #ካሜራ ይፃፉ SettingsFile.write (args [1] [1] + '\ n') #sens sens cameraSettingsFile.write (args [2] [1] + '\ n') #opt camera cameraSettingsFile.close () imageDictionary = {"filename": "image.jpg"} render_template ('index.html' ፣ form = form, image = imageDictionary) ይፃፉ)

api.add_resource (አዘምን ፣ '/አዘምን/')

_name_ == '_main_' ከሆነ ፦

app.run (አስተናጋጅ = '0.0.0.0' ፣ ወደብ = 80 ፣ አርም = እውነት ፣ ክር = እውነት)

ደረጃ 8 የካሜራ ኦፕሬተር ክፍል ይፍጠሩ

አሁን እኛ camOperator.py የተባለ ፋይል መፍጠር እንፈልጋለን። በእሱ ውስጥ ቀድሞውኑ የፒካሜራ ተግባራትን በመጠቀም ካሜራውን በሚሠሩበት ዘዴዎች የካሜራ ክፍል እናደርጋለን። የካሜራውን እና የእንቅስቃሴ ዳሳሹን ተግባር የምናጣምርበት በሚቀጥለው ደረጃ የዚህን ነገር ምሳሌ እንጠቀማለን።

በዚህ ክፍል ውስጥ የተገለጹት ዘዴዎች የተጠቃሚው ግቤት ከሌለ ለእነዚህ ተለዋዋጮች ነባሪ እሴቶችን በመመስረት ተጠቃሚው የሚያቀርባቸውን ትብነት እና የቆይታ ግብዓቶች በመጠቀም በደህንነት ካሜራ ላይ የ “መዝገብ” ቅንብሮችን ይለውጣሉ።

RPi. GPIO ን እንደ GPIO ያስመጡ

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 መዝገብ (ራስን ፣ ዱ)

በተቆጣጣሪው ቪድዮ ስም = str (datetime.now ()) ቪድዮ ስም = ቪዲዮName.replace (':', ') ቪድዮ ስም = ቪድዮ ስም / n ቦታ (' '' '')) የራስ። ካሜራ። '/home/pi/iotProject/videos/' + videoName + '.h264') time.sleep (dur) self.cam.stop_recording ()

የመከላከያ አሠራር (ራስን ፣ ዱ ፣ ስሜት)

አንድ ሰው በአቅራቢያ ያለ መሆኑን ለማየት ሁል ጊዜ የሚፈትሽ #ዋና የካሜራ ሥራ ፣ አንድ ሰው ለረጅም ጊዜ ከቆየ ፣ መቅዳት እንጀምራለን! ግሎባል ለይቶ i = GPIO.input (11) i == 0: #ከእንቅስቃሴ ዳሳሽ ሲወጣ LOW መለየት = 0 ጊዜ. እንቅልፍ (0.1) elif i == 1: #ከእንቅስቃሴ ዳሳሽ የሚወጣው ከፍተኛ ህትመት ነው (" እንቅስቃሴ ተገኝቷል " +str (አግኝ)) ከተገኘ> = sens*10: self.record (dur) print (" RECORDED ") detect = 0 time. እንቅልፍ (0.1) detect += 1

ደረጃ 9 የመዝገብ ሞጁሉን ይፍጠሩ

ለዚህ ፕሮጀክት የሚያስፈልገው የመጨረሻው ፕሮግራም rec.py በሚባል ፋይል ውስጥ ይፃፋል። ይህ ፋይል ለካሜራው መቼ እንደሚመዘገብ ፣ ለምን ያህል ጊዜ እንደሚመዘገብ እና መቼ/ፎቶግራፍ ለማንሳት/ለ/ለካሜራው ይነግረዋል። ለጽሑፍ ፋይሉ ከደረጃ 5 የተጻፈውን የተጠቃሚ ውሂብ በቋሚነት በመፈተሽ እና በማንበብ ይህንን ያደርጋል። ፋይሉ ከተዘመነ የስሜታዊነት እና የቆይታ እሴቶችን በዚህ መሠረት ያስተካክላል ከዚያም ቀረፃ ወይም ስዕል ከተነሳ ይዘቱን ያስቀምጣል ፒ. ፣ በ.h264 ወይም-j.webp

'' በአገልጋዩ ቅጾች የተቀመጡ የቁጥጥር ተለዋዋጮችን ከንባብ አገልጋዩ ጋር በትይዩ ይሠራል። ቅጾቹ ከገቡ በኋላ የአገልጋዩ መቆጣጠሪያ ተለዋዋጮች በተለየ ፋይል ውስጥ ይቀመጣሉ። የሬክ ሞጁል እነዚህን ተለዋዋጮች ያነባል እና ካሜራውን በእነሱ ላይ ያዘምናል። '' 'camOperator ን ከውጪ ጊዜ ማስመጣት datetime የማስመጣት ጊዜ

rc = camOperator.cameraOperator ()

cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #እዚህ ፣ ዋናው ሉፕ ከመሮጡ በፊት በፋይሉ ውስጥ ያሉትን ይዘቶች ለመሰረዝ በፅሁፍ ሁነታ እንከፍተዋለን እና እንዘጋለን።

#ሰዎች በአቅራቢያ መሆናቸውን ለማየት የሚከታተል ቀጣይ ዙር። እነሱ ከሆኑ ፣ ከዚያ

#ካሜራ መቅዳት ይጀምራል። ይህ ተግባር ይህንን ካሜራ ከሚቆጣጠረው ብልቃጥ #አገልጋይ ጋር በፓራሌል ይሠራል። recordingInProcess = ሐሰት እያለ እውነት ነው #ከሆነ/ይፈትሹ/ይመዝገቡ (recordInProcess == ሐሰት): rc.operation (rc.dur, rc.sens) #በአገልጋዩ ካሜራ ላይ በመመርኮዝ የካሜራውን ቅንብሮች ይለውጡ SettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 በካሜራ ውስጥ ለማቀናበር SetetFile.readlines (): ቅንብር ከሆነ == 0: #ለውጥ ለውጥ rc.dur = int (ቅንብር) elif settingNum == 1: #የስሜት ለውጥ rc.sens = int (ቅንብር)) elif settingNum == 2: #የድርጊት ለውጥ rc.opt = setting settingNum += 1 cameraSettingsFile.close ()

#አንድ ድርጊት ይፈጽሙ

# if rc.opt == "none": # rc.opt == "rec / n" እና recordInProcess == ሐሰት: ህትመት ("የመዝገቡ ትዕዛዙን ከመቆጣጠሪያ") # የአሁኑን ቪድዮ ስም መሰረት በማድረግ ለቪዲዮ ስም ይፍጠሩ = "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 ("record command from ተቆጣጣሪ") rc.cam.stop_recording () recordingInProcess = የውሸት ካሜራ ቅንጅቶች ፋይል = ክፍት ("cameraSettings.txt" ፣ 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile። ጻፍ ("የለም / n") rc.opt = "none / n" elif rc.opt == "pic / n" እና recordInProcess == ሐሰት: ማተም ("ከመቆጣጠሪያው የስዕል ትዕዛዙን ያንሱ") 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. ጻፍ (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile.write ("none / n") rc.opt = "none / n"

ደረጃ 10 አገልጋዩን ያስጀምሩ

አገልጋዩን ያስጀምሩ
አገልጋዩን ያስጀምሩ

SSH ን ወደ ፒ እና ከላይ የሚታየውን የትእዛዝ መስመር በመጠቀም አገልጋዩን ያስጀምሩ።

ደረጃ 11: ይሞክሩት

ይሞክሩት!
ይሞክሩት!
ይሞክሩት!
ይሞክሩት!

የአይፒ አድራሻውን በመጠቀም ድረ -ገጹን ይድረሱ እና ካሜራውን በርቀት መቆጣጠር መቻል አለብዎት!

የሚመከር: