विषयसूची:
- चरण 1: इस परियोजना के बारे में
- चरण 2: हार्डवेयर की आवश्यकता
- चरण 3: सर्किट और कनेक्शन
- चरण 4: काम करना
- चरण 5: कोड
- चरण 6: वीडियो प्रदर्शन
वीडियो: Arduino और ESP8266 के बीच HC-12: 6 चरणों के बीच MPU6050 का उपयोग करके सर्वो को नियंत्रित करना
2024 लेखक: John Day | [email protected]. अंतिम बार संशोधित: 2024-01-30 09:21
इस परियोजना में, हम Arduino UNO और ESP8266 NodeMCU के बीच संचार के लिए mpu6050 और HC-12 का उपयोग करके एक सर्वो मोटर की स्थिति को नियंत्रित कर रहे हैं।
चरण 1: इस परियोजना के बारे में
यह एचसी-12 आरएफ-मॉड्यूल पर आधारित एक अन्य आईओटी परियोजना है। यहाँ, arduino से imu (mpu6050) डेटा का उपयोग सर्वो मोटर (Nodemcu से जुड़ा) को नियंत्रित करने के लिए किया जाता है। यहाँ, डेटा विज़ुअलाइज़ेशन को arduino साइड पर भी किया जाता है जहाँ mpu6050 पिच डेटा (x-अक्ष के बारे में रोटेशन) को प्रोसेसिंग स्केच (बाद में चर्चा की गई) के साथ विज़ुअलाइज़ किया जाता है। मूल रूप से यह परियोजना Arduino और ESP8266 nodemcu के साथ Imu और सर्वो नियंत्रण के विभिन्न पहलुओं को याद रखने के लिए बस थोड़ा गर्म है।
उद्देश्य
इसका उद्देश्य स्पष्ट है, हम IMU के पिच मान का उपयोग करके सर्वो मोटर की स्थिति को नियंत्रित कर रहे हैं। और सभी एक साथ इस पिच और सिंक्रनाइज़ मोटर स्थिति को प्रसंस्करण के साथ देखा जाता है।
चरण 2: हार्डवेयर की आवश्यकता
NodeMCU ESP8266 12E वाईफ़ाई मॉड्यूल
सोल्डरलेस ब्रेडबोर्ड
जम्पर तार
MPU6050 accelo+gyro
एचसी-12 आरएफ मॉड्यूल (जोड़ी)
SG90 सर्वो मोटर
चरण 3: सर्किट और कनेक्शन
कनेक्शन सीधे आगे हैं। आप अपने Nodemcu के 3.3V के साथ सर्वो को शक्ति प्रदान कर सकते हैं। आप विन का उपयोग सर्वो को शक्ति देने के लिए भी कर सकते हैं यदि आपके नोडमक्यू में उस पिन पर इतना वोल्टेज है। लेकिन अधिकांश लोलिन बोर्डों में विन (निर्माता पर निर्भर करता है) पर 5V नहीं होता है।
ये सर्किट आरेख EasyADA का उपयोग करके बनाए गए हैं।
चरण 4: काम करना
जैसे ही arduino स्केच शुरू हुआ, यह Nodemcu के hc12 रिसीवर को पिच कोण (जो -45 से 45 तक होता है) भेज देगा जो 0 से 180 डिग्री सर्वो स्थिति के साथ मैप किया जाता है। यहां हमने पिच कोण का उपयोग -45 से +45 डिग्री तक किया ताकि हम इसे आसानी से सर्वो स्थिति में मैप कर सकें।
अब, आप सोच रहे हैं कि हम मानचित्र विधि का उपयोग इस प्रकार क्यों कर सकते हैं: -
इंट पॉज़ = मैप (वैल, -45, 45, 0, 180);
क्योंकि hc12 ट्रांसमीटर द्वारा भेजा गया ऋणात्मक कोण इस प्रकार प्राप्त होता है:
पहली छमाही: (टी) 0 से 45 => 0 से 45 (आर)
दूसरी छमाही: (टी) -45 से -1 => 255 से 210 (आर)
तो आपको इसे 0 से 180 के रूप में मैप करना होगा
if(val>=0 && val<=45) pos = (val*2)+90; अन्य स्थिति = (वैल-२१०)*२;
मैं कुछ अप्रासंगिक त्रुटि के कारण मानचित्र विधि से बच रहा हूं। आप इसे आजमा सकते हैं और टिप्पणी कर सकते हैं कि यह आपके साथ काम करता है
if(val>=0 && val<=45) pos = map(val, 0, 45, 90, 180); अन्य स्थिति = नक्शा (वैल, 255, 210, 0, 90); // चौथा तर्क 2 हो सकता है (आप जांच सकते हैं)
MPU6050 पिच कोण गणना
मैं MPU6050_tockn लाइब्रेरी का उपयोग कर रहा हूं जो IMU से कच्चा डेटा देने पर आधारित है।
इंट पिचएंगल = mpu6050.getAngleX ()
इससे हमें x-अक्ष के परितः घूर्णन कोण प्राप्त होगा। जैसा कि आपने चित्र में देखा, मेरा इमू ब्रेडबोर्ड पर लंबवत रखा गया है, इसलिए पिच और रोल के साथ भ्रमित न हों। वास्तव में आपको ब्रेकआउट बोर्ड पर हमेशा अक्ष को मुद्रित देखना चाहिए।
इस पुस्तकालय के माध्यम से, आपको विशिष्ट संचालन के लिए विशिष्ट रजिस्टरों को पढ़ने के आंतरिक इलेक्ट्रॉनिक्स के बारे में परेशान नहीं होना पड़ेगा। आप केवल कार्य निर्दिष्ट करते हैं और आपका काम हो गया!
बीटीडब्ल्यू अगर आप कोण की गणना स्वयं करना चाहते हैं। आप इसे इस प्रकार आसानी से कर सकते हैं:
#शामिल
कॉन्स्ट इंट MPU6050_addr = 0x68; int16_t AcX, AcY, AcZ, Temp, GyroX, GyroY, GyroZ; शून्य सेटअप () {वायर.बेगिन (); Wire.beginTransmission (MPU6050_addr); वायर.राइट (0x6B); वायर.राइट (0); वायर.एंडट्रांसमिशन (सच); सीरियल.बेगिन (९६००); } शून्य लूप () {वायर.बेगिनट्रांसमिशन (MPU6050_addr); वायर.राइट (0x3B); वायर.एंडट्रांसमिशन (झूठा); Wire.requestFrom (MPU6050_addr, 14, सच); AcX=वायर.रीड ()<<8|वायर.रीड (); एसीवाई=वायर.रीड ()<<8|वायर.रीड (); AcZ=वायर.रीड ()<<8|वायर.रीड (); Temp=Wire.read()<<8|Wire.read (); GyroX=Wire.read()<<8|Wire.read(); GyroY=Wire.read()<<8|Wire.read(); GyroZ=Wire.read()<<8|Wire.read();
int xAng = नक्शा (AcX, minVal, maxVal, -90, 90); int yAng = नक्शा (AcY, minVal, maxVal, -90, 90); int zAng = नक्शा (AcZ, minVal, maxVal, -90, 90); x= RAD_TO_DEG * (atan2(-yAng, -zAng)+PI); y= RAD_TO_DEG * (atan2(-xAng, -zAng)+PI); z= RAD_TO_DEG * (atan2(-yAng, -xAng)+PI); सीरियल.प्रिंट ("एंगलएक्स ="); // पिच सीरियल.प्रिंट्लन (एक्स); सीरियल.प्रिंट ("एंगलवाई ="); // रोल सीरियल.प्रिंट्लन (वाई); सीरियल.प्रिंट ("एंगलजेड ="); // Yaw Serial.println (z); }
लेकिन, यह जरूरी नहीं है कि आप एंगल निकालने के लिए इतना कोड ही लिखें। आपको परदे के पीछे के तथ्यों को जानना चाहिए लेकिन कई परियोजनाओं में अन्य लोगों के पुस्तकालय का उपयोग करना बहुत प्रभावी होता है। आप निम्न लिंक से अधिक फ़िल्टर किए गए डेटा प्राप्त करने के लिए इस आईमु और अन्य दृष्टिकोणों के बारे में पढ़ सकते हैं: एक्सप्लोर-एमपीयू 6050।
संचारण छोर पर मेरे arduino कोड में MPU6050_tockn लाइब्रेरी की मदद से केवल 30 लाइनें हैं, इसलिए लाइब्रेरी का उपयोग करना अच्छा है जब तक कि आपको IMU की कार्यक्षमता में कुछ मुख्य परिवर्तनों की आवश्यकता न हो। यदि आप IMU के DMP (डिजिटल मोशन प्रोसेसर) का उपयोग करके कुछ फ़िल्टर किए गए डेटा चाहते हैं, तो Jeff Rowberg द्वारा I2Cdev नाम की एक लाइब्रेरी बहुत मददगार है।
प्रसंस्करण के साथ एकीकरण
यहां प्रोसेसिंग का उपयोग IMU के x-अक्ष के बारे में घूर्णी डेटा की कल्पना के लिए किया जाता है, जैसा कि MPU6050 से आने वाले कच्चे डेटा द्वारा गणना की जाती है। हम सीरियलइवेंट में आने वाले कच्चे डेटा को निम्नलिखित तरीके से प्राप्त करते हैं:
शून्य सीरियलइवेंट (सीरियल मायपोर्ट) {
inString = myPort.readString (); कोशिश करें {// डेटा पार्स करें //println (inString); स्ट्रिंग डेटास्ट्रिंग्स = स्प्लिट (इनस्ट्रिंग, ':'); if (dataStrings.length == 2) {if (dataStrings[0].equals("RAW")) { for (int i = 0; i < dataStrings.length - 1; i++) { raw = float(डेटास्ट्रिंग्स [i + 1]); } } और { प्रिंट्लन (इनस्ट्रिंग); } } } पकड़ें (अपवाद ई) { println ("पकड़ा गया अपवाद"); } }
यहां आप इस चरण में संलग्न छवि में विज़ुअलाइज़ेशन देख सकते हैं। नोडएमसीयू के अंत में प्राप्त स्थिति डेटा को सीरियल मॉनिटर पर भी देखा जाता है जैसा कि छवि में दिखाया गया है।
चरण 5: कोड
मैंने जीथब भंडार संलग्न किया है। आप इसे अपनी परियोजनाओं में उपयोग करने के लिए क्लोन और फोर्क कर सकते हैं।
my_code
रेपो में ट्रांसमीटर (arduino + IMU) और रिसीवर (Nodemcu + सर्वो) के लिए 2 arduino स्केच शामिल हैं।
और एक प्रसंस्करण स्केच। रेपो को तारांकित करें यदि यह आपकी परियोजना में मदद करता है।
इस निर्देशयोग्य में, आर- रिसीवर और टी- ट्रांसमीटर
चरण 6: वीडियो प्रदर्शन
मैं कल वीडियो संलग्न करूंगा। सूचना पाने के लिए मुझे फॉलो करें।
आप सभी को धन्यवाद!
सिफारिश की:
DIY -- कैसे एक स्पाइडर रोबोट बनाने के लिए जिसे Arduino Uno का उपयोग करके स्मार्टफ़ोन का उपयोग करके नियंत्रित किया जा सकता है: 6 चरण
DIY || कैसे एक स्पाइडर रोबोट बनाने के लिए जिसे Arduino Uno का उपयोग करके स्मार्टफ़ोन का उपयोग करके नियंत्रित किया जा सकता है: स्पाइडर रोबोट बनाते समय, रोबोटिक्स के बारे में बहुत सी बातें सीख सकते हैं। जैसे रोबोट बनाना मनोरंजक होने के साथ-साथ चुनौतीपूर्ण भी है। इस वीडियो में हम आपको स्पाइडर रोबोट बनाने का तरीका दिखाने जा रहे हैं, जिसे हम अपने स्मार्टफोन (Androi
एनालॉग जॉयस्टिक का उपयोग करके 2 सर्वो को नियंत्रित करना: 5 कदम (चित्रों के साथ)
एनालॉग जॉयस्टिक का उपयोग करके 2 सर्वो को नियंत्रित करना: नमस्कार दोस्तों, यह मेरा पहला निर्देश है और इस पोस्ट में मैं Arduino UNO का उपयोग करके सर्वो को नियंत्रित करने के लिए एनालॉग जॉयस्टिक का उपयोग करने का तरीका साझा कर रहा हूं। मैं इसे यथासंभव सरल रूप से समझाने की कोशिश करूंगा। यह
पोटेंशियोमीटर (वैरिएबल रेसिस्टर) और अरुडिनो यूनो का उपयोग करके एलईडी / चमक को लुप्त करना / नियंत्रित करना: 3 चरण
पोटेंशियोमीटर (वैरिएबल रेसिस्टर) और अरुडिनो यूनो का उपयोग करके एलईडी/चमक को फीका/नियंत्रित करना: Arduino एनालॉग इनपुट पिन पोटेंशियोमीटर के आउटपुट से जुड़ा है। तो Arduino ADC (डिजिटल कनवर्टर के अनुरूप) एनालॉग पिन पोटेंशियोमीटर द्वारा आउटपुट वोल्टेज को पढ़ रहा है। पोटेंशियोमीटर नॉब को घुमाने से वोल्टेज आउटपुट बदलता है और Arduino फिर से
ESP8266 NODEMCU BLYNK IOT ट्यूटोरियल - Esp8266 IOT ब्लंक और Arduino IDE का उपयोग करना - इंटरनेट पर एलईडी को नियंत्रित करना: 6 कदम
ESP8266 NODEMCU BLYNK IOT ट्यूटोरियल | Esp8266 IOT ब्लंक और Arduino IDE का उपयोग करना | इंटरनेट पर एलईडी को नियंत्रित करना: हाय दोस्तों इस निर्देश में हम सीखेंगे कि अपने ESP8266 या Nodemcu के साथ IOT का उपयोग कैसे करें। हम उसके लिए blynk ऐप का उपयोग करेंगे। इसलिए हम इंटरनेट पर LED को नियंत्रित करने के लिए अपने esp8266/nodemcu का उपयोग करेंगे। इसलिए Blynk ऐप हमारे esp8266 या Nodemcu से जुड़ा होगा
एक 3D प्रिंटर का उपयोग करके Arduino के माध्यम से सीरियल कंट्रोल के साथ स्टेप सर्वो मोटर को इनकैप्सुलेट करना - Pt4: 8 चरण
एक 3D प्रिंटर का उपयोग करके Arduino के माध्यम से सीरियल कंट्रोल के साथ स्टेप सर्वो मोटर को एनकैप्सुलेट करना - Pt4: मोटर स्टेप सीरीज़ के इस चौथे वीडियो में, हम ’ जो हमने पहले सीखा है उसका उपयोग सीरियल संचार और वास्तविक के माध्यम से नियंत्रण के साथ एक स्टेपर सर्वो मोटर बनाने के लिए करेंगे। एक Arduino द्वारा मॉनिटर किए गए प्रतिरोधक एन्कोडर का उपयोग करके स्थिति प्रतिक्रिया। में