রাস্পবেরি পাই নিরাপত্তা ক্যামেরা: 11 টি ধাপ (ছবি সহ)
রাস্পবেরি পাই নিরাপত্তা ক্যামেরা: 11 টি ধাপ (ছবি সহ)
Anonim
রাস্পবেরি পাই নিরাপত্তা ক্যামেরা
রাস্পবেরি পাই নিরাপত্তা ক্যামেরা

রাস্পবেরি পাই ব্যবহার করে কিভাবে একটি আইওটি, মোশন অ্যাক্টিভেটেড সিকিউরিটি ক্যামেরা তৈরি করা যায় সে বিষয়ে এটি একটি ধাপে ধাপে নির্দেশযোগ্য। আপনি শিখবেন কিভাবে একটি ফ্লাস্ক ওয়েব সার্ভার এবং ফর্ম তৈরি করতে হয় যা ব্যবহারকারীকে ক্যামেরার সংবেদনশীলতা এবং রেকর্ডিংয়ের সময় সামঞ্জস্য করতে, ম্যানুয়ালি একটি রেকর্ডিং শুরু/বন্ধ করতে এবং/অথবা একটি ছবি তুলতে পারে যা স্থানীয়ভাবে সংরক্ষণ করা হবে।

সরবরাহ

  • রাস্পবেরি পাই 3
  • পাই ক্যামেরা
  • পিআইআর মোশন সেন্সর
  • এসডি কার্ড
  • শক্তির উৎস

ধাপ 1: হার্ডওয়্যার একত্রিত করুন

হার্ডওয়্যার একত্রিত করুন
হার্ডওয়্যার একত্রিত করুন
হার্ডওয়্যার একত্রিত করুন
হার্ডওয়্যার একত্রিত করুন
হার্ডওয়্যার একত্রিত করুন
হার্ডওয়্যার একত্রিত করুন
হার্ডওয়্যার একত্রিত করুন
হার্ডওয়্যার একত্রিত করুন

যখন Pi বন্ধ থাকে, Pi- এ মাইক্রো-এসডি কার্ড োকান। Pi তে ক্যামেরা মডিউল পোর্টে ক্যামেরা মডিউল রিবন ক্যাবল োকান। তারপরে, পিআরআই মোশন ডিটেক্টরের 3 টি পিন (লেসযুক্ত ভিসিসি, আউট এবং জিএনডি) পিআই এর জিপিআইও পিনের সাথে সংযুক্ত করুন। VCC কে 5.5V পাওয়ার, GND থেকে গ্রাউন্ড এবং Pi এ 11 পিন করার জন্য OUT কে সংযুক্ত করুন।

পদক্ষেপ 2: নিশ্চিত করুন যে আপনার পাই ইন্টারনেটের সাথে সংযুক্ত

নিশ্চিত করুন যে আপনার পাই ইন্টারনেটের সাথে সংযুক্ত
নিশ্চিত করুন যে আপনার পাই ইন্টারনেটের সাথে সংযুক্ত

এখন, একটি পাওয়ার উৎসের সাথে সংযোগ করে পাই চালু করুন এবং যাচাই করুন যে আপনি পিং কমান্ড ব্যবহার করে ইন্টারনেটের সাথে সংযুক্ত। আপনি যদি আপনার Pi কে ইন্টারনেটে কিভাবে সংযুক্ত করতে জানেন না, এখানে ক্লিক করুন।

সুডো পিং www.google.com

আপনি যদি সফল হন, তাহলে আপনার দেখা উচিত যে ডেটা গুগল দ্বারা প্রাপ্ত হচ্ছে।

উপরন্তু, আপনি আপনার আইপি ঠিকানা দেখতে ifconfig ব্যবহার করতে পারেন।

sudo ifconfig

ধাপ 3: ক্যামেরা সেট আপ করুন

কনফিগারেশন ইন্টারফেসটি খুলতে নিম্নলিখিত কমান্ডটি ব্যবহার করুন এবং "ইন্টারফেসিং বিকল্পগুলিতে" ক্যামেরাটি সক্ষম করুন।

sudo raspi-config

রিবুট করার পরে, আপনি আপনার ক্যামেরার অবস্থা প্রদর্শন করতে পারেন যাতে এটি সঠিকভাবে সংযুক্ত থাকে।

vcgencmd get_camera

সবশেষে, পিকামেরা মডিউল ইনস্টল করুন।

পিপ পিকামেরা ইনস্টল করুন

ধাপ 4: ফ্লাস্ক ইনস্টল করুন

পাইথনের জন্য ফ্লাস্ক এবং ফ্লাস্ক-রেসফুল মডিউল ইনস্টল করুন:

sudo apt-get python-dev python-pip ইনস্টল করুন

python -m pip install flask flask -restful

পরবর্তী, আমরা ফর্ম তৈরির জন্য ব্যবহৃত একটি পাইথন ফ্লাস্ক মডিউল ইনস্টল করব।

পিপ ইনস্টল ফ্লাস্ক-ডব্লিউটিএফ

ধাপ 5: একটি ফর্ম ক্লাস তৈরি করুন

আপনার সমস্ত ফাইল সংরক্ষণ করতে iotProject নামে একটি ডিরেক্টরি তৈরি করুন।

sudo mkdir iotProject

"CamControl.py" নামে একটি পাইথন ফাইল তৈরি করুন।

sudo nano camControl.py

এই ফাইলে আমরা আমাদের ফর্ম ক্লাস তৈরি করব, যা আমাদের পাঠ্য বাক্স এবং একটি ড্রপ ডাউন মেনু সহ একটি ওয়েব ফর্ম তৈরি করতে দেয় যাতে ব্যবহারকারী ক্যামেরার সেটিংস পরিবর্তন করতে পারে, ম্যানুয়ালি একটি রেকর্ডিং শুরু করতে/বন্ধ করতে পারে এবং ভিডিও ক্যাপচার করতে পারে।

flask_wtf থেকে আমদানি FlaskFormfrom wtforms.validators থেকে আমদানি ডেটা wtforms আমদানি থেকে প্রয়োজন SubmitField wtforms আমদানি যাচাইকারী, IntegerField, BooleanField, SelectField থেকে

ক্লাস ক্যামফ্রেম (ফ্লাস্কফর্ম):

videoDuration = IntegerField ('রেকর্ডিং টাইম (সেকেন্ডে)')

সংবেদনশীলতা = পূর্ণসংখ্যা ক্ষেত্র ('গতি সংবেদনশীলতা (পরিসর 2500-10000) n সংখ্যা যত বেশি হবে ক্যামেরা তত কম সংবেদনশীল', 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'), ('ছবি', 'ছবি তোলা')])

জমা দিন = জমা দিন ('জমা দিন')

ধাপ 6: একটি ফ্লাস্ক টেমপ্লেট তৈরি করুন

একটি ফ্লাস্ক টেমপ্লেট তৈরি করুন
একটি ফ্লাস্ক টেমপ্লেট তৈরি করুন

ইউজার ইন্টারফেস তৈরি করতে, আপনাকে অবশ্যই একটি ফ্লাস্ক টেমপ্লেট ডিজাইন করতে হবে যা আপনার তৈরি করা ফর্ম ব্যবহার করে। এই ফাইলটি এইচটিএমএল -এ লেখা হবে এবং টেমপ্লেট নামে একটি ফোল্ডারে সংরক্ষণ করা হবে, যা আপনার ফর্মের মতো একই ডিরেক্টরিতে থাকা উচিত।

আপনার টেমপ্লেট ফোল্ডারের ভিতরে, index.html নামে একটি ফাইল তৈরি করুন। এই ফাইলের মধ্যে, উপরে দেখানো কোডের প্রতিলিপি করুন।

ধাপ 7: টেমপ্লেট রেন্ডার করুন

এখন এটি একটি ফাইল তৈরি করার সময় যা টেমপ্লেটটি রেন্ডার করে। AppCam.py নামে একটি ফাইল তৈরি করুন (নিশ্চিত করুন যে আপনি আর টেমপ্লেট ফোল্ডারে নেই)। টেমপ্লেটে ব্যবহৃত যেকোনো ডায়নামিক কন্টেন্ট render_template () -এ কল করার জন্য নামযুক্ত যুক্তি হিসেবে ব্যবহার করতে হবে।

আমদানি ক্যাম কন্ট্রোল ফ্লাস্ক আমদানি ফ্লাস্ক, রেন্ডার_টেমপ্লেট, রিকুয়েস্ট, রেসপন্স ফ্লাস্ক_রেস্টফুল ইম্পোর্ট রিসোর্স, এপিআই, রিকপারস থেকে

অ্যাপ = ফ্লাস্ক (_ নাম_)

app.config ['SECRET_KEY'] = '13542' api = Api (অ্যাপ)

পার্সার = reqparse. RequestParser ()

parser.add_argument ('dur', 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']) #টেক্সট ফাইলে লিখুন সমান্তরাল ক্যামেরা সেটিংফাইলে চলমান ক্যামেরার সাথে কথা বলুন। + '\ n') #write sens cameraSettingsFile.write (args ['opt'] + '\ n') #write opt cameraSettingsFile.close () return {'dur': args ['dur'], 'sens': args ['sense'], 'opt': args ['opt']}

@app.route ('/', পদ্ধতি = ['পান', 'পোস্ট'])

def index (): "" "কন্ট্রোলার হোম পেজ" "" form = camControl.camFrame () #এই হল একটি ফর্ম যদি 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 dur cameraSettingsFile.write (args [1] [1] + '\ n') #write sens cameraSettingsFile.write (args [2] [1] + '\ n') #write opt 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 নামে একটি ফাইল তৈরি করতে চাই। এটিতে আমরা ক্যামেরা চালানোর পদ্ধতিগুলির সাথে একটি ক্যামেরা ক্লাস তৈরি করব, ইতিমধ্যে উপলব্ধ পাইক্যামেরা ফাংশনগুলি ব্যবহার করে। আমরা পরবর্তী ধাপে এই বস্তুর একটি উদাহরণ ব্যবহার করব যেখানে আমরা ক্যামেরা এবং মোশন সেন্সরের কার্যকারিতা একত্রিত করব।

এই শ্রেণীতে সংজ্ঞায়িত পদ্ধতি ব্যবহারকারীর দেওয়া সংবেদনশীলতা এবং সময়কালের ইনপুট ব্যবহার করে নিরাপত্তা ক্যামেরার "রেকর্ড" সেটিংস পরিবর্তন করে, যখন ব্যবহারকারীর ইনপুট উপস্থিত না থাকলে এই ভেরিয়েবলের জন্য ডিফল্ট মান স্থাপন করে।

GPIO হিসাবে RPi. GPIO আমদানি করুন আমদানি সময় আমদানি তারিখ থেকে আমদানি পিকামেরা

GPIO.setmode (GPIO. BOARD)

GPIO.setup (11, GPIO. IN)

সনাক্ত = 0

ক্লাস ক্যামেরা অপারেটর:

def _init _ (স্ব):

#constructor self.cam = picamera. PiCamera () self.data = self.dur = 10 self.sens = 2500 self.opt = "none"

ডিফ রেকর্ড (স্ব, দুর):

নিয়ামক দ্বারা নির্ধারিত সময়সীমার জন্য রেকর্ড #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 অপারেশন (স্ব, dur, sens):

#ক্যামেরার প্রধান অপারেশন যা ক্রমাগত পরীক্ষা করে দেখছে যে কোন মানুষ কাছাকাছি আছে কিনা, যদি একজন মানুষ যথেষ্ট সময় ধরে থাকে, আমরা রেকর্ডিং শুরু করি! গ্লোবাল ডিটেক্ট i = GPIO.input (11) যদি i == 0: #যখন মোশন সেন্সর থেকে আউটপুট LOW সনাক্ত হয় = 0 সময়। ঘুম (0.1) এলিফ i == 1: #যখন মোশন সেন্সর থেকে আউটপুট হয় হাই প্রিন্ট ( মোশন সনাক্ত করা হয়েছে

ধাপ 9: রেকর্ড মডিউল তৈরি করুন

এই প্রকল্পের জন্য প্রয়োজনীয় শেষ প্রোগ্রামটি rec.py নামে একটি ফাইলে লেখা হবে। এই ফাইলটি ক্যামেরাকে জানায় কখন রেকর্ড করতে হবে, কতক্ষণ রেকর্ড করতে হবে এবং যদি/কখন ছবি তুলতে হয়। এটি ধাপ 5 থেকে টেক্সট ফাইলে লিখিত ব্যবহারকারীর ডেটা ক্রমাগত পরীক্ষা করে এবং পড়ার মাধ্যমে এটি করে থাকে। pi, হয়.h264 অথবা-j.webp

ফ্লাস্ক সার্ভারের সাথে সমান্তরালভাবে সঞ্চালিত হয়, সার্ভার ফর্ম দ্বারা নির্ধারিত নিয়ন্ত্রণ ভেরিয়েবল পড়া। সার্ভার কন্ট্রোল ভেরিয়েবলগুলি ফর্ম জমা দেওয়ার পরে একটি পৃথক ফাইলে সেট করা হয়। Rec মডিউল এই ভেরিয়েবলগুলো পড়ে এবং সেগুলোর উপর ভিত্তি করে ক্যামেরা আপডেট করে। ডেটটাইম আমদানি ডেটটাইম আমদানি সময় থেকে ক্যামো অপারেটর আমদানি করুন

rc = camOperator.cameraOperator ()

cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.close () #এখানে, মেইন লুপ চালানোর আগে ফাইলের মধ্যে থাকা বিষয়বস্তু মুছে ফেলার জন্য আমরা রাইট মোডে খুলি এবং বন্ধ করি

#একটি ক্রমাগত লুপ যা দেখছে মানুষ কাছাকাছি আছে কিনা। যদি তারা হয়, তাহলে

#ক্যামেরা রেকর্ডিং শুরু করে। এই ফাংশনটি ফ্লাস্ক #সার্ভারের সাথে প্যারালেলে চলে যা এই ক্যামেরাটি নিয়ন্ত্রণ করে। রেকর্ডিং ইনপ্রসেস = মিথ্যা যখন সত্য: #চেক/রেকর্ড যদি (recordingInProcess == মিথ্যা): rc.operation (rc.dur, rc.sens) #সার্ভারের উপর ভিত্তি করে ক্যামেরার সেটিংস পরিবর্তন করুন cameraSettingsFile = open ("cameraSettings.txt", 'r') settingNum = 0 cameraSettingsFile.readlines এ সেটিং করার জন্য) এলিফ সেটিং নাম == 2: #ক্রিয়া পরিবর্তন

#একটি কর্ম সম্পাদন করুন

# if rc.opt == "none": # continue if rc.opt == "rec / n" এবং recordingInProcess == মিথ্যা: মুদ্রণ ("কন্ট্রোলার থেকে রেকর্ড কমান্ড চালানো") # বর্তমান সময়ের ভিডিও নামের উপর ভিত্তি করে ভিডিওর জন্য নাম তৈরি করুন = "snappedVid _"+str (datetime.now ()) videoName = videoName.replace (':', ') videoName = videoName.replace ('। ',') rc.cam.start_recording ('/home/pi/iotProject ভিডিও = মিথ্যা cameraSettingsFile = open ("cameraSettings.txt", 'w') cameraSettingsFile.write (str (rc.dur)+'\ n') cameraSettingsFile.write (str (rc.sens)+'\ n') cameraSettingsFile। লিখুন ("none / n") rc.opt = "none / n" elif rc.opt == "pic / n" এবং recordingInProcess == মিথ্যা: মুদ্রণ করুন ("কন্ট্রোলারের কাছ থেকে একটি পিক কমান্ড নিন") 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: এটি চেষ্টা করুন

চেষ্টা কর!
চেষ্টা কর!
চেষ্টা কর!
চেষ্টা কর!

আইপি ঠিকানা ব্যবহার করে ওয়েবপেজে প্রবেশ করুন এবং আপনি দূর থেকে ক্যামেরা নিয়ন্ত্রণ করতে সক্ষম হবেন!

প্রস্তাবিত: