विषयसूची:
- चरण 1: सॉफ्टवेयर लॉजिक: सिस्टम आर्किटेक्चर
- चरण 2: चरण 1: हार्डवेयर वायरिंग
- चरण 3: चरण 2: Arduino
- चरण 4: चरण 3: NodeJS
- चरण 5: चरण 4: वेब इंटरफ़ेस
- चरण 6: परिणाम
वीडियो: Arduino प्रोजेक्ट: Nodejs + SQL डेटाबेस और वेबसाइट का उपयोग करके इंटरनेट पर इलेक्ट्रॉनिक्स को नियंत्रित करें।: 6 कदम
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:22
परियोजना द्वारा: Mahmed.tech
बनने की तिथि: 14 जुलाई 2017
कठिनाई स्तर: कुछ प्रोग्रामिंग ज्ञान के साथ शुरुआत।
हार्डवेयर आवश्यकता:
- Arduino Uno, Nano, Mega (मुझे लगता है कि सीरियल कनेक्शन के साथ अधिकांश MCU काम करेगा)
- सिंगल एलईडी और करंट लिमिटिंग रेसिस्टर। यदि आप सुनिश्चित नहीं हैं तो इस कैलकुलेटर का उपयोग करें: ओम कानून कैलकुलेटर
- 10K पोटेंशियोमीटर।
सॉफ्टवेयर आवश्यकता:
- अरुडिनो आईडीई
- Node. JS (यह कंप्यूटर पर एक सॉफ्टवेयर है, जिसे स्थापित करना बहुत आसान है)
- MySQL सर्वर (सबसे आसान तरीका जो मैंने पाया वह है एक सस्ते वेब होस्टिंग का उपयोग करना। आप मुफ्त डोमेन नाम भी प्राप्त कर सकते हैं)
प्रोग्रामिंग और स्क्रिप्टिंग भाषा का इस्तेमाल किया:
Arduino (संशोधित C/C++), JavaScript (Nodejs), PHP, HTML और CSS
परिचय यह परियोजना संक्षेप में: एक वेब इंटरफेस से एक Arduino माइक्रोकंट्रोलर को नियंत्रित करना। इसलिए किसी भी विद्युत उपकरण को कहीं से भी इंटरनेट से नियंत्रित करें। मैं प्रोग्रामिंग और वेब डेवलपमेंट के बारे में अपनी समझ को बढ़ाना चाहता था और एक सरल लेकिन प्रभावी प्रोजेक्ट करने से बेहतर तरीका क्या हो सकता है। हार्डवेयर को न्यूनतम रखा गया है ताकि मैं सॉफ्टवेयर पर अधिक ध्यान केंद्रित कर सकूं। इसलिए मैं एक साधारण एलईडी, पॉट सेटअप के साथ गया। पॉट डेटा भेजेगा और एलईडी प्राप्त करेगा (पीडब्लूएम चमक)। NodeJS का उपयोग करके सीरियल डेटा को पढ़ा गया (पोटेंशियोमीटर वैल्यू) और लिखा गया (एलईडी ब्राइटनेस)। इस परियोजना का कठिन हिस्सा दूरस्थ स्थान (वेब सर्वर) से इनपुट डेटा प्राप्त करना था।
चरण 1: सॉफ्टवेयर लॉजिक: सिस्टम आर्किटेक्चर
पोटेंशियोमीटर डेटा:
यह Arduino पर शुरू होता है, पढ़ें पॉट वैल्यू सीरियल प्रिंट है। हालाँकि, इस बार हम मान को पढ़ने के लिए Node. JS का उपयोग करेंगे। NodeJS उसी पोर्ट पर सीरियल कम्युनिकेशन खोलेगा जैसे Arduino से जुड़ा है और प्रिंटेड पॉट वैल्यू को पढ़ता है। NodeJS तब डेटा को एक दूरस्थ SQL डेटाबेस में अपलोड करेगा, यह हर बार एक नया पॉट वैल्यू प्रिंट होने पर होगा। एक वेबपेज SQL डेटाबेस सेट अंतराल से कनेक्ट होगा और पोटेंशियोमीटर मान को पुनः प्राप्त करेगा। इसके बाद यह वेबपेज पर प्रदर्शित होगा।
एलईडी डेटा:
एलईडी के लिए पीडब्लूएम की चमक उपयोगकर्ता द्वारा एक दूरस्थ वेबपेज पर सेट की जाएगी, इसलिए इसकी यात्रा स्पेक्ट्रम के विपरीत छोर पर शुरू होती है। इनपुट डेटा को SQL डेटाबेस में सहेजा जाता है, प्रत्येक सेट अंतराल डेटाबेस को एलईडी PWM में बदलाव के लिए जाँचा जाता है, यह NodeJS द्वारा किया जाता है। यदि मान पिछले मान से भिन्न है तो नया मान Arduino को सीरियल बस के माध्यम से भेजा जाएगा। Arduino अपनी चमक को बदलने के लिए एलईडी के आउटपुट PWM मान को बदल देता है।
ओम कानून कैलकुलेटर सूत्र के V = IR और P = IV = I²R = V²/R का उपयोग करता है इस परियोजना के लिए, मैं एक नीले रंग की एलईडी का उपयोग करूंगा। यह महत्वपूर्ण है क्योंकि जैसे-जैसे प्रकाश की आवृत्ति बढ़ती है, वोल्टेज की गिरावट भी बढ़ती जाती है। चूंकि लाल एलईडी जैसी किसी चीज की तुलना में नीली रोशनी की आवृत्ति अधिक होती है। इसका मतलब है एक उच्च आगे वोल्टेज। मेक, टाइप और साइज के आधार पर वर्किंग रेंज अलग-अलग होगी। अपने सेटअप के लिए, मैंने श्रृंखला में 220 रोकनेवाला का उपयोग किया, जमीन पर नकारात्मक और एक Arduino पर PWM पिन के लिए सकारात्मक। पॉट एक एनालॉग पिन से जुड़ा था। 5VCC के साथ एक छोर GND दूसरा और मध्य पिन एक एनालॉग पिन (मेरे मामले में A0) से जुड़ा है।
चरण 2: चरण 1: हार्डवेयर वायरिंग
यह बहुत आसान है: बस एलईडी के साथ श्रृंखला में अपने वर्तमान सीमित अवरोधक को कनेक्ट करें सुनिश्चित करें कि आप सही तरीके से चल रहे हैं। एक बिंदु GND को जाएगा जबकि दूसरा छोर Arduino pin पर जाएगा। अपने सेटअप के लिए, मैंने एलईडी के लिए पिन 12 और पॉट के लिए A7 का उपयोग किया। मेरे पास इसके बहुत ही सरल सर्किट के बाद से एक योजनाबद्ध नहीं है। हालाँकि, मुझे यह ऑनलाइन मिला (छवि)
चरण 3: चरण 2: Arduino
सबसे पहले, एलईडी और पॉट की जाँच की गई कि क्या वे उम्मीद के मुताबिक काम कर रहे हैं। यह एक साधारण कार्यक्रम द्वारा नीचे था जहां पॉट वैल्यू एलईडी को नियंत्रित करता है। मैंने पॉट रेंज को 0 से 1023 से 0 से 255 में बदलने के लिए बाधा फ़ंक्शन का उपयोग किया, लेकिन एक साधारण /4 भी काम करता है। लगातार 10 रीडिंग से औसत औसत निकालकर पॉट वैल्यू को सुचारू किया गया, यह स्पाइक्स को हटाने के लिए है। (हालांकि, इस चौरसाई ने NodeJS के साथ समस्याएँ पैदा कीं, इसलिए इसे बाद में परियोजना पर हटा दिया गया - उस पर और अधिक)
कोड Arduino
सीरियल पढ़ें / लिखें अगला कदम ब्राइटनेस सेट करने के लिए Arduino ide द्वारा प्रदान किए गए सीरियल मॉनिटर विंडो के माध्यम से उपयोगकर्ता इनपुट लेना है। ऐसा करने के लिए, serial.parseInt() का उपयोग किया जाता है जो एक पूर्णांक मान लेता है और स्ट्रिंग को अनदेखा करता है। साथ ही, कोड में एक त्रुटि जाँच जोड़ी जाती है। पीडब्लूएम मान की वैध सीमा 0 - 255 है, जब कोई उपयोगकर्ता> 255 में प्रवेश करता है तो यह 255 मान निर्दिष्ट करता है और यदि उपयोगकर्ता मान या <+/-5 में प्रवेश करता है तो मैंने रीडिंग को और अधिक स्थिर बनाने के लिए ऐसा किया है क्योंकि यह उतार-चढ़ाव था. SQL अपडेट से संबंधित यह एक बड़ी समस्या क्यों है, उस पर बाद में और अधिक।
चरण 4: चरण 3: NodeJS
मैं आपको यह नहीं दिखाने जा रहा हूँ कि SQL सर्वर कैसे प्राप्त करें या सेट करें। वहाँ बहुत सारे ट्यूटोरियल हैं।
NodeJS कार्यक्रम के 3 मुख्य पहलू हैं:
सीरियल डेटा पढ़ें
सीरियल डेटा लिखें
SQL डेटाबेस अपडेट करें
NodeJS के भीतर एक सीरियल कनेक्ट करने के लिए, सीरियलपोर्ट नामक एक मॉड्यूल को डाउनलोड करना होगा जो npm कमांड का उपयोग करके किया जा सकता है। उस फ़ोल्डर पर सीएमडी खोलें जहां NodeJS प्रोग्राम रखा जाएगा, टाइप करके इंस्टॉल करें: npm इंस्टॉल सीरियलपोर्ट इसके अलावा SQL मॉड्यूल को sql डेटाबेस से कनेक्ट करने में सक्षम होने के लिए स्थापित करना होगा: npm mysql NodeJS स्थापित करें - सीरियल पोर्ट NodeJS के साथ मेरा पहला कदम कार्यक्रम मुद्रित डेटा को पढ़ना और Arduino को pwm चमक भेजना था। यह एक ही ब्राउड्रेट और पोर्ट पर सीरियल कनेक्ट खोलकर किया गया था। एक बार कनेक्शन स्थापित हो जाने के बाद मैंने आने वाले संदेशों को पढ़ा और इसे कंसोल विंडो पर मुद्रित किया। समस्या तब हुई जब मैंने चमक को नियंत्रित करने के लिए pwm मान लिखने का प्रयास किया।
यह त्रुटियों को फेंकता रहा: पोर्ट नहीं खुला, मेरा प्रारंभिक समाधान आने वाले डेटा होने पर लिखने के कार्य को कॉल करना था। हालाँकि यह एक खराब फिक्स था और मैं समाधान से काफी असंतुष्ट था, भले ही इसने काम किया हो, यह केवल तभी भेजेगा जब पॉट वैल्यू बदल दी गई हो। सीरियल मॉड्यूल के लिए उदाहरण कोड या तो उसी त्रुटि को फेंकने का काम नहीं करेगा। मुझे बाद में पता चला कि प्रोग्राम पोर्ट को खोले बिना राइट फंक्शन को निष्पादित करने की कोशिश कर रहा था, जिसके परिणामस्वरूप वह त्रुटि हुई। मैं सेटइंटरवल () फ़ंक्शन का उपयोग करके इस समस्या के आसपास आया था
NodeJS - MySQL MySQL लाइब्रेरी का उपयोग SQL डेटाबेस से कनेक्ट करने के लिए किया गया था (npm install MySQL) क्योंकि सर्वर एक दूरस्थ स्थान पर सर्वर के आईपी पते का उपयोग लोकलहोस्ट के बजाय किया गया था।
var con JSON फॉर्मेट में कनेक्शन की जानकारी रखता है, एक बार कनेक्शन सफलतापूर्वक हो जाने के बाद, डेटाबेस को बेड क्वेर किया जा सकता है। SQL क्वेरी में लेने वाले पैरामीटर के साथ चयन करने वाली तालिका को अद्यतन करने के लिए 2 फ़ंक्शन बनाए गए थे। अद्यतन तालिका को तब कहा जाता है जब एक नया पॉट मूल्य प्राप्त होता है और चमक जांच क्वेरी समय-समय पर चलेगी।
NodeJSCode लिंक
चरण 5: चरण 4: वेब इंटरफ़ेस
वेब इंटरफेस
मुख्य वेबपेज PHP में लिखा गया था क्योंकि मुझे पहले से ही मेरे CO323 डेटाबेस और विश्वविद्यालय में वेब मॉड्यूल से कुछ अनुभव था। एसक्यूएल डेटा प्रदर्शित करने के लिए एचटीएमएल टेबल और फॉर्म का इस्तेमाल किया गया था।
पीएचपी एसक्यूएल एक्सेस कोड: लिंक स्क्रॉल को वेब इंटरफेस सेक्शन में लिंक करें।
एचटीएमएल और सीएसएस * जावास्क्रिप्ट वेबपेज कोड: लिंक स्क्रॉल नीचे तक
अंतिम वेबपेज
सिफारिश की:
वेदर स्टेशन: ESP8266 डीप स्लीप, SQL, ग्राफ़िंग बाय फ्लास्क और प्लॉटली के साथ: 3 स्टेप्स
वेदर स्टेशन: ईएसपी8266 डीप स्लीप, एसक्यूएल, ग्राफ़िंग बाय फ्लास्क एंड प्लॉटली के साथ: क्या आपकी बालकनी पर तापमान, आर्द्रता या प्रकाश की तीव्रता को जानना मजेदार होगा? मुझे पता है मैं करूँगा। इसलिए मैंने ऐसा डेटा एकत्र करने के लिए एक साधारण मौसम स्टेशन बनाया। निम्नलिखित खंड वे कदम हैं जो मैंने एक बनाने के लिए उठाए हैं।चलो शुरू करते हैं