সুচিপত্র:

লোরা 3Km থেকে 8Km ওয়্যারলেস যোগাযোগ কম খরচে E32 (sx1278/sx1276) Arduino, Esp8266 বা Esp32: 15 ধাপের জন্য ডিভাইস
লোরা 3Km থেকে 8Km ওয়্যারলেস যোগাযোগ কম খরচে E32 (sx1278/sx1276) Arduino, Esp8266 বা Esp32: 15 ধাপের জন্য ডিভাইস

ভিডিও: লোরা 3Km থেকে 8Km ওয়্যারলেস যোগাযোগ কম খরচে E32 (sx1278/sx1276) Arduino, Esp8266 বা Esp32: 15 ধাপের জন্য ডিভাইস

ভিডিও: লোরা 3Km থেকে 8Km ওয়্যারলেস যোগাযোগ কম খরচে E32 (sx1278/sx1276) Arduino, Esp8266 বা Esp32: 15 ধাপের জন্য ডিভাইস
ভিডিও: LoRa Image and Video transmission wireless | ML on EdgeX 2024, ডিসেম্বর
Anonim
লোরা 3Km থেকে 8Km ওয়্যারলেস যোগাযোগ কম খরচে E32 (sx1278/sx1276) Arduino, Esp8266 বা Esp32 এর জন্য ডিভাইস
লোরা 3Km থেকে 8Km ওয়্যারলেস যোগাযোগ কম খরচে E32 (sx1278/sx1276) Arduino, Esp8266 বা Esp32 এর জন্য ডিভাইস

আমি লোরা ডিভাইসের সেমটেক সিরিজের উপর ভিত্তি করে EBYTE E32 পরিচালনার জন্য একটি লাইব্রেরি তৈরি করি, খুব শক্তিশালী, সহজ এবং সস্তা ডিভাইস।

আপনি এখানে 3Km সংস্করণ খুঁজে পেতে পারেন, 8Km সংস্করণ এখানে

তারা 3000 মিটার থেকে 8000 মিটার দূরত্বে কাজ করতে পারে এবং তাদের অনেক বৈশিষ্ট্য এবং পরামিতি রয়েছে। তাই আমি ব্যবহার সহজ করার জন্য এই লাইব্রেরি তৈরি করি।

এটি মেট্রোপলিটন সেন্সর থেকে তথ্য পুনরুদ্ধার বা ড্রোন নিয়ন্ত্রণের একটি সমাধান।

সরবরাহ

আরডুইনো ইউএনও

Wemos D1 মিনি

LoRa E32 TTL 100 3Km সংস্করণ

LoRa E32 TTL 1W 8Km সংস্করণ

ধাপ 1: লাইব্রেরি

গ্রন্থাগার
গ্রন্থাগার

আপনি এখানে আমার লাইব্রেরি খুঁজে পেতে পারেন।

ডাউনলোড করতে.

উপরের ডান কোণে ডাউনলোড বোতামে ক্লিক করুন, অসম্পূর্ণ ফোল্ডারের নাম পরিবর্তন করুন LoRa_E32।

LoRa_E32 ফোল্ডারে LoRa_E32.cpp এবং LoRa_E32.h আছে কিনা দেখে নিন।

LoRa_E32 লাইব্রেরি ফোল্ডারটি আপনার / লাইব্রেরি / ফোল্ডারে রাখুন। আপনার প্রথম লাইব্রেরি হলে আপনাকে লাইব্রেরি সাবফোল্ডার তৈরি করতে হতে পারে।

আইডিই পুনরায় চালু করুন।

ধাপ 2: পিনআউট

পিনআউট
পিনআউট
পিনআউট
পিনআউট
পিনআউট
পিনআউট

আপনি দেখতে পাচ্ছেন যে আপনি M0 এবং M1 পিনের মাধ্যমে বিভিন্ন মোড সেট করতে পারেন।

