সুচিপত্র:

আরডুইনো ইউএনও লজিক স্নিফার: 8 টি ধাপ (ছবি সহ)
আরডুইনো ইউএনও লজিক স্নিফার: 8 টি ধাপ (ছবি সহ)

ভিডিও: আরডুইনো ইউএনও লজিক স্নিফার: 8 টি ধাপ (ছবি সহ)

ভিডিও: আরডুইনো ইউএনও লজিক স্নিফার: 8 টি ধাপ (ছবি সহ)
ভিডিও: What is Arduino? || Arduino basic tutorial Bangla || Basic introduction to Arduino || 2024, জুলাই
Anonim
আরডুইনো ইউএনও লজিক স্নিফার
আরডুইনো ইউএনও লজিক স্নিফার

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

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

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

সংক্ষেপে, আমার যুক্তি বিশ্লেষক হবে:

  • একটি চ্যানেল আছে,
  • একটি গ্রাফিকাল ইন্টারফেস আছে,
  • ইউএসবি এর মাধ্যমে ইন্টারফেসের সাথে যোগাযোগ করুন,
  • একটি Arduino UNO বোর্ডে চালান।

অবশেষে এটি একটি 800 নমুনা মেমরি গভীরতা থাকবে, এবং সফলভাবে একটি 115200 bauds UART বার্তা ক্যাপচার করতে সক্ষম হয়েছিল (আমি সত্যিই উচ্চ গতিতে এটি পরীক্ষা করে নি)।

এই নির্দেশাবলীতে এই প্রকল্পের "এটি কীভাবে কাজ করে" এবং "এটি কীভাবে ব্যবহার করা যায়" উভয় অংশ রয়েছে, তাই যারা প্রযুক্তিগত দিক থেকে আগ্রহী নয় তাদের জন্য, আপনি সরাসরি ধাপ 4 এ যেতে পারেন।

সরবরাহ

আমি বিশ্লেষককে যতটা সম্ভব সহজ রাখতে চেয়েছিলাম, তাই খুব কম হার্ডওয়্যারের প্রয়োজন।

আপনার প্রয়োজন হবে:

  • একটি Arduino UNO বোর্ড (অথবা যতক্ষণ এটি ATMEGA328P MCU- এর উপর নির্ভর করে),
  • একটি কম্পিউটার,
  • ডিবাগ করার জন্য কিছু (অন্য একটি Arduino UNO বোর্ড কিছু পরীক্ষা করার জন্য সূক্ষ্ম কাজ করে)।

Arduino UNO এবং ওয়েব ইন্টারফেস উভয়ের জন্য কোড এখানে পাওয়া যাবে। আপনার p5.serialcontrol এবং PulseView সফটওয়্যারও প্রয়োজন হবে

ধাপ 1: কাজের নীতি

কাজ নীতি
কাজ নীতি

ধারণা সহজ। আপনি ক্যাপচার সেটিংস চয়ন করুন এবং "অর্জন" এ ক্লিক করুন। ওয়েব ইন্টারফেস তাদের p5.serialcontrol সফটওয়্যারে পাঠাবে, যা আমাদের ব্রাউজার থেকে সিরিয়াল ইন্টারফেস ব্যবহার করতে দেয়, কারণ এটি সরাসরি অ্যাক্সেস করতে পারে না। P5.serialcontrol সফটওয়্যারটি তারপর Arduino UNO বোর্ডের কাছে তথ্য পাঠায়, যা ডেটা ক্যাপচার করে এবং সেই একই পথ দিয়ে ইন্টারফেসে ফেরত পাঠায়।

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

Arduino UNO- এর ইনপুট ক্যাপচার ইউনিট বিভিন্ন ক্লক ডিভিশন ব্যবহার করার জন্য কনফিগার করা যেতে পারে, এইভাবে রেজোলিউশন হ্রাস করে, কিন্তু ওভারফ্লো হওয়ার আগে বিলম্ব বৃদ্ধি করে। এটি ডেটা ক্যাপচার শুরু করার জন্য ক্রমবর্ধমান, পতন বা উভয় প্রান্তে ট্রিগার করতে পারে।

ধাপ 2: আরডুইনো ইউএনও স্কেচ

আরডুইনো ইউএনও স্কেচ
আরডুইনো ইউএনও স্কেচ

আমি Arduino IDE দিয়ে স্কেচ লিখেছি এবং কম্পাইল করেছি। আমি প্রথমে টাইমার 1 কে "নরমাল" অপারেশন মোডে সেটআপ করে শুরু করেছিলাম এর TCCR1A এবং TCCR1B রেজিস্টারে সেটআপ () এ লিখে। আমি ভবিষ্যতে এর ব্যবহার কিছুটা সহজ করার জন্য কিছু ফাংশন করেছি, যেমন "setTim1PSC ()" নামে ঘড়ি বিভাগ সেট করার জন্য। আমি টাইমার 1 ইনপুট ক্যাপচার ইউনিট সক্রিয় এবং নিষ্ক্রিয় করার জন্য ফাংশনও লিখেছি এবং ওভারফ্লো বাধা।

আমি "নমুনা" অ্যারে যোগ করেছি, যা অর্জিত ডেটা ধরে রাখবে। এটি একটি বিশ্বব্যাপী অ্যারে যা আমি কম্পাইলারকে অপ্টিমাইজেশান করতে এবং এটিকে ফ্ল্যাশে রাখতে বাধা দেওয়ার জন্য "অস্থির" সেট করেছি, যেমনটি আমার প্রথম সংকলনের সময় করছিল। আমি এটিকে "uint16_t" অ্যারে হিসাবে সংজ্ঞায়িত করেছি, যেহেতু টাইমার 1 16 বিট, যার দৈর্ঘ্য 810। আমরা 800 মান ধরে রাখা বন্ধ করি, কিন্তু সুস্পষ্ট গতির কারণে পরীক্ষাটি বিরতির বাইরে করা হয়, তাই আমি 10 টি রাখা বেছে নিলাম ওভারফ্লো রোধ করার জন্য আরো মান। বাকি কোডের জন্য কিছু অতিরিক্ত ভেরিয়েবলের সাথে, স্কেচটি 1313 বাইট (88%) মেমরি ব্যবহার করছে, যা আমাদের 235 বাইট ফ্রি র.্যাম দিয়ে রেখেছে। আমরা ইতিমধ্যে একটি উচ্চ মেমরি ব্যবহারে আছি, এবং আমি আরো নমুনা ক্ষমতা যোগ করতে চাইনি, কারণ এটি খুব কম মেমরি স্পেসের কারণে অদ্ভুত আচরণের কারণ হতে পারে।

সর্বদা এক্সিকিউশন স্পিড বাড়ানোর আমার অনুসন্ধানে, আমি যদি ইন্টারপুটগুলির ভিতরে স্টেটমেন্টের পরিবর্তে ফাংশন পয়েন্টার ব্যবহার করি, যাতে তাদের এক্সিকিউশনের সময় কমপক্ষে কমে যায়। ক্যাপচার পিন সর্বদা Arduino UNO নম্বর 8 হবে, কারণ এটি টাইমার 1 এর ইনপুট ক্যাপচার ইউনিটের সাথে সংযুক্ত একমাত্র।

ক্যাপচার প্রক্রিয়া উপরের ছবিতে দেখানো হয়েছে। এটি শুরু হয় যখন Arduino UNO একটি বৈধ UART ডেটা ফ্রেম পায়, যার মধ্যে পছন্দসই ক্যাপচার সেটিংস থাকে। তারপরে আমরা নির্বাচিত প্রান্তে ক্যাপচার করার জন্য সঠিক রেজিস্টারগুলি কনফিগার করে সেটিংগুলি প্রক্রিয়া করি এবং ডান ঘড়ি বিভাগ ব্যবহার করি। আমরা প্রথম সিগন্যাল প্রান্ত সনাক্ত করতে PCINT0 (পিন পরিবর্তন) বাধা সক্ষম করি। যখন আমরা এটি পাই, আমরা টাইমার 1 মান পুনরায় সেট করি, PCINT0 বিঘ্ন অক্ষম করি এবং ICU (ইনপুট ক্যাপচার ইউনিট) বাধা সক্ষম করি। সেই মুহুর্ত থেকে, সিগন্যালে যেকোনো পতন/উঠার প্রান্ত (নির্বাচিত কনফিগারেশনের উপর নির্ভর করে), ইনপুট ক্যাপচার ইউনিটকে ট্রিগার করবে, এইভাবে ICR1 রেজিস্টারে এই ইভেন্টের টাইমস্ট্যাম্প সংরক্ষণ করবে এবং একটি বাধা কার্যকর করবে। এই বিরতিতে আমরা আমাদের "নমুনা" অ্যারেতে ICR1 রেজিস্টার মান রাখি, এবং পরবর্তী ক্যাপচারের জন্য সূচক বৃদ্ধি করি। যখন টাইমার 1 বা অ্যারে ওভারফ্লো হয়ে যায়, আমরা ক্যাপচার ইন্টারাপ্ট অক্ষম করি এবং UART এর মাধ্যমে ডেটা আবার ওয়েব ইন্টারফেসে পাঠাই।

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

সুতরাং, আপনি যেমন লক্ষ্য করেছেন, আমরা নির্দিষ্ট সময়ের ব্যবধানে প্রতিটি নমুনা সত্যিই ক্যাপচার করি না, কিন্তু আমরা সেই মুহূর্তটি ক্যাপচার করি যেখানে একটি সংকেত স্থানান্তর ঘটে। যদি আমরা প্রতিটি ঘড়ির চক্রে একটি নমুনা ধরতাম, এমনকি সর্বোচ্চ ঘড়ি বিভাজন সহ, আমরা বাফারটি প্রায় 0.1 সেকেন্ডে পূরণ করতাম, ধরে নেব যে আমরা uint8_t টাইপ ব্যবহার করছি, যা স্ট্রাক্ট ব্যবহার না করে স্মৃতিতে সবচেয়ে ছোট।

ধাপ 3: ওয়েব ইন্টারফেস এবং P5.js

ওয়েব ইন্টারফেস এবং P5.js
ওয়েব ইন্টারফেস এবং P5.js

শিরোনাম অনুসারে, ওয়েব ইন্টারফেসটি p5.js এর সাহায্যে তৈরি করা হয়েছিল। যারা ইতিমধ্যে এটি জানেন না তাদের জন্য, আমি আপনাকে ওয়েবসাইটটি পরীক্ষা করে দেখার পরামর্শ দিচ্ছি, কারণ এটি সত্যিই একটি ভাল লাইব্রেরি। এটি প্রক্রিয়াজাতকরণের উপর ভিত্তি করে, ব্যবহার করা সহজ, আপনাকে খুব দ্রুত ভাল ফলাফল পেতে দেয় এবং ভালভাবে নথিভুক্ত করা হয়। এই সমস্ত কারণে আমি এই লাইব্রেরিটি বেছে নিয়েছি। আমি মেনুগুলির জন্য quicksettings.js লাইব্রেরি, grafica.js এক আমার ডেটা চক্রান্ত, এবং p5.serialport লাইব্রেরি Arduino UNO- এর সাথে যোগাযোগ করার জন্য ব্যবহার করেছি।

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

ধাপ 4: সিস্টেম সেটআপ

প্রথম জিনিসটি যদি Arduino UNO এবং ইন্টারফেস কোডটি ইতিমধ্যে সম্পন্ন না করা হয় তবে এখানে ডাউনলোড করা। তারপর আপনি Arduino IDE এর মাধ্যমে "UNO_LS.ino" স্কেচ দিয়ে আপনার Arduino UNO বোর্ডকে পুনরায় প্রোগ্রাম করতে পারেন।

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

"ইন্টারফেস" ফোল্ডারটি খুলুন। আপনি "index.html" নামে একটি ফাইল খুঁজে বের করুন। আপনার ব্রাউজারে এটি খুলুন, এটি ওয়েব ইন্টারফেস।

এবং এটাই! আপনার অতিরিক্ত লাইব্রেরি ডাউনলোড করার দরকার নেই, আমার দেওয়া প্যাকেজে সবকিছু অন্তর্ভুক্ত করা উচিত।

ধাপ 5: সংযোগ, কনফিগারেশন এবং অধিগ্রহণ

সংযোগ, কনফিগারেশন এবং অধিগ্রহণ
সংযোগ, কনফিগারেশন এবং অধিগ্রহণ

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

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

দ্বিতীয় সেটিং হল ঘড়ি বিভাগ। এটি আপনাকে রেজোলিউশন দেবে যেখানে আপনি সিগন্যাল ক্যাপচার করতে পারবেন। আপনি "8", "64", "256" এবং "1024" দ্বারা ডিভিশন ফ্যাক্টর সেট করতে বেছে নিতে পারেন। আরডুইনো ইউএনও বোর্ড মাইক্রোকন্ট্রোলার ঘড়িতে 16MHz কোয়ার্টজ ব্যবহার করে, তাই নমুনার ফ্রিকোয়েন্সি হবে "16MHz/বিভাগ ফ্যাক্টর"। এই সেটিং সম্পর্কে সতর্ক থাকুন, কারণ এটি কতক্ষণ আপনি একটি সংকেত ক্যাপচার করতে পারবেন তাও নির্ধারণ করে। যেহেতু টাইমার 1 একটি 16 বিট টাইমার, তাই ওভারফ্লোর আগে অনুমোদিত ক্যাপচার সময় হবে "(2^16)*(ডিভিশন ফ্যাক্টর)/16 মেগাহার্টজ"। আপনি যে সেটিংটি বেছে নিয়েছেন তার উপর নির্ভর করে, এটি ms 33ms এবং 4.2s এর মধ্যে থাকবে। আপনার পছন্দটি আপনার মনে রাখুন, আপনার পরে এটি প্রয়োজন হবে।

শেষ সেটিং হল নয়েজ ক্যান্সার। আমি এটিতে অনেক পরীক্ষা -নিরীক্ষা করিনি, এবং 99% ক্ষেত্রে আপনার এটির প্রয়োজন হবে না, তাই এটিকে অনির্বাচিত রেখে দিন। যারা এখনও এটি সম্পর্কে কৌতূহলী তাদের জন্য, আপনি ATMEGA328P এর ডেটশীটের টাইমার/কাউন্টার 1 বিভাগে নয়েজ ক্যান্সার অনুসন্ধান করতে পারেন।

Arduino UNO বোর্ডের পিন 8 কে আপনার সিগন্যালে সংযুক্ত করতে ভুলবেন না, এবং টেস্টিং সার্কিট এবং লজিক অ্যানালাইজার উভয়ের জন্য একই ভোল্টেজ রেফারেন্সের জন্য মাঠগুলিকে একত্রিত করুন। যদি আপনার গ্রাউন্ড আইসোলেশনের প্রয়োজন হয়, অথবা 5V থেকে ভিন্ন মাত্রার সংকেত পরিমাপ করার প্রয়োজন হয়, তাহলে সম্ভবত আপনার সার্কিটে একটি অপটো-আইসোলেটর যুক্ত করতে হবে।

সবকিছু সঠিকভাবে কনফিগার হয়ে গেলে, আপনি "অর্জন" বোতাম টিপতে পারেন।

ধাপ 6: ফলাফল এবং CSV ডেটা রপ্তানি ক্যাপচার করুন

ফলাফল ক্যাপচার করুন এবং CSV ডেটা রপ্তানি করুন
ফলাফল ক্যাপচার করুন এবং CSV ডেটা রপ্তানি করুন

একবার আপনার Arduino UNO একটি ক্যাপচার শেষ করলে, এটি স্বয়ংক্রিয়ভাবে ওয়েব ইন্টারফেসে ডেটা ফেরত পাঠাবে, যা তাদের চক্রান্ত করবে। আপনি ডান স্লাইডার দিয়ে জুম ইন বা আউট করতে পারেন, এবং নিচের নমুনা দিয়ে নমুনাগুলি দিয়ে ভ্রমণ করতে পারেন।

প্লট শুধুমাত্র আপনাকে একটি প্রিভিউ দেয়, এবং কোন ডেটা বিশ্লেষণ সরঞ্জাম নেই। সুতরাং, আপনার ডেটা সম্পর্কে আরও বিশ্লেষণ করার জন্য, আপনাকে এটি পালসভিউতে আমদানি করতে হবে।

প্রথম ধাপ হল আপনার সমস্ত ডেটা সম্বলিত একটি csv ফাইল রপ্তানি করা। এটি করার জন্য, আপনাকে কেবল ওয়েব ইন্টারফেস থেকে "রপ্তানি" বোতামে ক্লিক করতে হবে। অনুরোধ করা হলে আপনার ফাইলটি একটি পরিচিত স্থানে সংরক্ষণ করুন।

এখন পালসভিউ খুলুন। উপরের মেনু বারে, "ওপেন" (ফোল্ডার আইকন) -এ ক্লিক করুন এবং "কমা-বিভক্ত মানগুলি আমদানি করুন …" নির্বাচন করুন। আপনার ডেটা ধারণকারী পূর্বে উৎপন্ন csv ফাইল নির্বাচন করুন।

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

ধাপ 7: পালসভিউ সিগন্যাল বিশ্লেষণ

পালসভিউ সিগন্যাল বিশ্লেষণ
পালসভিউ সিগন্যাল বিশ্লেষণ

পালসভিউতে প্রচুর প্রোটোকল ডিকোডার রয়েছে। তাদের অ্যাক্সেস করতে, উপরের মেনু বারে "অ্যাড প্রোটোকল ডিকোডার" এ ক্লিক করুন (সবচেয়ে সঠিক টুল)। আমার পরীক্ষার জন্য, আমি শুধু একটি সাধারণ UART বার্তা পাঠিয়েছি 9600 বডিতে, তাই আমি "UART" অনুসন্ধান করেছি।

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

ধাপ 8: উপসংহার

উপসংহার
উপসংহার

এমনকি যদি প্রকল্পটি শুরুতে, একটি পরীক্ষা ছিল, আমি যে ফলাফল পেয়েছি তাতে আমি খুশি। আমি কোন সমস্যা ছাড়াই "উভয়" প্রান্ত মোডে 115200 বড পর্যন্ত UART সংকেতগুলি নমুনা করতে সক্ষম হয়েছিলাম এবং এমনকি "ফলিং" এজ মোডে 230400 বড পর্যন্ত যেতে পেরেছিলাম। আপনি উপরের ছবিতে আমার পরীক্ষার সেটআপ দেখতে পারেন।

আমার বাস্তবায়নে বেশ কয়েকটি ত্রুটি রয়েছে, এটি শুরু করে যে এটি একবারে কেবল একটি সংকেত ক্যাপচার করতে পারে, যেহেতু কেবল আরডুইনো ইউএনও এর পিন 8 "ইনপুট ক্যাপচার সক্ষম"। আপনি যদি আরো চ্যানেলের সাথে একটি Arduino লজিক বিশ্লেষক খুঁজছেন, তাহলে Catoblepas 'দেখুন।

আপনি একটি Arduino UNO উচ্চ ফ্রিকোয়েন্সি (কিছু MHz) সঙ্গে সংকেত ক্যাপচার করতে সক্ষম হবে আশা করতে পারেন না, কারণ এটি শুধুমাত্র 16MHz এ ক্লক করা হয় (যদি কেউ এটি করে, আমি তার পদ্ধতি দেখতে আগ্রহী)। যাইহোক, আমি এখনও এই ATMEGA328P মাইক্রোকন্ট্রোলার থেকে বেরিয়ে আসার ফলাফল দেখে মুগ্ধ।

আমি মনে করি না যে আমি কোডে অনেক কাজ করব। আমি আমার পরীক্ষা -নিরীক্ষা করেছি, এবং যে ফলাফলগুলি আমি খুঁজছিলাম তা পেয়েছি। কিন্তু যদি কেউ অবদান রাখতে চায়, আমার কোডের সমস্ত বা কিছু অংশ সংশোধন এবং পুনistবন্টন করতে দ্বিধাবোধ করবেন না।

এটি আমার প্রথম নির্দেশযোগ্য ছিল, এবং আমি মনে করি একটি দীর্ঘ। আমি আশা করি এটি আপনার জন্য একটি আকর্ষণীয় পড়া হয়েছে।

যদি আপনি ত্রুটি খুঁজে পান, অথবা আপনার কোন প্রশ্ন থাকলে আমাকে জানান!

প্রস্তাবিত: