আরডুইনো দুটি ডিভাইসের মধ্যে একটি ইউআআআরটি সংযোগে "গুপ্তচর" ব্যবহার করতে পারে?


11

কার্যকারিতা বাড়ানোর জন্য আমার বিদ্যমান হার্ডওয়ারে একটি আরডুইনো (আসলে কেবল আইসি) ইনস্টল করা দরকার।

আমি যা করতে চাই তা হল আরডিনোকে সংযুক্ত করা যাতে এটি বোর্ডের দুটি চিপের মধ্যে আই / ও লাইনগুলিতে "স্পাই" করে। যদি আরডুইনো সেই ইউআরটি সংযোগে একটি নির্দিষ্ট কীওয়ার্ড তুলে ধরে তবে এটি আউটপুট পিনের একটি পৃথক সেটটিতে একটি নির্দিষ্ট ক্রিয়া সম্পাদন করবে।

আমি যে বিষয়ে অনিশ্চিত তা হ'ল কীভাবে আড়ডিনোকে এমনভাবে সংযুক্ত করা যায় যাতে এটি অংশ না নিয়েই বিদ্যমান ইউআরটি সংযোগটি ডিকোড করতে পারে? সম্ভব না হলে আমি তত্ত্ব, ধারণা ইত্যাদিতে আগ্রহী

উত্তর:


17

যদি আমি সঠিকভাবে বুঝতে পারি তবে আপনার কাছে ইউআরটির মাধ্যমে 2 টি ডিভাইস সংযুক্ত রয়েছে। আমি ধরে নিই যে ডিভাইসগুলির মধ্যে কেবল টিএক্স, আরএক্স এবং জিএনডি লাইন সংযুক্ত রয়েছে? (যেমন, কোনও ডিটিএস / সিটিএস / ডিটিআর / আরটিএস নিয়ন্ত্রণ লাইন ব্যবহৃত হয়নি - এটি সাধারণ)।

এই দৃশ্যে, ডিভাইস 1 এর টিএক্স (সংক্রমণ) ডিভাইস 2 এর আরএক্স (প্রাপ্ত) এবং এর বিপরীতে সংযুক্ত। তাদের ভিত্তি একে অপরের সাথে সংযুক্ত। সুতরাং, প্রতিটি ডিভাইস একই সাথে সংক্রমণ এবং গ্রহণ করা যেতে পারে (প্রতিটি পৃথক তারে প্রেরণ করে, যোগাযোগটি পুরো দ্বৈত)।

আমি এই সমস্ত কারণে উল্লেখ করার কারণ এটি স্পষ্ট হয়ে যায় যে "স্নিফ" বা "শোনো", আপনার কথোপকথনের উভয় পক্ষের কাছে শুনতে 2 টি ইউআরটি আসলে দরকার।

মূলত, আপনার যা যা করা হয়েছে তা নিশ্চিত করা হয় যে 3 ডিভাইসের ইউআরটি জিএনডিগুলি সংক্ষিপ্ত করা হয়েছে এবং প্লাম্বিংয়ের মতো টি-ফিটিংয়ের মতো (সত্যই "টি") সংযুক্ত করা হবে ডিভাইস 1 এবং ডিভাইস 2 এর টিএক্স লাইনগুলিকে 2 টি আরএক্স লাইনে সংযুক্ত করুন 2 ইউআরটি-তে নিশ্চিত হয়ে নিন যে বাড রেটগুলি সমস্ত একইভাবে কনফিগার করা আছে।

প্রচুর আরডুইনো বোর্ড / ডিজাইন রয়েছে। আজকাল সর্বাধিক প্রচলিত একটি, ডিউমিলানোভ এটিএমটিগা 328 পি ব্যবহার করে, যা আমার মনে হয় কেবল 1 টি ইউআরটি আছে (ভাল, ইউএসআরটি)। সুতরাং আপনাকে হয় ২ য় ইউআরটি আইসি ওয়্যার করতে হবে, বা দ্বিতীয় রিসিভারে "বিট বেংিং" অবলম্বন করতে হবে।

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

আরএস 232 তরঙ্গরূপের একটি শালীন বিবরণ বিওন্ডলজিক থেকে পাওয়া যাবে

মনে রাখবেন যে ভোল্টেজ স্তর (0 / + 5, -10V / + 10V ইত্যাদি) এর মতো অন্যান্য সমস্যা রয়েছে যা আপনাকে বিবেচনায় নিতে হবে ("আরএস 232 স্তর রূপান্তরকারী" এর বাইরে লজিক বিভাগটি দেখুন)। উপরে বর্ণিত "লাইনগুলি সংযুক্ত করুন" পদ্ধতির পাশাপাশি হার্ডওয়্যার ইন্টারফেসিং সম্পর্কে আলোচনার জন্য আপনার সিস্টেমে আমার কাছে পর্যাপ্ত তথ্য নেই। ভোল্টেজের মাত্রা মেলাচ্ছে বলে ধরে নেওয়া যায়, সাধারণত টিএক্স লাইনটিকে দ্বিতীয় রিসিভার (স্নিফার) হিসাবে "টি" করা কোনও সমস্যা নয়, তবে টিএক্স-এর যদি পর্যাপ্ত ড্রাইভ না থাকে, তবে আপনাকে বাধা দেওয়ার জন্য বাফার / ড্রাইভার সন্নিবেশ করতে হতে পারে অবনতি থেকে সংকেত।


সুন্দর! আমার কেবলমাত্র এক দিক দিয়ে ভ্রমণ করার ডেটা প্রয়োজন হবে যাতে এটিএমটাগা চিপে একক ইউআরটি কেবল পর্যাপ্ত! দুটি চিপ যোগাযোগ করে +/- 5V ইউআআআরটির সাথে, যা আমার কাছে এটিএমটাগা হিসাবে একই বলে মনে হয়। বাহ, এটা হওয়া উচিত! ধন্যবাদ!
ব্র্যাড হেইন

@ ব্র্যাডহেইন, আপনি যেটিকে "+/- 5V" বলছেন তা সাধারণত "টিটিএল স্তর" হিসাবে উল্লেখ করা হয় - en.wikedia.org/wiki/Logic_level দেখুন
মেল

3
@ মেলস +/- 5 ভি টিটিএল নয়, টিটিএল গ্রাউন্ডের নিচে যায় না। এটি আরএস -232।
nmz787

9

যোগাযোগগুলি একবারে এক দিকে থাকলে (যেমন অর্ধ-দ্বৈত যোগাযোগ) আপনি করতে পারেন এমন একটি ঝরঝরে কৌশল রয়েছে। উভয় পক্ষই একই সাথে একে অপরের সাথে কথা বললে এটি কার্যকর হবে না (সম্পূর্ণ দ্বৈত) তবে এটি যদি আপনার সাধারণ হয় তবে "এটি করুন" "ঠিক আছে প্রতিক্রিয়া এখানে" "এখন এটি করুন" "ঠিক আছে এখানে নতুন প্রতিক্রিয়া" যোগাযোগের ধরণ এটি বেশ ভাল কাজ করে।

যেহেতু ইউআরটি লিঙ্কটি যুক্তিযুক্ত উচ্চ (1) স্তরে ট্রান্সমিটারের নিষ্ক্রিয় শর্ত ব্যবহার করে আপনি একটি 2 ইনপুট এবং গেট ব্যবহার করবেন এবং প্রতিটি দিক থেকে টিএক্সকে একটি এবং ইনপুটটিতে সংযুক্ত করবেন। অ্যান্ড গেটের আউটপুট হ'ল আপনার স্নিফারের ইউআআআরটিতে এটি ইনপুট (এটি আরএক্স পিন)। এখন ডিভাইস বি এর টিএক্স লাইন নিন এবং এটিকে স্নিফারে আই / ও বন্দরে আনুন। এই পিনটি যখন উচ্চ থেকে নীচে যায় তখন আপনি কোনও বাধা তৈরির জন্য স্নিফারটি কনফিগার করবেন।

পুনরুদ্ধার করতে: ডিভাইসটি একটি ইউআরটি টিএক্স -> এবং গেট ইনপুট। ডিভাইস বি ইউআরটি টিএক্স -> অন্যান্য এবং গেট ইনপুট এবং স্নিফার জিপিআইও পিন। এবং গেটের আউটপুট -> স্নিফার ইউআরটি আরএক্স লাইন।

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

বাধা-অন-আইও-পরিবর্তন রুটিন যোগাযোগগুলি "বি-> এ" দিকের দিকে রয়েছে তা নির্দেশ করার জন্য একটি "দিকনির্দেশ" পরিবর্তনশীল সেট করবে। স্নিফার এর ইউআরটি বাধা প্রাপ্তি এই "দিকনির্দেশ" পরিবর্তনশীলটিকে দেখবে এবং উপযুক্ত বাফারে কেবল প্রাপ্ত-বাইটটি লিখবে। ইউআআআরটি আরএক্স বিঘ্নিত হলে "দিকনির্দেশ" পরিবর্তনশীলটি ডিফল্ট "এ-> বি" স্থিতিতে ফিরে আসবে:

volatile int direction = 0;           /* 0 = A -> B */

void io_interrupt(void)
{
    direction = 1;                    /* switch direction, now B -> A */
}

void uart_interrupt(void)
{
    unsigned char b;

    b = UART_RX_REG;
    if(direction) {
        store_byte_to_device_b_sniff_buffer(b);
    } else {
        store_byte_to_device_a_sniff_buffer(b);
    }

    direction = 0;                   /* reset direction to default A -> B */
}

এই কোডটি স্পষ্টতার জন্য এবং আপনি বাস্তব-বিশ্বের পরিস্থিতিতে কী লিখবেন তা অগত্যা নয় written ব্যক্তিগতভাবে আমি উপযুক্ত ফিফোর কাঠামোর দিকে "নির্দেশ" তৈরি করতাম তবে এটি সম্পূর্ণরূপে অন্য একটি অনুশীলন। :-)

ডিভাইস এ যখন আই / ও লাইনটি কথা বলছে তখন সরে না (ডিভাইসের বি এর ইউআরটি ট্রান্সমিটারটি নিষ্ক্রিয় হওয়ায় এটি একটি যুক্তি '1' এ রয়ে গেছে), এবং ইউআরটি আরএক্স বিঘ্নিত একটি বাইট পাবেন, দেখুন যে দিকটি A-> B , এবং সেই বাফারটিতে ডেটা সঞ্চয় করুন। ডিভাইস বি যখন কথা বলছে তখন আই / ও লাইনটি কম হয়ে যাবে যতক্ষণ না ডিভাইস বি ডেটা স্থানান্তরিত করতে শুরু করবে, এবং আই / ও বিঘ্নিত রুটিন নির্দেশ করে যে ডিভাইস বি কথা বলছে তা নির্দেশ করবে। সমস্ত বিট সংগ্রহ করার পরে অবশেষে ইউআআআরটি আরএক্স বিঘ্নিত হয়ে গুলি চালানো হবে এবং যেহেতু আমি / ও বাধা বিঘ্নিতভাবে সঠিকভাবে নির্দেশিকা রেজিস্টার স্থাপনের যত্ন নিয়েছে, প্রাপ্ত বাইটটি সঠিক বাফারে সংরক্ষণ করা হবে।

প্রেস্টো: কোনও বিট-ব্যঞ্জড ইউআআআরটি যোগাযোগ ছাড়াই স্নিফারে একটি ইউআআআআআরটি এবং আই / ও লাইন ধরে দুটি ডিভাইসগুলির মধ্যে অর্ধ-দ্বৈত যোগাযোগ।


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

স্নিফার ইউআআআরটি আরএক্স লাইনটি অ্যান্ড গেটের আউটপুটে সংযুক্ত। ডিভাইস এ এর ​​ইউআরটি টিএক্স এ্যান্ড গেটের একটি ইনপুটের সাথে সংযুক্ত এবং ডি বি এর ইউআরটি টিএক্স এ্যান্ড গেটের অন্যান্য ইনপুটটির সাথে সংযুক্ত। যেহেতু কোনও ইউআআরটির নিষ্ক্রিয় (কোনও ট্র্যাফিক নেই) শর্তটি একটি যুক্তি '1', তাই ওআ্যান্ড গেট কার্যকরভাবে উভয়ই সংক্রমণ সংকেতকে এক সাথে সংযুক্ত করে। স্নিফফারের আই / ও লাইনটি ডিভাইস বি এর স্টার্ট বিট সনাক্ত করতে ব্যবহৃত হয় যাতে এটি এটি তার ইউআআরটিতে প্রাপ্ত বাইটটি গ্রহণ করে উপযুক্ত বাফারে (ডিভাইস এ ট্র্যাফিক বা ডিভাইস বি ট্র্যাফিক) রাখতে পারে।
akohlsmith

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

5

আপনার সার্কিটে আপনাকে এভিআর'র সংক্রমণ-ডেটা পিনটি হুক করতে হবে না। আপনি যে বিদ্যমান লিঙ্কটি শুনতে চান তাতে অর্ধেকের সাথে রিসিভ লাইনটি সংযুক্ত করুন। যদি আপনার নির্দিষ্ট এভিআর দুটি সিরিয়াল পোর্ট থাকে তবে আপনি একই সাথে বিদ্যমান লিঙ্কের উভয় অংশে গুপ্তচর রাখতে সক্ষম হবেন। আপনাকে কেবল পোর্ট সেটিংসকে বিদ্যমান বাডের হারের সাথে বিট বন্ধ করতে হবে etc.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.