সুচিপত্র:

বাইনারি ট্রি মোর্স ডিকোডার: 7 টি ধাপ (ছবি সহ)
বাইনারি ট্রি মোর্স ডিকোডার: 7 টি ধাপ (ছবি সহ)

ভিডিও: বাইনারি ট্রি মোর্স ডিকোডার: 7 টি ধাপ (ছবি সহ)

ভিডিও: বাইনারি ট্রি মোর্স ডিকোডার: 7 টি ধাপ (ছবি সহ)
ভিডিও: Compression codes | Journey into information theory | Computer Science | Khan Academy 2024, নভেম্বর
Anonim
Image
Image
বর্তনী চিত্র
বর্তনী চিত্র

এই নির্দেশযোগ্য ব্যাখ্যা করে কিভাবে একটি Arduino Uno R3 ব্যবহার করে মোর্স কোড ডিকোড করতে হয়।

ডিকোডার, যা স্বয়ংক্রিয়ভাবে প্রেরণের গতিতে সামঞ্জস্য করে, প্রতি মিনিটে কমপক্ষে 80 শব্দ পর্যন্ত মোর্স ডিকোড করতে সক্ষম।

ইনকামিং কোডটি আপনার Arduino সিরিয়াল মনিটরে টেক্সট হিসেবে প্রদর্শিত হবে (বা লাগানো হলে TFT স্ক্রিন)

যদি আপনি মোর্স পাঠানোর অভ্যাস করতে চান তবে একটি স্বন দোলক অন্তর্ভুক্ত করা হয়েছে।

ডিকোডার বৈশিষ্ট্য:

  • একটি 320 x 240 TFT ডিসপ্লে মডিউল [1]
  • অবাঞ্ছিত সংকেত আলাদা করার জন্য একটি Goertzel ডিজিটাল ব্যান্ডপাস ফিল্টার।
  • সিগন্যাল ডিকোড করার জন্য একটি "বাইনারি মর্স ট্রি"
  • অটো-স্পিড ট্র্যাকিং
  • মোর্স অনুশীলন করার সময় একটি শ্রবণযোগ্য আউটপুট
  • উভয় ইনকামিং এবং আউটগোয়িং টেক্সট প্রদর্শিত হয়।

নিম্নলিখিত অক্ষর এবং চিহ্নগুলি স্বীকৃত:

  • [A.. Z]
  • [0..9]
  • [., ? ' ! / () &:; = + - _ " @]

মোর্স ডিকোডার ieldালের আনুমানিক খরচ, কম TFT ডিসপ্লে, $ 25। [1]

ছবি

  • কভার ফটো একটি সম্পূর্ণ একত্রিত ইউনিট দেখায়
  • ভিডিওতে দেখা যাচ্ছে ডিকোডার কাজ করছে

মন্তব্য

[1]

  • TFT ডিসপ্লে মডিউলটি alচ্ছিক কারণ সব লেখা আপনার Arduino “সিরিয়াল মনিটর” এ পাঠানো হয়।
  • TFT মডিউল আমার নির্দেশযোগ্য

ধাপ 1: অংশ তালিকা

নিম্নলিখিত অংশগুলি https://www.aliexpress.com/ থেকে প্রাপ্ত হয়েছিল

আরডুইনো ইউএনও আর 3, 2.54 মিমি পিচের জন্য শুধুমাত্র 1 টি প্রোটোটাইপ shাল

নিম্নলিখিত অংশগুলি স্থানীয়ভাবে প্রাপ্ত হয়েছিল:

  • 1 শুধুমাত্র LM358 দ্বৈত opamp
  • 1 শুধুমাত্র LED সবুজ
  • 1 শুধুমাত্র LED ক্লিপ
  • 1 শুধুমাত্র ইলেক্ট্রেট মাইক্রোফোন ক্যাপসুল
  • 1 শুধুমাত্র স্বাভাবিকভাবে খোলা পুশ-বোতাম
  • 1 শুধুমাত্র 8-পিন ডিআইপি সকেট
  • 2 শুধুমাত্র 330 ওহম প্রতিরোধক
  • 2 শুধুমাত্র 2K2 প্রতিরোধক
  • 5 শুধুমাত্র 10K ওহম প্রতিরোধক
  • 2 শুধুমাত্র 56K ওহম প্রতিরোধক
  • 2 শুধুমাত্র 1uF ক্যাপাসিটর
  • 1 শুধুমাত্র 10uF ক্যাপাসিটর

নিম্নলিখিত অংশগুলি alচ্ছিক:

  • 1 শুধুমাত্র 2.2 ইঞ্চি TFT SPI LCD ডিসপ্লে মডিউল 240*320 ILI9341 Arduino Raspberry Pi 51/AVR/STM32/ARM/PIC এর জন্য SD কার্ড স্লট সহ [1]
  • মোর্স কী / পুশ-বোতাম
  • 1 শুধুমাত্র BC548 NPN ট্রানজিস্টর
  • 1 মাত্র 1 ইঞ্চি স্পিকার
  • 1 শুধুমাত্র 33K ওহম প্রতিরোধক
  • 1 শুধুমাত্র 3.5mm মনো প্লাগ (মোর্স কী জন্য)
  • 1 শুধুমাত্র 3.5 মিমি মনো সকেট (মোর্স কী জন্য)
  • 3 শুধুমাত্র 9mm M3 নাইলন spacers ট্যাপ
  • 1 মাত্র 130 x 68 x 44mm ABS প্লাস্টিকের বাক্স
  • 5 শুধুমাত্র 2-পিন ডান-কোণ সংযোগকারী

মোর্স ডিকোডার ieldালের আনুমানিক খরচ, theচ্ছিক TFT ডিসপ্লে কম, $ 25। [1]

মন্তব্য

[1]

Alচ্ছিক 320 x 240 TFT ডিসপ্লে মডিউলের জন্য অংশ তালিকা আমার নির্দেশযোগ্য

[2]

আপনি যদি প্রেরককে ব্যবহার করতে চান তবে একটি মোর্স কী বা শক্ত পুশ-বোতাম প্রয়োজন।

ধাপ 2: সার্কিট ডায়াগ্রাম

বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র
বর্তনী চিত্র

ছবি

ছবি 1 মোর্স ডিকোডারের সার্কিট ডায়াগ্রাম দেখায়। মোর্স কী সহ সিরিজে 330 ওহম রেসিস্টর একটি দুর্ঘটনাক্রমে ছোট থেকে মাটিতে যাওয়ার ক্ষেত্রে D4 আউটপুট কারেন্টকে সীমাবদ্ধ করে … এর মান বাড়লে স্পিকার থেকে অডিও আউটপুট হ্রাস পায়। এই কারণে আমি এটিকে ieldালটিতে যুক্ত করিনি কিন্তু সামঞ্জস্যের সুবিধার জন্য এটি সরাসরি মোর্স-কী জ্যাকের সাথে সংযুক্ত করেছি।

ছবি 2 একটি মিলে যাওয়া ieldাল দেখায়। Shালটি আমার নির্দেশযোগ্য https://www.instructables.com/id/Arduino-TFT-Grap… থেকে আছে যেখানে আমি মাইক্রোফোন এম্প্লিফায়ার এবং টোন অসিলেটর যুক্ত করেছি। [1]

ছবি 3 একটি Arduino সংযুক্ত সম্পূর্ণ ieldাল দেখায়। আপনার আরডুইনো “সিরিয়াল মনিটর” -এ লেখাটি দেখতে হলে অন্য কোনো উপাদান প্রয়োজন হয় না।

ছবি 4 দেখায় ডিকোডার আংশিকভাবে বক্সযুক্ত। ডিসপ্লে দেখার জন্য idাকনায় একটি গর্ত কাটা হয়েছে। স্পিকার এবং মাইক্রোফোন কেসটিতে গরম আঠালো করা হয়েছে। স্পিকার মাউন্ট করার আগে speakerাকনাতে কিছু স্পিকার-গর্ত ড্রিল করুন। Lাকনার কেন্দ্র সকেটটি একটি এক্সটেনশন মাইক্রোফোনের জন্য … এটি ছাড়া ডিকোডারটি স্পিকারের কাছাকাছি রাখতে হবে যা সবসময় সম্ভব নয়।

ছবি 5 টিএফটি স্ক্রিন দেখায়। ডিসপ্লে প্রান্তে কালো বৈদ্যুতিক টেপ সংযুক্ত করা হয়েছে … এই টেপ হালকা ফুটো রোধ করে এবং ডিসপ্লে এবং idাকনার মধ্যে খোলার মধ্যে যে কোন অসঙ্গতি লুকিয়ে রাখে।

গুরুত্বপূর্ণ

[1]

একটি বড় ইউএসবি সংযোগকারী সহ আরডুইনোসের জন্য ইউএসবি সংযোগকারী এবং আরডুইনো ieldালের মধ্যে বৈদ্যুতিক টেপের একটি স্তর প্রয়োজন। ছাড়পত্র ছোট হওয়ায় টেপ ছাড়া দুর্ঘটনাজনিত শর্টস সম্ভব। Arduinos যে ছোট সংযোজক আছে জন্য টেপ প্রয়োজন হয় না।

ধাপ 3: তত্ত্ব

তত্ত্ব
তত্ত্ব
তত্ত্ব
তত্ত্ব
তত্ত্ব
তত্ত্ব

প্রতিটি মোর্স কোড লেটারে "বিন্দু" এবং "ড্যাশ" নামে স্বল্প এবং দীর্ঘ সময়কালের টোনগুলির একটি সিরিজ থাকে।

  • একটি বিন্দু (।) দৈর্ঘ্যে 1 ইউনিট
  • একটি ড্যাশ (_) দৈর্ঘ্যে 3 ইউনিট
  • অক্ষর উপাদানগুলির মধ্যে স্থান 1 ইউনিট
  • অক্ষরের মধ্যে স্থান 3 ইউনিট
  • শব্দের মধ্যে স্থান 7 ইউনিট

ইনকামিং টোনটি বিন্দু বা ড্যাশ কিনা তা নির্ণয় করতে পারি তার দৈর্ঘ্যকে 2 ইউনিটের রেফারেন্স টোনের সাথে তুলনা করে।

  • একটি বিন্দু 2 ইউনিটের কম
  • একটি ড্যাশ 2 ইউনিটের চেয়ে বড়

বিন্দু এবং ড্যাশের ইনকামিং প্যাটার্ন ডিকোড করার জন্য দুটি আলাদা আলাদা পদ্ধতি রয়েছে:

  • রৈখিক অনুসন্ধান
  • বাইনারি ট্রি (ডাইকোটমিক সার্চ নামেও পরিচিত)

রৈখিক অনুসন্ধান

একটি সাধারণ পদ্ধতি হল অক্ষরের একটি অ্যারে এবং তাদের মিলিত মোর্স প্যাটার্ন তৈরি করা। উদাহরণস্বরূপ নিচের প্রতিটি অক্ষর সংরক্ষণ করা হবে:

  • ক। _
  • বি _। । ।
  • সি _। _।
  • 0 _ _ _ _ _
  • 1. _ _ _ _
  • 2.. _ _ _

প্রতিটি অক্ষরে 6 টি কোষের প্রয়োজন… 1 অক্ষরের জন্য নিজেই এবং 5 ((।)’গুলি এবং (_)’ গুলির জন্য। এটি করার জন্য আমাদের মোট 216 টি কোষ সহ একটি অক্ষর [36] [6] অক্ষর অ্যারের প্রয়োজন। অব্যবহৃত কোষগুলি সাধারণত শূন্য বা ফাঁকা দিয়ে ভরা হয়।

ইনকামিং ডটস এবং ড্যাশ ডিকোড করার জন্য আমাদের অবশ্যই প্রতিটি ইনকামিং লেটারের ডট/ড্যাশ প্যাটার্নকে আমাদের রেফারেন্স ক্যারেক্টার প্যাটার্নের সাথে তুলনা করতে হবে।

যদিও এই পদ্ধতি কাজ করে, এটি অত্যন্ত ধীর।

বলুন আমাদের কাছে 26 টি অক্ষর ('A',.. 'Z') এবং অঙ্কগুলি ('0', … '9') একটি অ্যারেতে সংরক্ষিত আছে, তারপর আমাদের অবশ্যই 36 টি অনুসন্ধান করতে হবে, প্রত্যেকটি 5 টি উপ-অনুসন্ধান সহ, যা মোট**৫ = ১ sear০ টি সার্চ করে অংক '9' ডিকোড করে।

বাইনারি গাছ

কোনও অনুসন্ধানের প্রয়োজন না হওয়ায় একটি বাইনারি অনুসন্ধান অনেক দ্রুত।

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

আমি আমার বাইনারি ট্রি (ফটো 1) কে দুই ভাগে ভাগ করেছি (ফটো 2 এবং 3) এটি আরও পাঠযোগ্য করার জন্য।

একটি অক্ষর খুঁজে বের করার জন্য আমরা প্রতিবার একটি বিন্দু শুনলে একটি পয়েন্টার বাম দিকে সরাই এবং প্রতিবার যখন আমরা একটি ড্যাশ শুনি তখন পয়েন্টারটি সরান। প্রতিটি পদক্ষেপের পর আমরা পরবর্তী পদক্ষেপের জন্য পয়েন্টার দূরত্ব অর্ধেক করে ফেলেছি … অতএব নাম বাইনারি ট্রি।

'9' অক্ষরটি ডিকোড করতে (ড্যাশ, ড্যাশ, ড্যাশ, ড্যাশ, ডট) 5 টি পদক্ষেপের প্রয়োজন … 4 ডানদিকে, এবং 1 বাম দিকে যা পয়েন্টারকে সরাসরি '9' এর উপরে ছেড়ে দেয়।

180 টি অনুসন্ধানের চেয়ে পাঁচটি চাল উল্লেখযোগ্যভাবে দ্রুত !!!!!

বাইনারি অক্ষর অ্যারে এছাড়াও ছোট… 26 অক্ষর এবং 10 সংখ্যা শুধুমাত্র একটি 64 x 1 লাইন অ্যারের প্রয়োজন। আমি একটি 128 অক্ষর অ্যারে তৈরি করতে বেছে নিয়েছি যাতে আমি বিরামচিহ্নগুলি ডিকোড করতে পারি।

ধাপ 4: নকশা নোট

নকশা নোট
নকশা নোট
নকশা নোট
নকশা নোট
নকশা নোট
নকশা নোট
নকশা নোট
নকশা নোট

হস্তক্ষেপকারী সংকেতের উপস্থিতিতে মোর্স ডিকোড করা কঠিন। অবাঞ্ছিত সংকেত প্রত্যাখ্যান করতে হবে … এর জন্য এক ধরণের ফিল্টার প্রয়োজন।

অনেক সম্ভাবনা আছে:

  1. ফেজ-লক করা লুপ
  2. ইন্ডাক্টর-ক্যাপাসিটর ফিল্টার
  3. প্রতিরোধক-ক্যাপাসিটরের সক্রিয় ফিল্টার
  4. ডিজিটাল সিগন্যাল প্রসেসিং যেমন ফাস্ট ফুরিয়ার ট্রান্সফর্ম, বা গোয়ার্টজেল ফিল্টার।

পদ্ধতি 1, 2, 3 এর জন্য বহিরাগত উপাদানগুলির প্রয়োজন যা ভারী।

পদ্ধতি 4 এর কোন বাহ্যিক উপাদান প্রয়োজন নেই … গাণিতিক অ্যালগরিদম ব্যবহার করে ফ্রিকোয়েন্সি সনাক্ত করা হয়।

ফাস্ট ফুরিয়ার ট্রান্সফর্ম (এফএফটি)

একটি জটিল তরঙ্গরূপে স্বরের উপস্থিতি সনাক্ত করার একটি পদ্ধতি হল ফাস্ট ফুরিয়ার ট্রান্সফর্ম ব্যবহার করা

ফটো 1 দেখায় কিভাবে এফএফটি (ফাস্ট ফুরিয়ার ট্রান্সফর্ম) অডিও বর্ণালীকে "বিন" এ বিভক্ত করে।

ছবি 2 দেখায় কিভাবে FFT "bins" একটি সিগন্যালে সাড়া দেয় … এই ক্ষেত্রে 800Hz। 1500Hz বলার দ্বিতীয় সংকেত উপস্থিত থাকলে আমরা দুটি প্রতিক্রিয়া দেখতে পাবো … একটি 800Hz এ এবং অন্যটি 1500Hz এ।

তত্ত্ব অনুসারে একটি নির্দিষ্ট FFT ফ্রিকোয়েন্সি বিনের আউটপুট স্তর পর্যবেক্ষণ করে একটি মোর্স কোড ডিকোডার তৈরি করা যেতে পারে … একটি বড় সংখ্যা একটি বিন্দু বা ড্যাশের উপস্থিতি প্রতিনিধিত্ব করে … একটি ছোট সংখ্যা কোন সংকেতকে উপস্থাপন করে না।

এই ধরনের একটি মোর্স কোড ডিকোডার ফটো 2 এ "বিন 6" পর্যবেক্ষণ করে তৈরি করা যেতে পারে কিন্তু এই পদ্ধতির সাথে অনেকগুলি ভুল রয়েছে:

  • আমরা শুধু একটি ফ্রিকোয়েন্সি বিন চাই… বাকিগুলো নষ্ট হিসাব
  • ফ্রিকোয়েন্সি বিনগুলি আগ্রহের ফ্রিকোয়েন্সিতে ঠিকভাবে উপস্থিত নাও হতে পারে
  • এটি তুলনামূলকভাবে ধীর (20mS প্রতি Arduino লুপ ()

আরেকটি পদ্ধতি হল Goertzel ফিল্টার ব্যবহার করা।

Goertzel ফিল্টার

Goertzel ফিল্টার FFT এর অনুরূপ কিন্তু শুধুমাত্র একটি ফ্রিকোয়েন্সি বিন আছে।

ফটো 3 একটি গোয়ার্টজেল ফিল্টারের ফ্রিকোয়েন্সি প্রতিক্রিয়া দেখায় যাতে অডিও ধাপগুলি আলাদা হয়।

ফটো 4 হল একই ফ্রিকোয়েন্সি পরিসরের উপর একই ফিল্টারের ঝাড়ু।

আমি Goertzel অ্যালগরিদমের সাথে "যাওয়ার" সিদ্ধান্ত নিয়েছি:

  • Arduino "fix_FFT" লাইব্রেরি ব্যবহার করে একটি FFT সমাধানের জন্য Goertzel অ্যালগরিদম ব্যবহার করে Arduino লুপ () সময় ছিল 14mS (মিলিসেকেন্ড) বনাম 20mS (মিলিসেকেন্ড)।
  • Goertzel bandpass ফিল্টারের সেন্টার ফ্রিকোয়েন্সি সেট করা সহজ।
  • ব্যান্ডউইথ প্রায় 190Hz।

ছবি 5 একটি 900Hz Goertzel ফিল্টার থেকে সংখ্যাসূচক আউটপুট দেখায় যখন একটি স্বন সনাক্ত করা হয়। আমি আমার স্বরের থ্রেশহোল্ড 4000 এর মান নির্ধারণ করেছি … 4000 এর উপরে মানগুলি একটি স্বর নির্দেশ করে।

তত্ত্ব অনুসারে আপনার ফিল্টারটিকে আরামদায়ক শোনার ফ্রিকোয়েন্সি অনুযায়ী টিউন করতে হবে। দুর্ভাগ্যবশত আমার 1 ইঞ্চি মনিটরিং স্পিকার থেকে অডিও আউটপুট দ্রুত 900Hz এর নিচে নেমে যায়। কোনও সমস্যা এড়াতে আমি 950Hz এর ফিল্টার ফ্রিকোয়েন্সি ব্যবহার করছি। বিকল্প ফিল্টার ফ্রিকোয়েন্সি গণনার জন্য প্রয়োজনীয় সূত্রগুলি আমার কোড হেডারে পাওয়া যায়।

ডিকোডিং

বিন্দু এবং ড্যাশগুলি ডিকোড করা যতটা প্রথম দেখায় তত সহজ নয়।

নিখুঁত মোর্স সংজ্ঞায়িত করা হয়েছে:

  • ডট = 1 ইউনিট
  • অক্ষরের ভিতরে ফাঁকা স্থান = 1 ইউনিট
  • ড্যাশ = 3 ইউনিট
  • অক্ষরের মধ্যে স্থান = 3 ইউনিট
  • শব্দের মধ্যে স্থান = 7 ইউনিট

নিখুঁত মোর্স ডিকোড করার জন্য আমাদের কেবল 2 ইউনিটের একটি রেফারেন্স টোন সময়কাল প্রয়োজন

  • ডট <2 ইউনিট
  • এলিমেন্ট স্পেস <2 ইউনিট
  • ড্যাশ> 2 ইউনিট
  • অক্ষর _ স্পেস> 2 ইউনিট
  • word_space> 6 ইউনিট (যেমন 3 x রেফারেন্স ইউনিট)

এটি মেশিন মোর্সের জন্য কাজ করে কিন্তু "বাস্তব জগতে":

  • পাঠানোর গতি পরিবর্তিত হয়
  • প্রতিটি বিন্দুর সময়কাল পরিবর্তিত হয়
  • প্রতিটি ড্যাশের সময়কাল পরিবর্তিত হয়
  • E, I, S, H, 5 অক্ষরে শুধুমাত্র বিন্দু থাকে যা বিন্দুর সময়কালের গড়
  • অক্ষর টি, এম, ও, 0 শুধুমাত্র ড্যাশ ধারণ করে যা ড্যাশের সময়কালের গড়
  • শব্দের ফাঁক নাও আসতে পারে
  • ফেইডিং এমন ত্রুটি তৈরি করে যা থেকে ডিকোডার পুনরুদ্ধার করতে হবে।
  • হস্তক্ষেপের কারণে দূষিত সংকেত

শুধুমাত্র বিন্দু এবং ড্যাশযুক্ত অক্ষরগুলি আংশিকভাবে সমাধান করা হয় যদি:

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

গতির বৈচিত্রগুলি সমাধান করা হয় যদি:

  • আমরা প্রতিটি বিন্দু এবং প্রতিটি ড্যাশ এবং উপর একটি ঘূর্ণায়মান গড় সঞ্চালন
  • প্রতিটি প্রতীক পাওয়ার পর রেফারেন্সের সময়কাল পুনর্নবীকরণ করুন

শব্দের ফাঁক এবং শব্দের ফাঁকগুলি না পৌঁছালে সমাধান করা হবে যদি আমরা:

  • শেষ ট্রিলিং-এজ (টোন টু নো-টোন) ট্রানজিশনের সময় মনে রাখবেন,
  • প্রতিটি অক্ষরের পরে অ্যালগরিদম পুনরায় চালু করুন,
  • পরবর্তী লিডিং-এজ (নো-টোন টু টোন) ট্রানজিশনের জন্য অপেক্ষা করার সময় অতিবাহিত সময় গণনা করুন এবং
  • 6 টি সময় ইউনিট অতিক্রম করা হলে একটি স্থান সন্নিবেশ করান।

মোর্স অসিলেটর

আমি প্রাথমিকভাবে কিছু Piezo buzzers চেষ্টা করেছি কিন্তু পাওয়া গেছে:

  • ফ্রিকোয়েন্সি স্থির ছিল
  • দীর্ঘক্ষণ শোনার জন্য আউটপুট ফ্রিকোয়েন্সি খুব বেশি ছিল
  • পাইজোস গোয়ার্টজেল পাসব্যান্ড থেকে বেরিয়ে যেতে থাকে

আমি তখন 750Hz স্কয়ারওয়েভ সহ একটি অ্যাকোস্টিক ট্রান্সডুসার চালানোর চেষ্টা করেছি কিন্তু এটি একটি অনুরণন পেয়েছে যা 1 ম এবং 3 য় হারমোনিক্সকে ফিল্টার করে। ফটো 6 মাইক্রোফোন এম্প্লিফায়ার আউটপুট 750Hz স্কোয়ার-ওয়েভ দেখায়… আমরা 5 ম হারমোনিক দেখছি !!!

আমি তারপর একটি ছোট স্পিকার ব্যবহার করে একটি অবলম্বন। ফটো 7 মাইক্রোফোন আউটপুট 750Hz স্কয়ারওয়েভ দেখায় যা একটি ছোট স্পিকারে পাঠানো হয়েছিল… এইবার আমরা মৌলিক দেখছি… 5 ম হারমোনিক নয়। Goertzel ফিল্টার কোন সুরেলা উপেক্ষা করে।

মন্তব্য

[1]

en.wikipedia.org/wiki/Goertzel_algorithm

www.embedded.com/the-goertzel-algorithm/

ধাপ 5: সফটওয়্যার

সফটওয়্যার
সফটওয়্যার
সফটওয়্যার
সফটওয়্যার
সফটওয়্যার
সফটওয়্যার

স্থাপন

  • সংযুক্ত ফাইল MorseCodeDecoder.ino [1] ডাউনলোড করুন
  • এই ফাইলের বিষয়বস্তু একটি নতুন Arduino স্কেচে অনুলিপি করুন
  • স্কেচটি "MorseCodeDecoder" হিসাবে সংরক্ষণ করুন (উদ্ধৃতি ছাড়া)
  • আপনার Arduino এ স্কেচ কম্পাইল করুন এবং আপলোড করুন

সফটওয়্যার আপডেট 23 জুলাই 2020

নিচের বৈশিষ্ট্যগুলি সংযুক্ত ফাইল "MorseCodeDecoder6.ino" এ যোগ করা হয়েছে

  • একটি "এক্স্যাক্ট ব্ল্যাকম্যান" উইন্ডো [2]
  • একটি "নয়েজ_ ব্ল্যাঙ্কার"

সমন্বয়:

  • আপনার রিসিভার অডিও স্তর বাড়ান যতক্ষণ না LED ঝলকানি শুরু করে তারপর বন্ধ হয়ে যায়
  • এখন আপনার রিসিভার টিউন করুন যতক্ষণ না আগত মোর্সের সাথে ধাপে LED জ্বলছে
  • Noise_blanker 8mS (এক লুপ সময়) পর্যন্ত শব্দ বিস্ফোরণ উপেক্ষা করার জন্য সেট করা হয়েছে
  • Debug = true সেট করে এবং আপনার সিরিয়াল প্লটার দেখে নয়েজ থ্রেশহোল্ড সামঞ্জস্য করা যায়

বিঃদ্রঃ

[1]

আপনার Arduino সিরিয়াল মনিটর সেট করুন 115200 bauds যদি আপনিও টেক্সট দেখতে চান।

[2]

  • ছবি 1… ঠিক ব্ল্যাকম্যান উইন্ডো
  • ছবি 2… সঠিক ব্ল্যাকম্যান উইন্ডো ছাড়া গোয়ারজেল ফিল্টার
  • ফটো 3,,, সঠিক ব্ল্যাকম্যান উইন্ডো সহ Goertzel ফিল্টার প্রয়োগ করা হয়েছে

ধাপ 6: অপারেশন

ডিকোডার

মোর্স শোনার সময় ইউনিটটি আপনার স্পিকারের পাশে রাখুন।

  • ইলেক্ট্রেট মাইক্রোফোন ক্যাপসুল আপনার স্পিকার থেকে মোর্স সিগন্যাল তুলে নেয়।
  • ইলেক্ট্রেট মাইক্রোফোনের আউটপুটটি প্রসেসিংয়ের জন্য আরডুইনোতে পাঠানোর আগে 647 বার (56 ডিবি) বাড়ানো হয়।
  • একটি Goertzel ডিজিটাল ব্যান্ডপাস ফিল্টার শব্দ থেকে মোর্স সিগন্যাল বের করে।
  • একটি বাইনারি গাছ ব্যবহার করে ডিকোডিং করা হয়।
  • ডিকোডার আউটপুট একটি 320 x 240 পিক্সেল TFT ডিসপ্লেতে পাঠ্য হিসাবে প্রদর্শিত হয়। যদি আপনি কোন ডিসপ্লে ব্যবহার করতে না চান তবে এটি আপনার Arduino "সিরিয়াল মনিটর" এও পাঠানো হয়।

মোর্স প্রেরক

একজন মোর্স প্রেরককেও অন্তর্ভুক্ত করা হয়েছে। এটি আপনাকে মোর্স পাঠানোর অনুশীলন করতে দেয় এবং নিম্নরূপ কাজ করে:

  • Arduino পিন 4 এ একটি ধ্রুব শ্রাব্য স্বর উৎপন্ন হয়।
  • যখনই আমরা মর্স-কী চাপি তখন আমরা ডিকোডারের লাউড-স্পিকারের মাধ্যমে এই সুরটি শুনি।
  • স্বরটি গোয়ার্টজেল ফিল্টারের মতো একই ফ্রিকোয়েন্সি তে সেট করা হয়েছে যা ডিকোডারকে বোকা বানিয়ে মনে করে যে এটি তার প্রকৃত শোনা যাচ্ছে … আপনি যা পাঠাবেন তা ডিসপ্লেতে মুদ্রিত পাঠ্য হিসাবে উপস্থিত হবে।

আপনার পাঠানোর উন্নতি হবে কারণ ডিকোডার সাধারণ ত্রুটিগুলি বেছে নেয় যেমন:

  • প্রতীকগুলির মধ্যে খুব বেশি জায়গা। (উদাহরণ: প্রশ্নটি এমএ হিসাবে চিহ্নিত করা হয়েছে)
  • অক্ষরের মধ্যে খুব বেশি জায়গা (উদাহরণ: এখন NO W হিসাবে মুদ্রিত)
  • ভুল কোড

ধাপ 7: সারাংশ

ডিকোডার

এই নির্দেশযোগ্য কিভাবে একটি মোর্স ডিকোডার তৈরি করতে হয় যা মোর্স কোডকে মুদ্রিত পাঠ্যে রূপান্তর করে।

  • ডিকোডার কমপক্ষে 80 WPM (প্রতি মিনিটে শব্দ) পর্যন্ত মোর্স ডিকোড করতে সক্ষম
  • ডিকোডার স্বয়ংক্রিয়ভাবে প্রাপ্ত প্রেরণ-গতির বৈচিত্রগুলি ট্র্যাক করে।
  • লেখাটি আপনার সিরিয়াল মনিটরে প্রদর্শিত হয় (অথবা লাগানো হলে 320 x 240 TFT ডিসপ্লে মডিউলে) [1]

প্রেরক

একজন মোর্স প্রেরককেও অন্তর্ভুক্ত করা হয়েছে

  • প্রেরক আপনাকে আপনার মোর্স পাঠানোর মান উন্নত করতে সাহায্য করে।
  • ডিকোডার নিশ্চিত করে যে আপনি যা পাঠিয়েছেন তা সঠিক

যন্ত্রাংশের খরচ

মোর্স ডিকোডার ieldালের আনুমানিক খরচ, theচ্ছিক TFT ডিসপ্লে কম, $ 25।

আমার অন্যান্য নির্দেশাবলী দেখতে এখানে ক্লিক করুন।

অডিও চ্যালেঞ্জ 2020
অডিও চ্যালেঞ্জ 2020
অডিও চ্যালেঞ্জ 2020
অডিও চ্যালেঞ্জ 2020

অডিও চ্যালেঞ্জ ২০২০ -এ দ্বিতীয় পুরস্কার

প্রস্তাবিত: