Përmbajtje:

Dekoduesi i pemës binare Morse: 7 hapa (me fotografi)
Dekoduesi i pemës binare Morse: 7 hapa (me fotografi)

Video: Dekoduesi i pemës binare Morse: 7 hapa (me fotografi)

Video: Dekoduesi i pemës binare Morse: 7 hapa (me fotografi)
Video: CS50 2013 - Week 8 2024, Nëntor
Anonim
Image
Image
Diagrami i qarkut
Diagrami i qarkut

Ky udhëzues shpjegon se si të deshifroni Kodin Morse duke përdorur një Arduino Uno R3.

Dekoduesi, i cili përshtatet automatikisht me shpejtësinë e dërgimit, është i aftë të deshifrojë morse deri në të paktën 80 fjalë në minutë.

Kodi hyrës shfaqet si tekst në Monitorin tuaj Serial Arduino (ose ekranin TFT nëse është i përshtatshëm)

Një oshilator toni është përfshirë nëse dëshironi të praktikoni dërgimin e morsit.

Karakteristikat e deshifruesit:

  • një modul i ekranit 320 x 240 TFT [1]
  • një filtër digjital i bandës Goertzel për ndarjen e sinjaleve të padëshiruara.
  • një "Pemë Binare Morse" për deshifrimin e sinjalit
  • ndjekja e shpejtësisë automatike
  • një dalje e dëgjueshme kur praktikoni morse
  • shfaqen si teksti hyrës ashtu edhe ai dalës.

Karakteret dhe simbolet e mëposhtëm njihen:

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

Kostoja e vlerësuar e mburojës së dekoduesit morse, pa ekranin TFT, është 25 dollarë. [1]

Imazhe

  • Fotografia e kopertinës tregon një njësi të montuar plotësisht
  • Videoja tregon dekoderin duke punuar

Shënime

[1]

  • Moduli i ekranit TFT është opsional pasi i gjithë teksti i dërgohet Arduino "Serial Monitor" juaj.
  • Moduli TFT përshkruhet në

Hapi 1: Lista e Pjesëve

Pjesët e mëposhtme janë marrë nga

1 mburojë prototipi i vetëm për Arduino UNO R3, katran 2.54mm

Pjesët e mëposhtme janë marrë në vend:

  • 1 vetëm opam të dyfishtë LM358
  • 1 vetëm LED jeshile
  • 1 kapëse vetëm LED
  • 1 kapsulë vetëm për mikrofon elektrik
  • 1 buton vetëm normalisht i hapur
  • 1 prizë DIP vetëm me 8 kunja
  • 2 vetëm rezistente 330 ohm
  • 2 vetëm 2K2 rezistorë
  • 5 vetëm 10K rezistencë ohm
  • 2 vetëm rezistenca 56K ohm
  • 2 vetëm 1uF kondensator
  • 1 kondensator vetëm 10uF

Pjesët e mëposhtme janë fakultative:

  • 1 vetëm 2.2 Inch TFT SPI LCD Moduli i Shfaqjes 240*320 ILI9341 me Fole për Kartë SD për Arduino Raspberry Pi 51/AVR/STM32/ARM/PIC [1]
  • Çelësi Mors / butoni
  • 1 vetëm tranzistor BC548 NPN
  • 1 altoparlant vetëm 1 inç
  • 1 vetëm rezistencë 33K ohm
  • 1 prizë mono vetëm 3.5 mm (për çelësin Morse)
  • 1 prizë mono vetëm 3.5 mm (për çelësin morse)
  • 3 ndarës najloni të përgjuar vetëm 9 mm M3
  • 1 vetëm 130 x 68 x 44 mm kuti plastike ABS
  • 5 vetëm lidhës me kënd të drejtë me 2 kunja

Kostoja e vlerësuar e mburojës së dekoduesit morse, minus ekranin opsional TFT, është 25 dollarë. [1]

Shënime

[1]

Lista e pjesëve për modulin opsional të ekranit 320 x 240 TFT është e shënuar në udhëzuesin tim

[2]

Një çelës morse ose një buton i fortë kërkohet nëse dëshironi të përdorni dërguesin.

Hapi 2: Diagrami i Qarkut

Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut

Imazhe

Fotografia 1 tregon diagramin e qarkut për deshifruesin e morsit. Rezistenca 330 ohm në seri me çelësin morse kufizon rrymën e daljes D4 në rast të një aksidenti të shkurtër në tokë … rritja e vlerës së tij zvogëlon daljen e zërit nga altoparlanti. Për këtë arsye, unë nuk e kam shtuar atë në mburojë, por e kam bashkangjitur drejtpërdrejt në folenë e çelësit të murit për lehtësinë e rregullimit

Fotografia 2 tregon një mburojë që përputhet. Mburoja është nga https://www.instructables.com/id/Arduino-TFT-Grap… i udhëzueshëm në të cilin kam shtuar amplifikatorin e mikrofonit dhe oshilatorin e tonit. [1]

Fotografia 3 tregon mburojën e përfunduar të lidhur me një Arduino. Asnjë përbërës tjetër nuk kërkohet nëse teksti do të shikohet në Arduino tuaj "Serial Monitor"

Fotografia 4 tregon dekoderin pjesërisht të vendosur në kuti. Një vrimë është prerë në kapak për të parë ekranin. Altoparlanti dhe mikrofoni janë ngjitur mirë në kasë. Stërvitni disa vrima të altoparlantëve në kapak para se të montoni altoparlantin. Foleja qendrore në kapak është për një mikrofon shtesë … pa këtë deshifruesi duhet të vendoset afër altoparlantit, gjë që nuk është gjithmonë e mundur

Fotografia 5 tregon ekranin TFT. Shirit elektrik i zi është ngjitur në skajet e ekranit … kjo shirit parandalon rrjedhjen e dritës dhe maskon çdo keqformim midis ekranit dhe hapjes në kapak

E rëndësishme

[1]

Arduinos me një lidhës të madh USB kërkojnë një shtresë kasetë elektrike midis lidhësit USB dhe mburojës Arduino. Pantallona të shkurtra aksidentale janë të mundshme pa shirit pasi pastrimi është i vogël. Kaseta nuk kërkohet për Arduinos që kanë lidhje të vogla

Hapi 3: Teoria

Teori
Teori
Teori
Teori
Teori
Teori

Çdo shkronjë e kodit Morse përfshin një seri tonesh të shkurtra dhe të gjata të quajtura "pika" dhe "pika".

  • një pikë (.) është 1 njësi e gjatë
  • një dash (_) është 3 njësi në gjatësi
  • hapësira midis elementeve të shkronjave është 1 njësi
  • hapësira midis shkronjave është 3 njësi
  • hapësira midis fjalëve është 7 njësi

Ne mund të përcaktojmë nëse toni në hyrje është pikë ose vijë duke krahasuar kohëzgjatjen e tij me një ton referimi prej 2 njësish në gjatësi.

  • një pikë është më pak se 2 njësi
  • një dash është më i madh se 2 njësi

Ekzistojnë dy metoda krejtësisht të ndryshme për deshifrimin e modelit në hyrje të pikave dhe vijave:

  • kërkim linear
  • pema binare (e njohur edhe si kërkim dikotomik)

Kërkim linear

Një metodë e zakonshme është krijimi i një grupi karakteresh dhe modeleve të tyre që përputhen me morse. Për shembull, secili nga personazhet e mëposhtëm do të ruhet si:

  • A _
  • B _. Me Me
  • C _. _
  • 0 _ _ _ _ _
  • 1. _ _ _ _
  • 2.. _ _ _

Çdo shkronjë kërkon 6 qeliza… 1 për vetë shkronjën dhe 5 për shkronjat (.) Dhe (_). Për ta bërë këtë ne kemi nevojë për një grup shkronjash [36] [6] me një total prej 216 qelizash. Qelizat e papërdorura normalisht mbushen me një zero ose një bosh.

Për të deshifruar pikat dhe vizatimet hyrëse duhet të krahasojmë modelin e pikës/pikës së secilës shkronjë në hyrje me modelet tona të karakterit referues.

Ndërsa kjo metodë funksionon, është jashtëzakonisht e ngadaltë.

Thuaj që kemi 26 shkronja ('A',.. 'Z') dhe shifrat ('0',… '9') të ruajtura në një grup, atëherë duhet të kryejmë 36 kërkime, secila me deri në 5 nën-kërkime, që është gjithsej 36*5 = 180 kërkime për të deshifruar numrin '9'.

Pema binare

Një kërkim binar është shumë më i shpejtë pasi nuk kërkohen kërkime.

Ndryshe nga kërkimi linear, i cili kërkon që të ruhen si karakteri ashtu edhe modelet morse, pema binare ruan vetëm karakteret, që do të thotë se madhësia e grupit është më e vogël.

Unë e kam ndarë pemën time binare (foto1) në dy gjysma (fotot 2 dhe 3) për ta bërë atë më të lexueshëm.

Për të gjetur një personazh ne lëvizim një tregues majtas sa herë që dëgjojmë një pikë dhe e lëvizim treguesin djathtas sa herë që dëgjojmë një vijëza. Pas secilës lëvizje ne përgjysmojmë distancën e treguesit për lëvizjen tjetër … pra emri pemë binare.

Për të deshifruar shkronjën ‘9’ (dash, dash, dash, dash, pikë) nevojiten 5 lëvizje … 4 në të djathtë, dhe 1 në të majtë e cila e lë treguesin drejtpërdrejt mbi ‘9’.

Pesë lëvizje është dukshëm më e shpejtë se 180 kërkime !!!!!

Grupi i karaktereve binare është gjithashtu më i vogël … 26 shkronja dhe 10 numra kërkojnë vetëm një grup 64 x 1 rresht. Kam zgjedhur të krijoj një grup 128 karakteresh në mënyrë që të deshifroj shenjat e pikësimit.

Hapi 4: Shënimet e Dizajnit

Shënimet e Dizajnit
Shënimet e Dizajnit
Shënimet e Dizajnit
Shënimet e Dizajnit
Shënimet e Dizajnit
Shënimet e Dizajnit
Shënimet e Dizajnit
Shënimet e Dizajnit

Morse është e vështirë të deshifrohet në prani të sinjaleve ndërhyrëse. Sinjalet e padëshiruara duhet të refuzohen … kjo kërkon një lloj filtri.

Ka shumë mundësi:

  1. Unazore të mbyllura në faza
  2. Filtrat induktor-kondensator
  3. Rezistencë-kondensator filtra aktivë
  4. Përpunimi i sinjalit dixhital siç është Transformimi i shpejtë i Furierit, ose filtri Goertzel.

Metodat 1, 2, 3 kërkojnë përbërës të jashtëm të cilët janë të rëndë.

Metoda 4 nuk kërkon përbërës të jashtëm … frekuencat zbulohen duke përdorur algoritme matematikore.

Transformimi i shpejtë i Furierit (FFT)

Një metodë e zbulimit të pranisë së një toni në një formë valore komplekse është përdorimi i Shndërrimit të Furierit të Shpejtë

Fotografia 1 tregon sesi FFT (Shndërrimi i shpejtë i Furierit) e ndan spektrin audio në "kosha".

Fotografia 2 tregon sesi "koshat" e FFT i përgjigjen një sinjali … në këtë rast 800Hz. Nëse do të ishte i pranishëm një sinjal i dytë prej 1500Hz, do të shihnim dy përgjigje … një në 800Hz dhe një tjetër në 1500Hz.

Në teori, një deshifrues i kodit morse mund të bëhet duke monitoruar nivelin e daljes së një kazani të veçantë të frekuencës FFT … një numër i madh përfaqëson praninë e një pike ose pike … një numër i vogël nuk përfaqëson asnjë sinjal.

Një dekodues i tillë i kodit morse mund të bëhet duke monitoruar "bin 6" në foton 2, por ka një numër gjërash të gabuara me këtë qasje:

  • ne duam vetëm një kazan frekuencash … pjesa tjetër janë llogaritjet e kota
  • koshat e frekuencave mund të mos shfaqen saktësisht në frekuencën e interesit
  • është relativisht i ngadalshëm (20mS për lakun Arduino ()

Një metodë tjetër është përdorimi i një filtri Goertzel.

Filtri Goertzel

Filtri Goertzel është i ngjashëm me FFT, por ka vetëm një kazan të vetëm frekuencash.

Foto3 tregon përgjigjen e frekuencës së një filtri Goertzel për hapa diskrete audio.

Fotografia 4 është një spastrim i të njëjtit filtër në të njëjtën gamë frekuence.

Vendosa të "shkoj" me algoritmin Goertzel si:

  • Koha e lakut Arduino () duke përdorur algoritmin Goertzel ishte 14mS (milisekonda) kundrejt 20mS (milisekonda) për një zgjidhje FFT duke përdorur bibliotekën Arduino "fix_FFT".
  • Easyshtë e lehtë të vendosni frekuencën qendrore të një filtri Goertzel bandpass.
  • Gjerësia e brezit është afërsisht 190Hz.

Fotografia 5 tregon daljen numerike nga një filtër Goertzel 900Hz kur zbulohet një ton. Unë e kam vendosur pragun tim të tonit në një vlerë prej 4000 … vlerat mbi 4000 tregojnë një ton.

Në teori, thjesht duhet të rregulloni filtrin tuaj në një frekuencë të rehatshme dëgjimi. Fatkeqësisht dalja audio nga altoparlanti im monitorues 1 inç bie me shpejtësi nën 900Hz. Për të shmangur çdo problem unë jam duke përdorur një frekuencë filtri prej 950Hz. Formulat e nevojshme për llogaritjen e frekuencave alternative të filtrit gjenden në kokën time të kodit.

Deshifrim

Dekodimi i pikave dhe pikave nuk është aq i lehtë sa duket në shikim të parë.

Morsi i përsosur përcaktohet si:

  • pikë = 1 njësi
  • hapësira brenda shkronjës = 1 njësi
  • dash = 3 njësi
  • hapësira midis shkronjave = 3 njësi
  • hapësira midis fjalëve = 7 njësi

Për të deshifruar morse të përsosur, ne thjesht kemi nevojë për një kohëzgjatje të tonit referues prej 2 njësive

  • pikë <2 njësi
  • hapësira e elementeve <2 njësi
  • dash> 2 njësi
  • shkronja _ hapësirë> 2 njësi
  • word_space> 6 njësi (pra 3 x njësi referimi)

Kjo funksionon për morse makinë, por në "botën reale":

  • shpejtësia e dërgimit ndryshon
  • kohëzgjatja e secilës pikë ndryshon
  • kohëzgjatja e secilës vizë ndryshon
  • shkronjat E, I, S, H, 5 përmbajnë vetëm pika të cilat mesatarisht zgjasin kohëzgjatjen e pikës
  • shkronjat T, M, O, 0 përmbajnë vetëm vija të cilat mesatarisht zgjasin kohëzgjatjen e vizës
  • boshllëqet e fjalëve mund të mos arrijnë
  • zbehja krijon gabime nga të cilat deshifruesi duhet të rikuperohet.
  • sinjale të korruptuara për shkak të ndërhyrjes

Shkronjat që përmbajnë vetëm pika dhe pika janë zgjidhur pjesërisht nëse:

ne vlerësojmë kohëzgjatjen e referencës derisa të kemi marrë një pikë të vlefshme dhe një vijë të vlefshme. Unë përdor 200 milisekonda e cila është e vlefshme nëse shpejtësia e dërgimit është midis 6 WPM (fjalë në minutë) dhe 17 WPM. Ju mund të keni nevojë të rrisni këtë vlerë nëse jeni duke mësuar morse. Një tabelë shpejtësie përfshihet në softuer

Ndryshimet e shpejtësisë zgjidhen nëse:

  • ne kryejmë një mesatare lëvizëse në secilën pikë dhe çdo vizë dhe
  • rillogarisni kohëzgjatjen e referencës pasi të jetë marrë çdo simbol

Boshllëqet e fjalëve dhe boshllëqet e fjalëve që nuk mbërrijnë zgjidhen nëse ne:

  • mbani mend kohën e kalimit të fundit të fundit (toni në pa ton),
  • rinisni algoritmin pas çdo shkronje,
  • llogarisni kohën e kaluar ndërsa prisni për kalimin tjetër të përparësisë (pa ton në ton) dhe
  • futni një hapësirë nëse janë tejkaluar 6 njësi kohore.

Lëkundës Morse

Fillimisht provova disa gumëzhima Piezo por gjeta:

  • frekuenca ishte fikse
  • frekuenca e daljes ishte shumë e lartë për dëgjim të zgjatur
  • piezot tentonin të largoheshin nga brezi i kalimit Goertzel

Pastaj provova të drejtoja një dhënës akustik me një valë katrore 750Hz, por zbulova se kishte një rezonancë që filtronte harmonikën e parë dhe të tretë. Fotografia 6 tregon daljen e amplifikatorit të mikrofonit në një valë katrore 750Hz … ne po shohim harmonikën e 5-të !!!

Më pas iu drejtova një altoparlanti të vogël. Fotografia 7 tregon daljen e mikrofonit në një valë katrore 750Hz që u dërgua në një altoparlant të vogël … këtë herë ne po shohim themeloren … jo harmonikën e 5 -të. Filtri Goertzel injoron çdo harmonikë.

Shënime

[1]

en.wikipedia.org/wiki/Goertzel_algorithm

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

Hapi 5: Softuer

Softuer
Softuer
Softuer
Softuer
Softuer
Softuer

Instalimi

  • Shkarkoni skedarin e bashkangjitur MorseCodeDecoder.ino [1]
  • Kopjoni përmbajtjen e këtij skedari në një skicë të re Arduino
  • Ruani skicën si "MorseCodeDecoder" (pa thonjëza)
  • Përpiloni dhe ngarkoni skicën në Arduino tuaj

Përditësimi i softuerit 23 korrik 2020

Karakteristikat e mëposhtme janë shtuar në skedarin e bashkangjitur "MorseCodeDecoder6.ino"

  • një dritare "Pikërisht Blackman" [2]
  • një "Zhurmë_blanker"

Rregullimi:

  • rrisni nivelin e audios së marrësit tuaj derisa LED të fillojë të ndizet dhe pastaj fikeni
  • tani rregulloni marrësin tuaj derisa LED të ndizet në hap me morsin në hyrje
  • Noise_blanker është vendosur të injorojë shpërthimet e zhurmës deri në 8mS (një herë me një lak)
  • pragu i Zhurmës mund të rregullohet duke vendosur Debug = true dhe duke parë Komplotuesin tuaj Serial

shënim

[1]

Vendosni Monitorin tuaj Serial Arduino në 115200 bauds nëse dëshironi të shihni edhe tekstin.

[2]

  • Foto 1… Dritare e saktë Blackman
  • Foto 2… Filtri Goertzel pa dritaren e saktë të Blackman
  • Foto 3,,, Filtri Goertzel me dritaren Exact Blackman të aplikuar

Hapi 6: Operacioni

Deshifrues

Vendoseni njësinë pranë altoparlantit tuaj kur dëgjoni morse.

  • Kapsula e mikrofonit elektrik merr sinjalin e morsit nga altoparlanti juaj.
  • Dalja e mikrofonit elektrik amplifikohet 647 herë (56dB) para se t'i kalohet Arduino për përpunim.
  • Një filtër digjital i bandës Goertzel nxjerr sinjalin e zërit nga zhurma.
  • Dekodimi bëhet duke përdorur një pemë binare.
  • Dalja e dekoduesit shfaqet si tekst në një ekran TFT 320 x 240 pixel. Gjithashtu i dërgohet Arduino "Serial Monitor" juaj nëse nuk dëshironi të përdorni një ekran.

Dërguesi i Morsit

Një dërgues morse është përfshirë gjithashtu. Kjo ju lejon të praktikoni dërgimin e morse dhe punon si më poshtë:

  • Një ton konstant i dëgjueshëm gjenerohet në kunjin Arduino 4.
  • Ne e dëgjojmë këtë ton përmes altoparlantit të dekoderit sa herë që shtypim butonin Morse.
  • Toni është vendosur në të njëjtën frekuencë me filtrin Goertzel i cili mashtron deshifruesin të mendojë se po dëgjon morsin e vërtetë … gjithçka që dërgoni do të shfaqet si tekst i shtypur në ekran.

Dërgimi juaj do të përmirësohet ndërsa dekoduesi merr gabime të zakonshme të tilla si:

  • shumë hapësirë midis simboleve. (shembull: Q i pikturuar si MA)
  • shumë hapësirë midis shkronjave (shembull: TANI shtypur si JO W)
  • kod i pasaktë

Hapi 7: Përmbledhje

Deshifrues

Ky udhëzues përshkruan se si të bëni një deshifrues morse që konverton kodin e morsit në tekst të shtypur.

  • Dekoduesi është i aftë të deshifrojë morse deri në të paktën 80 WPM (fjalë në minutë)
  • Dekoduesi gjurmon automatikisht ndryshimet në shpejtësinë e dërgimit të marrë.
  • Teksti shfaqet në Monitorin tuaj Serial (ose në një modul të ekranit 320 x 240 TFT nëse është i pajisur) [1]

Dërguesi

Një dërgues morse është përfshirë gjithashtu

  • Dërguesi ju ndihmon të përmirësoni cilësinë e dërgimit të morsit tuaj.
  • Dekoduesi konfirmon se ajo që keni dërguar është e saktë

Kostoja e pjesëve

Kostoja e vlerësuar e mburojës së dekoduesit morse, minus ekranin opsional TFT, është 25 dollarë.

Klikoni këtu për të parë udhëzimet e mia të tjera udhëzuese.

Sfida audio 2020
Sfida audio 2020
Sfida audio 2020
Sfida audio 2020

Çmimi i dytë në Sfidën Audio 2020

Recommended: