- सामग्री की आवश्यकता
- सर्किट आरेख
- HC05 मॉड्यूल का प्रारंभिक विन्यास
- Arduino से Arduino ब्लूटूथ कम्युनिकेशन टेस्टिंग
HC-05 ब्लूटूथ मॉड्यूल किसी भी Arduino प्रोजेक्ट के लिए गो-टू ब्लूटूथ मॉड्यूल हैं! Arduino IDE में हुक अप और कोड करना आसान है। ज्यादातर परियोजनाओं में, हम आमतौर पर HC05 को एक Arduino से जोड़ते हैं और इसका उपयोग मोबाइल फोन जैसे किसी अन्य स्मार्ट डिवाइस के साथ वायरलेस तरीके से संवाद करने के लिए करते हैं। यह काफी सरल है और हमने इसके साथ कई दिलचस्प परियोजनाओं का निर्माण किया है जैसे कि ब्लूटूथ नियंत्रित रोबोट, ब्लूटूथ वॉयस कंट्रोल, ब्लूटूथ होम ऑटोमेशन, आदि, क्या आपको कभी दो एचसी -05 को एक साथ जोड़ने की आवश्यकता है? यह सीधे तौर पर HC05 को स्मार्टफोन से जोड़ने जैसा नहीं है, इसमें कुछ अतिरिक्त चरण भी शामिल हैं। यह ट्यूटोरियल इस प्रक्रिया से आपका मार्गदर्शन करेगा। चलो सही में कूदो!
सामग्री की आवश्यकता
- 2x Arduino (कोई भी मॉडल करेगा; मैं एक Arduino Uno R3 और एक Arduino नैनो का उपयोग कर रहा हूं)
- 2x HC05 ब्लूटूथ मॉड्यूल
- ब्रेड बोर्ड
- जम्पर तार
- 2x 1kΩ रोकनेवाला
- 2x 2.2kor रोकनेवाला
सर्किट आरेख
यह मूल सर्किट आरेख है। इन सर्किटों में से 2 तार, एक मास्टर के लिए और एक गुलाम के लिए। कनेक्शन के लिए, हम यहाँ सब कर रहे हैं HC05 को Arduino से जोड़ रहे हैं। HC05 का रिसीवर (Rx) पिन 0V से 3.3V रेंज में और Arduino 0V से 5V रेंज में संचालित होता है। इसलिए, हम Arduino के 5V आउटपुट को कम करके 3.3V करने के लिए वोल्टेज डिवाइडर बनाने के लिए रेसिस्टर्स (R1 और R2) का उपयोग करेंगे, ताकि HC05 मॉड्यूल को नुकसान न पहुंचे।
मैं R2 के लिए R1 और 2.2K you के लिए 1k R2 का उपयोग कर रहा हूं, लेकिन जब तक R2 R1 (R2 Ω 2R1) का लगभग दोगुना है, तब तक आप किसी भी प्रतिरोधक मान का उपयोग कर सकते हैं। इसी तरह, मास्टर और स्लेव दोनों के लिए सर्किट को दोहराएं, Arduino Master Bluetooth सर्किट और Arduino गुलाम ब्लूटूथ सर्किट नीचे दिखाए गए हैं।
HC05 मॉड्यूल का प्रारंभिक विन्यास
यह दो HC05 मॉड्यूल को एक साथ जोड़ने के लिए आवश्यक अतिरिक्त कदम है। हमें HC05 ब्लूटूथ मॉड्यूल के अंदर कुछ सेटिंग्स बदलने की जरूरत है, ऐसा करने के लिए, हमें HC05 मॉड्यूल के AT कमांड मोड में जाना होगा और Arduino IDE के सीरियल मॉनिटर के माध्यम से इसे कमांड भेजना होगा। ऐसा करने के लिए, हमें HC05 को सीरियल मॉनिटर के माध्यम से कमांड भेजने के लिए एक Arduino कोड लिखना होगा।
HC05 मॉड्यूल कॉन्फ़िगर करने के लिए कोड इस पृष्ठ के तल पर पाया जा सकता है, कोड की व्याख्या के रूप में इस प्रकार है
इस कोड में SoftwareSerial लाइब्रेरी जोड़ें।
#include < SoftwareSerial.h>
ट्रांसमिट (Tx) और रिसीव (Rx) पिन नंबर को परिभाषित करें। मैं टीएक्स के लिए पिन 2 और आरएक्स के लिए पिन 3 का उपयोग कर रहा हूं।
# डेफिन टीएक्स 2 #define आरएक्स 3
ब्लूटूथ कनेक्शन को कुछ नाम दें (यहां मैं configBt का उपयोग कर रहा हूं), फिर SoftwareSerial लाइब्रेरी को बताएं कि कौन सा पिन Tx है और कौन सा पिन Rx है। सिंटैक्स ब्लुटूथनेम (Rx, Tx) है;
SoftwareSerial configBt (आरएक्स, टीएक्स); // आरएक्स, TX
ब्लूटूथ मॉड्यूल को कॉन्फ़िगर करने के लिए, Arduino को इसे 38400 बॉड की बॉड दर पर कमांड भेजने की आवश्यकता है। इसी तरह, हम ब्लूटूथ कनेक्शन की बॉड दर के साथ-साथ 38400 बॉड भी सेट करते हैं। आउटपुट पिन को Transmit (Tx) और इनपुट पिन को Rive (Rx) सेट करें
शून्य सेटअप () { सीरियल.begin (38400); configBt.begin (38400); पिनमोड (tx, OUTPUT); पिनमोड (आरएक्स, INPUT); }
हमेशा के लिए लूप के अंदर, हमारे पास कोड का मुख्य हिस्सा है। यहाँ विचार Arduino के Tx पिन के माध्यम से HC05 के लिए धारावाहिक मॉनीटर में टेक्स्टबॉक्स में टाइप किए गए कुछ को भेजने का है। फिर सीरियल मॉनीटर में HC05 द्वारा आउटपुट जो भी है उसे प्रदर्शित करें।
void लूप () {if (configBt.available ()) // अगर HC05 कुछ भेज रहा है… { Serial.print (configBt.readString ()); // सीरियल मॉनिटर में प्रिंट} अगर (सीरियल। उपलब्ध नहीं है) (// अगर सीरियल मॉनिटर कुछ आउटपुट कर रहा है… {configBt.write (सीरियल.read ()); // Arduino के Tx पिन को लिखें}}
इस कोड को पहले मास्टर HC05 मॉड्यूल से जुड़े Arduino में अपलोड करें। कोड अपलोड करने के बाद, Arduino पावर केबल को प्लग आउट करें। HC05 पर बटन दबाए रखें । अब HC05 पर बटन दबाए रखते हुए Arduino पावर केबल में प्लग करें। ठीक है, अब आप HC05 पर बटन जारी कर सकते हैं। यह कैसे आप HC05 के एटी मोड में जाते हैं। यह जांचने के लिए कि क्या आपने यह सही किया है, सुनिश्चित करें कि HC05 पर लाल बत्ती लगभग हर एक सेकंड (धीमी गति से झपकी लेना) है। आम तौर पर HC05 किसी भी ब्लूटूथ डिवाइस से जुड़ा होने से पहले, यह बहुत उच्च आवृत्ति (तेज़ ब्लिंकिंग) पर लाल बत्ती ब्लिंक है।
अगला, सीरियल मॉनिटर खोलें (सीरियल मॉनिटर बटन Arduino IDE के शीर्ष दाईं ओर है)। सीरियल मॉनिटर विंडो के निचले दाएं कोने पर, यदि आपने पहले से ऐसा नहीं किया है, तो सुनिश्चित करें कि आपने "NL और CL दोनों" और बॉड रेट 38400 पर सेट करने वाली लाइन को सेट किया है । अब, धारावाहिक मॉनिटर में एटी में टाइप करें, अगर सब ठीक हो जाता है, तो आपको सीरियल मॉनिटर विंडो में प्रदर्शित HC05 से "ओके" मिलेगा। बधाई हो! आपने सफलतापूर्वक HC05 मॉड्यूल के एटी कमांड मोड में लॉग इन किया है।
अब, मास्टर HC05 मॉड्यूल को कॉन्फ़िगर करने के लिए नीचे दी गई तालिका में निम्नलिखित कमांड दर्ज करें :
COMMAND (सीरियल मॉनिटर में इसे दर्ज करें और एंटर दबाएं) |
RESPONSE (HC05 से उत्तर, सीरियल मॉनीटर में प्रदर्शित) |
समारोह (यह कमांड क्या करता है?) |
पर |
ठीक |
परीक्षा |
AT + CMODE? |
ठीक |
CMODE या कनेक्शन मोड की जाँच करें ----------------------------- CMODE: 0 गुलाम है 1 गुरु है |
AT + CMODE = 1 |
ठीक |
CMODE को 1 पर सेट करें क्योंकि हम मास्टर HC05 को कॉन्फ़िगर कर रहे हैं |
एटी + एडीडीआर? |
+ ADDR: FCA8: 9A: 58D5 ठीक * यह मेरे गुरु HC05 का पता है। आपका पता अलग होगा! |
HC05 का पता लौटाता है, इस पर ध्यान दें क्योंकि हमें बाद में इसकी आवश्यकता होगी! |
अगला अपने कंप्यूटर को अपने दूसरे HC05, गुलाम से कनेक्ट करें :
COMMAND (सीरियल मॉनिटर में इसे दर्ज करें और एंटर दबाएं) |
RESPONSE (HC05 से उत्तर, सीरियल मॉनीटर में प्रदर्शित) |
समारोह (यह कमांड क्या करता है?) |
पर |
ठीक |
परीक्षा |
AT + CMODE? |
ठीक |
CMODE या कनेक्शन मोड की जाँच करें ----------------------------- CMODE: 0 एक गुलाम है 1 गुरु है |
AT + CMODE = 0 |
ठीक |
CMODE को 0 पर सेट करें क्योंकि हम गुलाम HC05 को कॉन्फ़िगर कर रहे हैं |
AT + BIND = FCA8,9A, 58D5 * ":" को गुरु HC05 में "," के साथ बदलें। * यहाँ मैं मास्टर के पते का उपयोग कर रहा हूँ HC05 मैंने पिछली तालिका से नीचे उल्लेख किया है। आपको अपने मास्टर HC05 के पते का उपयोग करना चाहिए! |
ठीक |
मास्टर HC05 का पता सेट करना कि यह दास HC05 स्वतः बूट अप पर कनेक्ट हो जाएगा |
AT + BIND? |
+ बाइंड: FCA8: 9A: 58D5 ठीक * यह मेरे गुरु HC05 का पता है। आपका पता अलग होगा! |
अपने दास के बाध्यकारी पते की जाँच करें। यदि यह आपके मास्टर HC05 के पते से मेल खाता है, तो आप जाने के लिए अच्छे हैं! |
Arduino से Arduino ब्लूटूथ कम्युनिकेशन टेस्टिंग
सबसे पहले, मास्टर और गुलाम HC05 मॉड्यूल दोनों को शक्ति दें। बिजली चालू होने और कुछ सेकंड के बाद HC05 मॉड्यूल पर लाल बत्ती को देखने के लिए।
लाल बत्ती की ब्लिंकिंग स्पीड |
इसका क्या मतलब है |
एक बहुत उच्च आवृत्ति (तेजी से निमिष!) पर निमिष |
अच्छा नही! इसका मतलब है कि आपके HC05 मॉड्यूल एक दूसरे के साथ नहीं जुड़ रहे हैं! समस्या निवारण के लिए समय! |
कम आवृत्ति पर ब्लिंक करना (धीमा निमिष!) |
अच्छा लगा! आपने इसे किया है! लेकिन हमें अभी भी एक और जांच करने के लिए मिला कि यह सेटअप काम करता है! आगे बढ़ो! |
एक बार जब आपकी लाल बत्तियां कम आवृत्ति (धीमी ब्लिंकिंग!) पर झपकी ले रही हों, तो आप सुनिश्चित कर सकते हैं कि आपके दोनों HC05 एक दूसरे से जुड़े हुए हैं, लेकिन हमने यह परीक्षण नहीं किया है कि क्या डेटा को मास्टर और स्लेव के बीच आगे और पीछे भेजा जा सकता है। आखिरकार, यह मुख्य उद्देश्य है।
नीचे दिए गए कोड को Arduinos में से किसी एक पर अपलोड करें, यह ट्रांसमीटर (Tx) का परीक्षण करने के लिए कोड है, फिर से ट्रांसमीटर और रिसीवर दोनों के लिए पूर्ण कोड इस पृष्ठ के नीचे पाया जा सकता है।
पिछले कोड के बाद, हम इस कोड में SoftwareSerial लाइब्रेरी को जोड़ते हैं और ट्रांसमिट (Tx) और रिसीव (Rx) पिन नंबर को परिभाषित करते हैं। फिर हम ब्लूटूथ कनेक्शन को नाम देते हैं और लाइब्रेरी में Tx और Rx पिन नंबर पास करते हैं।
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (आरएक्स, टीएक्स); // आरएक्स, TX
सेटअप फ़ंक्शन में, हम Arduino सीरियल मॉनिटर और फिर से ब्लूटूथ के लिए बॉड दर सेट कर रहे हैं। क्या आपको पिछले कोड की तुलना में यहाँ अंतर दिखाई देता है? हम 9600 बॉड की बॉड दर का उपयोग कर रहे हैं। यह अन्य ब्लूटूथ डिवाइस के साथ संचार करते समय HC05 ब्लूटूथ मॉड्यूल का डिफ़ॉल्ट पूर्व-सेट संचार बॉड दर है। तो, ध्यान दें कि 38400 बॉड एचटी05 को एटी कमांड के साथ कॉन्फ़िगर करने के लिए है और 9600 बॉड एचसी 05 मॉड्यूल का डिफ़ॉल्ट बॉड रेट है। अंत में, ठीक उसी तरह जैसे हम आउटपुट के रूप में Tx पिन को कॉन्फ़िगर करते हैं और इनपुट के रूप में Rx पिन।
शून्य सेटअप () { सीरियल.begin (9600); bt.begin (9600); पिनमोड (tx, OUTPUT); पिनमोड (आरएक्स, INPUT); }
हमेशा के लिए लूप के अंदर, हम जो भी कर रहे हैं वह HC05 के माध्यम से "123" का यादृच्छिक मान प्रेषित कर रहा है।
शून्य लूप () {bt.write (123); }
इस कोड को अन्य Arduino पर अपलोड करें, यह कोड प्राप्त परीक्षण (Rx) का है:
पिछले कोड के समान ही, हम SoftwareSerial लाइब्रेरी को कॉन्फ़िगर करते हैं।
#include < SoftwareSerial.h> #define tx 2 #define rx 3 SoftwareSerial bt (आरएक्स, टीएक्स); // आरएक्स, TX
ट्रांसफ़र फ़ंक्शन का कोड ट्रांसमिटेड टेस्ट (Tx) कोड के समान है।
शून्य सेटअप () { सीरियल.begin (9600); bt.begin (9600); पिनमोड (tx, OUTPUT); पिनमोड (आरएक्स, INPUT); }
हमेशा के लिए लूप में, हमें बस यह प्राप्त करने की आवश्यकता है कि हम ट्रांसड्यूसिंग Arduino से क्या भेज रहे हैं। यदि प्राप्त बफ़र को HC05 से कुछ डेटा प्राप्त हुआ है, तो सीरियल मॉनीटर में जो कुछ भी प्राप्त हुआ है उसे प्रदर्शित करें।
void लूप () {if (bt.available ()> 0) { सीरियल.println (bt.read ()); }}
प्रत्येक Arduino पर संबंधित कोड अपलोड करने के बाद, Arduino प्राप्त करने के लिए सीरियल मॉनिटर खोलें। सुनिश्चित करें कि आप बॉड दर को 9600 के रूप में चुनते हैं और सीरियल मॉनिटर में न्यूलाइन के रूप में समाप्त होने वाली रेखा। यदि सब कुछ ठीक काम कर रहा है, तो आपको 123 देखना चाहिए।
नोट: यदि आपने एक ही लैपटॉप पर ट्रांसड्यूसिंग और अरिडिनोस प्राप्त करने दोनों को कनेक्ट किया है, तो सुनिश्चित करें कि आप टूल> पोर्ट के तहत सही COM पोर्ट चुनें। आपको प्राप्त करने वाले Arduino के COM पोर्ट से जुड़ा होना चाहिए।
यदि सब ठीक हो जाता है, तो HC05 मॉड्यूल को स्वैप करें ताकि यह सुनिश्चित हो सके कि दोनों दिशाओं में संचार हो सकता है और हम हैं!