Orodha ya maudhui:

Kiambatisho cha Morse Morse Decoder: Hatua 7 (na Picha)
Kiambatisho cha Morse Morse Decoder: Hatua 7 (na Picha)

Video: Kiambatisho cha Morse Morse Decoder: Hatua 7 (na Picha)

Video: Kiambatisho cha Morse Morse Decoder: Hatua 7 (na Picha)
Video: Mental Health Questions Answered | Go Live #WithMe 2024, Novemba
Anonim
Image
Image
Mchoro wa Mzunguko
Mchoro wa Mzunguko

Hii inaweza kuelezewa jinsi ya kuamua Nambari ya Morse ukitumia Arduino Uno R3.

Decoder, ambayo hujirekebisha kiatomati kwa kasi ya kutuma, inauwezo wa kuchambua morse hadi angalau maneno 80 kwa dakika.

Nambari inayoingia inaonyeshwa kama maandishi kwenye Arduino Serial Monitor yako (au skrini ya TFT ikiwa imewekwa)

Oncillator ya sauti imejumuishwa ikiwa ungependa kufanya mazoezi ya kutuma morse.

Vipengele vya decoder:

  • moduli ya kuonyesha 320 x 240 TFT [1]
  • kichujio cha kupita kwa njia ya dijiti ya Goertzel ya kutenganisha ishara zisizohitajika.
  • "Binary Morse Tree" kwa kusimba ishara
  • ufuatiliaji wa kasi ya kiotomatiki
  • pato linalosikika wakati wa kufanya mazoezi ya morse
  • maandishi yote yanayokuja na kutoka yanaonyeshwa.

Wahusika na alama zifuatazo zinatambuliwa:

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

Gharama inayokadiriwa ya ngao ya decoder morse, chini ya onyesho la TFT, ni $ 25. [1]

Picha

  • Picha ya jalada inaonyesha kitengo kilichokusanyika kikamilifu
  • Video inaonyesha decoder inafanya kazi

Vidokezo

[1]

  • Moduli ya kuonyesha TFT ni ya hiari kwani maandishi yote yanatumwa kwa Arduino "Serial Monitor" yako.
  • Moduli ya TFT imeelezewa katika maelezo yangu

Hatua ya 1: Orodha ya Sehemu

Sehemu zifuatazo zilipatikana kutoka

1 ngao ya mfano wa Arduino UNO R3, 2.54mm Pitch

Sehemu zifuatazo zilipatikana katika eneo lako:

  • 1 tu LM358 opamp mbili
  • 1 tu kijani kijani
  • Sehemu 1 tu ya LED
  • 1 tu kipaza sauti cha kipaza sauti
  • Kitufe 1 tu cha kawaida-wazi cha kushinikiza
  • Tundu 1 tu la pini 8 la pini
  • Vipinga 2 tu vya ohm 330
  • Vipinga 2 22 tu
  • Vipinga 5 tu vya ohm 10K
  • Vipinga 2 tu vya ohm 56K
  • 2 tu 1uF capacitor
  • 1 tu 10uF capacitor

Sehemu zifuatazo ni za hiari:

  • 1 tu 2.2 Inchi TFT SPI LCD Module ya Kuonyesha 240 * 320 ILI9341 na Slot ya Kadi ya SD ya Arduino Raspberry Pi 51 / AVR / STM32 / ARM / PIC [1]
  • Kitufe cha Morse / kitufe cha kushinikiza
  • 1 tu BC548 transistor ya NPN
  • Spika 1 ya inchi 1 tu
  • Kinga 1 tu ya 33K ohm
  • 1 tu 3.5mm mono plug (kwa kitufe cha morse)
  • 1 tu 3.5mm tundu la mono (kwa kitufe cha morse)
  • 3 tu 9mm M3 zilizogonga spacers za nailoni
  • 1 tu 130 x 68 x 44mm ABS sanduku la plastiki
  • Viunganishi 5 vya pini-2 tu za pini-kulia

Gharama inayokadiriwa ya ngao ya decoder morse, chini ya onyesho la hiari la TFT, ni $ 25. [1]

Vidokezo

[1]

Orodha ya sehemu ya moduli ya hiari ya 320 x 240 TFT imeorodheshwa kwenye maelezo yangu

[2]

Kitufe cha morse au kitufe kigumu cha kushinikiza kinahitajika ikiwa unataka kutumia mtumaji.

Hatua ya 2: Mchoro wa Mzunguko

Mchoro wa Mzunguko
Mchoro wa Mzunguko
Mchoro wa Mzunguko
Mchoro wa Mzunguko
Mchoro wa Mzunguko
Mchoro wa Mzunguko

Picha

Picha 1 inaonyesha mchoro wa mzunguko wa dekoda ya morse. Kinzani ya 330 ohm katika safu na vifunguo muhimu vya morse hupunguza sasa pato la D4 ikitokea kwa bahati mbaya chini … kuongeza thamani yake hupunguza pato la sauti kutoka kwa spika. Kwa sababu hii sijaiongeza kwenye ngao lakini niliiunganisha moja kwa moja kwa jack-key jack kwa urahisi wa kurekebisha

Picha 2 inaonyesha ngao inayofanana. Ngao hiyo inatoka kwa mafundisho yangu https://www.instructables.com/id/Arduino-TFT-Grap ……. ambayo nimeongeza kipaza sauti na kipaza sauti. [1]

Picha 3 inaonyesha ngao iliyokamilishwa iliyowekwa kwenye Arduino. Hakuna vifaa vingine vinavyohitajika ikiwa maandishi yatatazamwa kwenye "Serial Monitor" yako ya Arduino

Picha ya 4 inaonyesha sehemu ya sanduku la kisimbuzi. Shimo limekatwa kwenye kifuniko kwa kutazama onyesho. Spika na kipaza sauti zimeunganishwa kwa moto kwenye kesi hiyo. Piga mashimo ya spika kwenye kifuniko kabla ya kuweka spika. Soketi katikati ya kifuniko ni kwa kipaza sauti ya ugani… bila hii dekoda lazima iwekwe karibu na spika ambayo haiwezekani kila wakati

Picha 5 inaonyesha skrini ya TFT. Mkanda mweusi wa umeme umeambatanishwa kwenye kingo za maonyesho … mkanda huu huzuia kuvuja kwa nuru na hufunika upotoshaji wowote kati ya onyesho na ufunguzi kwenye kifuniko

Muhimu

[1]

Arduino zilizo na kontakt kubwa ya USB zinahitaji safu ya mkanda wa umeme kati ya kontakt USB na ngao ya Arduino. Shorts za bahati mbaya zinawezekana bila mkanda kwani kibali ni kidogo. Tape haihitajiki kwa Arduino ambazo zina viunganisho vidogo

Hatua ya 3: Nadharia

Nadharia
Nadharia
Nadharia
Nadharia
Nadharia
Nadharia

Kila herufi ya nambari ya morse inajumuisha safu ya sauti fupi na ndefu zinazoitwa "dots" na "dashes".

  • nukta (.) ni urefu wa kitengo 1
  • dash (_) ni urefu wa vitengo 3
  • nafasi kati ya vitu vya herufi ni kitengo 1
  • nafasi kati ya herufi ni vitengo 3
  • nafasi kati ya maneno ni vitengo 7

Tunaweza kubaini ikiwa toni inayoingia ni nukta au nukta kwa kulinganisha muda wake na toni ya kumbukumbu ya vipande 2 kwa urefu.

  • nukta ni chini ya vitengo 2
  • dash ni kubwa kuliko vitengo 2

Kuna njia mbili tofauti za kuamua muundo unaoingia wa dots na dashes:

  • utafutaji wa mstari
  • mti wa binary (pia unajulikana kama utaftaji wa dichotomic)

Utafutaji wa Linear

Njia moja ya kawaida ni kuunda herufi nyingi na mifumo yao inayofanana ya morse. Kwa mfano kila herufi zifuatazo zingeokolewa kama:

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

Kila herufi inahitaji seli 6… 1 kwa herufi yenyewe na 5 kwa (.)’S na (_). Ili kufanya hivyo tunahitaji herufi [36] [6] safu ya herufi na jumla ya seli 216. Seli ambazo hazijatumiwa kawaida hujazwa na sifuri au tupu.

Ili kuamua nukta na dashi zinazoingia lazima tulinganishe muundo wa nukta / dashi ya kila herufi zinazoingia na mifumo yetu ya mhusika.

Wakati njia hii inafanya kazi, ni polepole sana.

Sema tuna herufi 26 ('A',.. 'Z') na tarakimu ('0',… '9') zimehifadhiwa katika safu, basi lazima tufanye utaftaji 36, kila moja ikiwa na upekuzi-5. ambayo ni jumla ya utafutaji wa 36 * 5 = 180 kuamua nambari ya '9'.

Binary Tree

Utafutaji wa binary ni haraka sana kwani hakuna utaftaji unaohitajika.

Tofauti na utaftaji laini, ambao unahitaji tabia na muundo wa morse kuhifadhiwa, mti wa binary huhifadhi wahusika tu ambayo inamaanisha kuwa saizi ya safu ni ndogo.

Nimegawanya mti wangu wa binary (picha1) katika nusu mbili (picha 2 na 3) kuifanya iweze kusomeka zaidi.

Kupata mhusika tunasogeza kidokezo kushoto kila wakati tunaposikia doti na kusogeza pointer kila wakati tunaposikia dashi. Baada ya kila hoja tunapunguza nusu umbali wa pointer kwa hoja inayofuata… kwa hivyo jina la mti wa binary.

Kuamua herufi '9' (dash, dash, dash, dash, dot) inahitaji kusonga 5… 4 kulia, na 1 kushoto ambayo inaacha pointer moja kwa moja juu ya '9'.

Hatua tano ni haraka sana kuliko utaftaji 180 !!!!!

Safu ya herufi za kibinadamu pia ni ndogo… herufi 26 na nambari 10 zinahitaji tu safu ya mstari wa 64 x 1. Nimechagua kuunda safu ya herufi 128 ili niweze kung'amua punctu.

Hatua ya 4: Vidokezo vya Kubuni

Vidokezo vya Kubuni
Vidokezo vya Kubuni
Vidokezo vya Kubuni
Vidokezo vya Kubuni
Vidokezo vya Kubuni
Vidokezo vya Kubuni
Vidokezo vya Kubuni
Vidokezo vya Kubuni

Morse ni ngumu kuamua mbele ya ishara zinazoingilia. Ishara zisizohitajika lazima zikataliwa… hii inahitaji aina fulani ya kichujio.

Kuna uwezekano mwingi:

  1. Vitanzi vilivyofungwa kwa awamu
  2. Vichungi vya inductor-capacitor
  3. Vichungi vya kazi vya Resistor-capacitor
  4. Usindikaji wa ishara ya dijiti kama vile Fast Fourier Transform, au kichujio cha Goertzel.

Njia 1, 2, 3 zinahitaji vifaa vya nje ambavyo ni kubwa.

Njia ya 4 haiitaji vifaa vya nje… masafa hugunduliwa kwa kutumia algorithms za kihesabu.

Mabadiliko ya Haraka ya Fourier (FFT)

Njia moja ya kugundua uwepo wa toni katika muundo tata wa wimbi ni kutumia Mabadiliko ya Nne ya Haraka

Picha 1 inaonyesha jinsi FFT (Fast Fourier Transform) inagawanya wigo wa sauti kuwa "mapipa".

Picha 2 inaonyesha jinsi "mapipa" ya FFT hujibu ishara … katika kesi hii 800Hz. Ikiwa ishara ya pili ya kusema 1500Hz ilikuwepo tungeona majibu mawili… moja kwa 800Hz na nyingine saa 1500Hz.

Kwa nadharia kisimbuzi cha msimbo wa morse kinaweza kufanywa kwa kufuatilia kiwango cha pato la bafu fulani ya masafa ya FFT… idadi kubwa inawakilisha uwepo wa nukta au dashi… idadi ndogo haionyeshi ishara yoyote.

Kiambatisho hicho cha msimbo wa morse kinaweza kutengenezwa kwa kufuatilia "bin 6" kwenye picha 2 lakini kuna mambo kadhaa mabaya kwa njia hii:

  • tunataka tu pipa moja ya masafa… mahesabu mengine yamepotea
  • mapipa ya masafa hayawezi kuonekana haswa kwenye masafa ya riba
  • ni polepole (20mS kwa kitanzi cha Arduino ()

Njia nyingine ni kutumia kichujio cha Goertzel.

Kichujio cha Goertzel

Kichujio cha Goertzel ni sawa na FFT lakini ina pipa moja tu la masafa.

Picha3 inaonyesha mwitikio wa masafa ya kichujio cha Goertzel kwa hatua tofauti za sauti.

Picha 4 ni kufagia kichujio sawa juu ya masafa sawa.

Niliamua "kwenda" na algorithm ya Goertzel kama:

  • Wakati wa kitanzi cha Arduino () kutumia algorithm ya Goertzel ilikuwa 14mS (milliseconds) dhidi ya 20mS (milliseconds) kwa suluhisho la FFT kwa kutumia maktaba ya Arduino "fix_FFT".
  • Ni rahisi kuweka masafa ya katikati ya kichungi cha bandwidth ya Goertzel.
  • Bandwidth ni takriban 190Hz.

Picha 5 inaonyesha pato la nambari kutoka kwa kichungi cha 900Hz Goertzel wakati sauti inagunduliwa. Nimeweka kizingiti changu cha sauti kuwa na thamani ya 4000… maadili juu ya 4000 yanaonyesha sauti.

Kwa nadharia unahitaji tu kurekebisha kichungi chako kwa masafa mazuri ya kusikiliza. Kwa bahati mbaya pato la sauti kutoka kwa spika yangu ya ufuatiliaji wa inchi 1 inashuka haraka chini ya 900Hz. Ili kuzuia maswala yoyote ninatumia kichungi cha masafa ya 950Hz. Njia muhimu za kuhesabu masafa ya vichungi mbadala hupatikana kwenye kichwa changu cha nambari.

Kuamua

Kuamua dots na dashes sio rahisi kama inavyoonekana kwanza.

Morse kamili hufafanuliwa kama:

  • nukta = 1 kitengo
  • nafasi ndani ya herufi = kitengo 1
  • dash = vitengo 3
  • nafasi kati ya herufi = vitengo 3
  • nafasi kati ya maneno = vitengo 7

Kuamua morse kamili tunahitaji tu muda wa toni ya kumbukumbu ya vitengo 2

  • nukta <2 vitengo
  • nafasi ya kipengele <2 vitengo
  • dash> vitengo 2
  • herufi _space> vitengo 2
  • neno_ nafasi> vitengo 6 (yaani vitengo 3 vya kumbukumbu)

Hii inafanya kazi kwa morse ya mashine lakini katika "ulimwengu wa kweli":

  • kasi ya kutuma inatofautiana
  • muda wa kila nukta hutofautiana
  • muda wa kila dash hutofautiana
  • herufi E, I, S, H, 5 zina vyenye nukta ambazo zina wastani wa muda wa nukta
  • herufi T, M, O, 0 zina tu dashi ambazo wastani wa muda wa dashi
  • mapungufu ya neno hayawezi kufika
  • kufifia kunaunda makosa ambayo dekoda lazima ipone.
  • ishara za rushwa kwa sababu ya kuingiliwa

Barua zilizo na dots tu na dashi hutatuliwa kidogo ikiwa:

tunakadiria muda wa rejeleo hadi tuwe tumepata nukta halali na dashi halali. Ninatumia milliseconds 200 ambayo ni halali ikiwa kasi ya kutuma iko kati ya 6 WPM (maneno kwa dakika) na 17 WPM. Unaweza kuhitaji kuongeza thamani hii ikiwa unajifunza morse. Jedwali la kasi linajumuishwa kwenye programu

Tofauti za kasi hutatuliwa ikiwa:

  • sisi hufanya wastani wa kusonga kwa kila nukta na kila dashi na
  • hesabu tena muda wa kumbukumbu baada ya kila ishara kupokelewa

Mapungufu ya maneno na mapengo ya maneno yasiyowasili hutatuliwa ikiwa sisi:

  • kumbuka wakati wa mwisho-mwisho (sauti hadi sauti-hakuna),
  • Anzisha tena algorithm baada ya kila herufi,
  • hesabu muda uliopitiliza wakati unasubiri mpangilio unaofuata wa kuongoza (hakuna-toni kwa toni) mpito na
  • ingiza nafasi ikiwa vitengo vya muda 6 vimezidi.

Morse Oscillator

Hapo awali nilijaribu buzzers kadhaa za Piezo lakini nikapata:

  • mzunguko ulirekebishwa
  • mzunguko wa pato ulikuwa juu sana kwa usikilizaji wa muda mrefu
  • piezos zilielekea kutoka nje ya kitambaa cha Goertzel

Kisha nikajaribu kuendesha transducer ya acoustic na wimbi la mraba la 750Hz lakini nikapata kuwa na resonance iliyochuja harmonics ya 1 na ya 3. Picha ya 6 inaonyesha kipato cha kipaza sauti kipaza sauti kwa wimbi la mraba la 750Hz… tunaona harmonic ya 5 !!!

Kisha nikaamua kutumia spika ndogo. Picha ya 7 inaonyesha kipato cha kipaza sauti kwa wimbi la mraba la 750Hz ambalo lilitumwa kwa spika ndogo… wakati huu tunaona msingi … sio sauti ya 5. Kichujio cha Goertzel hupuuza maagizo yoyote.

Vidokezo

[1]

en.wikipedia.org/wiki/Goertzel_algorithm

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

Hatua ya 5: Programu

Programu
Programu
Programu
Programu
Programu
Programu

Ufungaji

  • Pakua faili iliyoambatishwa MorseCodeDecoder.ino [1]
  • Nakili yaliyomo kwenye faili hii kwa mchoro mpya wa Arduino
  • Hifadhi mchoro kama "MorseCodeDecoder" (bila nukuu)
  • Kusanya na kupakia mchoro kwenye Arduino yako

Sasisho la Programu 23 Julai 2020

Vipengele vifuatavyo vimeongezwa kwenye faili iliyoambatishwa "MorseCodeDecoder6.ino"

  • dirisha la "Blackman halisi" [2]
  • "Kelele_blanker"

Marekebisho:

  • ongeza kiwango chako cha sauti ya mpokeaji mpaka LED itaanza kuzima kisha irudi nyuma
  • sasa tune mpokeaji wako mpaka LED iangaze kwa hatua na morse inayoingia
  • Kelele_blanker imewekwa kupuuza kelele zinazopiga hadi 8mS (wakati mmoja wa kitanzi)
  • kizingiti cha kelele kinaweza kubadilishwa kwa kuweka Debug = kweli na kutazama Mpangilio wako wa Siri

Kumbuka

[1]

Weka Monitor yako ya Serial ya Arduino kwa bauds 115200 ikiwa unataka pia kuona maandishi.

[2]

  • Picha 1… Dirisha halisi la Blackman
  • Picha 2… Kichujio cha Goertzel bila dirisha halisi la Blackman
  • Picha 3,,, Kichujio cha Goertzel na Dirisha halisi la Blackman limetumika

Hatua ya 6: Operesheni

Decoder

Weka kitengo karibu na spika yako wakati wa kusikiliza morse.

  • Kidonge cha kipaza sauti cha electret huchukua ishara ya morse kutoka kwa spika yako.
  • Pato la kipaza sauti cha electret kisha huongezwa mara 647 (56dB) kabla ya kupitishwa kwa Arduino kwa usindikaji.
  • Kichujio cha kupita cha dijiti ya Goertzel inachukua ishara ya morse kutoka kwa kelele.
  • Kuamua hufanywa kwa kutumia mti wa binary.
  • Pato la kisimbuzi linaonyeshwa kama maandishi kwenye onyesho la TFT la pikseli 320 x 240. Inatumwa pia kwa Arduino "Serial Monitor" yako ikiwa hutaki kutumia onyesho.

Mtumaji wa Morse

Mtumaji wa morse pia amejumuishwa. Hii hukuruhusu kufanya mazoezi ya kutuma morse na inafanya kazi kama ifuatavyo:

  • Sauti inayosikika mara kwa mara hutengenezwa kwenye pini ya Arduino 4.
  • Tunasikia toni hii kupitia spika-sauti ya kisimbuzi kila tunapobofya kitufe cha morse.
  • Sauti imewekwa kwa masafa sawa na kichujio cha Goertzel ambacho kinapumbaza kisimbuzi kufikiria usikilizaji wake kwa morse halisi … chochote utakachotuma kitaonekana kama maandishi yaliyochapishwa kwenye onyesho.

Utumaji wako utaboresha kadikodi inapochukua makosa ya kawaida kama vile:

  • nafasi nyingi kati ya alama. (mfano: Q iliyochorwa kama MA)
  • nafasi nyingi kati ya herufi (mfano: SASA imechapishwa kama NO W)
  • nambari isiyo sahihi

Hatua ya 7: Muhtasari

Decoder

Hii inaelezewa inaelezea jinsi ya kutengeneza kificho cha morse ambacho hubadilisha msimbo wa morse kuwa maandishi yaliyochapishwa.

  • Decoder inauwezo wa kuchambua morse hadi angalau WPM 80 (maneno kwa dakika)
  • Decoder hufuata kiatomati tofauti katika kasi ya kutuma iliyopokelewa.
  • Maandishi yanaonyeshwa kwenye Serial Monitor yako (au kwenye moduli ya kuonyesha ya 320 x 240 TFT ikiwa imewekwa) [1]

Mtumaji

Mtumaji wa morse pia amejumuishwa

  • Mtumaji husaidia kuboresha ubora wa utumaji wako wa morse.
  • Decoder inathibitisha kuwa kile ulichotuma ni sahihi

Gharama ya sehemu

Gharama inayokadiriwa ya ngao ya decoder morse, chini ya onyesho la hiari la TFT, ni $ 25.

Bonyeza hapa kuona maelekezo yangu mengine.

Changamoto ya Sauti 2020
Changamoto ya Sauti 2020
Changamoto ya Sauti 2020
Changamoto ya Sauti 2020

Tuzo ya pili katika Shindano la Sauti 2020

Ilipendekeza: