
সুচিপত্র:
2025 লেখক: John Day | [email protected]. সর্বশেষ পরিবর্তিত: 2025-01-23 14:36

অনেক Arduino প্রকল্প বেশ কয়েকটি Arduinos এর মধ্যে তথ্য প্রেরণের উপর নির্ভর করে।
আপনি শখের বশে যে আরসি গাড়ি, আরসি বিমান তৈরি করছেন, অথবা রিমোট ডিসপ্লে দিয়ে আবহাওয়া স্টেশন ডিজাইন করছেন, আপনাকে জানতে হবে কিভাবে একটি আর্ডুইনো থেকে অন্যটিতে সিরিয়াল ডেটা নির্ভরযোগ্যভাবে স্থানান্তর করতে হয়। দুর্ভাগ্যবশত, শৌখিনদের জন্য তাদের নিজস্ব প্রকল্পগুলিতে সিরিয়াল ডেটা কমিউনিকেশন কাজ করা কঠিন।
বাইট প্রবাহের মধ্যে কোন প্রকার প্রসঙ্গ ছাড়া, ডেটা ব্যাখ্যা করা প্রায় অসম্ভব। ডেটা ব্যাখ্যা করতে না পারলে, আপনার Arduinos নির্ভরযোগ্যভাবে যোগাযোগ করতে সক্ষম হবে না। স্ট্যান্ডার্ড সিরিয়াল প্যাকেট ডিজাইন ব্যবহার করে বাইট স্ট্রীমে এই প্রসঙ্গ ডেটা যোগ করা কী।
সিরিয়াল প্যাকেট ডিজাইন, প্যাকেট স্টাফিং এবং প্যাকেট পার্সিং জটিল এবং অর্জন করা কঠিন। সৌভাগ্যবশত আরডুইনো ব্যবহারকারীদের জন্য, এমন লাইব্রেরি রয়েছে যা পর্দার আড়ালে এই জটিল যুক্তিগুলি করতে পারে যাতে আপনি আপনার প্রকল্পটি অতিরিক্ত মাথা ব্যতীত কাজ করার দিকে মনোনিবেশ করতে পারেন। এই নির্দেশযোগ্য সিরিয়াল প্যাকেট প্রক্রিয়াকরণের জন্য লাইব্রেরি SerialTransfer.h ব্যবহার করবে।
সংক্ষেপে: এই নির্দেশিকাটি আপনি লাইব্রেরি সিরিয়াল ট্রান্সফার.এইচ ব্যবহার করে যে কোনও প্রকল্পে সহজেই শক্তিশালী সিরিয়াল ডেটা বাস্তবায়ন করতে পারেন। আপনি যদি শক্তিশালী সিরিয়াল যোগাযোগের নিম্ন স্তরের তত্ত্ব সম্পর্কে আরও জানতে চান, এই টিউটোরিয়ালটি দেখুন।
সরবরাহ
-
2 Arduinos
এটি অত্যন্ত উৎসাহিত যে আপনি Arduinos ব্যবহার করেন যার একাধিক হার্ডওয়্যার UART আছে (যেমন Arduino Mega)
- হুকআপ তার
-
SerialTransfer.h ইনস্টল করুন
Arduino IDE এর লাইব্রেরি ম্যানেজারের মাধ্যমে উপলব্ধ
ধাপ 1: শারীরিক সংযোগ

সিরিয়াল যোগাযোগ ব্যবহার করার সময়, কয়েকটি ওয়্যারিং পয়েন্ট মনে রাখা প্রয়োজন:
- নিশ্চিত করুন যে সমস্ত মাঠ সংযুক্ত আছে!
- Arduino TX (Transmit) পিনকে অন্য Arduino এর RX (Receive) পিনের সাথে সংযুক্ত করতে হবে
ধাপ 2: লাইব্রেরি কিভাবে ব্যবহার করবেন

SerialTransfer.h আপনাকে কাস্টম প্যাকেট প্রোটোকল ব্যবহার করে সহজেই প্রচুর পরিমাণে ডেটা পাঠাতে দেয়। নীচে লাইব্রেরির সমস্ত বৈশিষ্ট্যগুলির বিবরণ দেওয়া হয়েছে - যার মধ্যে অনেকগুলি আমরা পরে এই টিউটোরিয়ালে ব্যবহার করব:
SerialTransfer.txBuff
এটি একটি বাইট অ্যারে যেখানে সিরিয়ালে পাঠানো সমস্ত প্লেলোড ডেটা ট্রান্সমিশনের আগে বাফার করা হয়। আপনি এই বাফারটি ডেটা বাইট দিয়ে অন্য Arduino- এ পাঠাতে পারেন।
SerialTransfer.rxBuff
এটি একটি বাইট অ্যারে যেখানে অন্যান্য Arduino থেকে প্রাপ্ত সমস্ত প্লেলোড ডেটা বাফার করা হয়।
SerialTransfer.bytes পড়ুন
অন্যান্য Arduino দ্বারা প্রাপ্ত পেলোড বাইটের সংখ্যা এবং SerialTransfer.rxBuff এ সংরক্ষিত
SerialTransfer.begin (Stream & _port)
লাইব্রেরির ক্লাসের একটি উদাহরণ শুরু করে। আপনি যেকোনো "সিরিয়াল" শ্রেণীর বস্তুকে প্যারামিটার হিসেবে পাস করতে পারেন - এমনকি "SoftwareSerial" শ্রেণীর বস্তুগুলিও!
SerialTransfer.sendData (const uint16_t & messageLen)
এটি আপনার Arduino কে অন্য Arduino- এ প্রেরণ বাফারে "বার্তা লেন" বাইট পাঠায়। উদাহরণস্বরূপ, যদি "messageLen" 4 হয়, SerialTransfer.txBuff এর প্রথম 4 বাইট সিরিয়ালের মাধ্যমে অন্য Arduino- এ পাঠানো হবে।
SerialTransfer.available ()
এটি আপনার Arduino অন্য Arduino থেকে প্রাপ্ত কোন সিরিয়াল ডেটা বিশ্লেষণ করে। যদি এই ফাংশনটি বুলিয়ান "সত্য" ফেরত দেয়, এর অর্থ হল একটি নতুন প্যাকেট সফলভাবে পার্স করা হয়েছে এবং নতুন প্রাপ্ত প্যাকেটের ডেটা SerialTransfer.rxBuff- এ সংরক্ষিত/উপলব্ধ।
SerialTransfer.txObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
"ইনডেক্স" আর্গুমেন্ট দ্বারা নির্ধারিত সূচকে শুরু হওয়া ট্রান্সমিট বাফারে একটি ইচ্ছাকৃত বস্তুর (বাইট, ইন্ট, ফ্লোট, ডাবল, স্ট্রাক্ট, ইত্যাদি …
SerialTransfer.rxObj (const T & val, const uint16_t & len, const uint16_t & index = 0)
ইনডেক্স থেকে শুরু করে রিসিভ বাফার (rxBuff) থেকে শুরু করে "len" সংখ্যার বাইট পড়ে একটি "ইন্ডেক্স" যুক্তি দ্বারা নির্ধারিত একটি নির্বিচারে বস্তুতে (বাইট, ইন্ট, ফ্লোট, ডাবল, স্ট্রাক্ট ইত্যাদি …)।
বিঃদ্রঃ:
ডেটা প্রেরণের সবচেয়ে সহজ উপায় হল প্রথমে এমন একটি কাঠামো সংজ্ঞায়িত করা যাতে আপনি পাঠাতে চান এমন সমস্ত ডেটা থাকে। প্রাপ্ত প্রান্তে Arduino একটি অভিন্ন কাঠামো সংজ্ঞায়িত হওয়া উচিত।
ধাপ 3: প্রাথমিক তথ্য প্রেরণ
নিম্নলিখিত স্কেচ এনালগ রিডের এডিসি মান (0) এবং এনালগ রিড (0) এর মান ভোল্টেজ থেকে আরডুইনো #2 এ রূপান্তরিত করে।
Arduino #1 এ নিম্নলিখিত স্কেচ আপলোড করুন:
#অন্তর্ভুক্ত করুন "SerialTransfer.h"
সিরিয়াল ট্রান্সফার মাই ট্রান্সফার; গঠন STRUCT {uint16_t adcVal; ভাসা ভোল্টেজ; } ডেটা; অকার্যকর সেটআপ () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (সিরিয়াল 1); } অকার্যকর লুপ () {data.adcVal = analogRead (0); data.voltage = (data.adcVal * 5.0) / 1023.0; myTransfer.txObj (data, sizeof (data)); myTransfer.sendData (sizeof (data)); বিলম্ব (100); }
ধাপ 4: বেসিক ডেটা গ্রহণ করুন
নিম্নলিখিত কোডটি Arduino #1 থেকে প্রাপ্ত ADC এবং ভোল্টেজের মানগুলি প্রিন্ট করে।
Arduino #2 এ নিম্নলিখিত কোডটি আপলোড করুন:
#অন্তর্ভুক্ত করুন "SerialTransfer.h"
সিরিয়াল ট্রান্সফার মাই ট্রান্সফার; গঠন STRUCT {uint16_t adcVal; ভাসা ভোল্টেজ; } ডেটা; অকার্যকর সেটআপ () {Serial.begin (115200); Serial1.begin (115200); myTransfer.begin (সিরিয়াল 1); } void loop () {if (myTransfer.available ()) {myTransfer.rxObj (data, sizeof (data)); সিরিয়াল.প্রিন্ট (data.adcVal); সিরিয়াল.প্রিন্ট (''); Serial.println (data.voltage); Serial.println (); } অন্যথায় যদি (myTransfer.status <0) {Serial.print ("ERROR:"); যদি (myTransfer.status == -1) Serial.println (F ("CRC_ERROR")); অন্যথায় যদি (myTransfer.status == -2) Serial.println (F ("PAYLOAD_ERROR")); অন্যথায় যদি (myTransfer.status == -3) Serial.println (F ("STOP_BYTE_ERROR")); }}
ধাপ 5: পরীক্ষা
একবার উভয় স্কেচ তাদের নিজ নিজ Arduinos- এ আপলোড হয়ে গেলে, আপনি Arduino #2 এর সিরিয়াল মনিটর ব্যবহার করে যাচাই করতে পারেন যে আপনি Arduino #1 থেকে ডেটা পাচ্ছেন।
প্রস্তাবিত:
রাস্পবেরি PI 3 - TtyAMA0 থেকে BCM GPIO 14 এবং GPIO 15: 9 ধাপে সিরিয়াল যোগাযোগ সক্ষম করুন

রাস্পবেরি PI 3 - TtyAMA0 থেকে BCM GPIO 14 এবং GPIO 15 তে সিরিয়াল কমিউনিকেশন সক্ষম করুন: সম্প্রতি আমি আমার রাস্পবেরি পাই (3b) তে UART0 সক্ষম করতে আগ্রহী ছিলাম যাতে আমি এটি একটি RS -232 সিগন্যাল লেভেল ডিভাইসে সরাসরি একটি স্ট্যান্ডার্ড 9 ব্যবহার করে সংযুক্ত করতে পারি -পিন ডি-সাব কানেক্টর একটি ইউএসবি থেকে আরএস -232 অ্যাডাপ্টারে না গিয়ে। আমার আগ্রহের অংশ
আরডুইনো এবং পাইথন সিরিয়াল যোগাযোগ - কীপ্যাড প্রদর্শন: 4 টি ধাপ

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

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

সিরিয়াল কমিউনিকেশন ব্যবহার করে ওয়েব-ভিত্তিক স্মার্টমিরর: এই নির্দেশনাটি ব্যবহারের জন্য প্রস্তুত সমস্ত কোডের সাথে বিতরণ করা হয়। উন্নয়ন খুব জটিল ছিল কিন্তু একবার এটি সেট আপ করা হলে কাস্টমাইজ করা সত্যিই সহজ। একবার দেখুন এবং উপভোগ করুন;)
ARM Cortex-M4: 4 ধাপ ব্যবহার করে সিরিয়াল যোগাযোগ

ARM Cortex-M4 ব্যবহার করে সিরিয়াল যোগাযোগ: এটি একটি ব্রেডবোর্ড ভিত্তিক প্রকল্প যা ভার্চুয়াল টার্মিনাল ব্যবহার করে সিরিয়াল যোগাযোগের জন্য ARM Cortex-M4 (টেক্সাস ইন্সট্রুমেন্টস EK-TM4C123GXL) ব্যবহার করে। আউটপুট 16x2 LCD স্ক্রিনে পাওয়া যেতে পারে এবং সিরিয়াল যোগাযোগের জন্য ইনপুট সিরিয়াল মো তে দেওয়া যেতে পারে