विषयसूची:

वाहनों के लिए इम्पैक्ट रिकॉर्डर: 18 कदम (चित्रों के साथ)
वाहनों के लिए इम्पैक्ट रिकॉर्डर: 18 कदम (चित्रों के साथ)

वीडियो: वाहनों के लिए इम्पैक्ट रिकॉर्डर: 18 कदम (चित्रों के साथ)

वीडियो: वाहनों के लिए इम्पैक्ट रिकॉर्डर: 18 कदम (चित्रों के साथ)
वीडियो: 12 0 12 transformer rectifier kaise banaye | ऐसे कोई नहीं सिखायेगा | how to make 12 0 12 rectifier 2024, दिसंबर
Anonim
वाहनों के लिए प्रभाव रिकॉर्डर
वाहनों के लिए प्रभाव रिकॉर्डर

इम्पैक्ट रिकॉर्डर को वाहन चलाते समय या स्थिर रहते हुए वाहन पर पड़ने वाले प्रभाव को रिकॉर्ड करने के लिए डिज़ाइन किया गया है। प्रभावों को रीडिंग के साथ-साथ वीडियो/चित्र के रूप में डेटाबेस में संग्रहीत किया जाता है। प्रभाव पर दूरस्थ उपयोगकर्ता को वास्तविक समय में सत्यापित किया जा सकता है, और दूरस्थ उपयोगकर्ता सहेजे गए वीडियो को देखने या पीआई कैमरे तक रिमोट एक्सेस लेने और तदनुसार घटनाओं को देखने के बजाय देख सकता है.

चरण 1: पुर्जे और सहायक उपकरण

(१) रास्पबेरी पाई ३ या बेहतर: कम्प्यूटेशनल शक्ति की आवश्यकता

(२) रास्पबेरी पाई सेंस हैट

(3) रास्पबेरी पाई कैमरा / यूएसबी कैमरा

(4) नवीनतम रास्पियन छवि के साथ मेमोरी कार्ड (नोड रेड का समर्थन करना चाहिए, लगभग हर नवीनतम छवि करता है)

(५) बिजली की आपूर्ति कम से कम २.१ ए (मैंने कार में स्टैंडअलोन ऑपरेशन के लिए बैटरी बैंक का उपयोग किया है)

चरण 2: भागों का विवरण: सेंस हैट

भाग विवरण: नब्ज हट
भाग विवरण: नब्ज हट

Sense HAT में 8×8 RGB LED मैट्रिक्स, पांच बटन वाला जॉयस्टिक है और इसमें निम्नलिखित सेंसर शामिल हैं:

  • जाइरोस्कोप
  • accelerometer
  • मैग्नेटोमीटर
  • तापमान
  • बैरोमेट्रिक
  • दबाव
  • नमी

सेंस हैट के साथ काम करने के बारे में अधिक जानकारी निम्नलिखित लिंक से प्राप्त की जा सकती है: Sense_Hat

सेंस हैट के लिए एपीआई यहां होस्ट किया गया है: Sense_hat_API

सेंस-हैट प्रोग्रामिंग के लिए कोड बाद के चरणों में शामिल किया गया है। सेंस हैट कोड को यहां होस्ट किए गए सिम्युलेटर पर भी सिम्युलेट किया जा सकता है: सेंस-हैट सिम्युलेटर

चरण 3: संयोजन: प्रभाव रिकॉर्डर

कोडांतरण: प्रभाव रिकॉर्डर
कोडांतरण: प्रभाव रिकॉर्डर
कोडांतरण: प्रभाव रिकॉर्डर
कोडांतरण: प्रभाव रिकॉर्डर
कोडांतरण: प्रभाव रिकॉर्डर
कोडांतरण: प्रभाव रिकॉर्डर
कोडांतरण: प्रभाव रिकॉर्डर
कोडांतरण: प्रभाव रिकॉर्डर
  • कोडांतरण सरल है क्योंकि सेंस हैट को पाई के ऊपर स्टैक करने की आवश्यकता होती है (नामित माउंटिंग बोल्ट सेंस हैट के साथ प्रदान किए जाते हैं)।
  • यूएसबी कैमरा या पीआई कैमरा जोड़ा जा सकता है। ट्यूटोरियल में, पाई कैमरा पर विचार किया जाता है और उसी के अनुसार कोडिंग की जाती है।
  • मेमोरी कार्ड डालें और पायथन कोड और नोड-रेड को कॉन्फ़िगर करें (कॉन्फ़िगरेशन और कोड आगे के चरणों में कवर किया गया है)

ऊपर दिया गया चित्र पीआई-कैमरा दिखाता है जो फ्लैट रिबन केबल के माध्यम से पीआई से जुड़ा हुआ है

चरण 4: कोडांतरण: कार के डैश बोर्ड पर प्रभाव रिकॉर्डर

कोडांतरण: कार के डैश बोर्ड पर प्रभाव रिकॉर्डर
कोडांतरण: कार के डैश बोर्ड पर प्रभाव रिकॉर्डर

रिकॉर्डर को माउंट करने के लिए, मैंने दो तरफा टेप का उपयोग किया है, इसका फायदा यह है कि रिकॉर्डर को आसानी से अलग-अलग स्थिति में स्थानांतरित किया जा सकता है, जो भी आपकी कार के लिए सबसे उपयुक्त हो।

आगे के कैमरे को लंबवत रूप से माउंट किया गया है जैसा कि दिखाया गया है, उसी डबल साइड टेप का उपयोग करके, अगली पंक्ति में एक तैयार इंटरनेट कनेक्शन के साथ एक शक्ति स्रोत (10, 000 एमएएच पावर बैंक) को जोड़ना है

MQTT एप्लिकेशन के लिए इंटरनेट कनेक्शन की आवश्यकता होगी (MQTT के लिए विवरण आगे के चरणों में शामिल हैं)

चरण 5: इम्पैक्ट रिकोडर: कार्य और अनुप्रयोग

सेंस हैट से, त्वरण और जाइरोस्कोप का उपयोग यह जांचने के लिए किया जाता है कि क्या कच्चे मान कोड में निर्धारित सीमा से परे हैं।

एक्सेलेरोमीटर: एक्सेलेरोमीटर प्रत्येक एक्स, वाई और जेड अक्ष पर कार्यरत गुरुत्वाकर्षण बल (जी-बल) की मात्रा बताता है, यदि कोई धुरी 1 जी से अधिक बल मापती है, तो तीव्र गति का पता लगाया जा सकता है। (कृपया ध्यान दें कि नीचे की ओर इशारा करने वाली धुरी का मान 1g होगा और तदनुसार अजगर कोड में विचार करने की आवश्यकता है)।

जाइरोस्कोप; जाइरोस्कोप का उपयोग कोणीय गति को मापने के लिए किया जाता है, यानी तेज मोड़ के दौरान सेंसर सक्रिय हो सकता है (कोड में सेटिंग पर निर्भर करता है), इसलिए वाहन को तेजी से घुमाने वाला व्यक्ति पकड़ा जाएगा !!

सेट सीमा के किसी भी सक्रियण को सेंस हैट एलईडी मैट्रिक्स पर "!" के रूप में भी प्रदर्शित किया जाता है। त्वरण के लिए लाल रंग में और जाइरोस्कोप सक्रियण के लिए हरे रंग में

चरण 6: सॉफ्टवेयर विवरण: नोड रेड

Node-RED एक प्रवाह-आधारित प्रोग्रामिंग टूल है, जिसे मूल रूप से IBM के इमर्जिंग टेक्नोलॉजी सर्विसटीम द्वारा विकसित किया गया था और अब यह JS फाउंडेशन का एक हिस्सा है।

नोड रेड के बारे में अधिक जानकारी निम्न लिंक के माध्यम से प्राप्त की जा सकती है:नोड-रेड

हमारे मामले के लिए हम निम्नलिखित गतिविधियों के लिए नोड-रेड का उपयोग करेंगे:

(१) कैमरा कार्य शुरू करने के लिए जॉयस्टिक के साथ बातचीत करना

(२) वाहन पर प्रभाव की निगरानी करना और एमक्यूटीटी को नियोजित करके अंतिम उपयोगकर्ता को सूचना देना और एमक्यूटीटी के माध्यम से अंतिम उपयोगकर्ता के आदेशों को स्वीकार करना और पीआई पर अपेक्षित आवेदन शुरू करना

(३) कुछ बुनियादी चीजों का प्रदर्शन करना जैसे कि पीआई को बंद करना

आगे के चरण नोड-रेड पर लागू प्रवाह आरेख के लिए विस्तृत जानकारी देते हैं

कृपया ध्यान दें कि नोड-रेड फ्लो डायग्राम पायथन कोड के साथ इंटरैक्ट करते हैं, इसलिए बाद वाला भाग पायथन कोड पहलुओं को कवर करता है।

चरण 7: नोड-लाल मूल बातें

नोड-लाल मूल बातें
नोड-लाल मूल बातें
नोड-लाल मूल बातें
नोड-लाल मूल बातें
नोड-लाल मूल बातें
नोड-लाल मूल बातें

एक फ्लैश में नोड-रेड शुरू करने के लिए कुछ बुनियादी चरणों को हाइलाइट किया गया है, लेकिन हां नोड-रेड अनुप्रयोगों को शुरू करने और काम करने के लिए बहुत आसान है।

  • नोड-रेड शुरू करना:
  • जब पीआई इंटरनेट से जुड़ा हो तो नोड-रेड शुरू करना https:// ip पता>:१८८०

चरण 8: नोड-लाल: प्रवाह _1a

नोड-लाल: प्रवाह _1a
नोड-लाल: प्रवाह _1a

फ्लो _1ए, सीएसवी फ़ाइल में किसी भी बदलाव की निगरानी करता है और परिवर्तनों के आधार पर, यानी प्रभाव का पता चला है, कैमरा वीडियो रिकॉर्डिंग ऑन मोड पर सेट है और आगे उपयोगकर्ता को इंटरनेट पर सूचित किया जाता है कि एक प्रभाव हुआ है

चरण 9: नोड लाल: Flow_1b

नोड लाल: Flow_1b
नोड लाल: Flow_1b

उक्त प्रवाह में, वीडियो रिकॉर्डिंग किसी भी बिंदु पर केवल जॉयस्टिक को दबाकर शुरू की जा सकती है

चरण 10: नोड लाल: Flow_2a

नोड लाल: Flow_2a
नोड लाल: Flow_2a

उक्त प्रवाह में, जब भी कोई नया चित्र या वीडियो निर्देशिका में संग्रहीत/अपलोड किया जाता है, तो सूचना इंटरनेट पर पंजीकृत उपयोगकर्ता को रिले की जाती है

चरण 11: नोड लाल: Flow_2b

नोड लाल: Flow_2b
नोड लाल: Flow_2b

यह प्रवाह मुख्य रूप से दूरस्थ उपयोगकर्ता के लिए डिज़ाइन किया गया है, ताकि डिवाइस को निम्नलिखित तरीके से नियंत्रित किया जा सके

(ए) शटडाउन डिवाइस

(बी) तस्वीरें लें

(सी) वीडियो रिकॉर्ड करें

(डी) मुख्य कोड शुरू करें (डेटालॉगर कोड मुख्य कोड है जो प्रभाव की गणना करता है)

चरण 12: नोड लाल; प्रवाह_3

नोड लाल; प्रवाह_3
नोड लाल; प्रवाह_3

प्रवाह स्थानीय पहुंच के लिए डिज़ाइन किया गया है, ताकि मुख्य कोड या शटडाउन डिवाइस शुरू हो सके

चरण 13: एमक्यूटीटी

एमक्यूटीटी (मैसेज क्यूइंग टेलीमेट्री ट्रांसपोर्ट) एक टीसीपी/आईपी प्रोटोकॉल है, जिसमें प्रकाशक और ग्राहक बातचीत करते हैं।

हमारे मामले में पाई प्रकाशक है, जबकि हमारे मोबाइल/पीसी में इंस्टॉल किया गया एप्लिकेशन ग्राहक होगा।

इस तरह किसी भी प्रभाव के उत्पन्न होने पर, सूचना को उपयोगकर्ता को दूरस्थ रूप से रिले किया जाता है (एक कार्यशील इंटरनेट कनेक्शन आवश्यक है)

MQTT के बारे में अधिक जानकारी निम्न लिंक से प्राप्त की जा सकती है: MQTT

MQTT का उपयोग शुरू करने के लिए, हमें पहले पंजीकरण करने की आवश्यकता है, ट्यूटोरियल के लिए मैंने Cloudmqtt (www.cloudmqtt.com) का उपयोग किया है, "क्यूट कैट" के तहत एक मुफ्त योजना है, बस इतना ही।

पंजीकरण करने के बाद एक उदाहरण बनाएं "pi" जिसके बाद आपको निम्नलिखित विवरण प्राप्त होंगे

  • सर्वर का नाम
  • बंदरगाह
  • उपयोगकर्ता नाम
  • पासवर्ड

मोबाइल/पीसी के माध्यम से सदस्यता लेते समय उपरोक्त आवश्यक हैं

अपने आवेदन के लिए, मैंने गूगल प्ले स्टोर (एंड्रॉइड संस्करण) से एमक्यूटीटी एप्लिकेशन का उपयोग किया है

चरण 14: एमक्यूटीटी: सब्सक्राइबर

एमक्यूटीटी: सब्सक्राइबर
एमक्यूटीटी: सब्सक्राइबर

मोबाइल पर चलने वाला MQTT एप्लिकेशन (Android संस्करण)

पाई पर पाए गए प्रभाव को वापस रिले किया जाता है

चरण 15: एमक्यूटीटी: नोड-रेड में गुणों का संपादन

MQTT: नोड-रेड में गुणों का संपादन
MQTT: नोड-रेड में गुणों का संपादन

एमक्यूटीटी नोड का चयन करने के बाद नोड-रेड में, "सर्वर नाम" और "विषय" का उल्लेख किया जाना चाहिए। यह ग्राहक के अंत में समान होना चाहिए

चरण 16: पायथन कोड:

कोड कार्यक्षमता संलग्न फ़्लोचार्ट के अनुसार है

चरण 17: अंतिम कोड

पायथन कोड संलग्न है

हमारी अजगर स्क्रिप्ट को टर्मिनल से चलाने के लिए, हमें उन्हें chmod +x datalogger.py के रूप में निष्पादन योग्य बनाने की आवश्यकता है, इसके अलावा कोड के शीर्ष में निम्नलिखित "शेबैंग" लाइन # होनी चाहिए! /usr/bin/python3 (यह आवश्यक है ताकि नोड-रेड से कार्यों को निष्पादित किया जा सके)

#!/usr/bin/python3 // शेबैंग लाइनफ्रॉम सेंस_हैट इंपोर्ट सेंसहैट फ्रॉम डेटाइम इंपोर्ट डेटटाइम सीएसवी इम्पोर्ट राइटर इंपोर्ट आरपीआई। जीपीआईओ जीपीआईओ के रूप में टाइम इंपोर्ट स्लीप से

सेंस = सेंस हैट ()

आयात सीएसवी

टाइमस्टैम्प = डेटाटाइम। अब ()

देरी = 5 // डेटा को डेटा में संग्रहीत करने के लिए देरी को परिभाषित किया गया है। सीएसवी फ़ाइल लाल = (255, 0, 0) हरा = (0, 255, 0) पीला = (255, 255, 0)

#GPIO.setmode(GPIO. BCM)

#GPIO.setup(17, GPIO. OUT)

def get_sense_impact ():

सेंस_इम्पैक्ट = एसीसी = सेंस। get_accelerometer_raw () सेंस_इम्पैक्ट। एपेंड (एसीसी ["एक्स"]) सेंस_इम्पैक्ट। एपेंड (एसीसी ["वाई"]) सेंस_इम्पैक्ट। एपेंड (एसीसी ["जेड"])

जाइरो = सेंस.get_gyroscope_raw ()

Sens_impact.append(gyro["x"]) sensor_impact.append(gyro["y"]) sensor_impact.append(gyro["z"])

वापसी भावना_प्रभाव

def प्रभाव (): // प्रभाव का पता लगाने के लिए कार्य #GPIO.setmode(GPIO. BCM) #GPIO.setup(4, GPIO. OUT) त्वरण = भावना। get_accelerometer_raw () x = त्वरण ['x'] y = त्वरण['y'] z = त्वरण['z'] x=abs(x) y=abs(y) z=abs(z)

जाइरो = सेंस.get_gyroscope_raw ()

जाइरोक्स = जाइरो ["x"] जाइरो = जाइरो ["y"] जाइरोज़ = जाइरो ["z"]

जाइरॉक्स = गोल (गाइरॉक्स, 2)

gyroy = गोल (gyroy, 2) gyroz = गोल (gyroz, 2)

प्रभाव = get_sense_impact ()

यदि x> 1.5 या y> 1.5 या z> 1.5: // वास्तविक सड़क पर पुनरावृत्ति के बाद मान सेट किए गए हैं, तो खुले ('प्रभाव। सीएसवी', 'डब्ल्यू', न्यूलाइन =') के साथ विभिन्न प्रकार और ड्राइविंग कौशल के अनुसार तदनुसार बदला जा सकता है। ') f के रूप में: data_writer = writer(f) data_writer.writerow(['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO। आउटपुट (4, जीपीआईओ। हाई) सेंस। क्लियर () सेंस। शो_लेटर ("!", रेड) डेटा_राइटर। राइटर (इम्पैक्ट)

elif gyrox > 1.5 या gyroy > 1.5 या gyroz > 1.5: // मान उस गति को देखते हुए सेट किए जाते हैं जिस गति से खुले ('impact.csv', 'w', newline='') के साथ f: data_writer शुरू किया जाता है = लेखक (f) data_writer.writerow(['acc x', 'acc y', 'acc z', 'gyro x', 'gyro y', 'gyro z']) #GPIO.output(4, GPIO. हाई) सेंस। क्लियर () सेंस। शो_लेटर ("!", ग्रीन) डेटा_राइटर। राइटो (इम्पैक्ट)

अन्यथा:

# GPIO.आउटपुट (4, GPIO. LOW) सेंस। क्लियर ()

def get_sense_data (): // सेंसर से मूल्यों को रिकॉर्ड करने और संग्रहीत करने के लिए कार्य सेंस_डेटा =

Sens_data.append(sense.get_temperature()) sensor_data.append(sense.get_ pressure()) sensor_data.append(sense.get_humidity())

ओरिएंटेशन = सेंस.गेट_ओरिएंटेशन ()

सेंस_डेटा.एपेंड (ओरिएंटेशन ["यॉ"]) सेंस_डेटा। एपेंड (ओरिएंटेशन ["पिच"]) सेंस_डेटा। एपेंड (ओरिएंटेशन ["रोल"])

एसीसी = भावना। get_accelerometer_raw ()

Sens_data.append(acc["x"]) sensor_data.append(acc["y"]) sensor_data.append(acc["z"]) mag = sensor.get_compass_raw() sensor_data.append(mag["x"]) sensor_data.append(mag["y"]) sensor_data.append(mag["z"])

जाइरो = सेंस.get_gyroscope_raw ()

Sens_data.append(gyro["x"]) sensor_data.append(gyro["y"]) sensor_data.append(gyro["z"])

Sens_data.append(datetime.now ())

वापसी सेंस_डेटा

f के रूप में open('data.csv', 'w', newline='') के साथ:

data_writer = लेखक (च)

data_writer.writerow(['temp', 'pres', 'hum', 'yaw', 'pitch', 'roll', 'acc x', 'acc y', 'acc z', 'mag x', ' mag y', 'mag z', 'gyro x', 'gyro y', 'gyro z', 'datetime'])

जबकि सच:

घटना के लिए print(get_sense_data ()) अर्थ में।.show_letter("U") # ऊपर तीर त्वरण = भावना। get_accelerometer_raw () x = त्वरण ['x'] y = त्वरण ['y'] z = त्वरण ['z'] x = गोल (x, 0) y =राउंड(y, 0) z=राउंड(z, 0)

