विषयसूची:

एंड्रॉइड पर सोडियल डस्ट सेंसर: 6 कदम
एंड्रॉइड पर सोडियल डस्ट सेंसर: 6 कदम

वीडियो: एंड्रॉइड पर सोडियल डस्ट सेंसर: 6 कदम

वीडियो: एंड्रॉइड पर सोडियल डस्ट सेंसर: 6 कदम
वीडियो: New Fire engine monster truck cheat code? in Indian bike driving 3d new update 2023 live ! 2024, जुलाई
Anonim
Android पर सोडियल डस्ट सेंसर
Android पर सोडियल डस्ट सेंसर

एक साल पहले मेरे एक मित्र ने पर्यावरण निगरानी के बारे में एक सप्ताहांत कार्यशाला की थी। कार्यशाला का लक्ष्य कुछ सर्वर पर माप डेटा डालने के लिए रास्पबेरी पीआई बोर्ड से जुड़े धूल सेंसर का निर्माण करना था जो अक्सर अद्यतन धूल एकाग्रता मानचित्र प्रदान करता था। मेरे मित्र ने पूछा कि क्या निगरानी और लॉगिंग के लिए सेंसर डेटा सीधे उसके स्मार्टफोन पर प्राप्त करने का कोई तरीका है। इसलिए मैंने एक डेटाशीट के लिए इंटरनेट की खोज की और देखा कि सेंसर में 9600Baud 8N1 प्रोटोकॉल के साथ एक सरल UART इंटरफ़ेस था। लेकिन UART को स्मार्टफोन से कैसे कनेक्ट करें? अच्छा, यह आसान है। मुझे बस उन सर्वव्यापी छोटे ब्लूटूथ मॉड्यूलों में से एक का उपयोग करना था जो एंड्रॉइड पर एक नकली कॉमपोर्ट प्रदान करते हैं। अब देखिए मैंने इसे कैसे बनाया।

चरण 1: आपको क्या चाहिए

जिसकी आपको जरूरत है
जिसकी आपको जरूरत है
जिसकी आपको जरूरत है
जिसकी आपको जरूरत है

आपको निम्नलिखित भागों की आवश्यकता है

  • तारों के साथ सोडियल इंटरफेस के लिए एक संभोग कनेक्टर जेएसटी एक्सएच 7-पिन। मैंने eBay पर मेरा खरीदा।
  • UART कनेक्टर के साथ संगत ब्लूटूथ मॉड्यूल HC05 या 06
  • टीटीएल स्तर इंटरफेस के साथ एक यूएसबी-सीरियल कनवर्टर। हम इसका उपयोग BT-मॉड्यूल को एक विशिष्ट नाम देने के लिए करते हैं
  • सोडियल SDS011 डस्ट सेंसर। मुझे eBay से मेरा मिल गया
  • वर्बार्ड का एक टुकड़ा
  • यूएसबी-बी कनेक्टर
  • वायर
  • सब कुछ माउंट करने के लिए लकड़ी का एक टुकड़ा

फिर आपको कुछ सरल टूल की आवश्यकता होगी:

  • लकड़ी काटने के लिए एक बकसॉ
  • चिमटी
  • सोल्डर आयरन और सोल्डर
  • तार काटने वाला
  • गर्म गोंद वाली बंदूक
  • 8 मिमी सिलिकॉन आस्तीन का एक टुकड़ा (चित्र पर नहीं)

आप यहां सोडियल एसडीएस011 डेटाशीट डाउनलोड कर सकते हैं सोडियल एसडीएस011 डेटाशीट

चरण 2: ब्लूटूथ मॉड्यूल तैयार करना

ब्लूटूथ मॉड्यूल तैयार करना
ब्लूटूथ मॉड्यूल तैयार करना
ब्लूटूथ मॉड्यूल तैयार करना
ब्लूटूथ मॉड्यूल तैयार करना
ब्लूटूथ मॉड्यूल तैयार करना
ब्लूटूथ मॉड्यूल तैयार करना
ब्लूटूथ मॉड्यूल तैयार करना
ब्लूटूथ मॉड्यूल तैयार करना

BT-मॉड्यूल में TTL-स्तर के साथ UART इंटरफ़ेस है। इसे "एटी" कमांड के साथ फिर से कॉन्फ़िगर किया जा सकता है जैसे हमने प्राचीन काल में इंटरनेट मोडेम के साथ किया था। इसे अपनी मशीन के टर्मिनल प्रोग्राम से जोड़ने के लिए आपको UART को अपने कंप्यूटर के अनुकूल बनाना होगा। मैंने एक USB-RS232 कनवर्टर का उपयोग किया जिसे मैंने अमेज़न पर खरीदा था। मैंने बीटी-मॉड्यूल के लिए एक कनेक्टर लगाया और कनवर्टर से बीटी-मॉड्यूल में ३, ३वी बिजली की आपूर्ति और जीएनडी को रूट किया। फिर मैंने संबंधित TxD और RxD लाइनों को क्रॉसओवर में जोड़ा। यूएसबी-कन्वर्टर से बीटी-मॉड्यूल से आरएक्सडी में टीएक्सडी और इसके विपरीत।

मेरे पास एक लिनक्स मशीन है और क्यूटकॉम का इस्तेमाल किया है। यूएसबी-कन्वर्टर को जोड़ने के बाद कॉमपोर्ट "ttyUSB0" था। आप अपने लिनक्स मशीन पर "/ dev" निर्देशिका में कॉमपोर्ट नाम पा सकते हैं। विंडोज़ उपयोगकर्ताओं के लिए मैं "hterm" की अनुशंसा करता हूं। इसे संचालित करना आसान है। "एटी" टाइप करें और आपको प्रतिक्रिया के रूप में "एटी" मिलना चाहिए। फिर बीटी-मॉड्यूल को "सेंसर" नाम देने के लिए "एटी + नेम सेंसर" टाइप करें

चरण 3: भागों को माउंट करना

भागों को माउंट करना
भागों को माउंट करना
भागों को माउंट करना
भागों को माउंट करना
भागों को माउंट करना
भागों को माउंट करना
भागों को माउंट करना
भागों को माउंट करना

लकड़ी के एक टुकड़े को ऐसे आकार में काटें जो सभी भागों को लेने के लिए उपयुक्त हो। योजनाबद्ध में बताए अनुसार सभी संकेतों को कनेक्ट करें। तारों की सुरक्षा के लिए उनके चारों ओर एक सिलिकॉन आस्तीन रखना एक अच्छा विचार है। परफ़ॉर्मर पर USB-B प्लग मिलाप करें। इसका उपयोग सिर्फ बिजली की आपूर्ति के लिए किया जाता है। लकड़ी के आधार पर शिकंजा के साथ सभी भागों को ठीक करें। अंत में लकड़ी पर उन्हें ठीक करने के लिए केबलों को गर्म करें।

चरण 4: बाँधना

बाँधना
बाँधना
बाँधना
बाँधना

USB पॉवर सप्लाई प्लग-इन करके सेंसर एप्लिकेशन को पावर दें। बीटी-मॉड्यूल पर एक लाल एलईडी झपकना शुरू कर देगी। इसे अपने एंड्रॉइड स्मार्टफोन के साथ पेयर करने का प्रयास न करें। आपको एक पिन कोड डालना होगा। यह "1234" है। कोड दर्ज करने के बाद आपके स्मार्टफोन को बीटी-मॉड्यूल के साथ जोड़ा जाना चाहिए।

चरण 5: सॉफ्टवेयर

मुझे एंड्रॉइड ऐप्स को टारगेट प्लेटफॉर्म पर ही लिखना पसंद है। यदि आप Android Studio के साथ काम कर रहे हैं तो यह आपको उन सभी अनुकरण सामग्री से बचाता है जिनकी आपको परवाह है। मुझे Android पर ही तीन उपयुक्त विकास उपकरण मिले

  • मिंटोरिस बेसिक। एंड्रॉइड पर लगभग हर चीज के साथ छेड़छाड़ करने के लिए कमांड के समृद्ध सेट के साथ एक बुनियादी दुभाषिया। आप अपने ऐप्स के लिए शॉर्टकट बना सकते हैं। मिंटोरिस बेसिक में कंपाइलर नहीं होता है। तो आपने अपने द्वारा उपयोग किए जा रहे प्रत्येक उपकरण पर मिंटोरिस स्थापित किया होगा। लेकिन आपको इसके लिए केवल एक बार भुगतान करना होगा (लगभग 7€)
  • बुनियादी! बहुत अच्छा बुनियादी दुभाषिया और संकलक (कुछ € के लिए ऐड-ऑन)। एंड्रॉइड में हर चीज पर लगभग हुक और आप बेसिक के बिना उन्हें वितरित करने के लिए वास्तविक ऐप्स संकलित कर सकते हैं! लक्ष्य डिवाइस पर। दुख की बात है बुनियादी! मिंटोरिस के उत्कृष्ट आरेख चार्ट कार्यों का अभाव है
  • AIDE Android पर जावा में Android विकास करने के लिए एक अर्ध-पेशेवर IDE है। AIDE के साथ आपके पास अत्यधिक लचीलापन है लेकिन आपको जावा सीखने की जरूरत है। AIDE की वार्षिक लागत लगभग 50€. है

मैंने मिंटोरिस को चुना। इस खंड में मैं आपको मिंटोरिस में प्रोग्रामिंग का ट्यूटोरियल नहीं दूंगा बल्कि फंक्शन ब्लॉक्स का संक्षिप्त विवरण दूंगा।

निम्नलिखित भाग में दो सेंसर डेटा लाइनों और संबंधित टाइमस्टैम्प के लिए तीन सरणियों की घोषणा की गई है। टाइमस्टैम्प डेटा का उपयोग डायग्राम के x-अक्ष को लेबल करने के लिए किया जाता है। सोडियल एक विशेष कण आकार के लिए निर्दिष्ट दो डेटा स्ट्रीम आउटपुट करता है। दो डस्टडेटा-सरणी ये मान लेते हैं।

वेकलॉक आंशिक

टेक्स्ट कलर 100, 75, 10

टेक्स्ट कलरए ५०, ५०, ५०

टेक्स्ट एलाइन 0

टेक्स्ट साइज 24

सीएलएस

पॉपअप "धूल सेंसर मीटर (सी) एआरजे 2017"

ग्लोबल डस्टडाटा (), डस्टडाटाएफ (), टाइमस्टैम्प () ग्लोबल इंडेक्स, चॉइस, मैक्सडाटा, फाइलनाम $

डिम टाइमस्टैम्प(59)

मंद डस्टडेटा(59)

मंद धूलडाटाएफ(59)

मंद मेनू$(4) = "अधिकतम 100 डेटासेट", "अधिकतम 1000 डेटा सेट", "अधिकतम 5000 डेटा सेट", "अधिकतम 10000 डेटा सेट", "बाहर निकलें"

'सरणी शुरू करें'

मैं = 0 से 59. के लिए

डस्टडेटा (i) = 0

डस्टडेटा एफ (i) = 0

टाइमस्टैम्प (i)=i

अगला मैं

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

एल आईएसटी मेनू $ (), पसंद

'यदि डेटा संग्रहीत किया जाना है तो अधिकतम राशि का चयन करें'

रनलेवल = 1

पसंद का चयन करें

केस ० मैक्सडाटा = १००

केस 1 मैक्सडेट = 1000

केस 2 मैक्सडाटा = 5000

केस 3 मैक्सडाटा = 10000

केस 4 मैक्सडाटा = 0

अंत चयन

''कनेक्ट सेंसर

मंद जोड़ी$(0)

जोड़ी$() = BTGetPaired$()

यदि जोड़ी$(0) = "कोई नहीं" तो

प्रिंट करें "कोई युग्मित उपकरण नहीं मिला। क्या BT चालू है?" प्रिंट "कार्यक्रम समाप्त"

समाप्त

अगर अंत

सूची जोड़ी$(), डिवाइस$

नाम$=आइटमएक्सट्रैक्ट$(डिवाइस$, 0)

पता$=आइटमएक्सट्रैक्ट$(डिवाइस$, १)

BTConnect 1, पता$

'कनेक्शन की प्रतीक्षा करें'

प्रगति चालू

"कनेक्ट करने का प्रयास कर रहा है" प्रिंट करें; पता$

मैं = 1 से 20. के लिए

प्रगति मैं/2

अगर BTGetstate(1)=4 तो प्रतीक्षा के लिए बाहर निकलें 1000

अगला मैं

प्रगति बंद

'सफलता पर बीटी डिवाइस से कनेक्ट करें'

अगर BTGetState(1) = 4 फिर "कनेक्टेड" प्रिंट करें और प्रिंट करें "कनेक्ट नहीं हो सका"; नाम $

प्रिंट "कार्यक्रम समाप्त"

समाप्त

अगर अंत

अगला ब्लॉक डेटा अधिग्रहण दिखाता है। प्रत्येक डेटा सत्र के लिए एक फ़ाइल स्वचालित रूप से खोली जाती है और समय और दिनांक के नाम पर रखी जाती है। फिर लूप सेंसर डेटा पढ़ रहा है। डेटा कई बाइट्स में पैक किया जाता है। बाइट्स का एक सेट दो ASCII वर्णों 170 और 171 द्वारा पहचाना जाता है। निम्नलिखित डेटा को पुनर्गठित किया जाता है और धूल-सरणी में भर दिया जाता है

ग्राफिक्स चालू

'लिखने के लिए डेटाफ़ाइल खोलें'

fileName$ = FormatTime$(t, "yyyy-MM-dd-kk-mm-ss") + ".dat"

ओपन 1, फाइलनाम$, "डब्ल्यू+" प्रिंट "ओपन डेटाफाइल"; फाइलनाम$ राइटलन 1, फॉर्मेटटाइम $ (समय (), "वाई-एमएम-डीडी")

राइट्लन 1, "टाइम डस्ट2.5 डस्ट10"

'मापा डेटा के साथ सरणी भरें'

डेटा$="" पैकेट $=""

सूचकांक = 0

मैक्सडाटा> 0. करते समय करें

BTRead 1, पैकेट$, 10

डेटा$=डेटा$+पैकेट$

यदि लेन(डेटा$)>= 10 तो

अगर (ASCII(Left$(data$, 1))=170) और (ASCII(Right$(data$, 1)) = 171) तो

डस्टडेटाएफ (इंडेक्स) = ASCII (मध्य $ (डेटा $, 2, 1))

DustDataF(index)=(dustDataF(index)+256*ASCII(Mid$(data$, 3, 1)))/10

डस्टडेटा (इंडेक्स) = ASCII (मध्य $ (डेटा $, 4, 1))

DustData(index)=(dustData(index)+256*ASCII(मध्य$(डेटा$, 5, 1))/10

राइटलाइन 1, फॉर्मेटटाइम $ (समय (), "केके: मिमी: एसएस") + "" + स्ट्र $ (डस्टडेटा एफ (इंडेक्स)) + "" + स्ट्र $ (डस्टडेटा (इंडेक्स))

डेटा$=""

मैक्सडाटा = मैक्सडाटा -1

सूचकांक = सूचकांक + 1

यदि अनुक्रमणिका>59 तो अनुक्रमणिका=0

डस्टडेटा (इंडेक्स) = 0

डस्टडेटा एफ (इंडेक्स) = 0

अगर अंत

अगर अंत

ड्राग्राफ ()

रुको १००

कुंडली

बंद 1

ग्राफिक्स बंद

सीएलएस प्रिंट "कार्यक्रम समाप्त"

समाप्त

अंतिम भाग एक सबरूटीन है जिसे प्रत्येक डेटा रिसेप्शन के बाद कहा जाता है। यह स्क्रीन को साफ़ करता है, डस्ट- और टाइमस्टैम्प सरणियों में संग्रहीत वास्तविक डेटा के साथ आरेख को फिर से बनाता है।

निर्देशांक, लेबल, टिक और डेटा वक्र भी बनाएं

उप ड्राग्राफ ()

' ग्राफ़िक्स मोड में स्क्रीन वर्तमान रंग में साफ़ हो जाती है

रंग 0, 0, 0

सीएलएस

रंग 0, 0, 100

' ग्रिड रेखाएँ खींचने के लिए उपयोग किए जाने वाले ग्राफ़िक्स रंग सेट करें

टेक्स्ट कलर १००, १००, १००, ५०

'TextColor ग्रिड के मुख्य शीर्षक का रंग है

टेक्स्ट कलरए १००, १००, १००

TextColorA का उपयोग एक्सिस टाइटल और ग्रिड एनोटेशन के लिए किया जाता है।

'अक्ष शीर्षक टेक्स्ट का आकार सेट करें

' ग्रिड का मुख्य शीर्षक इस आकार का 2x है

टेक्स्ट साइज 20

फिक्सडेसिमल 0

' 2 दशमलव स्थानों को प्रदर्शित करने के लिए सेट करें

पैडडिजिट्स 2

'ग्राफ के लिए एक ग्रिड बनाएं' X और Y की श्रेणी और शीर्षक सेट करें

एक्सिस एक्सिसएक्स 0, 59, "टाइम/एस"

एक्सिसवाई 0, 10000, "ug/m3"

ग्रिड 3, "धूल एकाग्रता"

'धूल के रेखांकन बनाएं

रंग १००, ०, ०

ग्राफएक्सवाई टाइमस्टैम्प (), डस्टडाटाएफ ()

रंग ०, १००, ०

ग्राफएक्सवाई टाइमस्टैम्प (), डस्टडेटा ()

टेक्स्ट कलर 100, 0, 0

DrawText "PM2.5", 30, Int(ScreenY()-60), 90, 1

टेक्स्ट कलर 0, 100, 0

DrawText "PM10", 30, Int(ScreenY()-150), 90, 1

टेक्स्ट कलर १००, १००, १००, ५०

वापसी

यहां स्रोत कोड डाउनलोड करें

चरण 6: परीक्षण

Image
Image
परीक्षण
परीक्षण
परीक्षण
परीक्षण
परीक्षण
परीक्षण

सेंसर को पावर दें और ऐप शुरू करें। युग्मित उपकरणों की सूची में से "सेंसर" नाम का एक चुनें। सेंसर कनेक्ट करने के बाद स्क्रीन डेटा प्रदर्शित करना शुरू कर देगी। साथ ही डेटा फ़ाइल आवंटित की जाती है। फैशन खत्म करने के बाद आप डेटा प्रदर्शित करने के लिए GnuPlot का उपयोग कर सकते हैं। "Test.dat" नामक डेटाफाइल प्रदर्शित करने के लिए GnuPlot को कॉन्फ़िगर करने के लिए GnuPlot में "Test.gp" फ़ाइल का उपयोग करें। आप इसे यहाँ भी पा सकते हैं

अधिक विवरण और परीक्षण के लिए वीडियो देखें। बहुत मज़ा और अधिक विचार है!

सिफारिश की: