Πίνακας περιεχομένων:

Binary Tree Morse αποκωδικοποιητής: 7 βήματα (με εικόνες)
Binary Tree Morse αποκωδικοποιητής: 7 βήματα (με εικόνες)

Βίντεο: Binary Tree Morse αποκωδικοποιητής: 7 βήματα (με εικόνες)

Βίντεο: Binary Tree Morse αποκωδικοποιητής: 7 βήματα (με εικόνες)
Βίντεο: Morse code and binary trees - Inside code 2024, Νοέμβριος
Anonim
Image
Image
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος

Αυτό το οδηγό εξηγεί πώς να αποκωδικοποιήσετε τον κώδικα Morse χρησιμοποιώντας ένα Arduino Uno R3.

Ο αποκωδικοποιητής, ο οποίος προσαρμόζεται αυτόματα στην ταχύτητα αποστολής, είναι ικανός να αποκωδικοποιεί το morse έως και τουλάχιστον 80 λέξεις το λεπτό.

Ο εισερχόμενος κωδικός εμφανίζεται ως κείμενο στην σειριακή οθόνη Arduino (ή στην οθόνη TFT εάν υπάρχει)

Ένας ταλαντωτής τόνου έχει συμπεριληφθεί εάν επιθυμείτε να εξασκηθείτε στην αποστολή morse.

Ο αποκωδικοποιητής διαθέτει:

  • μονάδα οθόνης 320 x 240 TFT [1]
  • ένα ψηφιακό φίλτρο ζώνης Goertzel για τον διαχωρισμό ανεπιθύμητων σημάτων.
  • ένα "Binary Morse Tree" για αποκωδικοποίηση του σήματος
  • αυτόματη παρακολούθηση ταχύτητας
  • μια ηχητική έξοδο κατά την άσκηση του morse
  • εμφανίζονται τόσο το εισερχόμενο όσο και το εξερχόμενο κείμενο.

Οι ακόλουθοι χαρακτήρες και σύμβολα αναγνωρίζονται:

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

Το εκτιμώμενο κόστος της ασπίδας αποκωδικοποιητή morse, μείον την οθόνη TFT, είναι $ 25. [1]

Εικόνες

  • Η φωτογραφία εξωφύλλου δείχνει μια πλήρως συναρμολογημένη μονάδα
  • Το βίντεο δείχνει τον αποκωδικοποιητή να λειτουργεί

Σημειώσεις

[1]

  • Η μονάδα οθόνης TFT είναι προαιρετική, καθώς όλο το κείμενο αποστέλλεται στο Arduino "Serial Monitor".
  • Η ενότητα TFT περιγράφεται στο διδακτικό μου

Βήμα 1: Λίστα μερών

Τα παρακάτω μέρη προέρχονται από τη διεύθυνση

1 μόνο πρωτότυπο ασπίδα για Arduino UNO R3, 2,54mm Pitch

Τα ακόλουθα μέρη αποκτήθηκαν τοπικά:

  • 1 μόνο LM358 dual opamp
  • 1 μόνο πράσινο LED
  • 1 μόνο κλιπ LED
  • 1 μόνο ηλεκτρική κάψουλα μικροφώνου
  • 1 μόνο κανονικά ανοιχτό κουμπί
  • 1 μόνο υποδοχή DIP 8 ακίδων
  • 2 μόνο αντιστάσεις 330 ohm
  • 2 μόνο αντιστάσεις 2K2
  • 5 μόνο 10K ohm αντιστάσεις
  • 2 μόνο αντιστάσεις 56K ohm
  • 2 μόνο πυκνωτής 1uF
  • 1 μόνο πυκνωτής 10uF

Τα παρακάτω μέρη είναι προαιρετικά:

  • 1 μόνο μονάδα οθόνης 2,2 ιντσών TFT SPI LCD 240*320 ILI9341 με υποδοχή κάρτας SD για Arduino Raspberry Pi 51/AVR/STM32/ARM/PIC [1]
  • Πλήκτρο Morse / κουμπί
  • 1 μόνο τρανζίστορ BC548 NPN
  • 1 ηχείο μόνο 1 ίντσας
  • 1 μόνο αντίσταση 33K ohm
  • 1 μόνο μονό βύσμα 3,5 mm (για κλειδί Morse)
  • 1 μονή πρίζα 3,5 χιλιοστών (για κλειδί Morse)
  • 3 νάιλον αποστάτες M3 μόνο 9 mm
  • 1 μόνο πλαστικό κουτί ABS 130 x 68 x 44mm
  • 5 μόνο συνδετήρες 2 ακίδων δεξιάς γωνίας

Το εκτιμώμενο κόστος της θωράκισης αποκωδικοποιητή morse, μείον την προαιρετική οθόνη TFT, είναι $ 25. [1]

Σημειώσεις

[1]

Η λίστα εξαρτημάτων για την προαιρετική μονάδα οθόνης 320 x 240 TFT παρατίθεται στο διδακτικό μου

[2]

Εάν επιθυμείτε να χρησιμοποιήσετε τον αποστολέα, απαιτείται ένα πλήκτρο Morse ή ένα ανθεκτικό κουμπί.

Βήμα 2: Διάγραμμα κυκλώματος

Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος
Διάγραμμα κυκλώματος

Εικόνες

Η φωτογραφία 1 δείχνει το διάγραμμα κυκλώματος για τον αποκωδικοποιητή morse. Η αντίσταση 330 ohm σε σειρά με το πλήκτρο morse περιορίζει το ρεύμα εξόδου D4 σε περίπτωση τυχαίας βραχυκύκλωσης στη γείωση… η αύξηση της τιμής του μειώνει την έξοδο ήχου από το ηχείο. Για αυτόν τον λόγο δεν το έχω προσθέσει στην ασπίδα αλλά το έχω συνδέσει απευθείας στην υποδοχή του κουμπιού με φορτίο για ευκολία προσαρμογής

Η φωτογραφία 2 δείχνει μια αντίστοιχη ασπίδα. Η ασπίδα είναι από το διδακτικό μου https://www.instructables.com/id/Arduino-TFT-Grap… στο οποίο έχω προσθέσει τον ενισχυτή μικροφώνου και τον ταλαντωτή τόνου. [1]

Η φωτογραφία 3 δείχνει την ολοκληρωμένη ασπίδα προσαρτημένη σε ένα Arduino. Για την προβολή του κειμένου στο "Serial Monitor" του Arduino δεν απαιτούνται άλλα στοιχεία

Η φωτογραφία 4 δείχνει τον αποκωδικοποιητή μερικώς κλεισμένο. Έχει κοπεί μια τρύπα στο καπάκι για προβολή της οθόνης. Το ηχείο και το μικρόφωνο έχουν κολλήσει θερμά στη θήκη. Ανοίξτε μερικές οπές ηχείων στο καπάκι πριν τοποθετήσετε το ηχείο. Η κεντρική πρίζα στο καπάκι είναι για μικρόφωνο επέκτασης … χωρίς αυτό ο αποκωδικοποιητής πρέπει να τοποθετηθεί κοντά στο ηχείο, κάτι που δεν είναι πάντα δυνατό

Η φωτογραφία 5 δείχνει την οθόνη TFT. Μαύρη ηλεκτρική ταινία έχει προσαρτηθεί στις άκρες της οθόνης… αυτή η ταινία αποτρέπει τη διαρροή φωτός και καλύπτει τυχόν εσφαλμένη ευθυγράμμιση μεταξύ της οθόνης και του ανοίγματος στο καπάκι

Σπουδαίος

[1]

Τα Arduinos με μεγάλη υποδοχή USB απαιτούν ένα στρώμα ηλεκτρικής ταινίας μεταξύ της υποδοχής USB και της ασπίδας Arduino. Τυχαία σορτς είναι δυνατά χωρίς την ταινία καθώς η απόσταση είναι μικρή. Η κασέτα δεν απαιτείται για Arduinos που έχουν μικρούς συνδετήρες

Βήμα 3: Θεωρία

Θεωρία
Θεωρία
Θεωρία
Θεωρία
Θεωρία
Θεωρία

Κάθε κωδικό γράμμα Morse περιλαμβάνει μια σειρά από τόνους μικρής και μεγάλης διάρκειας που ονομάζονται "κουκκίδες" και "παύλες".

  • μια τελεία (.) έχει μήκος 1 μονάδα
  • μια παύλα (_) έχει μήκος 3 μονάδες
  • ο χώρος μεταξύ των στοιχείων γραμμάτων είναι 1 μονάδα
  • το διάστημα μεταξύ γραμμάτων είναι 3 μονάδες
  • το διάστημα μεταξύ των λέξεων είναι 7 μονάδες

Μπορούμε να καθορίσουμε αν ο εισερχόμενος τόνος είναι κουκκίδα ή παύλα συγκρίνοντας τη διάρκειά του με έναν τόνο αναφοράς 2 μονάδων σε μήκος.

  • μια τελεία είναι μικρότερη από 2 μονάδες
  • μια παύλα είναι μεγαλύτερη από 2 μονάδες

Υπάρχουν δύο σαφώς διαφορετικές μέθοδοι για την αποκωδικοποίηση του εισερχόμενου μοτίβου των κουκκίδων και των παύλων:

  • γραμμική αναζήτηση
  • δυαδικό δέντρο (γνωστό και ως διχοτομική αναζήτηση)

Γραμμική αναζήτηση

Μια κοινή μέθοδος είναι η δημιουργία μιας σειράς χαρακτήρων και τα αντίστοιχα μοτίβα μορς τους. Για παράδειγμα, κάθε ένας από τους παρακάτω χαρακτήρες θα αποθηκευτεί ως:

  • ΕΝΑ. _
  • Β _. Το Το
  • Γ _. _.
  • 0 _ _ _ _ _
  • 1. _ _ _ _
  • 2.. _ _ _

Κάθε γράμμα απαιτεί 6 κελιά… 1 για το ίδιο το γράμμα και 5 για τα (.) Και (_). Για να γίνει αυτό χρειαζόμαστε έναν πίνακα χαρακτήρων γράμματα [36] [6] με συνολικά 216 κελιά. Τα αχρησιμοποίητα κελιά κανονικά γεμίζουν με μηδέν ή κενό.

Για να αποκωδικοποιήσουμε τις εισερχόμενες τελείες και παύλες πρέπει να συγκρίνουμε το μοτίβο κουκκίδας/παύλας κάθε εισερχόμενου γράμματος με τα μοτίβα χαρακτήρων αναφοράς.

Ενώ αυτή η μέθοδος λειτουργεί, είναι εξαιρετικά αργή.

Ας πούμε ότι έχουμε 26 γράμματα ('A',.. 'Z') και τα ψηφία ('0',… '9') αποθηκευμένα σε έναν πίνακα, τότε πρέπει να πραγματοποιήσουμε 36 αναζητήσεις, έκαστη με έως και 5 υπο-αναζητήσεις, που είναι συνολικά 36*5 = 180 αναζητήσεις για αποκωδικοποίηση του αριθμού '9'.

Δυαδικό Δέντρο

Μια δυαδική αναζήτηση είναι πολύ πιο γρήγορη καθώς δεν απαιτούνται αναζητήσεις.

Σε αντίθεση με τη γραμμική αναζήτηση, η οποία απαιτεί την αποθήκευση τόσο των χαρακτήρων όσο και των μορφών morse, το δυαδικό δέντρο αποθηκεύει μόνο τους χαρακτήρες, πράγμα που σημαίνει ότι το μέγεθος του πίνακα είναι μικρότερο.

Έχω χωρίσει το δυαδικό μου δέντρο (φωτογραφία 1) σε δύο μισά (φωτογραφίες 2 και 3) για να είναι πιο ευανάγνωστο.

Για να βρούμε έναν χαρακτήρα μετακινούμε έναν δείκτη αριστερά κάθε φορά που ακούμε μια τελεία και μετακινούμε τον δείκτη δεξιά κάθε φορά που ακούμε μια παύλα. Μετά από κάθε κίνηση μειώνουμε στο μισό την απόσταση του δείκτη για την επόμενη κίνηση … εξ ου και το όνομα δυαδικό δέντρο.

Για να αποκωδικοποιήσετε το γράμμα «9» (παύλα, παύλα, παύλα, παύλες, τελείες) απαιτούνται 5 κινήσεις … 4 προς τα δεξιά και 1 προς τα αριστερά που αφήνει τον δείκτη απευθείας πάνω από το «9».

Πέντε κινήσεις είναι σημαντικά ταχύτερες από 180 αναζητήσεις !!!!!

Ο δυαδικός πίνακας χαρακτήρων είναι επίσης μικρότερος … 26 γράμματα και 10 αριθμοί απαιτούν μόνο έναν πίνακα γραμμών 64 x 1. Επέλεξα να δημιουργήσω έναν πίνακα 128 χαρακτήρων ώστε να μπορώ να αποκωδικοποιήσω τα σημεία στίξης.

Βήμα 4: Σημειώσεις σχεδίασης

Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού
Σημειώσεις σχεδιασμού

Το Morse είναι δύσκολο να αποκωδικοποιηθεί παρουσία παρεμβολών σημάτων. Τα ανεπιθύμητα σήματα πρέπει να απορριφθούν … αυτό απαιτεί κάποιο είδος φίλτρου.

Υπάρχουν πολλές δυνατότητες:

  1. Βρόχοι κλειδωμένοι σε φάση
  2. Φίλτρα επαγωγέα-πυκνωτή
  3. Ενεργά φίλτρα αντίστασης-πυκνωτή
  4. Processingηφιακή επεξεργασία σήματος όπως Fast Fourier Transform ή το φίλτρο Goertzel.

Οι μέθοδοι 1, 2, 3 απαιτούν εξωτερικά στοιχεία που είναι ογκώδη.

Η μέθοδος 4 δεν απαιτεί εξωτερικά στοιχεία… οι συχνότητες ανιχνεύονται χρησιμοποιώντας μαθηματικούς αλγόριθμους.

Fast Fourier Transform (FFT)

Μια μέθοδος ανίχνευσης της παρουσίας ενός τόνου σε μια σύνθετη κυματομορφή είναι η χρήση του Fast Fourier Transform

Η φωτογραφία 1 δείχνει πώς το FFT (Fast Fourier Transform) διαιρεί το φάσμα ήχου σε "κάδους".

Η φωτογραφία 2 δείχνει πώς οι "κάδοι" FFT ανταποκρίνονται σε ένα σήμα … στην περίπτωση αυτή 800Hz. Εάν υπήρχε ένα δεύτερο σήμα ας πούμε 1500Hz, θα βλέπαμε δύο αποκρίσεις … μία στα 800Hz και μια άλλη στα 1500Hz.

Θεωρητικά μπορεί να γίνει αποκωδικοποιητής κώδικα morse παρακολουθώντας το επίπεδο εξόδου ενός συγκεκριμένου κάδου συχνότητας FFT … ένας μεγάλος αριθμός αντιπροσωπεύει την παρουσία μιας κουκκίδας ή παύλας … ένας μικρός αριθμός δεν αντιπροσωπεύει κανένα σήμα.

Ένας τέτοιος αποκωδικοποιητής κώδικα morse θα μπορούσε να γίνει με την παρακολούθηση του "bin 6" στη φωτογραφία 2, αλλά υπάρχουν πολλά λάθος με αυτήν την προσέγγιση:

  • θέλουμε μόνο έναν κάδο συχνοτήτων… οι υπόλοιποι είναι χαμένοι υπολογισμοί
  • οι κάδοι συχνοτήτων μπορεί να μην εμφανίζονται ακριβώς στη συχνότητα ενδιαφέροντος
  • είναι σχετικά αργό (20mS ανά βρόχο Arduino ()

Μια άλλη μέθοδος είναι η χρήση φίλτρου Goertzel.

Φίλτρο Goertzel

Το φίλτρο Goertzel είναι παρόμοιο με το FFT αλλά έχει μόνο έναν κάδο συχνοτήτων.

Η φωτογραφία 3 δείχνει την απόκριση συχνότητας ενός φίλτρου Goertzel σε διακριτά βήματα ήχου.

Η φωτογραφία 4 είναι μια σάρωση του ίδιου φίλτρου στο ίδιο εύρος συχνοτήτων.

Αποφάσισα να "πάω" με τον αλγόριθμο Goertzel ως:

  • Ο χρόνος του βρόχου Arduino () χρησιμοποιώντας τον αλγόριθμο Goertzel ήταν 14mS (χιλιοστά του δευτερολέπτου) έναντι 20mS (χιλιοστά του δευτερολέπτου) για μια λύση FFT χρησιμοποιώντας τη βιβλιοθήκη Arduino «fix_FFT».
  • Είναι εύκολο να ορίσετε την κεντρική συχνότητα ενός φίλτρου ζώνης Goertzel.
  • Το εύρος ζώνης είναι περίπου 190Hz.

Η φωτογραφία 5 δείχνει την αριθμητική έξοδο από ένα φίλτρο Goertzel 900Hz όταν ανιχνεύεται ένας τόνος. Έχω ορίσει το όριο τόνου σε μια τιμή 4000 … οι τιμές πάνω από 4000 υποδεικνύουν έναν τόνο.

Θεωρητικά, απλώς πρέπει να ρυθμίσετε το φίλτρο σας σε μια άνετη συχνότητα ακρόασης. Δυστυχώς, η έξοδος ήχου από το ηχείο παρακολούθησης 1 ιντσών μου πέφτει γρήγορα κάτω από τα 900Hz. Για να αποφύγω τυχόν προβλήματα, χρησιμοποιώ συχνότητα φίλτρου 950Hz. Οι απαιτούμενοι τύποι για τον υπολογισμό εναλλακτικών συχνοτήτων φίλτρου βρίσκονται στην κεφαλίδα του κώδικα μου.

Αποκρυπτογράφηση

Η αποκωδικοποίηση των κουκκίδων και των παύλων δεν είναι τόσο εύκολη όσο φαίνεται στην αρχή.

Το τέλειο morse ορίζεται ως:

  • κουκκίδα = 1 μονάδα
  • κενά στο γράμμα = 1 μονάδα
  • παύλα = 3 μονάδες
  • διάστημα μεταξύ γραμμάτων = 3 μονάδες
  • διάστημα μεταξύ λέξεων = 7 μονάδες

Για να αποκωδικοποιήσουμε το τέλειο morse χρειαζόμαστε απλώς μια διάρκεια τόνου αναφοράς 2 μονάδων

  • κουκκίδα <2 μονάδες
  • χώρος στοιχείων <2 μονάδες
  • παύλα> 2 μονάδες
  • γράμμα _space> 2 μονάδες
  • word_space> 6 μονάδες (δηλαδή 3 x μονάδες αναφοράς)

Αυτό λειτουργεί για το μηχανικό φορμάκι αλλά στον "πραγματικό κόσμο":

  • η ταχύτητα αποστολής ποικίλλει
  • η διάρκεια κάθε κουκκίδας ποικίλλει
  • η διάρκεια κάθε παύλας ποικίλλει
  • Τα γράμματα E, I, S, H, 5 περιέχουν μόνο κουκκίδες που είναι κατά μέσο όρο στη διάρκεια της κουκκίδας
  • τα γράμματα T, M, O, 0 περιέχουν μόνο παύλες που είναι κατά μέσο όρο στη διάρκεια της παύλας
  • τα κενά λέξεων μπορεί να μην φτάσουν
  • το ξεθώριασμα δημιουργεί σφάλματα από τα οποία ο αποκωδικοποιητής πρέπει να ανακτήσει.
  • διεφθαρμένα σήματα λόγω παρεμβολών

Τα γράμματα που περιέχουν μόνο τελείες και παύλες λύνονται εν μέρει εάν:

υπολογίζουμε τη διάρκεια αναφοράς μέχρι να λάβουμε μια έγκυρη τελεία και μια έγκυρη παύλα. Χρησιμοποιώ 200 χιλιοστά του δευτερολέπτου που είναι έγκυρο εάν η ταχύτητα αποστολής είναι μεταξύ 6 WPM (λέξεις ανά λεπτό) και 17 WPM. Areσως χρειαστεί να αυξήσετε αυτήν την τιμή εάν μαθαίνετε morse. Στο λογισμικό περιλαμβάνεται ένας πίνακας ταχύτητας

Οι παραλλαγές ταχύτητας λύνονται εάν:

  • εκτελούμε έναν κυλιόμενο μέσο όρο σε κάθε τελεία και κάθε παύλα και
  • επανυπολογίστε τη διάρκεια αναφοράς μετά τη λήψη κάθε συμβόλου

Τα κενά λέξεων και τα κενά λέξεων δεν φτάνουν λύνονται εάν:

  • θυμηθείτε την ώρα της τελευταίας μετάβασης (ήχου σε χωρίς τόνο),
  • επανεκκίνηση του αλγορίθμου μετά από κάθε γράμμα,
  • υπολογίστε τον χρόνο που έχει παρέλθει ενώ περιμένετε την επόμενη μετάβαση στην πρώτη γραμμή (χωρίς τόνο σε τόνο) και
  • εισαγάγετε ένα διάστημα εάν έχουν γίνει υπέρβαση 6 χρονικών μονάδων.

Morse Oscillator

Αρχικά δοκίμασα μερικούς βομβητές Piezo αλλά βρήκα:

  • η συχνότητα ήταν σταθερή
  • η συχνότητα εξόδου ήταν πολύ υψηλή για παρατεταμένη ακρόαση
  • οι πίεζοι έτειναν να ξεφεύγουν από τη ζώνη διέλευσης Goertzel

Στη συνέχεια προσπάθησα να οδηγήσω έναν ακουστικό μετατροπέα με τετραγωνικό κύμα 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"

  • ένα παράθυρο "Exact Blackman" [2]
  • ένα "Noise_blanker"

Προσαρμογή:

  • αυξήστε το επίπεδο ήχου του δέκτη σας έως ότου αρχίσει να αναβοσβήνει η λυχνία LED και μετά απενεργοποιήστε την
  • τώρα συντονίστε τον δέκτη σας έως ότου η λυχνία LED αναβοσβήνει σταδιακά με το εισερχόμενο φορτίο
  • το Noise_blanker έχει ρυθμιστεί να αγνοεί τις εκρήξεις θορύβου έως και 8mS (ένας χρόνος βρόχου)
  • το όριο θορύβου μπορεί να ρυθμιστεί ρυθμίζοντας το Debug = true και παρακολουθώντας το Serial Plotter σας

Σημείωση

[1]

Ρυθμίστε το Arduino Serial Monitor σας σε 115200 bauds αν θέλετε να δείτε και εσείς το κείμενο.

[2]

  • Φωτογραφία 1… Ακριβές παράθυρο Blackman
  • Φωτογραφία 2… Φίλτρο Goertzel χωρίς ακριβές παράθυρο Blackman
  • Φωτογραφία 3,,, φίλτρο Goertzel με το παράθυρο Exact Blackman που εφαρμόστηκε

Βήμα 6: Λειτουργία

Αποκρυπτογράφος

Τοποθετήστε τη μονάδα δίπλα στο ηχείο σας όταν ακούτε morse.

  • Η κάψουλα ηλεκτρικού μικροφώνου λαμβάνει το σήμα του Morse από το ηχείο σας.
  • Στη συνέχεια, η έξοδος του ηλεκτρικού μικροφώνου ενισχύεται 647 φορές (56dB) πριν περάσει στο Arduino για επεξεργασία.
  • Ένα ψηφιακό φίλτρο ζώνης Goertzel εξάγει το σήμα Morse από το θόρυβο.
  • Η αποκωδικοποίηση γίνεται χρησιμοποιώντας ένα δυαδικό δέντρο.
  • Η έξοδος αποκωδικοποιητή εμφανίζεται ως κείμενο σε οθόνη TFT 320 x 240 pixel. Αποστέλλεται επίσης στο "Serial Monitor" του Arduino εάν δεν θέλετε να χρησιμοποιήσετε οθόνη.

Αποστολέας Μορς

Έχει συμπεριληφθεί και αποστολέας Morse. Αυτό σας επιτρέπει να εξασκηθείτε στην αποστολή morse και λειτουργεί ως εξής:

  • Ένας σταθερός ηχητικός τόνος δημιουργείται στο pin 4 του Arduino.
  • Ακούμε αυτόν τον τόνο μέσω του ηχείου του αποκωδικοποιητή κάθε φορά που πατάμε το πλήκτρο morse.
  • Ο τόνος ρυθμίζεται στην ίδια συχνότητα με το φίλτρο Goertzel, το οποίο ξεγελά τον αποκωδικοποιητή να σκεφτεί ότι ακούει πραγματικό morse… ό, τι στέλνετε θα εμφανίζεται ως τυπωμένο κείμενο στην οθόνη.

Η αποστολή σας θα βελτιωθεί καθώς ο αποκωδικοποιητής λαμβάνει κοινά σφάλματα όπως:

  • πολύ χώρο μεταξύ συμβόλων. (παράδειγμα: Q σφραγισμένο ως MA)
  • πολύς χώρος μεταξύ γραμμάτων (παράδειγμα: ΤΩΡΑ εκτυπωμένο ως ΟΧΙ W)
  • Λάθος κωδικός

Βήμα 7: Περίληψη

Αποκρυπτογράφος

Αυτό το εκπαιδευτικό περιγράφει πώς να φτιάξετε έναν αποκωδικοποιητή morse που μετατρέπει τον κώδικα morse σε τυπωμένο κείμενο.

  • Ο αποκωδικοποιητής μπορεί να αποκωδικοποιήσει το morse έως και τουλάχιστον 80 WPM (λέξεις ανά λεπτό)
  • Ο αποκωδικοποιητής παρακολουθεί αυτόματα τις παραλλαγές της λαμβανόμενης ταχύτητας αποστολής.
  • Το κείμενο εμφανίζεται στη σειριακή οθόνη σας (ή σε μονάδα οθόνης 320 x 240 TFT εάν υπάρχει) [1]

Αποστολέας

Έχει συμπεριληφθεί και αποστολέας Morse

  • Ο αποστολέας σας βοηθά να βελτιώσετε την ποιότητα της αποστολής του morse σας.
  • Ο αποκωδικοποιητής επιβεβαιώνει ότι αυτό που έχετε στείλει είναι σωστό

Κόστος ανταλλακτικών

Το εκτιμώμενο κόστος της θωράκισης αποκωδικοποιητή morse, μείον την προαιρετική οθόνη TFT, είναι $ 25.

Κάντε κλικ εδώ για να δείτε τις άλλες οδηγίες μου.

Πρόκληση ήχου 2020
Πρόκληση ήχου 2020
Πρόκληση ήχου 2020
Πρόκληση ήχου 2020

Δεύτερο Βραβείο στο Audio Challenge 2020

Συνιστάται: