विषयसूची:

कम लागत वाले E32 (sx1278/sx1276) के साथ LoRa 3Km से 8Km वायरलेस संचार Arduino, Esp8266 या Esp32 के लिए डिवाइस: 15 कदम
कम लागत वाले E32 (sx1278/sx1276) के साथ LoRa 3Km से 8Km वायरलेस संचार Arduino, Esp8266 या Esp32 के लिए डिवाइस: 15 कदम

वीडियो: कम लागत वाले E32 (sx1278/sx1276) के साथ LoRa 3Km से 8Km वायरलेस संचार Arduino, Esp8266 या Esp32 के लिए डिवाइस: 15 कदम

वीडियो: कम लागत वाले E32 (sx1278/sx1276) के साथ LoRa 3Km से 8Km वायरलेस संचार Arduino, Esp8266 या Esp32 के लिए डिवाइस: 15 कदम
वीडियो: EBYTE लोरा मॉड्यूल अवलोकन और विन्यास 2024, जुलाई
Anonim
कम लागत वाले E32 (sx1278/sx1276) के साथ LoRa 3Km से 8Km वायरलेस संचार Arduino, Esp8266 या Esp32 के लिए डिवाइस
कम लागत वाले E32 (sx1278/sx1276) के साथ LoRa 3Km से 8Km वायरलेस संचार Arduino, Esp8266 या Esp32 के लिए डिवाइस

मैं लोरा डिवाइस की सेमटेक श्रृंखला पर आधारित ईबीवाईटीई ई32 को प्रबंधित करने के लिए एक पुस्तकालय बनाता हूं, जो बहुत शक्तिशाली, सरल और सस्ता उपकरण है।

आप यहाँ 3Km संस्करण, 8Km संस्करण यहाँ पा सकते हैं

वे ३००० मीटर से ८००० मीटर की दूरी तक काम कर सकते हैं, और उनके पास बहुत सारी विशेषताएं और पैरामीटर हैं। इसलिए मैं उपयोग को आसान बनाने के लिए इस पुस्तकालय का निर्माण करता हूं।

यह मेट्रोपॉलिटन सेंसर से डेटा पुनर्प्राप्त करने या ड्रोन को नियंत्रित करने का एक समाधान है।

आपूर्ति

अरुडिनो यूएनओ

वेमोस डी१ मिनी

लोरा E32 TTL 100 3Km संस्करण

लोरा E32 TTL 1W 8Km संस्करण

चरण 1: पुस्तकालय

पुस्तकालय
पुस्तकालय

आप यहां मेरी लाइब्रेरी पा सकते हैं।

डाउनलोड करने के लिए।

ऊपरी दाएं कोने में डाउनलोड बटन पर क्लिक करें, असम्पीडित फ़ोल्डर का नाम बदलें LoRa_E32.

जांचें कि LoRa_E32 फ़ोल्डर में LoRa_E32.cpp और LoRa_E32.h है।

LoRa_E32 लाइब्रेरी फोल्डर को अपने /लाइब्रेरी/फोल्डर में रखें। यदि आपकी पहली लाइब्रेरी है तो आपको लाइब्रेरी सबफ़ोल्डर बनाने की आवश्यकता हो सकती है।

आईडीई को पुनरारंभ करें।

चरण 2: पिनआउट

बाहर पिन
बाहर पिन
बाहर पिन
बाहर पिन
बाहर पिन
बाहर पिन

जैसा कि आप देख सकते हैं कि आप M0 और M1 पिन के माध्यम से विभिन्न मोड सेट कर सकते हैं।

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

चरण 3: औक्स पिन

औक्स पिन
औक्स पिन
औक्स पिन
औक्स पिन
औक्स पिन
औक्स पिन

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

औक्स पिन

डेटा संचारित करते समय बाहरी एमसीयू को जगाने और डेटा ट्रांसफर खत्म होने पर उच्च वापस करने के लिए उपयोग किया जा सकता है।

ऑक्स प्राप्त करते समय कम हो रहा है और बफर खाली होने पर उच्च वापस आ जाता है।

इसका उपयोग सामान्य ऑपरेशन (पावर-ऑन और स्लीप / प्रोग्राम मोड पर) को पुनर्स्थापित करने के लिए स्वयं जाँच के लिए भी किया जाता है।

चरण 4: पूरी तरह से कनेक्टेड स्कीमा Esp8266

पूरी तरह से कनेक्टेड स्कीमा Esp8266
पूरी तरह से कनेक्टेड स्कीमा Esp8266
पूरी तरह से कनेक्टेड स्कीमा Esp8266
पूरी तरह से कनेक्टेड स्कीमा Esp8266

esp8266 कनेक्शन स्कीमा अधिक सरल है क्योंकि यह तार्किक संचार (3.3v) के समान वोल्टेज पर काम करता है।

अच्छी स्थिरता प्राप्त करने के लिए पुल-अप रोकनेवाला (4, 7Kohm) जोड़ना महत्वपूर्ण है।

चरण 5: पूरी तरह से कनेक्टेड स्कीमा Arduino

पूरी तरह से कनेक्टेड स्कीमा Arduino
पूरी तरह से कनेक्टेड स्कीमा Arduino
पूरी तरह से कनेक्टेड स्कीमा Arduino
पूरी तरह से कनेक्टेड स्कीमा Arduino

Arduino वर्किंग वोल्टेज 5v है, इसलिए हमें नुकसान को रोकने के लिए लोरा मॉड्यूल के RX पिन M0 और M1 पर वोल्टेज डिवाइडर जोड़ने की जरूरत है, आप यहां अधिक जानकारी प्राप्त कर सकते हैं वोल्टेज डिवाइडर: कैलकुलेटर और एप्लिकेशन।

आप RX पर एक साथ रखने की तुलना में GND के लिए 2Kohm रोकनेवाला और सिग्नल से 1Kohm का उपयोग कर सकते हैं।

चरण 6: पुस्तकालय: निर्माता

मैंने बहुत सारे कंस्ट्रक्टरों का एक सेट बनाया है, क्योंकि हमारे पास प्रबंधन करने के लिए और विकल्प और स्थितियां हो सकती हैं।

LoRa_E32 (बाइट rxPin, बाइट txPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (बाइट rxPin, बाइट txPin, बाइट ऑक्सपिन, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600); LoRa_E32 (बाइट rxPin, बाइट txPin, बाइट ऑक्सपिन, बाइट m0Pin, बाइट m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

सीरियल और अन्य पिनों के प्रबंधन को पुस्तकालय में सौंपने के लिए कंस्ट्रक्टर का पहला सेट बनाया गया है।

rxPin और txPin UART से जुड़ने के लिए पिन हैं और वे अनिवार्य हैं।

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

m0pin और m1Pin ऑपरेशन मोड को बदलने के लिए पिन हैं (ऊपरी तालिका देखें), मुझे लगता है कि "उत्पादन" में यह पिन सीधे उच्च या निम्न कनेक्ट करने जा रहे हैं, लेकिन परीक्षण के लिए वे पुस्तकालय द्वारा प्रबंधित किए जाने के लिए उपयोगी हैं।

bpsRate SoftwareSerial का boudrate है जो सामान्य रूप से 9600 है (प्रोग्रामिन/स्लीप मोड में एकमात्र बॉड दर)

एक सरल उदाहरण है

#शामिल "LoRa_E32.h"LoRa_E32 e32ttl100(2, 3); // RX, TX // LoRa_E32 e32ttl100 (2, 3, 5, 6, 7); // आरएक्स, TX

हम दूसरे कंस्ट्रक्टर के साथ सीधे SoftwareSerial का उपयोग कर सकते हैं

LoRa_E32(हार्डवेयर सीरियल* सीरियल, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32(हार्डवेयर सीरियल* सीरियल, बाइट ऑक्सपिन, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32(हार्डवेयर सीरियल* सीरियल, बाइट ऑक्सपिन, बाइट m0Pin, बाइट m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

इस कंस्ट्रक्टर के साथ ऊपरी उदाहरण ऐसा किया जा सकता है।

#शामिल करें #शामिल करें "LoRa_E32.h"

SoftwareSerial mySerial(2, 3); // आरएक्स, TX

LoRa_E32 e32ttl100(&mySerial);

// LoRa_E32 e32ttl100(&mySerial, 5, 7, 6);

कंस्ट्रक्टर का अंतिम सेट सॉफ्टवेयरसेरियल के बजाय हार्डवेयरसेरियल का उपयोग करने की अनुमति देना है।

LoRa_E32 (सॉफ्टवेयर सीरियल* सीरियल, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32(SoftwareSerial* सीरियल, बाइट ऑक्सपिन, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32(SoftwareSerial* सीरियल, बाइट ऑक्सपिन, बाइट m0Pin, बाइट m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

चरण 7: शुरू करें

स्टार्ट कमांड का उपयोग सीरियल को स्टार्टअप और इनपुट और आउटपुट मोड में पिन करने के लिए किया जाता है।

शून्य शुरू ();

निष्पादन में है

// स्टार्टअप सभी पिन और UART

e32ttl100.begin ();

चरण 8: कॉन्फ़िगरेशन और सूचना विधि

कॉन्फ़िगरेशन को प्रबंधित करने और डिवाइस की जानकारी प्राप्त करने के तरीकों का एक सेट है।

ResponseStructContainer getConfiguration ();

ResponseStatus सेटकॉन्फ़िगरेशन (कॉन्फ़िगरेशन कॉन्फ़िगरेशन, PROGRAM_COMMAND सेव टाइप = WRITE_CFG_PWR_DWN_LOSE);

ResponseStructContainer getModuleInformation ();

शून्य प्रिंट पैरामीटर (संरचना कॉन्फ़िगरेशन कॉन्फ़िगरेशन);

रिस्पांसस्टैटस रीसेटमॉड्यूल ();

चरण 9: प्रतिक्रिया कंटेनर

प्रतिक्रिया के प्रबंधन को सरल बनाने के लिए मैं कंटेनर का एक सेट बनाता हूं, मेरे लिए त्रुटियों को प्रबंधित करने और सामान्य डेटा वापस करने के लिए बहुत उपयोगी है।

प्रतिक्रिया स्थिति

यह एक स्टेटस कंटेनर है और इसमें 2 सरल प्रवेश बिंदु हैं, इससे आप स्टेटस कोड और स्टेटस कोड का विवरण प्राप्त कर सकते हैं

Serial.println (c.getResponseDescription ()); // कोड का विवरण

Serial.println(c.code); // 1 अगर सफलता

कोड हैं

सफलता = 1, ERR_UNKNOWN, ERR_NOT_SUPPORT, ERR_NOT_IMPLEMENT, ERR_NOT_INITIAL, ERR_INVALID_PARAM, ERR_DATA_SIZE_NOT_MATCH, ERR_BUF_TOO_SMALL, ERR_TIMEOUT, ईआरआर_हार्डवेयर, ERR_HEAD_NOT_RECOGNIZED

प्रतिक्रिया कंटेनर

यह कंटेनर स्ट्रिंग प्रतिक्रिया को प्रबंधित करने के लिए बनाया गया है और इसमें 2 प्रवेश बिंदु हैं।

संदेश और स्थिति से लौटाए गए स्ट्रिंग के साथ डेटा RepsonseStatus का एक उदाहरण है।

ResponseContainer rs = e32ttl.receiveMessage ();

स्ट्रिंग संदेश = rs.data;

Serial.println (rs.status.getResponseDescription ());

Serial.println (संदेश);

रिस्पांसस्ट्रक्चरकंटेनर

यह अधिक "जटिल" कंटेनर है, मैं इसका उपयोग संरचना को प्रबंधित करने के लिए करता हूं, इसमें ResponseContainer का एक ही प्रवेश बिंदु है लेकिन जटिल संरचना का प्रबंधन करने के लिए डेटा एक शून्य सूचक है।

ResponseStructContainer c;

c = e32ttl100.getConfiguration ();// अन्य सभी ऑपरेशन से पहले कॉन्फ़िगरेशन पॉइंटर प्राप्त करना महत्वपूर्ण है

कॉन्फ़िगरेशन कॉन्फ़िगरेशन = *(कॉन्फ़िगरेशन*) c.data;

Serial.println (c.status.getResponseDescription ());

Serial.println (c.status.code);

getकॉन्फ़िगरेशन और सेटकॉन्फ़िगरेशन

पहली विधि getConfiguration है, आप डिवाइस पर संग्रहीत सभी डेटा को पुनः प्राप्त करने के लिए इसका उपयोग कर सकते हैं।

ResponseStructContainer getConfiguration ();

यहां एक उपयोग उदाहरण है।

ResponseStructContainer c;

c = e32ttl100.getConfiguration ();// अन्य सभी ऑपरेशन से पहले कॉन्फ़िगरेशन पॉइंटर प्राप्त करना महत्वपूर्ण है

कॉन्फ़िगरेशन कॉन्फ़िगरेशन = *(कॉन्फ़िगरेशन*) c.data;

Serial.println (c.status.getResponseDescription ());

Serial.println (c.status.code);

Serial.println(configuration. SPED.getUARTBaudRate());

कॉन्फ़िगरेशन की संरचना में सेटिंग्स का सभी डेटा होता है, और मैं एकल डेटा के सभी विवरण प्राप्त करने के लिए फ़ंक्शन की एक श्रृंखला जोड़ता हूं।

विन्यास। एडीडीएल = 0x0; // एड्रेसकॉन्फिगरेशन का पहला भाग।ADDH = 0x1; // एड्रेस कॉन्फ़िगरेशन का दूसरा भाग। CHAN = 0x19;// चैनल कॉन्फ़िगरेशन।OPTION.fec = FEC_0_OFF; // फॉरवर्ड एरर करेक्शन स्विच कॉन्फ़िगरेशन।OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; // ट्रांसमिशन मोड कॉन्फ़िगरेशन।OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; // पुल-अप प्रबंधन कॉन्फ़िगरेशन।OPTION.transmissionPower = POWER_17; // dBm ट्रांसमिशन पावर कॉन्फ़िगरेशन।OPTION.wirelessWakeupTime = WAKE_UP_1250; // वेक अप कॉन्फ़िगरेशन के लिए प्रतीक्षा समय।SPED.airDataRate = AIR_DATA_RATE_011_48; // एयर डेटा दर कॉन्फ़िगरेशन. SPED.uartBaudRate = UART_BPS_115200; // संचार बॉड दर विन्यास।SPED.uartParity = MODE_00_8N1; // समता द्वियक

सभी विवरण प्राप्त करने के लिए आपके पास सभी विशेषताओं के बराबर कार्य है:

सीरियल.प्रिंट (एफ ("चान:")); सीरियल.प्रिंट (कॉन्फ़िगरेशन। चान, डीईसी); सीरियल.प्रिंट ("->"); Serial.println(configuration.getChannelDescription());Serial.println(F(" ")); सीरियल.प्रिंट (एफ ("स्पीडपैरिटी बिट:")); Serial.print(configuration. SPED.uartParity, BIN);Serial.print(" -> "); Serial.println(configuration. SPED.getUARTParityDescription()); सीरियल.प्रिंट (एफ ("स्पीड यूएआरटीडेट:")); Serial.print(configuration. SPED.uartBaudRate, BIN);Serial.print(" -> "); Serial.println(configuration. SPED.getUARTBaudRate()); Serial.print(F("SpeedAirDataRate:")); Serial.print(configuration. SPED.airDataRate, BIN);Serial.print(" -> "); Serial.println(configuration. SPED.getAirDataRate ()); सीरियल.प्रिंट (एफ ("ऑप्शनट्रांस:")); Serial.print(configuration. OPTION.fixedTransmission, BIN);Serial.print(" -> "); Serial.println(configuration. OPTION.getFixedTransmissionDescription()); सीरियल.प्रिंट (एफ ("ऑप्शनपुलअप:")); Serial.print(configuration. OPTION.ioDriveMode, BIN);Serial.print(" -> "); Serial.println(configuration. OPTION.getIODroveModeDescription()); सीरियल.प्रिंट (एफ ("ऑप्शन वेकअप:")); Serial.print(configuration. OPTION.wirelessWakeupTime, BIN); Serial.print(" -> "); Serial.println(configuration. OPTION.getWirelessWakeUPTimeDescription()); सीरियल.प्रिंट (एफ ("विकल्प एफईसी:")); Serial.print(configuration. OPTION.fec, BIN);Serial.print(" -> "); Serial.println(configuration. OPTION.getFECDescription()); सीरियल.प्रिंट (एफ ("विकल्प पावर:")); Serial.print(configuration. OPTION.transmissionPower, BIN);Serial.print(" -> "); Serial.println(configuration. OPTION.getTransmissionPowerDescription());

उसी तरह सेटकॉन्फ़िगरेशन एक कॉन्फ़िगरेशन स्ट्रकुटर चाहता है, इसलिए मुझे लगता है कि कॉन्फ़िगरेशन को प्रबंधित करने का बेहतर तरीका वर्तमान को पुनः प्राप्त करना है, केवल वही परिवर्तन लागू करें जिसकी आपको आवश्यकता है और इसे फिर से सेट करें।

ResponseStatus सेटकॉन्फ़िगरेशन (कॉन्फ़िगरेशन कॉन्फ़िगरेशन, PROGRAM_COMMAND सेव टाइप = WRITE_CFG_PWR_DWN_LOSE);

यदि परिवर्तन केवल वर्तमान सत्र के लिए स्थायी रूप से हो जाता है, तो कॉन्फ़िगरेशन पहले से प्रदर्शित होने वाला स्ट्रक्चर है, सेव टाइप आपको चुनने की अनुमति देता है।

ResponseStructContainer c;c = e32ttl100.getConfiguration (); // अन्य सभी ऑपरेशन से पहले कॉन्फ़िगरेशन पॉइंटर प्राप्त करना महत्वपूर्ण है कॉन्फ़िगरेशन कॉन्फ़िगरेशन = * (कॉन्फ़िगरेशन *) c.data; Serial.println (c.status.getResponseDescription ()); Serial.println (c.status.code); प्रिंट पैरामीटर (कॉन्फ़िगरेशन); विन्यास। एडीडीएल = 0x0; विन्यास.एडीडीएच = 0x1; विन्यास। चान = 0x19; कॉन्फ़िगरेशन. OPTION.fec = FEC_0_OFF; कॉन्फ़िगरेशन. OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; कॉन्फ़िगरेशन. OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; कॉन्फ़िगरेशन. OPTION.transmissionPower = POWER_17; कॉन्फ़िगरेशन. OPTION.wirelessWakeupTime = WAKE_UP_1250; कॉन्फ़िगरेशन. SPED.airDataRate = AIR_DATA_RATE_011_48; कॉन्फ़िगरेशन. SPED.uartBaudRate = UART_BPS_115200; कॉन्फ़िगरेशन. SPED.uartParity = MODE_00_8N1; // सेट कॉन्फ़िगरेशन बदल गया और कॉन्फ़िगरेशन को होल्ड न करने के लिए सेट किया गया ResponseStatus rs = e32ttl100.setConfiguration (कॉन्फ़िगरेशन, WRITE_CFG_PWR_DWN_LOSE); Serial.println (rs.getResponseDescription ()); Serial.println (rs.code); प्रिंट पैरामीटर (कॉन्फ़िगरेशन);

पैरामीटर सभी स्थिर के रूप में प्रबंधित होते हैं:

चरण 10: मूल कॉन्फ़िगरेशन विकल्प

मूल विन्यास विकल्प
मूल विन्यास विकल्प

चरण 11: संदेश प्राप्त करें भेजें

सबसे पहले हमें यह जांचने के लिए एक सरल लेकिन उपयोगी तरीका पेश करना चाहिए कि क्या कुछ प्राप्त करने वाले बफर में है

इंट उपलब्ध ();

यह केवल वर्तमान स्ट्रीम में आपके पास कितने बाइट लौटाता है।

चरण 12: सामान्य संचरण मोड

सामान्य संचरण मोड
सामान्य संचरण मोड

सामान्य/पारदर्शी ट्रांसमिशन मोड का उपयोग एक ही पते और चैनल के साथ सभी डिवाइस पर संदेश भेजने के लिए किया जाता है।

संदेश भेजने/प्राप्त करने के बहुत सारे तरीके हैं, हम विस्तार से समझाने जा रहे हैं:

ResponseStatus sendMessage (कॉन्स्ट स्ट्रिंग संदेश);

रिस्पांसकंटेनर रिसीव मैसेज ();

पहली विधि SendMessage है और इसका उपयोग सामान्य मोड में किसी डिवाइस पर स्ट्रिंग भेजने के लिए किया जाता है।

ResponseStatus rs = e32ttl.sendMessage("Prova");Serial.println(rs.getResponseDescription());

अन्य डिवाइस बस लूप पर करते हैं

अगर (e32ttl.उपलब्ध ()> 1) {ResponseContainer rs = e32ttl.receiveMessage (); स्ट्रिंग संदेश = rs.data; // सबसे पहले डेटा प्राप्त करें Serial.println(rs.status.getResponseDescription()); Serial.println (संदेश); }

चरण 13: संरचना प्रबंधित करें

यदि आप एक जटिल संरचना भेजना चाहते हैं तो आप इस विधि का उपयोग कर सकते हैं

रिस्पांसस्टैटस सेंडमैसेज (कॉन्स्ट शून्य * संदेश, कॉन्स्ट uint8_t आकार); ResponseStructContainer प्राप्त संदेश (स्थिरांक uint8_t आकार);

इसका उपयोग स्ट्रक्चर भेजने के लिए किया जाता है, उदाहरण के लिए:

स्ट्रक्चर मेसागियोन {चार प्रकार [5]; चार संदेश [8]; बूल मिटिको; }; स्ट्रक्चर मेसागियोन मेसागियोन = {"टीईएमपी", "पेपल", सच}; ResponseStatus rs = e32ttl.sendMessage(&messaggione, sizeof(Messaggione)); Serial.println (rs.getResponseDescription ());

और दूसरी तरफ आप संदेश प्राप्त कर सकते हैं तो

ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Messaggione));struct Messaggionemesaggione = *(Messaggione*) rsc.data; Serial.println (messaggione.message); Serial.println (messaggione.mitico);

आंशिक संरचना पढ़ें

यदि आप अधिक प्रकार के स्ट्रक्चर को प्रबंधित करने के लिए संदेश का पहला भाग पढ़ना चाहते हैं तो आप इस विधि का उपयोग कर सकते हैं।

ResponseContainer प्राप्त प्रारंभिक संदेश (स्थिरांक uint8_t आकार);

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

स्ट्रक्चर मेसागियोन {// टाइपचर संदेश के बिना आंशिक संरचना [8]; बूल मिटिको; }; चार प्रकार [5]; // संरचना का पहला भाग ResponseContainer rs = e32ttl.receiveInitialMessage(sizeof(type)); // स्ट्रिंग को एक चार सरणी में रखें (आवश्यक नहीं) memcpy (प्रकार, rs.data.c_str (), आकार (प्रकार)); Serial.println ("प्रकार पढ़ें:"); Serial.println (rs.status.getResponseDescription ()); Serial.println (प्रकार); // बाकी संरचना पढ़ें ResponseStructContainer rsc = e32ttl.receiveMessage(sizeof(Messaggione)); स्ट्रक्चर मेसागियोन मेसागियोन = *(मैसागियोन*) आरएससी.डेटा;

चरण 14: सामान्य मोड के बजाय निश्चित मोड

उसी तरह मैं निश्चित ट्रांसमिशन के साथ उपयोग करने के लिए विधि का एक सेट बनाता हूं

फिक्स्ड ट्रांसमिशन

आपको केवल भेजने की विधि को बदलने की आवश्यकता है, क्योंकि गंतव्य डिवाइस को पता और चैनल क्वांडो सेटेटो इल फिक्स्ड मोड के साथ प्रस्तावना प्राप्त नहीं होती है।

तो स्ट्रिंग संदेश के लिए आपके पास है

ResponseStatus sendFixedMessage (बाइट ADDL, बाइट ADDH, बाइट CHAN, कॉन्स्ट स्ट्रिंग संदेश); ResponseStatus sendBroadcastFixedMessage (बाइट CHAN, कॉन्स्ट स्ट्रिंग संदेश);

और संरचना के लिए आपके पास है

ResponseStatus sendFixedMessage (बाइट ADDL, बाइट ADDH, बाइट CHAN, const void *message, const uint8_t size); ResponseStatus sendBroadcastFixedMessage (बाइट CHAN, const void *message, const uint8_t size);

यहाँ एक सरल उदाहरण

ResponseStatus rs = e32ttl.sendFixedMessage(0, 0, 0x17, &messaggione, sizeof(Messaggione));// ResponseStatus rs = e32ttl.sendFixedMessage(0, 0, 0x17, "Ciao");

फिक्स्ड ट्रांसमिशन में अधिक परिदृश्य हैं

यदि आप किसी विशिष्ट डिवाइस को भेजते हैं (दूसरा परिदृश्य फिक्स्ड ट्रांसमिशन) तो आपको इसे सीधे पहचानने के लिए ADDL, ADDH और CHAN जोड़ना होगा।

ResponseStatus rs = e32ttl.sendFixedMessage(2, 2, 0x17, "डिवाइस को संदेश");

यदि आप किसी निर्दिष्ट चैनल में सभी डिवाइस पर संदेश भेजना चाहते हैं तो आप इस विधि का उपयोग कर सकते हैं।

ResponseStatus rs = e32ttl.sendBroadcastFixedMessage (0x17, "चैनल के उपकरणों को संदेश");

यदि आप नेटवर्क में सभी प्रसारण संदेश प्राप्त करना चाहते हैं तो आपको अपना ADDH और ADDL BROADCAST_ADDRESS के साथ सेट करना होगा।

ResponseStructContainer c;c = e32ttl100.getConfiguration(); // अन्य सभी ऑपरेशन से पहले कॉन्फ़िगरेशन पॉइंटर प्राप्त करना महत्वपूर्ण है कॉन्फ़िगरेशन कॉन्फ़िगरेशन = * (कॉन्फ़िगरेशन *) c.data; Serial.println (c.status.getResponseDescription ()); Serial.println (c.status.code); प्रिंट पैरामीटर (कॉन्फ़िगरेशन); कॉन्फ़िगरेशन. ADDL = BROADCAST_ADDRESS; कॉन्फ़िगरेशन. ADDH = BROADCAST_ADDRESS; // सेट कॉन्फ़िगरेशन बदल गया और कॉन्फ़िगरेशन को होल्ड न करने के लिए सेट किया गया ResponseStatus rs = e32ttl100.setConfiguration (कॉन्फ़िगरेशन, WRITE_CFG_PWR_DWN_LOSE); Serial.println (rs.getResponseDescription ()); Serial.println (rs.code); प्रिंट पैरामीटर (कॉन्फ़िगरेशन);

चरण 15: धन्यवाद

अब आपके पास अपना काम करने के लिए सभी जानकारी है, लेकिन मुझे लगता है कि सभी संभावनाओं को बेहतर ढंग से समझने के लिए कुछ यथार्थवादी उदाहरण दिखाना महत्वपूर्ण है।

  1. Arduino, esp32 या esp8266 के लिए LoRa E32 डिवाइस: सेटिंग्स और बुनियादी उपयोग
  2. Arduino, esp32 या esp8266 के लिए LoRa E32 डिवाइस: लाइब्रेरी
  3. Arduino, esp32 या esp8266 के लिए LoRa E32 डिवाइस: कॉन्फ़िगरेशन
  4. Arduino, esp32 या esp8266 के लिए LoRa E32 डिवाइस: फिक्स्ड ट्रांसमिशन
  5. Arduino, esp32 या esp8266 के लिए LoRa E32 डिवाइस: पावर सेविंग और स्ट्रक्चर्ड डेटा भेजना

सिफारिश की: