विषयसूची:

गलत तरीके से कॉन्फ़िगर किया गया HC-06 ब्लूटूथ मॉड्यूल पुनर्प्राप्त करें: 4 चरण
गलत तरीके से कॉन्फ़िगर किया गया HC-06 ब्लूटूथ मॉड्यूल पुनर्प्राप्त करें: 4 चरण

वीडियो: गलत तरीके से कॉन्फ़िगर किया गया HC-06 ब्लूटूथ मॉड्यूल पुनर्प्राप्त करें: 4 चरण

वीडियो: गलत तरीके से कॉन्फ़िगर किया गया HC-06 ब्लूटूथ मॉड्यूल पुनर्प्राप्त करें: 4 चरण
वीडियो: अपनी शादी की क्या शर्त रखी है पूज्या जया किशोरी जी नें? आइए जानते हैं उन्हीं से | Jaya Kishori 2024, जुलाई
Anonim
गलत तरीके से कॉन्फ़िगर किया गया HC-06 ब्लूटूथ मॉड्यूल पुनर्प्राप्त करें
गलत तरीके से कॉन्फ़िगर किया गया HC-06 ब्लूटूथ मॉड्यूल पुनर्प्राप्त करें

शुद्ध अधिकतमवाद से, मैंने अपने HC-06 ब्लूटूथ (दास) मॉड्यूल को AT+BAUDC कमांड के साथ 1, 382, 400 बॉड की बॉड दर पर कॉन्फ़िगर किया। जब से इससे जुड़ा Arduino SoftwareSerial लाइब्रेरी के साथ मॉड्यूल का उपयोग करने में सक्षम नहीं था। मैंने बिना किसी भाग्य के Arduino के हार्डवेयर सीरियल (पिन 0 और 1) के साथ बॉड दर को पुनर्स्थापित करने का प्रयास किया।

मैंने एक प्रचलित समाधान खोजे बिना विषय को Google पर भी आजमाया। हो सकता है कि कंप्यूटर में निर्मित सीरियल पोर्ट का उपयोग करना एक समाधान हो सकता है (12V से 3V3 लॉजिक लेवल शिफ्टिंग के साथ), लेकिन मेरे कंप्यूटर में यह अप्रचलित पोर्ट नहीं है, इसलिए मुझे एक और समाधान के साथ आना पड़ा।

चरण 1: आपको क्या चाहिए

तुम क्या आवश्यकता होगी
तुम क्या आवश्यकता होगी
  • डिफ़ॉल्ट Atmel ATMEGA328P-PU MCU (@16MHz) के साथ अरुडिनो / जेनुइनो बोर्ड।
  • एक HC-06 ब्लूटूथ मॉड्यूल 1, 382, 400 बॉड पर सुन रहा है
  • https://www.arduino.cc. से बेसिक arduino IDE

चरण 2: समाधान

समाधान
समाधान
समाधान
समाधान

कृपया ध्यान दें कि यह निर्देश योग्य और समाधान 1, 382, 400 बॉड (AT+BAUDC) परिदृश्य के लिए बनाया गया है। समाधान किसी अन्य बॉड दरों के लिए काम नहीं करेगा। अन्य मामलों को संभालने के लिए कृपया चरण 3 से शुरू होने वाले चरणों का संदर्भ लें।

समाधान वास्तव में सरल है।

  1. HC-06 के VCC पिन को Arduino के 5V पिन से कनेक्ट करें।
  2. HC-06 के GND पिन को Arduino के GND पिन से कनेक्ट करें।
  3. Arduino के 2 पिन करने के लिए HC-06 के RXD पिन को कनेक्ट करें।
  4. HC-06 के TXD पिन को असंबद्ध छोड़ दें (या पिन 8 से कनेक्ट करें)।
  5. hc06reset.ino स्केच अपलोड करें।
  6. प्रोग्राम HC-06 को 115, 200 बॉड मोड (AT+BAUD8) में सेट करेगा।
  7. पहले की तरह अपने रिकवर किए गए HC-06 मॉड्यूल का उपयोग करें।

चरण 3: पर्दे के पीछे…

परदे के पीछे…
परदे के पीछे…
परदे के पीछे…
परदे के पीछे…

SoftwareSerial लाइब्रेरी जो Arduino IDE के साथ आती है, अधिकतम 115, 200 बिट/सेकंड पर संचारित करने में सक्षम है, इसलिए यह वांछित 1, 382, 400 बॉड दर पर संचार करने के लिए पर्याप्त तेज़ नहीं है। यह देखते हुए कि एक डिफ़ॉल्ट Arduino बोर्ड 16MHz पर चलता है, सैद्धांतिक असम्पीडित अधिकतम बिटरेट 16,000, 000 बिट/सेकंड है। हम अब तक अच्छे हैं!

SoftwareSerial.cpp की मेरी समझ के आधार पर, परिवर्तनों के बीच देरी (जो बॉड दर से आता है) के संबंध में आउटपुट पिन उच्च (= 1) या निम्न (=0) सेट करके सील संचार किया जाता है।

  • आउटपुट पिन डिफ़ॉल्ट रूप से उच्च होता है (मतलब कोई डेटा नहीं), तो
  • एक स्टार्ट बिट प्रेषित होता है (जो पिन को कम खींचता है), फिर
  • एलएसबी से एमएसबी को प्रेषित डेटा के 8 बिट, (+5वी जब बिट 1 और 0 अन्यथा) तब
  • एक स्टॉप बिट प्रेषित होता है (जो पिन को ऊंचा खींचता है)

इस तरह 10 बिट का उपयोग करके 1 बाइट प्रसारित किया जाता है।

हमें जो संदेश भेजना है वह है AT+BAUD8 (बिना \n, \r अंत में)। यह आदेश HC-06 को वापस 115, 200 बॉड दर पर सेट करता है जिसे नियमित पुस्तकालयों द्वारा नियंत्रित किया जा सकता है।

1, ३८२, ४०० बिट्स/सेकंड की गति के साथ बिट्स भेजने के लिए, प्रत्येक बिट के लिए हमारे पास १/१, ३८२, ४०० सेकंड का समय है (जो लगभग ७२३.३८ एनएस है)। Arduino 16, 000, 000 मेगाहर्ट्ज पर चलता है, इसलिए प्रत्येक चक्र 1/16, 000, 000 सेकंड तक रहता है - यानी प्रति चक्र 62.5 एनएस।

AVR असेंबली कोड का उपयोग करके हम आउटपुट पिन को उच्च या निम्न सेट करने के लिए OUT कमांड का उपयोग कर सकते हैं और ठीक एक CPU चक्र की प्रतीक्षा करने के लिए NOP का उपयोग कर सकते हैं। दोनों कमांड ठीक 1 सीपीयू चक्र खाते हैं। इस तरह 723.38 एनएस बिट समय को 11 से 12 आर्डिनो निर्देश प्रति संचरित बिट द्वारा कवर किया जा सकता है। एक बात पर विचार करना चाहिए: OUT कमांड एक बार में एक संपूर्ण बाइट सेट करता है, इसलिए हमें एक PORTx का चयन करना होगा जहां यह कोई समस्या नहीं है। उदाहरण के लिए ATMEGA328P-PU का उपयोग करना PORTD (arduino pins 0-7) इस स्थिति के लिए एकदम सही है। बिट सेट करने के बाद, केवल उचित समय व्यतीत करना होता है जो 10 से 11 एनओपी द्वारा किया जाता है और बस।

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

चरण 4: आगे पढ़ना / सुधार की संभावनाएं

  • हो सकता है कि पिछले चरण में वर्णित तकनीक का उपयोग करके एक तेज़ सॉफ़्टवेयर सीरियल लाइब्रेरी बनाई जा सके।
  • FedericoK2 ने एक बेहतरीन टूल बनाया है जो हर संभव बिटरेट के लिए HC-06 रिकवरी कोड जेनरेट करता है। यहां साइट पर पहुंचें: https://tools.krum.com.ar/save_your_hc-06/ धन्यवाद FedericoK2

सिफारिश की: