আরডুইনোতে সফ্টওয়্যার সিরিয়াল লাইব্রেরি

Aradu Inote Saphta Oyyara Siriyala La Ibreri



Arduino প্ল্যাটফর্ম মানুষকে বিভিন্ন প্রকল্প তৈরি করতে সক্ষম করে। Arduino হল একটি ব্যবহারকারী-বান্ধব প্ল্যাটফর্ম যা সহ বিস্তৃত লাইব্রেরির জন্য সমর্থন সহ সফটওয়্যার সিরিয়াল লাইব্রেরি . দ্য সফটওয়্যার সিরিয়াল লাইব্রেরি আপনাকে আপনার Arduino বোর্ডের যেকোনো ডিজিটাল পিনে একটি সিরিয়াল পোর্ট তৈরি করতে দেয়।

এই নিবন্ধে, আমরা সফ্টওয়্যার সিরিয়াল লাইব্রেরির গভীরে প্রবেশ করব এবং এটি কীভাবে কাজ করে তা অন্বেষণ করব।







সফটওয়্যার সিরিয়াল লাইব্রেরির পরিচিতি

দ্য সফটওয়্যার সিরিয়াল লাইব্রেরি একটি আদর্শ Arduino লাইব্রেরি যা TX এবং RX ছাড়া অন্য ডিজিটাল পিনে সিরিয়াল যোগাযোগের অনুমতি দেয়। লাইব্রেরি একটি সফ্টওয়্যার সিরিয়াল পোর্ট তৈরি করতে সক্ষম করে, যা অন্যান্য ডিভাইসের সাথে যোগাযোগ করতে ব্যবহার করা যেতে পারে, যেমন অন্যান্য মাইক্রোকন্ট্রোলার, কম্পিউটার বা এমনকি ব্লুটুথ মডিউল। সফটওয়্যার সিরিয়াল লাইব্রেরি Arduino IDE এর সাথে অন্তর্ভুক্ত করা হয়েছে এবং যেকোন Arduino বোর্ডের সাথে ব্যবহার করা যেতে পারে।



বিঃদ্রঃ: সাধারণত, TX এবং আরএক্স পিনগুলি সিরিয়াল যোগাযোগের জন্য ব্যবহার করা হয় তবে এই লাইব্রেরিটি ব্যবহার করে আমরা আরডুইনো বোর্ডকে TX এবং RX পিনগুলি প্রতিস্থাপন করতে ডিজিটাল পিনগুলির যেকোনো একটি ব্যবহার করতে সক্ষম করতে পারি।



সফটওয়্যার সিরিয়াল লাইব্রেরি ফাংশন বোঝা

দ্য সফটওয়্যার সিরিয়াল লাইব্রেরি সফ্টওয়্যার সিরিয়াল পোর্ট সেট আপ এবং নিয়ন্ত্রণ করতে আপনাকে সক্ষম করে এমন বেশ কয়েকটি ফাংশন রয়েছে। এখানে কিছু প্রধান ফাংশন রয়েছে যা আপনার জানা উচিত:





সফটওয়্যার সিরিয়াল()

এই ফাংশনটির একটি নতুন উদাহরণ তৈরি করে সফটওয়্যার সিরিয়াল ক্লাস এই ফাংশনের দুটি আর্গুমেন্ট আছে, RX পিন এবং TX পিন। উদাহরণস্বরূপ, আপনি যদি পিন 2 এবং 3-এ একটি সফ্টওয়্যার সিরিয়াল পোর্ট তৈরি করতে চান তবে আপনি নিম্নলিখিত কোডটি ব্যবহার করবেন:

সফটওয়্যার সিরিয়াল mySerial ( 2 , 3 ) ; // আরএক্স, টিএক্স



দ্য সফটওয়্যার সিরিয়াল() পদ্ধতি একটি নতুন উদাহরণ তৈরি করতে ব্যবহৃত হয় সফটওয়্যার সিরিয়াল বস্তু এটি একাধিক দৃষ্টান্ত তৈরি করার অনুমতি দেয় তবে একটি সময়ে শুধুমাত্র একটি সক্রিয় হতে পারে।

বাক্য গঠন

জন্য বাক্য গঠন সফটওয়্যার সিরিয়াল() পদ্ধতি নিম্নরূপ:

সফটওয়্যার সিরিয়াল ( rxPin, txPin, inverse_logic )

পরামিতি

জন্য পরামিতি সফটওয়্যার সিরিয়াল() হয়

rxPin: এই প্যারামিটারটি পিনটি নির্দিষ্ট করে যা সিরিয়াল ডেটা গ্রহণ করতে ব্যবহৃত হবে।

txPin: এই প্যারামিটারটি পিনটি নির্দিষ্ট করে যা সিরিয়াল ডেটা প্রেরণ করতে ব্যবহৃত হবে।

inverse_logic: এই প্যারামিটারটি ঐচ্ছিক, এবং এটি ইনকামিং বিট সেন্সকে উল্টে দেয়। ডিফল্ট মানটি মিথ্যা, যার অর্থ RX পিনের একটি নিম্নকে 0-বিট এবং একটি উচ্চকে 1-বিট হিসাবে ব্যাখ্যা করা হয়৷ সত্য হিসাবে সেট করা হলে, RX পিনের নিম্ন এখন 1-বিট এবং উচ্চ 0-বিট হিসাবে গ্রহণ করবে।

প্রত্যাবর্তন

দ্য সফটওয়্যার সিরিয়াল() কিছু ফেরত দেয় না।

Arduino SoftwareSerial() লাইব্রেরি ফাংশন

আরডুইনো সফটওয়্যার সিরিয়াল() ডিভাইসের মধ্যে সিরিয়াল যোগাযোগের জন্য ফাংশন একটি তালিকা আছে. কিছু প্রধান ফাংশন এখানে আলোচনা করা হয়েছে:

শুরু()

দ্য শুরু() ফাংশন একটি বড রেট সহ সফ্টওয়্যার সিরিয়াল পোর্ট শুরু করে। বড রেট হল সিরিয়াল পোর্টের উপর ডেটা ট্রান্সমিশন গতি। উদাহরণস্বরূপ, সিরিয়াল যোগাযোগের জন্য বড রেট হিসাবে 9600 সেট করতে, আপনি নিম্নলিখিত কোডটি ব্যবহার করবেন:

mySerial.begin ( 9600 ) ;

উপলব্ধ()

দ্য উপলব্ধ() চ unction সফ্টওয়্যার সিরিয়াল পোর্টে পড়ার জন্য উপলব্ধ বাইট প্রদান করে। উদাহরণস্বরূপ, পড়ার জন্য উপলব্ধ কোনো ডেটা আছে কিনা তা পরীক্ষা করতে, আপনি নিম্নলিখিত কোডটি ব্যবহার করবেন:

যদি ( mySerial.available ( ) > 0 ) {
// পড়া তথ্য অন্তর্ভুক্তী
char incomingByte = mySerial.read ( ) ;
}

পড়ুন()

দ্য পড়ুন() ফাংশন সফ্টওয়্যার সিরিয়াল পোর্ট থেকে পরবর্তী বাইট ডেটা পড়ে। উদাহরণস্বরূপ, ডেটার একটি বাইট পড়তে এবং এটি সিরিয়াল মনিটরে মুদ্রণ করতে, আপনি নিম্নলিখিত কোডটি ব্যবহার করবেন:

char incomingByte = mySerial.read ( ) ;
Serial.println ( ইনকামিংবাইট ) ;

লিখুন()

দ্য লিখুন() ফাংশন সফ্টওয়্যার সিরিয়াল পোর্টে ডেটার একটি বাইট লেখে। যেমন চিঠি পাঠানোর জন্য 'ক' সফ্টওয়্যার সিরিয়াল পোর্টের উপর, আপনি নিম্নলিখিত কোড ব্যবহার করবেন:

mySerial.write ( 'ক' ) ;

Arduino SoftwareSerial() লাইব্রেরি উদাহরণ কোড

এখন আমরা এই লাইব্রেরি ব্যবহার করে সিরিয়াল যোগাযোগের মাধ্যমে দুটি আরডুইনো বোর্ডের মধ্যে যোগাযোগ করব। দুটি আরডুইনো বোর্ড নিন এবং নিচের চিত্রের মত করে সংযুক্ত করুন।

সংযোগ করুন D2 সঙ্গে মাস্টার Arduino বোর্ড D3 স্লেভ আরডুইনো বোর্ডের, একইভাবে সংযোগ করুন D3 সঙ্গে মাস্টার Arduino এর D2 ক্রীতদাস Arduino.

বিঃদ্রঃ: সিরিয়াল যোগাযোগের জন্য, TX পিন সবসময় এর সাথে সংযুক্ত থাকে আরএক্স বিপরীত Arduino এর পিন এবং আরএক্স মাস্টারের পিন সর্বদা এর সাথে সংযুক্ত থাকে TX অন্য Arduino এর পিন।

উভয় Arduino বোর্ডের হার্ডওয়্যার নিম্নলিখিত.

এখানে একটি উদাহরণ Arduino কোড যা প্রদর্শন করে কিভাবে ব্যবহার করতে হয় সফটওয়্যার সিরিয়াল লাইব্রেরি দুটি Arduino বোর্ডের মধ্যে যোগাযোগ স্থাপন করতে:

প্রেরক বোর্ড কোড

নীচের কোডটি প্রেরক Arduino এর জন্য যা রিসিভার Arduino বোর্ডে একটি স্ট্রিং লিখবে।

#include

// সফ্টওয়্যার সিরিয়াল অবজেক্ট সেট আপ করুন
সফটওয়্যার সিরিয়াল mySerial ( 2 , 3 ) ;

অকার্যকর সেটআপ ( ) {
// সিরিয়াল যোগাযোগ শুরু করুন
সিরিয়াল.শুরু ( 9600 ) ;
যখন ( ! সিরিয়াল ) {
; // অপেক্ষা করুন জন্য সিরিয়াল পোর্ট সংযোগ করতে
}

// সফ্টওয়্যার সিরিয়াল যোগাযোগ শুরু করুন
mySerial.begin ( 9600 ) ;
}

অকার্যকর লুপ ( ) {
// সফ্টওয়্যার সিরিয়াল সংযোগের মাধ্যমে একটি বার্তা পাঠান
mySerial.println ( 'হ্যালো, রিসিভার বোর্ড!' ) ;
বিলম্ব ( 1000 ) ;
}

রিসিভার বোর্ড কোড

নিচের কোডটি রিসিভার বোর্ডের জন্য। এই কোডটি ব্যবহার করে Arduino দুটি Arduino বোর্ডের মধ্যে প্রতিষ্ঠিত সিরিয়াল কমিউনিকেশনের মাধ্যমে অন্য বোর্ড থেকে স্ট্রিং পাবে।

#include

// সফ্টওয়্যার সিরিয়াল অবজেক্ট সেট আপ করুন
সফটওয়্যার সিরিয়াল mySerial ( 2 , 3 ) ;

অকার্যকর সেটআপ ( ) {
// সিরিয়াল যোগাযোগ শুরু করুন
সিরিয়াল.শুরু ( 9600 ) ;
যখন ( ! সিরিয়াল ) {
; // অপেক্ষা করুন জন্য সিরিয়াল পোর্ট সংযোগ করতে
}

// সফ্টওয়্যার সিরিয়াল যোগাযোগ শুরু করুন
mySerial.begin ( 9600 ) ;
}

অকার্যকর লুপ ( ) {
// চেক করুন যদি সফ্টওয়্যার সিরিয়াল সংযোগে ডেটা উপলব্ধ
যদি ( mySerial.available ( ) ) {
// ডেটা পড়ুন এবং সিরিয়াল মনিটরে মুদ্রণ করুন
Serial.println ( mySerial.readString ( ) ) ;
}
}

এই উদাহরণে, আমরা প্রথমে অন্তর্ভুক্ত করি সফটওয়্যার সিরিয়াল লাইব্রেরি কোডের শুরুতে। তারপর, আমরা একটি তৈরি করি সফটওয়্যার সিরিয়াল বস্তু নামক ' mySerial ” পিন 2 এবং 3 যথাক্রমে RX এবং TX পিন হিসাবে নির্দিষ্ট করা হয়েছে৷

মধ্যে সেটআপ() ফাংশন, আমরা হার্ডওয়্যার সিরিয়াল এবং সফ্টওয়্যার সিরিয়াল উভয়ই 9600 এর বড রেট দিয়ে শুরু করি। লুপ() প্রেরক বোর্ডের কাজ, আমরা mySerial.println() পদ্ধতি ব্যবহার করে সফ্টওয়্যার সিরিয়াল সংযোগে একটি বার্তা পাঠাই এবং পরবর্তী বার্তা পাঠানোর আগে এক সেকেন্ডের জন্য অপেক্ষা করি।

রিসিভার বোর্ডের লুপ() ফাংশনে, কোডটি ব্যবহার করে সফ্টওয়্যার সিরিয়াল সংযোগে সিরিয়াল ডেটা উপলব্ধতা পরীক্ষা করবে mySerial.available() পদ্ধতি যদি ডেটা উপলব্ধ থাকে, আমরা mySerial.readString() পদ্ধতি ব্যবহার করে ডেটা পড়ি এবং Serial.println() পদ্ধতি ব্যবহার করে সিরিয়াল মনিটরে প্রিন্ট করি।

SoftwareSerial() লাইব্রেরির সীমাবদ্ধতা

দ্য সফটওয়্যার সিরিয়াল লাইব্রেরি বিভিন্ন সুবিধা আছে কিন্তু কিছু সীমাবদ্ধতা রয়েছে যা ব্যবহারকারীদের সচেতন হওয়া উচিত। এই সীমাবদ্ধতা অন্তর্ভুক্ত

  • একই সাথে ডেটা প্রেরণ এবং গ্রহণ করতে অক্ষমতা।
  • একাধিক সফ্টওয়্যার সিরিয়াল পোর্ট ব্যবহার করার সময়, শুধুমাত্র একটি পোর্ট একবারে ডেটা গ্রহণ করতে পারে।
  • এই লাইব্রেরি ব্যবহার করে তৈরি সফ্টওয়্যার-ভিত্তিক সিরিয়াল পোর্টগুলি কম বড হারে কাজ করে এবং হার্ডওয়্যার-ভিত্তিক সিরিয়াল পোর্টের মতো নির্ভরযোগ্য নয়।
  • মেগা এবং মেগা 2560 বোর্ডের কিছু পিন RX এর জন্য পরিবর্তন বাধা সমর্থন করে না, কোন পিন ব্যবহার করা যেতে পারে তা সীমিত করে।
  • একইভাবে, লিওনার্দো এবং মাইক্রো বোর্ডে, পরিবর্তন বাধার অভাবের কারণে RX-এর জন্য শুধুমাত্র নির্দিষ্ট পিন ব্যবহার করা যেতে পারে।
  • Arduino বা Genuino 101 বোর্ডে সর্বোচ্চ RX গতি 57600 bps।
  • আরডিনো বা জেনুইনো 101 বোর্ডের ডিজিটাল পিন 13-এ RX কাজ করে না।
বোর্ড আরএক্স পিন
মেগা এবং মেগা 2560 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69)।

লিওনার্দো এবং মাইক 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI)।

উপসংহার

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