विषयसूची:
- आपूर्ति
- चरण 1: हार्डवेयर को इकट्ठा करें
- चरण 2: सुनिश्चित करें कि आपका पाई इंटरनेट से जुड़ा है
- चरण 3: कैमरा सेट करें
- चरण 4: फ्लास्क स्थापित करें
- चरण 5: एक फॉर्म क्लास बनाएं
- चरण 6: फ्लास्क टेम्पलेट बनाएं
- चरण 7: टेम्पलेट प्रस्तुत करें
- चरण 8: कैमरा ऑपरेटर क्लास बनाएं
- चरण 9: रिकॉर्ड मॉड्यूल बनाएं
- चरण 10: सर्वर शुरू करें
- चरण 11: इसे आज़माएं
वीडियो: रास्पबेरी पाई सुरक्षा कैमरा: 11 कदम (चित्रों के साथ)
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:19
यह रास्पबेरी पाई का उपयोग करके IoT, मोशन एक्टिवेटेड सुरक्षा कैमरा बनाने का चरण-दर-चरण निर्देश है। आप सीखेंगे कि कैसे एक फ्लास्क वेब सर्वर और फॉर्म बनाया जाए जो उपयोगकर्ता को कैमरे की संवेदनशीलता और रिकॉर्डिंग समय को समायोजित करने की अनुमति देता है, मैन्युअल रूप से एक रिकॉर्डिंग शुरू / बंद करता है, और / या एक तस्वीर लेता है जिसे स्थानीय रूप से सहेजा जाएगा।
आपूर्ति
- रास्पबेरी पाई 3
- पाई कैमरा
- पीर मोशन सेंसर
- एसडी कार्ड
- शक्ति का स्रोत
चरण 1: हार्डवेयर को इकट्ठा करें
जबकि पाई बंद है, माइक्रो-एसडी कार्ड को पाई में डालें। पाई पर कैमरा मॉड्यूल पोर्ट में कैमरा मॉड्यूल रिबन केबल डालें। फिर, PRI मोशन डिटेक्टर के 3 पिन (VCC, OUT, और GND लेबल) को Pi के GPIO पिन से कनेक्ट करें। VCC को 5.5V पावर, GND को ग्राउंड से, और OUT को Pi पर 11 पिन करने के लिए कनेक्ट करें।
चरण 2: सुनिश्चित करें कि आपका पाई इंटरनेट से जुड़ा है
अब, पाई को एक शक्ति स्रोत से जोड़कर चालू करें और सत्यापित करें कि आप पिंग कमांड का उपयोग करके इंटरनेट से जुड़े हैं। यदि आप नहीं जानते कि अपने पाई को इंटरनेट से कैसे जोड़ा जाए, तो यहां क्लिक करें।
सुडो पिंग www.google.com
यदि आप सफल होते हैं, तो आप देखेंगे कि Google द्वारा डेटा प्राप्त किया जा रहा है।
इसके अतिरिक्त, आप अपना आईपी पता देखने के लिए ifconfig का उपयोग कर सकते हैं।
सुडो ifconfig
चरण 3: कैमरा सेट करें
कॉन्फ़िगरेशन इंटरफ़ेस खोलने के लिए निम्न आदेश का उपयोग करें, और कैमरे को "इंटरफ़ेसिंग विकल्प" में सक्षम करें।
सुडो रास्पि-कॉन्फ़िगरेशन
रिबूट करने के बाद, आप यह सुनिश्चित करने के लिए अपने कैमरे की स्थिति प्रदर्शित कर सकते हैं कि यह ठीक से जुड़ा हुआ है।
vcgencmd get_camera
अंत में, पिकामेरा मॉड्यूल स्थापित करें।
पिप पिकामेरा स्थापित करें
चरण 4: फ्लास्क स्थापित करें
पायथन के लिए फ्लास्क और फ्लास्क-रेस्टफुल मॉड्यूल स्थापित करें:
sudo apt-पायथन-देव स्थापित करें अजगर-पाइप
पायथन-एम पाइप फ्लास्क फ्लास्क-रेस्टफुल स्थापित करें
इसके बाद, हम फॉर्म बनाने के लिए उपयोग किए जाने वाले पायथन फ्लास्क मॉड्यूल को स्थापित करेंगे।
पाइप स्थापित फ्लास्क-wtf
चरण 5: एक फॉर्म क्लास बनाएं
अपनी सभी फाइलों को स्टोर करने के लिए iotProject नाम की एक डायरेक्टरी बनाएं।
सुडो एमकेडीआईआर आईओटीप्रोजेक्ट
"CamControl.py" नाम की एक अजगर फ़ाइल बनाएँ।
sudo nano camControl.py
इस फाइल में हम अपना फॉर्म क्लास बनाएंगे, जो हमें टेक्स्ट बॉक्स और एक ड्रॉप डाउन मेनू के साथ एक वेब फॉर्म बनाने की अनुमति देता है ताकि उपयोगकर्ता कैमरे की सेटिंग्स को बदल सके, रिकॉर्डिंग को मैन्युअल रूप से शुरू/बंद कर सके और वीडियो कैप्चर कर सके।
Flask_wtf आयात से FlaskForm से wtforms.validators आयात डेटा wtforms से आयात सबमिट फ़ील्ड से wtforms आयात सत्यापनकर्ता, इंटीजरफ़िल्ल्ड, बूलियनफ़िल्ल्ड, SelectField आयात करें
क्लास कैमफ्रेम (फ्लास्कफॉर्म):
videoDuration = IntegerField ('रिकॉर्डिंग समय (सेकंड में)')
संवेदनशीलता = पूर्णांक फ़ील्ड ('गति संवेदनशीलता (सीमा 2500-10000)\n संख्या जितनी अधिक होगी, कैमरा उतना ही कम संवेदनशील होगा', सत्यापनकर्ता = [सत्यापनकर्ता। संख्या श्रेणी (न्यूनतम = 2500, अधिकतम = 10000, संदेश = 'सीमा से बाहर मूल्य')])
विकल्प = चयन फ़ील्ड ('विकल्प', विकल्प = [('कोई नहीं', 'कोई कार्रवाई नहीं'), ('आरईसी', 'रिकॉर्डिंग शुरू करें'), ('रोकें', 'रिकॉर्डिंग रोकें'), ('तस्वीर', 'तस्वीर लें')])
सबमिट करें = सबमिट फ़ील्ड ('सबमिट करें')
चरण 6: फ्लास्क टेम्पलेट बनाएं
उपयोगकर्ता इंटरफ़ेस बनाने के लिए, आपको एक फ्लास्क टेम्पलेट डिज़ाइन करना होगा जो आपके द्वारा अभी बनाए गए फॉर्म का उपयोग करता है। यह फ़ाइल html में लिखी जाएगी, और टेम्प्लेट नामक फ़ोल्डर में संग्रहीत की जाएगी, जो आपके प्रपत्र के समान निर्देशिका में होनी चाहिए।
अपने टेम्प्लेट फोल्डर के अंदर, index.html नाम की एक फाइल बनाएं। इस फ़ाइल के भीतर, ऊपर दिखाए गए कोड को दोहराएं।
चरण 7: टेम्पलेट प्रस्तुत करें
अब एक फाइल बनाने का समय है जो टेम्पलेट को प्रस्तुत करता है। AppCam.py नाम की एक फ़ाइल बनाएँ (सुनिश्चित करें कि अब आप टेम्प्लेट फ़ोल्डर में नहीं हैं)। टेम्प्लेट में उपयोग की जाने वाली किसी भी गतिशील सामग्री को रेंडर_टेम्प्लेट () में कॉल में नामित तर्क के रूप में उपयोग किया जाना चाहिए।
फ्लास्क आयात फ्लास्क से कैमकंट्रोल आयात करें, रेंडर_टेम्पलेट, अनुरोध, फ्लास्क_रेस्टफुल आयात संसाधन से प्रतिक्रिया, एपीआई, रेकपर्स
ऐप = फ्लास्क (_name_)
app.config['SECRET_KEY'] = '13542' api = Api (ऐप)
पार्सर = reqparse. RequestParser ()
parser.add_argument('dur', type=int, help='वीडियो की अवधि जब गति का पता चलता है') parser.add_argument('sens', type=int, help='Recording को ट्रिगर करने के लिए आवश्यक गति का स्तर') पार्सर.add_argument('opt', type=str, help='मैन्युअल रूप से एक वीडियो रिकॉर्ड करें या एक इमेज कैप्चर करें')
वर्ग अद्यतन (संसाधन):
#Stuff for wtforms def post(self): args = parser.parse_args() #rc.input(args['dur'], args['sens'], args['opt']) # उस टेक्स्ट फाइल को लिखें जो समानांतर कैमरे में चल रहे कैमरे से बात करता हैसेटिंग्सफाइल = ओपन ("कैमरासेटिंग्स। टीएक्सटी", 'डब्ल्यू') कैमरासेटिंग्सफाइल.राइट (आर्ग्स ['ड्यूर'] + '\ n') # ड्यूर कैमरासेटिंग्सफाइल लिखें। + '\n') #लिखें सेंस कैमरासेटिंग्सफाइल.लिखें(args['opt'] + '\n') #write opt cameraSettingsFile.close() return {'dur': args['dur'], 'sens': args['sense'], 'opt':args['opt']}
@ app.route ('/', तरीके = ['प्राप्त करें', 'पोस्ट'])
डीईएफ़ इंडेक्स (): "" "कंट्रोलर होम पेज" "" फॉर्म = कैमकंट्रोल। कैमफ्रेम () # यह एक फॉर्म है अगर request.method == 'POST': प्रिंट (request.form) args = [i for i इन रिक्वेस्ट.form.items()] #rc.input(int(args[0][1]), int(args[1][1]), args[2][1]) cameraSettingsFile = open("cameraSettings.txt ", 'w') कैमरासेटिंग्सफाइल.लिखें (तर्क [0] [1] + '\ n') args[2][1] + '\n') #राइट कैमरासेटिंग्सफाइल.क्लोज () इमेज डिक्शनरी = {"फाइलनाम":"इमेज.जेपीजी"} रिटर्न रेंडर_टेम्पलेट ('इंडेक्स.एचटीएमएल', फॉर्म = फॉर्म, इमेज = इमेज डिक्शनरी)
api.add_resource (अपडेट करें, '/अपडेट/')
अगर _name_ == '_main_':
app.run (होस्ट = '0.0.0.0', पोर्ट = 80, डिबग = ट्रू, थ्रेडेड = ट्रू)
चरण 8: कैमरा ऑपरेटर क्लास बनाएं
अब हम camOperator.py नाम की एक फाइल बनाना चाहते हैं। इसमें हम पहले से उपलब्ध PiCamera फ़ंक्शंस का उपयोग करते हुए, कैमरे को संचालित करने के तरीकों के साथ एक कैमरा क्लास बनाएंगे। हम अगले चरण में इस ऑब्जेक्ट के एक उदाहरण का उपयोग करेंगे जहां हम कैमरे की कार्यक्षमता और गति संवेदक को जोड़ेंगे।
इस वर्ग में परिभाषित विधियां उपयोगकर्ता द्वारा प्रदान की जाने वाली संवेदनशीलता और अवधि इनपुट का उपयोग करके सुरक्षा कैमरे पर "रिकॉर्ड" सेटिंग्स को बदल देती हैं, जबकि उपयोगकर्ता इनपुट मौजूद नहीं होने पर इन चरों के लिए डिफ़ॉल्ट मान स्थापित करते हैं।
RPI. GPIO को GPIO के रूप में आयात करेंआयात समय डेटाटाइम आयात डेटाटाइम से पिकैमरा आयात करें
GPIO.सेटमोड (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()
डीईएफ़ ऑपरेशन (सेल्फ, ड्यूर, सेंस):
#कैमरे का मुख्य संचालन जो यह देखने के लिए लगातार जांच करता है कि कोई इंसान आस-पास है या नहीं, अगर कोई इंसान काफी देर तक आसपास रहता है, तो हम रिकॉर्डिंग शुरू कर देते हैं! ग्लोबल डिटेक्ट i = GPIO.input(11) अगर i == 0: # जब मोशन सेंसर से आउटपुट लो डिटेक्ट = 0 टाइम हो। स्लीप (0.1) elif i == 1: # जब मोशन सेंसर से आउटपुट हाई प्रिंट हो (" मोशन डिटेक्ट "+str(डिटेक्ट)) अगर डिटेक्ट>= सेंस*10: सेल्फ.रिकॉर्ड (ड्यूर) प्रिंट ("रिकॉर्डेड") डिटेक्ट = 0 टाइम। स्लीप (0.1) डिटेक्ट + = 1
चरण 9: रिकॉर्ड मॉड्यूल बनाएं
इस परियोजना के लिए आवश्यक अंतिम कार्यक्रम rec.py नामक फ़ाइल में लिखा जाएगा। यह फ़ाइल कैमरे को बताती है कि कब रिकॉर्ड करना है, कब तक रिकॉर्ड करना है और कब/कब तस्वीर लेनी है। यह चरण 5 से टेक्स्ट फ़ाइल में लिखे गए उपयोगकर्ता डेटा की लगातार जांच और पढ़ने के द्वारा ऐसा करता है। यदि फ़ाइल को अपडेट किया गया है तो यह संवेदनशीलता और अवधि मानों को तदनुसार समायोजित करता है और फिर, यदि कोई रिकॉर्डिंग या चित्र लिया जाता है, तो यह सामग्री को सहेजता है pi, या तो.h264 या-j.webp
'' 'फ्लास्क सर्वर के समानांतर चलता है, सर्वर फॉर्म द्वारा निर्धारित नियंत्रण चर को पढ़ता है। प्रपत्र जमा करने के बाद सर्वर नियंत्रण चर एक अलग फ़ाइल में सेट किए जाते हैं। आरई मॉड्यूल इन चरों को पढ़ता है और उनके आधार पर कैमरे को अपडेट करता है। ''' डेटाटाइम आयात डेटाटाइम आयात समय से कैमऑपरेटर आयात करें
आरसी = कैमऑपरेटर.कैमराऑपरेटर ()
CameraSettingsFile = open("cameraSettings.txt", 'w') cameraSettingsFile.close() # यहाँ, हम मुख्य लूप के चलने से पहले फ़ाइल के भीतर की सामग्री को हटाने के लिए राइट मोड में खोलते और बंद करते हैं
#एक निरंतर लूप जो यह देखने के लिए देखता है कि क्या मनुष्य आस-पास हैं। अगर वे हैं, तो
#कैमरा रिकॉर्डिंग शुरू करता है। यह फ़ंक्शन इस कैमरे को नियंत्रित करने वाले फ्लास्क #server के साथ समानांतर में चलता है। रिकॉर्डिंगइनप्रोसेस = गलत जबकि सही: # चेक/रिकॉर्ड अगर (रिकॉर्डिंगइनप्रोसेस == गलत): आरसी.ऑपरेशन (आरसी.डीयूआर, आरसी.सेंस), 'r') सेटिंगNum = 0 कैमरा सेटिंग में सेटिंग के लिए।) एलिफ सेटिंगनम == 2: #एक्शन चेंज आरसी.ऑप्ट = सेटिंग सेटिंगनम += 1 कैमरासेटिंग्सफाइल.क्लोज ()
#कार्रवाई निष्पादित करें
# if rc.opt == "none": # जारी रखें अगर rc.opt == "rec\n" और रिकॉर्डिंगइनप्रोसेस == गलत: प्रिंट ("कंट्रोलर से रिकॉर्ड कमांड चलाना") # वर्तमान समय के वीडियो के आधार पर वीडियो के लिए नाम जेनरेट करें = "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" और RecordingInProcess == True: Print("नियंत्रक से रिकॉर्ड कमांड रोकना") rc.cam.stop_recording() RecordingInProcess = झूठा कैमरासेटिंग्सफाइल = खुला ("कैमरासेटिंग्स.txt", 'डब्ल्यू') कैमरासेटिंग्सफाइल.लिखें (str(rc.dur)+'\n') कैमरासेटिंग्सफाइल.लिखें (str(rc.sens)+'\n') कैमरासेटिंग्सफाइल। write("none\n") rc.opt = "none\n" elif rc.opt == "pic\n" और RecordingInProcess == False: Print ("नियंत्रक से एक तस्वीर कमांड स्नैप करें") चित्रनाम = "snappedPic_ "+str(datetime.now ()) चित्रनाम = चित्रनाम.बदलें(':', ') चित्रनाम = चित्रनाम.बदलें('।', ') rc.cam.st art_preview() time.sleep(5) rc.cam.capture('Pictures/' + PicturesName + '.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 को pi में डालें और ऊपर दिखाए गए कमांड लाइन का उपयोग करके सर्वर शुरू करें।
चरण 11: इसे आज़माएं
आईपी पते का उपयोग करके वेबपेज तक पहुंचें और आपको दूर से कैमरे को नियंत्रित करने में सक्षम होना चाहिए!
सिफारिश की:
रास्पबेरी पाई 3 बी में एचडीएमआई के बिना रास्पियन स्थापित करना - रास्पबेरी पाई 3बी के साथ शुरुआत करना - अपना रास्पबेरी पाई सेट करना 3: 6 कदम
रास्पबेरी पाई 3 बी में एचडीएमआई के बिना रास्पियन स्थापित करना | रास्पबेरी पाई 3बी के साथ शुरुआत करना | अपना रास्पबेरी पाई 3 सेट करना: जैसा कि आप में से कुछ लोग जानते हैं कि रास्पबेरी पाई कंप्यूटर काफी शानदार हैं और आप पूरे कंप्यूटर को सिर्फ एक छोटे बोर्ड पर प्राप्त कर सकते हैं। रास्पबेरी पाई 3 मॉडल बी में क्वाड-कोर 64-बिट एआरएम कोर्टेक्स ए 53 है। 1.2 गीगाहर्ट्ज़ पर क्लॉक किया गया। यह पाई 3 को लगभग 50
रास्पबेरी पाई के साथ गृह सुरक्षा: 6 कदम (चित्रों के साथ)
रास्पबेरी पाई के साथ गृह सुरक्षा: यह एक सरल उपाय है जो आपको अपने अपार्टमेंट से बाहर निकलने पर अधिक आराम महसूस करा सकता है - अवांछित मेहमानों द्वारा देखी जा रही अपनी संपत्ति की तस्वीरों के साथ ईमेल प्राप्त करें, अपनी सुरक्षा प्रणाली को सबसे आसान और विश्वसनीय तरीके से बांटें ( दबाएँ
रास्पबेरी पाई के साथ एक रेफ्रिजरेटर के लिए चेहरे की पहचान सुरक्षा प्रणाली: 7 कदम (चित्रों के साथ)
रास्पबेरी पाई के साथ एक रेफ्रिजरेटर के लिए चेहरे की पहचान सुरक्षा प्रणाली: इंटरनेट ब्राउज़िंग मैंने पाया है कि सुरक्षा प्रणालियों की कीमतें 150 डॉलर से 600 डॉलर और उससे अधिक तक भिन्न होती हैं, लेकिन सभी समाधान (यहां तक कि बहुत महंगे वाले) को अन्य के साथ एकीकृत नहीं किया जा सकता है आपके घर पर स्मार्ट उपकरण! उदाहरण के लिए, आप सेट नहीं कर सकते
यूनिकॉर्न कैमरा - रास्पबेरी पाई जीरो डब्ल्यू नोआईआर 8एमपी कैमरा बिल्ड: 7 कदम (चित्रों के साथ)
UNICORN CAMERA - रास्पबेरी पाई ज़ीरो W NoIR 8MP कैमरा बिल्ड: पाई ज़ीरो W NoIR 8MP कैमरा बिल्ड . यह सबसे किफायती और विन्यास योग्य
R-PiAlerts: रास्पबेरी पाई के साथ वाईफाई आधारित सुरक्षा प्रणाली बनाएं: 8 कदम (चित्रों के साथ)
R-PiAlerts: रास्पबेरी पाई के साथ एक वाईफाई आधारित सुरक्षा प्रणाली बनाएं: अपने डेस्क पर काम करते समय, अचानक आपको दूर की आवाज सुनाई देती है। क्या कोई अभी घर आया है? मेरी कार मेरे घर के सामने खड़ी है, क्या किसी ने मेरी कार में सेंध लगाई? क्या आप नहीं चाहते कि आपको अपने फोन पर या अपने डेस्क पर सूचना मिले ताकि आप तय कर सकें कि कब