جدول المحتويات:

أداة فك الشفرة الثنائية لشجرة مورس: 7 خطوات (بالصور)
أداة فك الشفرة الثنائية لشجرة مورس: 7 خطوات (بالصور)

فيديو: أداة فك الشفرة الثنائية لشجرة مورس: 7 خطوات (بالصور)

فيديو: أداة فك الشفرة الثنائية لشجرة مورس: 7 خطوات (بالصور)
فيديو: اول مره اشوف هيج لحيه صبغ ..؟مش ممكن 2024, شهر نوفمبر
Anonim
Image
Image
مخطط الرسم البياني
مخطط الرسم البياني

يشرح هذا الدليل كيفية فك شفرة مورس باستخدام Arduino Uno R3.

وحدة فك التشفير ، التي تتكيف تلقائيًا مع سرعة الإرسال ، قادرة على فك تشفير ما لا يقل عن 80 كلمة في الدقيقة.

يتم عرض الكود الوارد كنص على Arduino Serial Monitor (أو شاشة TFT إذا تم تركيبها)

تم تضمين مذبذب النغمة إذا كنت ترغب في ممارسة إرسال مورس.

ميزات وحدة فك التشفير:

  • وحدة عرض 320 × 240 TFT [1]
  • مرشح تمرير النطاق الرقمي Goertzel لفصل الإشارات غير المرغوب فيها.
  • "Binary Morse Tree" لفك تشفير الإشارة
  • تتبع السرعة التلقائية
  • مخرجات مسموعة عند ممارسة مورس
  • يتم عرض كل من النص الوارد والصادر.

يتم التعرف على الأحرف والرموز التالية:

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

التكلفة التقديرية لدرع فك التشفير مورس ، ناقصًا شاشة TFT ، هي 25 دولارًا. [1]

الصور

  • تُظهر صورة الغلاف وحدة مجمعة بالكامل
  • يظهر الفيديو عمل وحدة فك الترميز

ملحوظات

[1]

  • وحدة العرض TFT اختيارية حيث يتم إرسال كل النص إلى Arduino “Serial Monitor”.
  • تم وصف وحدة TFT في https://www.instructables.com/id/Arduino-TFT-Grap …

الخطوة 1: قائمة الأجزاء

تم الحصول على الأجزاء التالية من

1 درع نموذج أولي فقط لـ Arduino UNO R3 ، 2.54mm الملعب

تم الحصول على الأجزاء التالية محليًا:

  • 1 فقط LM358 المزدوج opamp
  • 1 فقط الصمام الأخضر
  • 1 مقطع LED فقط
  • 1 فقط كبسولة ميكروفون electret
  • 1 فقط زر الضغط الذي يفتح عادة
  • 1 مقبس DIP ذو 8 سنون فقط
  • 2 مقاومات 330 أوم فقط
  • 2 مقاومات 2K2 فقط
  • 5 مقاومات 10 كيلو أوم فقط
  • 2 مقاومات 56 كيلو أوم فقط
  • 2 فقط 1 فائق التوهج مكثف
  • 1 فقط 10 فائق التوهج مكثف

الأجزاء التالية اختيارية:

  • 1 فقط 2.2 بوصة TFT SPI وحدة عرض LCD 240 * 320 ILI9341 مع فتحة بطاقة SD لـ Arduino Raspberry Pi 51 / AVR / STM32 / ARM / PIC [1]
  • مفتاح مورس / زر الضغط
  • 1 فقط الترانزستور BC548 NPN
  • مكبر صوت 1 بوصة فقط
  • 1 فقط 33 كيلو أوم المقاوم
  • 1 قابس أحادي 3.5 مم فقط (لمفتاح مورس)
  • 1 مقبس أحادي 3.5 مم فقط (لمفتاح مورس)
  • 3 فواصل من النايلون المسنن M3 9 مم فقط
  • 1 فقط صندوق بلاستيك ABS 130 × 68 × 44 مم
  • 5 موصلات بزاوية قائمة ثنائية السن فقط

التكلفة التقديرية لدرع فك التشفير مورس ، ناقصًا شاشة TFT الاختيارية ، هي 25 دولارًا. [1]

ملحوظات

[1]

يتم سرد قائمة الأجزاء الخاصة بوحدة العرض الاختيارية 320 × 240 TFT في https://www.instructables.com/id/Arduino-TFT-Grap …

[2]

مطلوب مفتاح مورس أو زر ضغط قوي إذا كنت ترغب في استخدام المرسل.

الخطوة 2: مخطط الدائرة

مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني
مخطط الرسم البياني

الصور

تُظهر الصورة 1 مخطط الدائرة لوحدة فك ترميز مورس. يحد المقاوم 330 أوم المتسلسل مع مفتاح مورس تيار الإخراج D4 في حالة حدوث قصر عرضي على الأرض … تؤدي زيادة قيمتها إلى تقليل إخراج الصوت من السماعة. لهذا السبب لم أقم بإضافته إلى الدرع ولكني قمت بتوصيله مباشرة بمقبس مفتاح مورس لسهولة الضبط

تُظهر الصورة 2 درعًا مطابقًا. الدرع من https://www.instructables.com/id/Arduino-TFT-Grap … الذي أضفت إليه مكبر صوت الميكروفون ومذبذب النغمة. [1]

تُظهر الصورة 3 الدرع المكتمل المرفق بـ Arduino. لا توجد مكونات أخرى مطلوبة إذا كان النص سيتم عرضه على Arduino “Serial Monitor”

تُظهر الصورة 4 وحدة فك التشفير محاصرًا جزئيًا. تم قطع فتحة في الغطاء لعرض الشاشة. تم لصق مكبر الصوت والميكروفون على العلبة. احفر بعض فتحات السماعات في الغطاء قبل تركيب السماعة. المقبس المركزي الموجود على الغطاء مخصص لميكروفون تمديد … وبدون ذلك ، يجب وضع وحدة فك التشفير بالقرب من السماعة وهو أمر غير ممكن دائمًا

تُظهر الصورة 5 شاشة TFT. تم توصيل شريط كهربائي أسود بحواف الشاشة … يمنع هذا الشريط تسرب الضوء ويخفي أي اختلال في المحاذاة بين الشاشة وفتحة الغطاء

الأهمية

[1]

تتطلب Arduinos مع موصل USB كبير طبقة من الشريط الكهربائي بين موصل USB ودرع Arduino. يمكن إجراء السراويل القصيرة العرضية بدون الشريط لأن مساحة الخلوص صغيرة. الشريط غير مطلوب في أجهزة Arduinos التي تحتوي على موصلات صغيرة

الخطوة الثالثة: النظرية

نظرية
نظرية
نظرية
نظرية
نظرية
نظرية

يتألف كل حرف من حروف مورس من سلسلة من النغمات القصيرة والطويلة الأمد تسمى "النقاط" و "الشرطات".

  • النقطة (.) هي وحدة واحدة في الطول
  • شرطة (_) بطول 3 وحدات
  • المسافة بين عناصر الحرف هي وحدة واحدة
  • المسافة بين الحروف 3 وحدات
  • المسافة بين الكلمات 7 وحدات

يمكننا تحديد ما إذا كانت النغمة الواردة هي نقطة أو شرطة من خلال مقارنة مدتها مع نغمة مرجعية بطول وحدتين.

  • النقطة أقل من وحدتين
  • شرطة أكبر من وحدتين

هناك طريقتان مختلفتان تمامًا لفك تشفير النمط الوارد من النقاط والشرطات:

  • البحث الخطي
  • شجرة ثنائية (تُعرف أيضًا باسم البحث ثنائي النواة)

البحث الخطي

إحدى الطرق الشائعة هي إنشاء مجموعة من الشخصيات وأنماط مورس المتطابقة. على سبيل المثال ، سيتم حفظ كل من الأحرف التالية على النحو التالي:

  • أ. _
  • ب _…
  • ج _. _.
  • 0 _ _ _ _ _
  • 1. _ _ _ _
  • 2.. _ _ _

يتطلب كل حرف 6 خلايا … 1 للحرف نفسه و 5 للحرف (.) و (_). للقيام بذلك ، نحتاج إلى مجموعة أحرف [36] [6] أحرف بإجمالي 216 خلية. عادةً ما يتم ملء الخلايا غير المستخدمة بصفر أو فارغ.

لفك تشفير النقاط والشرطات الواردة ، يجب أن نقارن نمط النقطة / الشرطة لكل حرف وارد مع أنماط الأحرف المرجعية الخاصة بنا.

بينما تعمل هذه الطريقة ، فهي بطيئة للغاية.

لنفترض أن لدينا 26 حرفًا ("A" ،.. "Z") والأرقام ("0" ، … "9") مخزنة في مصفوفة ، ثم يتعين علينا إجراء 36 بحثًا ، لكل منها ما يصل إلى 5 عمليات بحث فرعية ، وهو إجمالي 36 * 5 = 180 عملية بحث لفك تشفير الرقم "9".

شجرة ثنائية

البحث الثنائي أسرع بكثير حيث لا توجد عمليات بحث مطلوبة.

على عكس البحث الخطي ، الذي يتطلب تخزين كل من الحرف وأنماط مورس ، فإن الشجرة الثنائية تخزن فقط الأحرف مما يعني أن حجم المصفوفة أصغر.

لقد قسمت شجرتى الثنائية (الصورة 1) إلى نصفين (الصورتين 2 و 3) لجعلها أكثر قابلية للقراءة.

للعثور على حرف ، نحرك المؤشر إلى اليسار في كل مرة نسمع فيها نقطة ونحرك المؤشر إلى اليمين في كل مرة نسمع فيها شرطة. بعد كل حركة نقوم بخفض مسافة المؤشر إلى النصف للحركة التالية … ومن هنا جاءت تسمية الشجرة الثنائية.

لفك تشفير الحرف "9" (شرطة ، شرطة ، شرطة ، شرطة ، نقطة) يتطلب 5 حركات … 4 إلى اليمين و 1 إلى اليسار مما يترك المؤشر مباشرة فوق "9".

خمس حركات أسرع بكثير من 180 عملية بحث !!!!!

مصفوفة الأحرف الثنائية أصغر أيضًا … تتطلب 26 حرفًا و 10 أرقام فقط مصفوفة سطر 64 × 1. لقد اخترت إنشاء مصفوفة من 128 حرفًا حتى أتمكن من فك تشفير علامات الترقيم.

الخطوة 4: ملاحظات التصميم

ملاحظات التصميم
ملاحظات التصميم
ملاحظات التصميم
ملاحظات التصميم
ملاحظات التصميم
ملاحظات التصميم
ملاحظات التصميم
ملاحظات التصميم

يصعب فك شفرة مورس في وجود إشارات متداخلة. يجب رفض الإشارات غير المرغوب فيها … وهذا يتطلب نوعًا من التصفية.

هناك العديد من الاحتمالات:

  1. حلقات المرحلة مقفلة
  2. مرشحات محث مكثف
  3. مرشحات نشطة مكثف المقاوم
  4. معالجة الإشارات الرقمية مثل Fast Fourier Transform أو مرشح Goertzel.

تتطلب الطرق 1 ، 2 ، 3 مكونات خارجية ضخمة.

لا تتطلب الطريقة الرابعة أي مكونات خارجية … يتم الكشف عن الترددات باستخدام خوارزميات رياضية.

تحويل فورييه السريع (FFT)

تتمثل إحدى طرق اكتشاف وجود نغمة في شكل موجة معقد في استخدام تحويل فورييه السريع

توضح الصورة 1 كيف يقسم FFT (تحويل فورييه السريع) طيف الصوت إلى "صناديق".

توضح الصورة 2 كيف تستجيب "صناديق" FFT لإشارة … 800 هرتز في هذه الحالة. إذا كانت هناك إشارة ثانية تبلغ 1500 هرتز ، فسنرى استجابتين … أحدهما عند 800 هرتز والآخر عند 1500 هرتز.

من الناحية النظرية ، يمكن عمل مفكك تشفير مورس من خلال مراقبة مستوى خرج حاوية تردد FFT معينة … يمثل العدد الكبير وجود نقطة أو شرطة … الرقم الصغير لا يمثل أي إشارة.

يمكن عمل وحدة فك ترميز مورس من خلال مراقبة "bin 6" في الصورة 2 ولكن هناك عددًا من الأشياء الخاطئة في هذا النهج:

  • نريد فقط حاوية تردد واحدة … الباقي حسابات ضائعة
  • قد لا تظهر حاويات التردد بالضبط حسب تكرار الاهتمام
  • إنه بطيء نسبيًا (20 مللي ثانية لكل حلقة اردوينو ()

طريقة أخرى هي استخدام مرشح Goertzel.

مرشح Goertzel

مرشح Goertzel مشابه لـ FFT ولكن يحتوي فقط على حاوية تردد واحدة.

تُظهر الصورة 3 استجابة التردد لمرشح Goertzel لخطوات الصوت المنفصلة.

الصورة 4 عبارة عن مسح لنفس المرشح على نفس نطاق التردد.

قررت "الانتقال" باستخدام خوارزمية Goertzel على النحو التالي:

  • كان وقت حلقة Arduino () باستخدام خوارزمية Goertzel 14 مللي ثانية (مللي ثانية) مقابل 20 مللي ثانية (مللي ثانية) لحل FFT باستخدام مكتبة Arduino "fix_FFT".
  • من السهل ضبط التردد المركزي لمرشح تمرير النطاق من Goertzel.
  • عرض النطاق الترددي حوالي 190 هرتز.

تُظهر الصورة 5 الإخراج الرقمي من مرشح Goertzel 900 هرتز عند اكتشاف نغمة. لقد قمت بتعيين حد النغمة الخاص بي على قيمة 4000… تشير القيم فوق 4000 إلى نغمة.

من الناحية النظرية ، تحتاج فقط إلى ضبط الفلتر على تردد استماع مريح. لسوء الحظ ، ينخفض إخراج الصوت من مكبر صوت المراقبة 1 بوصة بسرعة أقل من 900 هرتز. لتجنب أي مشاكل ، أستخدم مرشح تردد يبلغ 950 هرتز. تم العثور على الصيغ اللازمة لحساب ترددات المرشح البديلة في رأس الكود الخاص بي.

فك

إن فك رموز النقاط والشرطات ليس سهلاً كما يبدو للوهلة الأولى.

يتم تعريف مورس الكمال على النحو التالي:

  • نقطة = 1 وحدة
  • الفراغات داخل الحرف = 1 وحدة
  • اندفاعة = 3 وحدات
  • المسافة بين الحروف = 3 وحدات
  • المسافة بين الكلمات = 7 وحدات

لفك شفرة مورس كامل ، نحتاج ببساطة إلى مدة نغمة مرجعية من وحدتين

  • نقطة <2 وحدة
  • مساحة العنصر <2 وحدة
  • اندفاعة> 2 وحدة
  • letter _space> 2 وحدة
  • word_space> 6 وحدات (أي 3 × وحدات مرجعية)

يعمل هذا مع آلة مورس ولكن في "العالم الحقيقي":

  • سرعة الإرسال تختلف
  • تختلف مدة كل نقطة
  • تختلف مدة كل شرطة
  • تحتوي الأحرف E ، I ، S ، H ، 5 فقط على النقاط التي متوسط مدة النقطة
  • تحتوي الأحرف T ، M ، O ، 0 فقط على شُرَط متوسط مدة الشرطة
  • قد لا تصل فجوات الكلمات
  • يؤدي الخبو إلى حدوث أخطاء يجب على مفكك الشفرة أن يسترد منها.
  • إشارات فاسدة بسبب التداخل

يتم حل الحروف التي تحتوي على نقاط وشُرط فقط جزئيًا إذا:

نحن نقدر المدة المرجعية حتى نتلقى نقطة صالحة وشرطة صالحة. أستخدم 200 مللي ثانية وهو صالح إذا كانت سرعة الإرسال بين 6 WPM (كلمات في الدقيقة) و 17 WPM. قد تحتاج إلى زيادة هذه القيمة إذا كنت تتعلم مورس. يتم تضمين جدول السرعة في البرنامج

يتم حل تغيرات السرعة إذا:

  • نجري متوسطًا متدحرجًا على كل نقطة وكل شرطة و
  • إعادة حساب المدة المرجعية بعد استلام كل رمز

يتم حل فجوات الكلمات وفجوات الكلمات التي لا تظهر إذا:

  • تذكر وقت آخر انتقال للحافة الخلفية (نغمة إلى بلا نغمة) ،
  • أعد تشغيل الخوارزمية بعد كل حرف ،
  • احسب الوقت المنقضي أثناء انتظار الانتقال التالي (بدون نغمة إلى نغمة) و
  • أدخل مسافة إذا تم تجاوز 6 وحدات زمنية.

مذبذب مورس

جربت في البداية بعض صافرات Piezo لكنني وجدت:

  • تم إصلاح التردد
  • تردد الإخراج كان مرتفعًا جدًا للاستماع لفترات طويلة
  • تميل البيزو إلى الخروج من نطاق مرور جورتزل

ثم حاولت بعد ذلك قيادة محول صوتي مع موجة مربعة 750 هرتز ولكن وجدت أنه يحتوي على صدى يقوم بتصفية التوافقيات الأولى والثالثة. تُظهر الصورة 6 إخراج مكبر صوت الميكروفون إلى موجة مربعة 750 هرتز … نرى التوافقي الخامس !!!

ثم لجأت إلى استخدام مكبر صوت صغير. تُظهر الصورة 7 إخراج الميكروفون إلى موجة مربعة 750 هرتز تم إرسالها إلى مكبر صوت صغير … هذه المرة نرى الأساسي … وليس التوافقي الخامس. يتجاهل مرشح 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]
  • a "Noise_blanker"

تعديل:

  • قم بزيادة مستوى صوت جهاز الاستقبال حتى يبدأ مؤشر LED في الوميض ثم ينطفئ
  • قم الآن بضبط جهاز الاستقبال الخاص بك حتى يومض مؤشر LED بالتوافق مع مورس وارد
  • تم ضبط Noise_blanker على تجاهل رشقات الضوضاء التي تصل إلى 8 مللي ثانية (مرة واحدة في حلقة واحدة)
  • يمكن ضبط حد الضوضاء عن طريق ضبط التصحيح = صحيح ومشاهدة رسامتك التسلسلية

ملحوظة

[1]

اضبط Arduino Serial Monitor على 115200 باود إذا كنت ترغب أيضًا في عرض النص.

[2]

  • الصورة 1 … نافذة بلاكمان بالضبط
  • الصورة 2 … مرشح Goertzel بدون نافذة Exact Blackman
  • Photo 3 ، ، ، مرشح Goertzel مع تطبيق نافذة Exact Blackman

الخطوة 6: العملية

فك

ضع الوحدة بجانب مكبر الصوت الخاص بك عند الاستماع إلى مورس.

  • تلتقط كبسولة ميكروفون Electret إشارة مورس من مكبر الصوت الخاص بك.
  • يتم بعد ذلك تضخيم خرج الميكروفون الكهربائي 647 مرة (56 ديسيبل) قبل تمريره إلى Arduino للمعالجة.
  • يقوم مرشح تمرير النطاق الرقمي Goertzel باستخراج إشارة مورس من الضوضاء.
  • يتم فك التشفير باستخدام شجرة ثنائية.
  • يتم عرض إخراج وحدة فك التشفير كنص على شاشة TFT بحجم 320 × 240 بكسل. يتم إرساله أيضًا إلى Arduino "Serial Monitor" إذا كنت لا ترغب في استخدام الشاشة.

مرسل مورس

كما تم تضمين مرسل مورس. هذا يسمح لك بالتدرب على إرسال مورس ويعمل على النحو التالي:

  • يتم إنشاء نغمة مسموعة ثابتة على Arduino pin 4.
  • نسمع هذه النغمة عبر مكبر الصوت بجهاز الاستقبال عندما نضغط على مفتاح مورس.
  • يتم ضبط النغمة على نفس التردد مثل مرشح Goertzel الذي يخدع وحدة فك التشفير في التفكير في الاستماع إلى مورس حقيقي … كل ما ترسله سيظهر كنص مطبوع على الشاشة.

ستتحسن عملية الإرسال حيث تلتقط وحدة فك التشفير الأخطاء الشائعة مثل:

  • مسافة كبيرة بين الرموز. (مثال: Q pinted كـ MA)
  • مساحة كبيرة بين الأحرف (على سبيل المثال: تمت طباعته الآن كـ NO W)
  • شفرة خاطئة

الخطوة 7: الملخص

فك

يصف هذا التوجيه كيفية عمل وحدة فك ترميز مورس تقوم بتحويل كود مورس إلى نص مطبوع.

  • جهاز فك التشفير قادر على فك تشفير ما يصل إلى 80 WPM على الأقل (كلمات في الدقيقة)
  • يقوم جهاز فك التشفير تلقائيًا بتتبع الاختلافات في سرعة الإرسال المستلمة.
  • يتم عرض النص على جهاز العرض التسلسلي الخاص بك (أو على وحدة عرض 320 × 240 TFT إذا تم تركيبها) [1]

مرسل

كما تم تضمين مرسل مورس

  • يساعدك المرسل على تحسين جودة إرسال مورس الخاص بك.
  • تؤكد وحدة فك التشفير أن ما أرسلته هو الصحيح

تكلفة الأجزاء

التكلفة التقديرية لدرع وحدة فك التشفير مورس ، ناقصًا شاشة TFT الاختيارية ، هي 25 دولارًا.

انقر هنا لعرض التعليمات الأخرى الخاصة بي.

تحدي الصوت 2020
تحدي الصوت 2020
تحدي الصوت 2020
تحدي الصوت 2020

الجائزة الثانية في تحدي الصوت 2020

موصى به: