MIPT (तीसरे सप्ताह) से arduino / रोबोटिक्स पर ऑनलाइन पाठ्यक्रम की समीक्षा

हम Arduino पर मुफ्त ऑनलाइन पाठ्यक्रम बिल्डिंग रोबोट और अन्य उपकरणों की समीक्षा करना जारी रखते हैं ट्रैफ़िक लाइट से 3 डी प्रिंटर तक (पिछली समीक्षा: सप्ताह 1 , सप्ताह 2 )


तीसरा हफ्ता


सभी को नमस्कार! क्या आपने कभी सोचा है कि घाटी और बाधा के बीच क्या आम हो सकता है?



कम से कम, वे दोनों रोबोट हैं


इससे पहले कि मैं MIPT से रोबोटिक्स कोर्स में दाखिला लेता, मैंने लगभग अनन्य रूप से रोबोट की कल्पना की


humanoid मशीनों

लेकिन यह पता चला कि रोबोट की परिभाषा बहुत व्यापक है:


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

जैसा कि आप देख सकते हैं, परिभाषा एक रोबोट क्या है के मेरे रूढ़िवादी विचार की तुलना में बहुत व्यापक है।


तीसरे सप्ताह में, प्रोग्रामिंग वातावरण की कुछ नई विशेषताओं के अलावा, हम सीखेंगे कि रेंजफाइंडर , इन्फ्रारेड और अल्ट्रासाउंड के साथ कैसे काम करें, साथ ही सर्विसमोटर्स का उपयोग करके बाहरी वातावरण के साथ बातचीत करें। पहले चीजें पहले।


तीसरे सप्ताह के परिणाम के अनुसार क्या हुआ

मैं आपको याद दिला दूं कि पाठ्यक्रम के दूसरे सप्ताह में हमने सबसे सरल सेंसर के कनेक्शन की जांच की - एक फोटोरिसेस्टर और एक थर्मिस्टर। उन्हें सबसे सरल तरीके से व्यवस्थित किया गया था - जब पर्यावरण बदल गया, उन्होंने अपना प्रतिरोध बदल दिया और, परिणामस्वरूप, हम Arduino का उपयोग करके उन पर वोल्टेज ड्रॉप को माप सकते हैं और समझ सकते हैं कि बाहरी परिस्थितियां बदल गईं। हमने एलईडी संकेतक और पीज़ोडायनामिक्स का उपयोग करके जानकारी प्रदर्शित करने का तरीका भी सीखा।


इस सप्ताह हम रेंजफाइंडर का अध्ययन कर रहे हैं - एक उपकरण जो आपको किसी वस्तु या बाधा की दूरी निर्धारित करने की अनुमति देता है।



अल्ट्रासोनिक रेंज फाइंडर एक सिग्नल भेजने (40 kHz की आवृत्ति के साथ ध्वनि पल्स) के बीच के समय को मापने के सिद्धांत पर काम करता है और इसकी प्रतिबिंबित प्रति प्राप्त करता है।



इंफ्रारेड सेंसर में परावर्तित संकेत (इंफ्रारेड स्पेक्ट्रम में एक बीम) लेंस से होकर एक स्थिति-संवेदनशील फोटोकेल तक जाता है, जो किरण प्राप्त होने के स्थान पर उसकी चालकता को बदल देता है।


शायद पाठक को इसमें दिलचस्पी होगी कि एक ही काम करने के लिए दो सेंसर की आवश्यकता क्यों हो सकती है? यह सब सेंसर के दायरे पर निर्भर करता है, इसलिए अवरक्त सेंसर प्रकाश-अवशोषित या पारदर्शी सतहों की दूरी को मापने के लिए उपयुक्त नहीं है, क्योंकि यह प्रकाश पर आधारित है। दूसरी ओर, अल्ट्रासोनिक रेंज फाइंडर ध्वनि-अवशोषित सतहों की दूरी को निर्धारित करने के लिए उपयुक्त नहीं है, विशेष रूप से शराबी :) इसके अलावा, अवरक्त सेंसर में मापा दूरी की एक छोटी श्रृंखला होती है (उदाहरण के लिए, 4-30, 10-80 या 80-150 सेमी), जबकि सस्ती भी। रेंज फाइंडर 2 से 400 सेमी तक की दूरी निर्धारित करता है। केवल अल्ट्रासोनिक रेंज फाइंडर मेरे सेट में निकला, इसलिए मैंने इसे केवल प्रयोगों के लिए उपयोग किया।



सर्वो मोटर क्या है? यह एक छोटी इलेक्ट्रिक मोटर है जो एक पोटेंशियोमीटर और एक नियंत्रण सर्किट के साथ संयुक्त है। सर्विसोमोटर के इनपुट में PWM सिग्नल लगाकर, हम उस कोण को सेट कर सकते हैं जिसके द्वारा यह स्थिति मोड़नी चाहिए। आमतौर पर, अधिकतम रोटेशन कोण 180 डिग्री है, लेकिन 120 से 270 डिग्री के कोण के साथ सर्वमोटर्स हैं।


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


इस उपकरण को बनाने के लिए, मैंने स्कूल के समय से संरक्षित किए गए डिजाइनर तत्वों का उपयोग किया।




चूंकि कंप्यूटर से बिजली स्पष्ट रूप से पर्याप्त नहीं थी, इसलिए बोर्ड को समय-समय पर रिबूट किया गया था, इसलिए, अंतिम संस्करण में, पावरबैंक का उपयोग बिजली के लिए किया गया था।



वास्तव में, थ्रूपुट प्रणाली का हमारा सरलीकृत मॉडल कैसे काम करता है:


  1. स्विच करने के बाद, लाल ट्रैफ़िक लाइट बंद हो जाती है, बाधा बंद स्थिति पर सेट होती है। सिस्टम बटन को दबाए जाने का इंतजार करता है (पास को पढ़ने का अनुकरण)।
  2. बटन दबाने के बाद, हरे रंग का ट्रैफिक सिग्नल लाइट हो जाता है और बैरियर खुल जाता है। सिस्टम एक निश्चित मूल्य (वाहन यात्रा) से नीचे रेंजफाइंडर की प्रतीक्षा करता है।
  3. वाहन रेंज फाइंडर सिग्नल को पार करने के बाद, लाल ट्रैफिक सिग्नल को फिर से रोशनी देता है और अवरोध बंद हो जाता है। सिस्टम फिर से स्टैंडबाय मोड में प्रवेश करता है।

फ्रिटिंग के माहौल में, योजना इस प्रकार है:



स्रोत कोड
#include <Servo.h> //     #define GATE_PIN 3 #define RED_PIN 4 #define GREEN_PIN 5 #define BUTTON_PIN 6 #define SENSOR_TRIG 11 #define SENSOR_ECHO 12 //     #define GREEN 1 #define RED 0 #define CLOSE 1 #define OPEN 0 //   ,      #define GATE_OPEN 180 #define GATE_CLOSE 90 // ,     #define SENSOR_THR 15 Servo gate; void setup() { Serial.begin(9600); //      Serial.println("Initialize gate"); gate.attach(GATE_PIN); gate.write(CLOSE); //     Serial.println("Setup pins"); pinMode(GREEN_PIN, OUTPUT); pinMode(RED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(SENSOR_TRIG, OUTPUT); pinMode(SENSOR_ECHO, INPUT); Serial.println("Light red"); light(RED); } //   -  void gateSet(int state) { if (state == CLOSE) { for (int i = GATE_OPEN; i >= GATE_CLOSE; i--) { gate.write(i); delay(15); } } else { for (int i = GATE_CLOSE; i <= GATE_OPEN; i++) { gate.write(i); delay(15); } } } //   void light(int col) { if (col == RED) { digitalWrite(GREEN_PIN, LOW); digitalWrite(RED_PIN, HIGH); } else { digitalWrite(GREEN_PIN, HIGH); digitalWrite(RED_PIN, LOW); } } //     / int getDistance() { digitalWrite(SENSOR_TRIG, HIGH); digitalWrite(SENSOR_TRIG, LOW); int distance = pulseIn(SENSOR_ECHO, HIGH) / 54; Serial.println("Distance is :" + String(distance)); return distance; } // ,    bool waitCar() { while (getDistance() > SENSOR_THR) { delay(10); } while (getDistance() <= SENSOR_THR) { delay(10); } } void loop() { Serial.println("Wait button"); while (digitalRead(BUTTON_PIN)) { delay(10); } Serial.println("Light green"); light(GREEN); Serial.println("Open gate"); gateSet(OPEN); Serial.println("Wait for car"); waitCar(); Serial.println("Light red"); light(RED); Serial.println("Close gate"); gateSet(CLOSE); Serial.println("End loop"); } 

इकट्ठे डिवाइस के संचालन का प्रदर्शन



संक्षेप में देना। इस हफ्ते हमने सीखा कि रेंजफाइंडर के साथ कैसे काम किया जाए, साथ ही एक सर्वो ड्राइव को भी नियंत्रित किया जाए। ये तत्व कई पहिया या चलने वाले रोबोटों के साथ-साथ विभिन्न मैनिपुलेटर्स के लिए आधार हैं, इसलिए, रचनात्मकता के लिए एक बड़ी जगह प्रदान करते हैं।


पिछले समीक्षाएँ :



और पाठ्यक्रम के लिए एक कड़ी: रोबोट और Arduino पर अन्य उपकरणों का निर्माण। ट्रैफिक लाइट से लेकर 3 डी प्रिंटर तक

Source: https://habr.com/ru/post/hi403841/


All Articles