# डिस्प्ले के रोटेशन को अपडेट करें कि किस तरह से ऊपर अगर x == -1: sensor.set_rotation(90) elif y == 1: sensor.set_rotation(270) elif y == -1: sensor.set_rotation(180)) और: sensor.set_rotation(0) sensor.clear() t = sensor.get_temperature() t = Round(t, 1) message = "T:" + str(t) sensor.show_message(message, text_color = red, स्क्रॉल_स्पीड = 0.09) एलिफ़ इवेंट। दिशा == "डाउन": त्वरण = सेंस। get_accelerometer_raw () x = त्वरण ['x'] y = त्वरण ['y'] z = त्वरण ['z'] x = गोल (x), 0) y=राउंड(y, 0) z=राउंड(z, 0)

# डिस्प्ले के रोटेशन को अपडेट करें कि किस तरह से ऊपर अगर x == -1: sensor.set_rotation(90) elif y == 1: sensor.set_rotation(270) elif y == -1: sensor.set_rotation(180)) और: सेंस.सेट_रोटेशन (0) # सेंस। शो_लेटर ("डी") # डाउन एरो सेंस। क्लियर () एच = सेंस। गेट_ह्यूमिडिटी () एच = राउंड (एच, 1) मैसेज = "एच:" + स्ट्र(h) सेंस.शो_मैसेज (मैसेज, टेक्स्ट_कलर = ग्रीन, स्क्रॉल_स्पीड = 0.09) पी = सेंस। गेट_प्रेशर () पी = राउंड (पी, 1) मैसेज = "पी:" + स्ट्र (पी) सेंस। शो_मैसेज (मैसेज, टेक्स्ट_कलर = पीला, स्क्रॉल_स्पीड = 0.09)

# एलिफ घटना। दिशा == "बाएं":

# त्वरण = समझ। get_accelerometer_raw() # x = त्वरण ['x'] #y = त्वरण ['y'] #z = त्वरण ['z'] #x=दौर(x, 0) #y=दौर(y, 0) #z=राउंड(z, 0)

# डिस्प्ले के रोटेशन को अपडेट करें कि किस तरह से ऊपर // नोड-रेड द्वारा उपयोग और नियंत्रित नहीं किया गया है #if x == -1: sensor.set_rotation(90) #elif y == 1: sensor.set_rotation(270) #elif y == -1: sensor.set_rotation(180) #else: sensor.set_rotation(0) #sense.show_letter("L") # बायां तीर # elif event.direction == "right": # sensor.show_letter ("के") # दायां तीर # एलिफ घटना। दिशा == "मध्य": # भावना। स्पष्ट ()

प्रभाव()

डेटा = get_sense_data ()

डीटी = डेटा [-1] - टाइमस्टैम्प अगर डीटी। सेकेंड> देरी: data_writer.writerow (डेटा) टाइमस्टैम्प = डेटाटाइम। अब ()

चरण 18: लाइव वीडियो की निगरानी

लाइव वीडियो की निगरानी के लिए इम्पैक्ट रिकॉर्डर का भी उपयोग किया जा सकता है, क्योंकि एमक्यूटीटी के माध्यम से वीडियो को कभी भी कहीं भी शुरू किया जा सकता है

हम वीडियो को स्ट्रीम करने के लिए वीएलसी प्लेयर का उपयोग करेंगे, डिफ़ॉल्ट रूप से नवीनतम रास्पियन में वीएलसी पहले से स्थापित है, अन्यथा नीचे के रूप में वीएलसी स्थापित करें

वीएलसी नेटवर्क स्ट्रीम के माध्यम से नेटवर्क स्ट्रीम देखने के बारे में अधिक जानकारी प्राप्त की जा सकती है

पढ़ने के लिए धन्यवाद!!

प्रभाव रिकॉर्डर और भी बहुत कुछ कर सकता है..

बाधा मानचित्रण करने में चुंबकीय क्षेत्र विश्लेषण के लिए अगली जगह देखें

सिफारिश की: