Advertisement
  1. Business
  2. Templates

डीसी मोटर्स (DC Motors) पर नियंत्रण करना रास्पबेरी पाइ (Raspberry Pi) के साथ पायथन (Python) का उपयोग करके

Scroll to top
Read Time: 11 min

() translation by (you can also view the original English article)

इस ट्यूटोरियल में मैं आपको दिखाऊंगा कि आपके रास्पबेरी पाइ में कुछ मोटर्स को कैसे जुड़ा जाए। ऐसा करने से आपके रास्पबेरी पाइ (Raspberry Pi) को असली दुनिया में बातचीत (इंटरैक्ट) करने की अनुमति मिल जाएगी, जिससे रोबोट का निर्माण संभव हो, एक पंखा को गर्म दिन में चालू कर दें या यहां तक कि अपनी बिल्लियों या कुत्ते के लिए भोजन छोड़ें, जब आप दूर होते है। 

लक्ष्य 

हम जो करने की योजना बना रहे हैं, वह है रास्पबेरी पाइ (Raspberry Pi) में एक या दो मोटर्स को सुरक्षित रूप से कनेक्ट हो सके, जितनी संभव हो उतनी ही कुछ पुरज़ा (कम्पोनन्ट्स) के साथ। एक बार हमारे पास इलेक्ट्रॉनिक्स को ब्रेडबोर्ड पर इकट्ठा करने के बाद, मैं आपको दिखाता हूँ कि पहले मोटर स्पिन करने के लिए पायथन (Python) से आसानी से नियंत्रण कैसे करें, और फिर मोटर दिशा बदलने के लिए कुछ नियंत्रण जोड़ें ताकि हम पीछे की तरफ जा सकें।

इस गाइड में किसी भी गलती को पकड़ने के लिए सावधानीपूर्वक आंख की आवश्यकता होगी, और थोड़ी हिम्मत, खासकर अगर आप जीपीआईओ (GPIO) कनेक्टर के लिए नए हों। मैं ज़ोर देना चाहता हूं कि मैं आपके रास्पबेरी पाइ (Raspberry Pi) और/या कम्पोनन्ट्स की होने वाली किसी भी क्षति के लिए ज़िम्मेदार नहीं हूं। 

महत्वपूर्ण: किसी भी मोटर को रास्पबेरी पाइ (Raspberry Pi) से सीधे कनेक्ट न करें, चाहे कितना छोटा हो, यह आपके रास्पबेरी पाइ (Raspberry Pi) को नुकसान पहुंचाएगा। 

मुख्य प्रोसेसर केवल एक एलईडी (LED), मोटे तौर पर 20 mA को रोशनी करने के लिए पर्याप्त शक्ति प्रदान कर सकता है। एक मोटर को शुरू करने के लिए कम से कम 400 mA बिजली चाहते हैं। 

आवश्यकताएँ 

मोटर चलाने के लिए, आपको निम्न चीज़ें की आवश्यकता होगी: 

  • Raspbian के साथ प्रीइन्स्टॉल्ड हुआ एसडी (SD) कार्ड के साथ एक रास्पबेरी पाइ (Raspberry Pi)
  • सब कुछ कनेक्ट करने के लिए एक ब्रेडबोर्ड 
  • एक L293 या SN755410 मोटर ड्राइवर चिप (मैं इस ट्यूटोरियल में दोनों को L293D के रूप में देखेंगे) 
  • सबकुछ कनेक्ट करने के लिए जम्पर केबल्स (मेल टू मेल और फीमेल टू मेल)
  • 6v के लिए रेट किए गए एक या दो डीसी मोटर्स (DC motors) 
  • 4x AA बैटरी और होल्डर 

जीपीआईओ (GPIO) पिन 

यदि आपने पहले रास्पबेरी पाइ (Raspberry Pi) को बारीकी से नहीं देखा है, तो अब सबसे अच्छा समय हो सकता है देखने के लिए। 13 की दो पंक्तियों में समूहीकृत 26 पिन हैं, और इन्हें संक्षिप्त रूप से सामान्य प्रयोजन इनपुट आउटपुट हेडर (General Purpose Input Output header) या जीपीआईओ (GPIO) कहा जाता है। ये चार पावर पिंस, पांच ग्राउंड पिन और 17 डेटा पिंस का मिश्रण है।


आकृति 1: पिन नंबर के साथ GPIOs का लेआउट। पिन 1 शीर्ष बाएं लेबल 3V3 के साथ है। 

इनमें से कुछ पिनों में अतिरिक्त कार्य (फंगक्शन) हैं जैसे कि एक i2c बस, एसपीआई (SPI) बस और यूएआरटी (UART) सीरियल कनेक्टर, जो सभी अन्य हार्डवेयर से कनेक्ट हो सकते हैं तथा रास्पबेरी पाइ (Raspberry Pi) को अन्य चीजों से बात करने में मदद करता है, जैसे कि रास्पबेरी पाई को अरडिनो (Arduino), एनालॉग टू डिजिटल कन्वर्टर (एडीसी) या ऐड-ऑन बोर्ड जैसे कि एक PiGlow या PiFace

टिप: जीपीआईओ (GPIO) पिन के साथ काम करते समय, हमेशा ऐसा करे जबकि पाइ (Pi) अनप्लग होता है, क्योंकि कनेक्ट होने के कारण किसी भी दुर्घटना (या शॉर्टिंग) 2 पिंस को जोड़कर रास्पबेरी पाइ (Raspberry Pi) को नुकसान हो सकता है। 

सर्किट को असेम्बल करना 

पावर और ग्राउंड को जोड़ना 

यह तब करना महत्वपूर्ण है जब तक रास्पबेरी पाइ (Raspberry Pi) की शक्ति (पाउअर) बंद है, या डिस्कनेक्ट हो गई है, जैसा कि आप गलती से किसी भी कनेक्टर को सॉर्ट करने से बचना चाहते हैं। 

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


चित्र 2: शक्ति (पाउअर) और ग्राउन्ड तारों को कनेक्ट करें 

रास्पबेरी पाइ (Raspberry Pi) पर ग्राउन्ड फिज़िकल पिन 6 है। चित्र 1 में जिक्र है की जो पिन 3V3 के साथ ऊपरी बाईं ओर शुरू हो कर के, बाएं से दाएं गिनती से 5V पिन 2 है, जीपीआईओ 2 (लेबल 2) पिन 3 है और ऐसा ही आगे भी।

इंटीग्रेटेड सर्किट (आईसी) चिप्स पर पिन नंबर पढ़ना आसानी से किया जाता है, पायदान या डॉट को बाईं ओर करके फिर नीचे की ओर से शुरू होने से हमें पिन 1 मिलता है। 

चित्र 3. पिन 1 नीचे से बाईं ओर है

डेटा तार को जोड़ना

अब GPIO पिन से तीन तार L293D तक जोड़ें 

  • GPIO 25–पिन  22 > L293D–पिन 1 
  • GPIO 24–पिन  18 > L293D–पिन  2 
  • GPIO 23–पिन  16 > L293D–पिन  7 

चित्र 4: मोटर को नियंत्रित करने के लिए तीन जीपीआईओ (GPIO) तार जोड़ें 

मोटर जोड़ें: 

  • मोटर-तार 1> L293D-पिन 3 
  • मोटर-तार 2> L293D-पिन 6 
चित्र 5: बैटरी और मोटर को जोड़ा 

यह बेहद महत्वपूर्ण है कि आप बैटरियों को जोड़ने से पहले प्रत्येक कनेक्शन को दोबारा जांच लें। केवल जब आप खुश हैं कि सब कुछ ठीक हो रहा है, ब्रेड्बोर्ड के पावर रेल को बैटरी तारों से कनेक्ट करें।

दूसरा मोटर जोड़ें (वैकल्पिक) 

L293D की महान विशेषताओं में से एक यह है कि यह स्वतंत्र रूप से दो मोटर्स को नियंत्रित कर सकता है और प्रत्येक मोटर अलग-अलग गति या दिशाओं में चला सकता है। इस एक आईसी का उपयोग करना संभवतः दो-पहिए वाली रोबोट को मोड़ने, आगे बढ़ने और पीछे की तरफ आसानी से चलने में सक्षम बनाता है। 

दूसरे मोटर को जोड़ने में सिर्फ तीन अतिरिक्त तार और एक अन्य मोटर शामिल है।

  • GPIO 11–पिन 23> L293D–पिन 9 
  • GPIO 9–पिन 21> L293D-पिन 10 
  • GPIO 10–पिन 19 > L293D–पिन 15
रोबोटिक्स के लिए पूरी तरह तैयार सेटप 

पॉवरिंग ऑन 

अपने प्रोजेक्ट को किसी भी शक्ति (पाउअर) का स्रोत जोड़ने से पहले किसी भी वायरिंग को जांचना और दो-बार जांचना महत्वपूर्ण है क्योंकि कुछ तार थोड़ा मिश्रित हो सकते हैं, कनेक्शन को भूल करना आसान है और रास्पबेरी पाइ (Raspberry Pi) के 3.3V में भूल से 5V भेजना आसान है। 

हमेशा अपने तारों की जांच करें और फिर इसे फिर से जांचें! 

अगर आपने पहले अपने रास्पबेरी पाइ (Raspberry Pi) के लिए एक एसडी कार्ड स्थापित नहीं किया है, यह समझने योग्य होगा कि एक को कैसे करना है, रास्पबेरी पाइ (Raspberry Pi) के लिए एसडी कार्ड फ्लैश कैसे करे ट्यूटोरियल पहले पढ़ें।

एक ताजा सेटअप रास्पबियन (Raspbian) एसडी कार्ड के साथ, सामान्य रूप से रास्पबेरी पाइ (Raspberry Pi)  को कनेक्ट करें और बूट करें। 

बैटरियों को जोड़ें, यह सुनिश्चित करें कि आप सही रेल (ऊपर और नीचे के साथ लंबी स्ट्रिप्स, यदि आपके पास हैं) पर ध्यान दें, क्योंकि आप केवल काले तार को ग्राउन्ड से कनेक्ट करना चाहते हैं और लाल तार को पाज़िटिव या केवल चिप का स्रोत (सोर्स) से। 

अगली काम रास्पबेरी पाइ (Raspberry Pi) को यह बताने के लिए है कि एक मोटर या दो, जुड़ा हुआ है। ऐसा करने के लिए मैं पायथन (Python) नामक एक भाषा (लैंगग्वज) का उपयोग कर रहा हूं।  यह रास्पबियन (Raspbian) पर पहले से स्थापित (इन्स्टॉल्ड) होता है जो एक बोनस है। यदि आप किसी अन्य ऑपरेटिंग सिस्टम जैसे आर्क (Arch) या पाइडोरा (PiDora) का उपयोग कर रहे हैं, तो दोबारा जांच करें कि क्या RPi.GPIO उपलब्ध है। 

परिक्षण

मोटर्स को काम करने के लिए, एक टर्मिनल विंडो को लाने के लिए अपने डेस्कटॉप पर LXTerminal पर डबल क्लिक करें। यह वह जगह है जहाँ आप नैनो  नामक प्रोग्राम का उपयोग करके पायथन कोड लिखेंगे।  नैनो एक टेक्स्ट एडिटर है, जो नोटपैड  या टेक्स्टएडिट  के समान है, लेकिन कमांड प्रॉम्प्ट के लिए, मैं आपको कुछ आदेशों को सिखाऊँगा, यदि आप इसके लिए नए हैं।

दो सेकंड के लिए मोटर चालू करने के लिए निम्न कोड का उपयोग करें:

1
import RPi.GPIO as GPIO
2
from time import sleep
3
4
GPIO.setmode(GPIO.BOARD)
5
6
Motor1A = 16
7
Motor1B = 18
8
Motor1E = 22
9
10
GPIO.setup(Motor1A,GPIO.OUT)
11
GPIO.setup(Motor1B,GPIO.OUT)
12
GPIO.setup(Motor1E,GPIO.OUT)
13
14
print "Turning motor on"
15
GPIO.output(Motor1A,GPIO.HIGH)
16
GPIO.output(Motor1B,GPIO.LOW)
17
GPIO.output(Motor1E,GPIO.HIGH)
18
19
sleep(2)
20
21
print "Stopping motor"
22
GPIO.output(Motor1E,GPIO.LOW)
23
24
GPIO.cleanup()

पहली दो पंक्तियां पायथन (Python) को बताती हैं कि प्रोग्रैम में क्या आवश्यकता है।

पहली पंक्ति RPi.GPIO नामक एक मॉड्यूल का उपयोग करना चाहती है। यह मॉड्यूल रास्पबेरी पाइ (Raspberry Pi) पर जीपीआईओ (GPIO) पिन को चालू और बंद करने के लिए शामिल सभी कड़ी मेहनत का प्रबंधन करता है।

दूसरी पंक्ति में मॉड्यूल time (समय) से sleep (स्लीप) लाया जाता है जिससे कि स्क्रिप्ट को समय पर pause (रोकना) संभव हो जाता है जिससे कि उसे कुछ कार्य करने के लिए समय दिया जा सकता है, इस मामले में कुछ सेकंड के लिए मोटर को चालू छोड़ दिया जाता है। 

फ़ंक्शन setmode (सेटमोड) आरपीआई .GPIO को रास्पबेरी पी पर बोर्ड नंबरिंग का उपयोग करने के लिए कहता है संख्या 16, 18 और 22 हम पायथन को बताएंगे कि वे मोटर्स से जुड़े पिन हैं।

L293D का उपयोग करते समय आप इसे दिशा दे सकते हैं, एक दिशा में मोड़ने के लिए एक तरफ दिशा बदल कर, इसे पिन ए (A) कहा जाता है और इसके विपरीत पिन बी (B) है। Enable (एनेबल) नामक पिन का उपयोग मोटर को चालू (on) करने के लिए, परीक्षण स्क्रिप्ट में ई (E) लेबल किया गया - वह पिन 22 है। हम इसे थोड़ा और बाद में कवर करेंगे। 

अंत में, रास्पबेरी पाइ (Raspberry Pi) को बताएं कि ये सभी आउटपुट हैं जो GPIO.OUT के साथ किया जाता है। 

स्क्रिप्ट की सेटप (स्थापना) के साथ, रास्पबेरी पाइ (Raspberry Pi) मोटर्स को चालू करने के लिए तैयार है। यह कुछ पिंस चालू (on) करेगा, दो सेकंड की प्रतीक्षा करें फिर उन्हें फिर से बंद करें, स्क्रिप्ट के शेष भाग में दिखाया गया है।

CTRL-X दबाकर सहेजें (सेव) और बाहर निकलें (एग्ज़िट), नीचे एक संदेश आपको परिवर्तन की पुष्टि (कन्फर्म) करने के लिए कहता है। पुष्टि करने के लिए Y और Enter दबाएं अब आप कमांड प्रॉम्प्ट पर वापस स्क्रिप्ट को चलाने के लिए और मोटर को स्पिन होते देखते हैं।

sudo python motor.py

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

अब पीछे की ओर जाएं

मोटर का स्पिन करना शानदार है, लेकिन और बेहतर है इसे पीछे की ओर बढ़ना भी, इसलिए मैं आपको यह दिखाता हूं कि यह कैसे करना है। 

तारों को कुछ भी करने की ज़रूरत नहीं है, यह पूरी तरह से पायथन (Python) पर निर्भर करता है। यह एक नई स्क्रिप्ट बनाकर हासिल की जाती है, जिसे इसे motorback.py कहते हैं। नैनो (Nano) में स्क्रिप्ट बनाने के लिए, कमांड दर्ज करें: 

nano motorback.py

निम्न कोड को दर्ज करें:

1
import RPi.GPIO as GPIO
2
from time import sleep
3
4
GPIO.setmode(GPIO.BOARD)
5
6
Motor1A = 16
7
Motor1B = 18
8
Motor1E = 22
9
10
GPIO.setup(Motor1A,GPIO.OUT)
11
GPIO.setup(Motor1B,GPIO.OUT)
12
GPIO.setup(Motor1E,GPIO.OUT)
13
14
print "Going forwards"
15
GPIO.output(Motor1A,GPIO.HIGH)
16
GPIO.output(Motor1B,GPIO.LOW)
17
GPIO.output(Motor1E,GPIO.HIGH)
18
19
sleep(2)
20
21
print "Going backwards"
22
GPIO.output(Motor1A,GPIO.LOW)
23
GPIO.output(Motor1B,GPIO.HIGH)
24
GPIO.output(Motor1E,GPIO.HIGH)
25
26
sleep(2)
27
28
print "Now stop"
29
GPIO.output(Motor1E,GPIO.LOW)
30
31
GPIO.cleanup()

 CTRL-X फिर Y, इसके बाद बचाने (सेव) के लिए Enter (एन्टर)

स्क्रिप्ट पिछले एक के समान है, लेकिन अगर आप पीछे की ओर देख रहे हैं तो हमने मोटर1ए कम (Motor1A low) और मोटर1बी उच्च (Motor1B high) रखा है। 

उच्च (high) और निम्न (low) केवल चालू (on) और बंद (off) के लिए प्रोग्रामिंग नाम हैं। 

मोटर को रोकने के लिए आप बंद कर देंगे, कम (low), मोटर1ई (Motor1E) को। 

Enable (एनेबल) मोटर को चालू (on) और बंद (off) करने के लिए स्विच है, चाहे ए (A) और बी (B) क्या कर रहे हैं, इसके बावजूद। 

यदि आपको यह भ्रामक लग रहा है, तो ट्रुथ टेबल  को देखें कि क्या हो रहा है।

ट्रुथ टेबल 

केवल दो स्टेट  हैं जो मोटर को चालू करने की इजाजत देते हैं, जब Enable (एनेबल) चालू (on) है या उच्च (high) है, और A या  B उच्च (high) होना चाहिए, लेकिन दोनों नहीं।

दो मोटर्स के लिए निम्न स्क्रिप्ट देखें। जो कुछ अलग है वह दूसरा मोटर सेट करने के लिए कुछ और पंक्तियां है। 

1
import RPi.GPIO as GPIO
2
from time import sleep
3
4
GPIO.setmode(GPIO.BOARD)
5
6
Motor1A = 16
7
Motor1B = 18
8
Motor1E = 22
9
10
Motor2A = 23
11
Motor2B = 21
12
Motor2E = 19
13
14
GPIO.setup(Motor1A,GPIO.OUT)
15
GPIO.setup(Motor1B,GPIO.OUT)
16
GPIO.setup(Motor1E,GPIO.OUT)
17
18
GPIO.setup(Motor2A,GPIO.OUT)
19
GPIO.setup(Motor2B,GPIO.OUT)
20
GPIO.setup(Motor2E,GPIO.OUT)
21
22
print "Going forwards"
23
GPIO.output(Motor1A,GPIO.HIGH)
24
GPIO.output(Motor1B,GPIO.LOW)
25
GPIO.output(Motor1E,GPIO.HIGH)
26
27
GPIO.output(Motor2A,GPIO.HIGH)
28
GPIO.output(Motor2B,GPIO.LOW)
29
GPIO.output(Motor2E,GPIO.HIGH)
30
31
sleep(2)
32
33
print "Going backwards"
34
GPIO.output(Motor1A,GPIO.LOW)
35
GPIO.output(Motor1B,GPIO.HIGH)
36
GPIO.output(Motor1E,GPIO.HIGH)
37
38
GPIO.output(Motor2A,GPIO.LOW)
39
GPIO.output(Motor2B,GPIO.HIGH)
40
GPIO.output(Motor2E,GPIO.HIGH)
41
42
sleep(2)
43
44
print "Now stop"
45
GPIO.output(Motor1E,GPIO.LOW)
46
GPIO.output(Motor2E,GPIO.LOW)
47
48
GPIO.cleanup()

निष्कर्ष 

इस ट्यूटोरियल में मैंने आपको रास्पबेरी पाइ (Raspberry Pi) में मोटर्स को जोड़ने की मूल बातें दिखायी हैं। यह एक गहरी सांस ले सकता है तथा कैन-डू (कर सकता हूं) रवैया भी यदि आप अपने ब्रांड नई रास्पबेरी पाइ (Raspberry Pi) से कुछ जोड़ने के लिए नए हैं, लेकिन जल्द ही आपको पता चल जाएगा कि एक बार जब आप जीपीआईओ (GPIO) पिन के साथ खेलना शुरू कर देते हैं, तो इसे रोकना मुश्किल है। 

इस ट्यूटोरियल ने अपने वातावरण को समझने के लिए एलईडी (LED) रोशनी और अल्ट्रासोनिक सेंसर (ultrasonic sensors) के साथ रोबोट जैसी कुछ भी बनाने के लिए दरवाजे खोल दिए हैं। 

अपनी रास्पबेरी पाइ (Raspberry Pi) को पूरी तरह से मोबाइल बनाने के लिए सब कुछ माउंट करने के लिए चेसिस ढूंढें तथा एक यूएसबी (USB) मोबाइल फोन चार्जर बैटरी का उपयोग करे।

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Business tutorials. Never miss out on learning about the next big thing.
Advertisement
One subscription. Unlimited Downloads.
Get unlimited downloads