কিছু পিন আছে যা স্ট্যাটিক উপায়ে ব্যবহার করা যেতে পারে, কিন্তু যদি আপনি এটিকে মাইক্রোকন্ট্রোলারের সাথে সংযুক্ত করেন এবং লাইব্রেরিতে সেগুলি কনফিগার করেন যা আপনি কর্মক্ষমতা অর্জন করেন এবং আপনি সফ্টওয়্যারের মাধ্যমে সমস্ত মোড নিয়ন্ত্রণ করতে পারেন, কিন্তু আমরা পরবর্তীতে আরও ভাল ব্যাখ্যা করতে যাচ্ছি।

ধাপ 3: AUX পিন

AUX পিন
AUX পিন
AUX পিন
AUX পিন
AUX পিন
AUX পিন

যেহেতু আমি ইতিমধ্যেই বলছি মাইক্রোকন্ট্রোলারের আউটপুটে সমস্ত পিন সংযুক্ত করা গুরুত্বপূর্ণ নয়, আপনি পছন্দসই কনফিগারেশন পেতে M0 এবং M1 পিনগুলি উচ্চ বা নিম্নতে রাখতে পারেন এবং যদি আপনি AUX সংযোগ না করেন তবে লাইব্রেরি নিশ্চিত হওয়ার জন্য যুক্তিসঙ্গত বিলম্ব সেট করে যে অপারেশন সম্পূর্ণ।

AUX পিন

ডেটা প্রেরণ করার সময় বহিরাগত এমসিইউ জাগাতে এবং ডেটা ট্রান্সফার ফিনিসে উচ্চ ফেরত দেওয়ার জন্য ব্যবহার করা যেতে পারে।

AUX গ্রহণ করার সময় কম যাচ্ছে এবং বাফার খালি হলে উচ্চ ফেরত দিন।

এটি স্বাভাবিক ক্রিয়াকলাপ পুনরুদ্ধার করতে (পাওয়ার-অন এবং স্লিপ/প্রোগ্রাম মোডে) স্ব-যাচাইয়ের জন্যও ব্যবহৃত হয়।

ধাপ 4: সম্পূর্ণরূপে সংযুক্ত স্কিমা Esp8266

সম্পূর্ণ সংযুক্ত স্কিমা Esp8266
সম্পূর্ণ সংযুক্ত স্কিমা Esp8266
সম্পূর্ণ সংযুক্ত স্কিমা Esp8266
সম্পূর্ণ সংযুক্ত স্কিমা Esp8266

esp8266 সংযোগ স্কিমা আরো সহজ কারণ এটি লজিক্যাল যোগাযোগের একই ভোল্টেজ (3.3v) এ কাজ করে।

ভাল স্থিতিশীলতা পেতে পুল-আপ প্রতিরোধক (4, 7 কোহম) যুক্ত করা গুরুত্বপূর্ণ।

ধাপ 5: সম্পূর্ণরূপে সংযুক্ত স্কিমা আরডুইনো

সম্পূর্ণরূপে সংযুক্ত স্কিমা আরডুইনো
সম্পূর্ণরূপে সংযুক্ত স্কিমা আরডুইনো
সম্পূর্ণ সংযুক্ত স্কিমা আরডুইনো
সম্পূর্ণ সংযুক্ত স্কিমা আরডুইনো

আরডুইনো ওয়ার্কিং ভোল্টেজ হল 5v, তাই আমাদের ক্ষতি রোধ করার জন্য লোরা মডিউলের RX পিন M0 এবং M1 এ একটি ভোল্টেজ ডিভাইডার যোগ করতে হবে, আপনি এখানে আরো তথ্য পেতে পারেন ভোল্টেজ ডিভাইডার: ক্যালকুলেটর এবং অ্যাপ্লিকেশন।

আপনি RX তে একসাথে রাখার চেয়ে সিএনজি থেকে GND এবং 1Kohm এ 2Kohm রোধ ব্যবহার করতে পারেন।

ধাপ 6: লাইব্রেরি: নির্মাতা

আমি বেশ অসংখ্য কনস্ট্রাক্টরের একটি সেট তৈরি করেছি, কারণ আমাদের পরিচালনার জন্য আরও বিকল্প এবং পরিস্থিতি থাকতে পারে।

LoRa_E32 (বাইট rxPin, বাইট txPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (বাইট rxPin, বাইট txPin, বাইট auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600); LoRa_E32 (বাইট rxPin, বাইট txPin, বাইট auxPin, বাইট m0Pin, বাইট m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

সিরিয়াল এবং অন্যান্য পিনের ব্যবস্থাপনা লাইব্রেরিতে অর্পণ করার জন্য কনস্ট্রাক্টরের প্রথম সেট তৈরি করা হয়।

rxPin এবং txPin হল UART এর সাথে সংযোগ করার জন্য পিন এবং সেগুলো বাধ্যতামূলক।

auxPin হল একটি পিন যা অপারেশন, ট্রান্সমিশন এবং রিসিভিং স্ট্যাটাস চেক করে (আমরা পরবর্তীতে আরও ভালোভাবে ব্যাখ্যা করতে যাচ্ছি), সেই পিনটি বাধ্যতামূলক নয়, যদি আপনি এটি সেট না করেন তাহলে আমি অপারেশনটি সম্পূর্ণ করার জন্য বিলম্ব প্রয়োগ করি (বিলম্ব সহ)।

m0pin এবং m1Pin হল অপারেশন মোড পরিবর্তন করার পিন (উপরের টেবিলটি দেখুন), আমি মনে করি "উৎপাদনের" এই পিনগুলি সরাসরি উচ্চ বা নিম্নের সাথে সংযোগ স্থাপন করতে চলেছে, কিন্তু পরীক্ষার জন্য সেগুলি লাইব্রেরি দ্বারা পরিচালিত হতে পারে।

bpsRate হল সফটওয়্যার সিরিয়ালের সাধারনত 9600 (প্রোগ্রামমিন/স্লিপ মোডে একমাত্র বড রেট)

একটি সহজ উদাহরণ হল

#অন্তর্ভুক্ত "LoRa_E32.h" LoRa_E32 e32ttl100 (2, 3); // RX, TX // LoRa_E32 e32ttl100 (2, 3, 5, 6, 7); // RX, TX

আমরা অন্য কনস্ট্রাক্টরের সাথে সরাসরি একটি সফটওয়্যার সিরিয়াল ব্যবহার করতে পারি

LoRa_E32 (হার্ডওয়্যার সিরিয়াল* সিরিয়াল, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (হার্ডওয়্যার সিরিয়াল* সিরিয়াল, বাইট auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (হার্ডওয়্যার সিরিয়াল* সিরিয়াল, বাইট auxPin, বাইট m0Pin, বাইট m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

এই কনস্ট্রাক্টরের সাথে উপরের উদাহরণটি এরকম করা যেতে পারে।

#অন্তর্ভুক্ত #অন্তর্ভুক্ত "LoRa_E32.h"

সফটওয়্যার সিরিয়াল মাই সিরিয়াল (2, 3); // RX, TX

LoRa_E32 e32ttl100 (& mySerial);

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

কনস্ট্রাক্টরের শেষ সেটটি হল সফটওয়্যার সিরিয়ালের পরিবর্তে একটি হার্ডওয়্যার সিরিয়াল ব্যবহার করার অনুমতি দেওয়া।

LoRa_E32 (SoftwareSerial* সিরিয়াল, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (SoftwareSerial* সিরিয়াল, বাইট auxPin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

LoRa_E32 (SoftwareSerial* সিরিয়াল, বাইট auxPin, বাইট m0Pin, বাইট m1Pin, UART_BPS_RATE bpsRate = UART_BPS_RATE_9600);

ধাপ 7: শুরু করুন

শুরু কমান্ডটি ইনপুট এবং আউটপুট মোডে সিরিয়াল এবং পিনগুলি স্টার্টআপ করতে ব্যবহৃত হয়।

অকার্যকর শুরু ();

কার্যকর করা হয়

// সমস্ত পিন এবং UART স্টার্টআপ

e32ttl100. শুরু ();

ধাপ 8: কনফিগারেশন এবং তথ্য পদ্ধতি

কনফিগারেশন পরিচালনা এবং ডিভাইসের তথ্য পাওয়ার জন্য পদ্ধতিগুলির একটি সেট আছে।

ResponseStructContainer getConfiguration ();

ResponseStatus setConfiguration (কনফিগারেশন কনফিগারেশন, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);

ResponseStructContainer getModuleInformation ();

অকার্যকর মুদ্রণ প্যারামিটার (কাঠামো কনফিগারেশন কনফিগারেশন);

ResponseStatus resetModule ();

ধাপ 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_HARDWARE, ERR_HEAD_NOT_RECOGNIZED

প্রতিক্রিয়া কনটেইনার

এই কন্টেইনারটি স্ট্রিং রেসপন্স ম্যানেজ করার জন্য তৈরি করা হয়েছে এবং ২ টি এন্ট্রি পয়েন্ট আছে।

স্ট্রিং সহ ডেটা বার্তা এবং স্থিতি থেকে ফিরে এসেছে RepsonseStatus এর একটি উদাহরণ।

ResponseContainer rs = e32ttl.receiveMessage ();

স্ট্রিং বার্তা = rs.data;

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

Serial.println (বার্তা);

ResponseStructContainer

এটি আরও "জটিল" ধারক, আমি এটি কাঠামো পরিচালনার জন্য ব্যবহার করি, এটি রেসপন্স কনটেইনার এর একই এন্ট্রি পয়েন্ট আছে কিন্তু জটিল কাঠামো পরিচালনা করার জন্য ডেটা একটি অকার্যকর নির্দেশক।

ResponseStructContainer গ;

c = e32ttl100.getConfiguration (); // অন্য সব অপারেশনের আগে কনফিগারেশন পয়েন্টার পেতে গুরুত্বপূর্ণ

কনফিগারেশন কনফিগারেশন = *(কনফিগারেশন *) c.data;

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

Serial.println (c.status.code);

getConfiguration এবং setConfiguration

প্রথম পদ্ধতি হল getConfiguration, আপনি এটি ব্যবহার করতে পারেন ডিভাইসে সংরক্ষিত সমস্ত ডেটা পুনরুদ্ধার করতে।

ResponseStructContainer getConfiguration ();

এখানে একটি ব্যবহারের উদাহরণ।

ResponseStructContainer গ;

c = e32ttl100.getConfiguration (); // অন্য সব অপারেশনের আগে কনফিগারেশন পয়েন্টার পেতে গুরুত্বপূর্ণ

কনফিগারেশন কনফিগারেশন = *(কনফিগারেশন *) c.data;

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

Serial.println (c.status.code);

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

কনফিগারেশনের কাঠামোতে সেটিংসের সমস্ত ডেটা রয়েছে এবং একক ডেটার সমস্ত বিবরণ পেতে আমি ফাংশনের একটি সিরিজ যুক্ত করি।

কনফিগারেশন। ADDL = 0x0; // addressconfiguration এর প্রথম অংশ। 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.print (F ("Chan:")); Serial.print (configuration. CHAN, DEC); সিরিয়াল.প্রিন্ট (" ->"); Serial.println (configuration.getChannelDescription ()); Serial.println (F ("")); Serial.print (F ("SpeedParityBit:")); Serial.print (configuration. SPED.uartParity, BIN); Serial.print (" ->"); Serial.println (configuration. SPED.getUARTParityDescription ()); Serial.print (F ("SpeedUARTDatte:")); 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 (F ("OptionTrans:")); Serial.print (configuration. OPTION.fixedTransmission, BIN); Serial.print (" ->"); Serial.println (configuration. OPTION.getFixedTransmissionDescription ()); Serial.print (F ("OptionPullup:")); Serial.print (configuration. OPTION.ioDriveMode, BIN); Serial.print (" ->"); Serial.println (configuration. OPTION.getIODroveModeDescription ()); Serial.print (F ("OptionWakeup:")); Serial.print (configuration. OPTION.wirelessWakeupTime, BIN); Serial.print (" ->"); Serial.println (configuration. OPTION.getWirelessWakeUPTimeDescription ()); Serial.print (F ("OptionFEC:")); Serial.print (configuration. OPTION.fec, BIN); Serial.print (" ->"); Serial.println (configuration. OPTION.getFECDescription ()); Serial.print (F ("OptionPower:")); Serial.print (configuration. OPTION.transmissionPower, BIN); Serial.print (" ->"); Serial.println (configuration. OPTION.getTransmissionPowerDescription ());

একইভাবে setConfiguration একটি কনফিগারেশন স্ট্রুকট্রে চায়, তাই আমি মনে করি কনফিগারেশন পরিচালনা করার ভাল উপায় হল বর্তমানটি পুনরুদ্ধার করা, আপনার প্রয়োজনীয় পরিবর্তনটি প্রয়োগ করুন এবং এটি আবার সেট করুন।

ResponseStatus setConfiguration (কনফিগারেশন কনফিগারেশন, PROGRAM_COMMAND saveType = WRITE_CFG_PWR_DWN_LOSE);

কনফিগারেশন হল স্ট্রুকুট্রে প্রিভিসিয়ালি দেখানো, saveType পারমিট আপনাকে choiche করার অনুমতি দেয় যদি পরিবর্তনটি শুধুমাত্র বর্তমান সেশনের জন্য স্থায়ীভাবে হয়ে যায়।

ResponseStructContainer c; c = e32ttl100.getConfiguration (); // অন্য সব অপারেশনের আগে কনফিগারেশন পয়েন্টার পেতে গুরুত্বপূর্ণ কনফিগারেশন কনফিগারেশন = *(কনফিগারেশন *) c.data; Serial.println (c.status.getResponseDescription ()); Serial.println (c.status.code); প্রিন্ট প্যারামিটার (কনফিগারেশন); কনফিগারেশন। ADDL = 0x0; কনফিগারেশন। ADDH = 0x1; কনফিগারেশন CHAN = 0x19; configuration. OPTION.fec = FEC_0_OFF; configuration. OPTION.fixedTransmission = FT_TRANSPARENT_TRANSMISSION; configuration. OPTION.ioDriveMode = IO_D_MODE_PUSH_PULLS_PULL_UPS; configuration. OPTION.transmissionPower = POWER_17; configuration. OPTION.wirelessWakeupTime = WAKE_UP_1250; configuration. SPED.airDataRate = AIR_DATA_RATE_011_48; configuration. SPED.uartBaudRate = UART_BPS_115200; configuration. SPED.uartParity = MODE_00_8N1; // সেট কনফিগারেশন পরিবর্তন করা হয়েছে এবং কনফিগারেশন রেসপন্স স্ট্যাটাস rs = e32ttl100.setConfiguration (কনফিগারেশন, WRITE_CFG_PWR_DWN_LOSE) না ধরে সেট করা হয়েছে; Serial.println (rs.getResponseDescription ()); Serial.println (rs.code); প্রিন্ট প্যারামিটার (কনফিগারেশন);

প্যারামিটার সব ধ্রুবক হিসাবে পরিচালিত হয়:

ধাপ 10: বেসিক কনফিগারেশন অপশন

বেসিক কনফিগারেশন অপশন
বেসিক কনফিগারেশন অপশন

ধাপ 11: রিসিভ মেসেজ পাঠান

প্রথমে আমাদের গ্রহণযোগ্য বাফারে কিছু আছে কিনা তা পরীক্ষা করার জন্য একটি সহজ কিন্তু দরকারী পদ্ধতি চালু করতে হবে

int উপলব্ধ ();

এটি বর্তমান প্রবাহে আপনার কত বাইট আছে তা ফেরত দেয়।

ধাপ 12: সাধারণ ট্রান্সমিশন মোড

সাধারণ ট্রান্সমিশন মোড
সাধারণ ট্রান্সমিশন মোড

সাধারণ/স্বচ্ছ ট্রান্সমিশন মোড একই ঠিকানা এবং চ্যানেল সহ সমস্ত ডিভাইসে বার্তা পাঠাতে ব্যবহৃত হয়।

বার্তা প্রেরণ/গ্রহণ করার অনেক পদ্ধতি রয়েছে, আমরা বিস্তারিতভাবে ব্যাখ্যা করতে যাচ্ছি:

ResponseStatus sendMessage (const স্ট্রিং মেসেজ);

ResponseContainer receiveMessage ();

প্রথম পদ্ধতি হল SendMessage এবং সাধারণ মোডে একটি ডিভাইসে একটি স্ট্রিং পাঠাতে ব্যবহৃত হয়।

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

অন্য ডিভাইসটি কেবল লুপে করে

যদি (e32ttl.available ()> 1) {ResponseContainer rs = e32ttl.receiveMessage (); স্ট্রিং বার্তা = rs.data; // সর্বপ্রথম ডেটা পান Serial.println (rs.status.getResponseDescription ()); Serial.println (বার্তা); }

ধাপ 13: কাঠামো পরিচালনা করুন

আপনি যদি একটি জটিল স্ট্রাকচার পাঠাতে চান তবে আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন

ResponseStatus sendMessage (const void *message, const uint8_t size); ResponseStructContainer receiveMessage (const uint8_t size);

এটি স্ট্রুকুট্রে পাঠাতে ব্যবহৃত হয়, উদাহরণস্বরূপ:

struct Messaggione {চর টাইপ [5]; চার বার্তা [8]; বুল মিটিকো; }; struct Messaggione messaggione = {"TEMP", "Peple", true}; ResponseStatus rs = e32ttl.sendMessage (& messaggione, sizeof (Messaggione)); Serial.println (rs.getResponseDescription ());

এবং অন্যদিকে আপনি বার্তাটি গ্রহণ করতে পারেন

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

আংশিক স্ট্রাকচার পড়ুন

আপনি যদি বার্তার প্রথম অংশটি পড়তে চান তবে আরও ধরণের স্ট্রুকুট্রে পরিচালনা করতে আপনি এই পদ্ধতিটি ব্যবহার করতে পারেন।

ResponseContainer receiveInitialMessage (const uint8_t size);

লোড করার জন্য স্ট্রাকিউচার শনাক্ত করার জন্য আমি এটি টাইপ বা অন্য একটি স্ট্রিং পাওয়ার জন্য তৈরি করি।

struct Messaggione {// টাইপচার মেসেজ ছাড়া আংশিক স্ট্রুকুট্রে [8]; বুল মিতিকো; }; গৃহস্থালি টাইপ [5]; // কাঠামোর প্রথম অংশ ResponseContainer rs = e32ttl.receiveInitialMessage (sizeof (type)); // একটি অ্যারের মধ্যে স্ট্রিং রাখুন (প্রয়োজন নেই) memcpy (type, rs.data.c_str (), sizeof (type)); Serial.println ("টাইপ পড়ুন:"); Serial.println (rs.status.getResponseDescription ()); Serial.println (প্রকার); // বাকী কাঠামো পড়ুন ResponseStructContainer rsc = e32ttl.receiveMessage (sizeof (Messaggione)); গঠন Messaggione messaggione = *(Messaggione *) rsc.data;

ধাপ 14: সাধারণ মোডের পরিবর্তে স্থির মোড

একইভাবে আমি নির্দিষ্ট ট্রান্সমিশনের সাথে ব্যবহারের জন্য একটি পদ্ধতি তৈরি করি

স্থির সংক্রমণ

আপনাকে কেবল পাঠানোর পদ্ধতি পরিবর্তন করতে হবে, কারণ গন্তব্য ডিভাইস ঠিকানা এবং চ্যানেল কোয়ান্দো সেট্যাটো আইএল ফিক্সড মোডের সাথে প্রস্তাবনা গ্রহণ করে না।

সুতরাং স্ট্রিং বার্তার জন্য আপনার আছে

ResponseStatus sendFixedMessage (byte ADDL, byte ADDH, byte CHAN, const String message); ResponseStatus sendBroadcastFixedMessage (বাইট CHAN, const স্ট্রিং বার্তা);

এবং কাঠামোর জন্য আপনার আছে

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; // সেট কনফিগারেশন পরিবর্তন করা হয়েছে এবং কনফিগারেশন রেসপন্স স্ট্যাটাস 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 ডিভাইস: বিদ্যুৎ সাশ্রয় এবং স্ট্রাকচার্ড ডেটা পাঠানো

প্রস্তাবিত: