สารบัญ:
- ขั้นตอนที่ 1: รายการชิ้นส่วน
- ขั้นตอนที่ 2: แผนภาพวงจร
- ขั้นตอนที่ 3: ทฤษฎี
- ขั้นตอนที่ 4: บันทึกการออกแบบ
- ขั้นตอนที่ 5: ซอฟต์แวร์
- ขั้นตอนที่ 6: การทำงาน
- ขั้นตอนที่ 7: สรุป
วีดีโอ: ตัวถอดรหัสไบนารีทรีมอร์ส: 7 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
คำแนะนำนี้จะอธิบายวิธีถอดรหัสรหัสมอร์สโดยใช้ Arduino Uno R3
ตัวถอดรหัสซึ่งปรับตามความเร็วในการส่งโดยอัตโนมัติ สามารถถอดรหัสมอร์สได้อย่างน้อย 80 คำต่อนาที
รหัสขาเข้าจะแสดงเป็นข้อความบน Arduino Serial Monitor ของคุณ (หรือหน้าจอ TFT หากติดตั้งไว้)
มีการรวมโทนออสซิลเลเตอร์หากคุณต้องการฝึกส่งมอร์ส
คุณสมบัติของตัวถอดรหัส:
- โมดูลแสดงผล 320 x 240 TFT [1]
- ตัวกรองแบนด์พาสแบบดิจิตอล Goertzel สำหรับแยกสัญญาณที่ไม่ต้องการ
- “ต้นไม้ไบนารี่มอร์ส” สำหรับถอดรหัสสัญญาณ
- ติดตามความเร็วอัตโนมัติ
- เอาต์พุตเสียงเมื่อฝึกมอร์ส
- แสดงข้อความทั้งขาเข้าและขาออก
อักขระและสัญลักษณ์ต่อไปนี้ได้รับการยอมรับ:
- [A.. Z]
- [0..9]
- [., ? ' ! / () &:; = + - _ " @]
ค่าใช้จ่ายโดยประมาณของตัวถอดรหัสมอร์สซึ่งน้อยกว่าจอแสดงผล TFT คือ 25 เหรียญ [1]
รูปภาพ
- ภาพหน้าปกแสดงให้เห็นหน่วยที่ประกอบอย่างเต็มที่
- วิดีโอแสดงการทำงานของตัวถอดรหัส
หมายเหตุ
[1]
- โมดูลแสดงผล TFT เป็นทางเลือก เนื่องจากข้อความทั้งหมดจะถูกส่งไปยัง Arduino “Serial Monitor” ของคุณ
- โมดูล TFT อธิบายไว้ในคำสั่งของฉัน
ขั้นตอนที่ 1: รายการชิ้นส่วน
ส่วนต่อไปนี้ได้มาจากhttps://www.aliexpress.com/
1 ตัวต้นแบบเท่านั้นสำหรับ Arduino UNO R3, 2.54mm Pitch
ได้รับชิ้นส่วนต่อไปนี้ในท้องถิ่น:
- 1 เท่านั้น LM358 dual opamp
- 1 เท่านั้น LED สีเขียว
- 1 เท่านั้น LED คลิป
- 1 แคปซูลไมโครโฟนอิเล็กเตรตเท่านั้น
- 1 เฉพาะปุ่มกดเปิดตามปกติ
- 1 ซ็อกเก็ต DIP 8 พินเท่านั้น
- ตัวต้านทาน 330 โอห์ม 2 ตัวเท่านั้น
- 2 ตัวต้านทาน 2K2 เท่านั้น
- 5 ตัวต้านทาน 10K โอห์มเท่านั้น
- ตัวต้านทาน 56K โอห์ม 2 ตัวเท่านั้น
- 2 เพียง 1uF ตัวเก็บประจุ
- 1 เพียง 10uF ตัวเก็บประจุ
ส่วนต่อไปนี้เป็นตัวเลือก:
- 1 เพียง 2.2 นิ้ว TFT SPI โมดูลจอแสดงผล LCD 240*320 ILI9341 พร้อมช่องเสียบการ์ด SD สำหรับ Arduino Raspberry Pi 51/AVR/STM32/ARM/PIC [1]
- ปุ่มมอร์ส / ปุ่มกด
- 1 เท่านั้น BC548 NPN ทรานซิสเตอร์
- 1 เพียง 1 นิ้วลำโพง
- 1 ตัวต้านทาน 33K โอห์มเท่านั้น
- 1 ปลั๊กโมโน 3.5 มม. เท่านั้น (สำหรับคีย์มอร์ส)
- 1 ซ็อกเก็ตโมโน 3.5 มม. เท่านั้น (สำหรับคีย์มอร์ส)
- 3 เพียง 9 มม. M3 สเปเซอร์ไนลอนต๊าปเกลียว
- 1 กล่องพลาสติก ABS ขนาด 130 x 68 x 44 มม. เท่านั้น
- ขั้วต่อมุมขวาแบบ 2 ขาเพียง 5 ตัว
ค่าใช้จ่ายโดยประมาณของตัวถอดรหัสมอร์สซึ่งน้อยกว่าจอแสดงผล TFT ที่เป็นอุปกรณ์เสริมคือ 25 เหรียญ [1]
หมายเหตุ
[1]
รายการชิ้นส่วนสำหรับโมดูลแสดงผล 320 x 240 TFT เสริมมีอยู่ในคำแนะนำของฉัน
[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: ทฤษฎี
ตัวอักษรรหัสมอร์สแต่ละตัวประกอบด้วยชุดของเสียงที่มีระยะเวลาสั้นและยาวที่เรียกว่า “จุด” และ “เส้นประ”
- จุด (.) มีความยาว 1 หน่วย
- เส้นประ (_) มีความยาว 3 หน่วย
- ช่องว่างระหว่างองค์ประกอบตัวอักษรคือ 1 หน่วย
- ช่องว่างระหว่างตัวอักษรคือ 3 หน่วย
- ช่องว่างระหว่างคำคือ 7 หน่วย
เราสามารถระบุได้ว่าโทนเสียงที่เข้ามาเป็นจุดหรือเส้นประโดยการเปรียบเทียบระยะเวลากับโทนเสียงอ้างอิงที่มีความยาว 2 หน่วย
- จุดน้อยกว่า 2 หน่วย
- เส้นประมากกว่า 2 หน่วย
มีสองวิธีที่แตกต่างกันอย่างชัดเจนในการถอดรหัสรูปแบบจุดและเส้นประที่เข้ามา:
- ค้นหาเชิงเส้น
- ต้นไม้ไบนารี (เรียกอีกอย่างว่าการค้นหาแบบ dichotomic)
ค้นหาเชิงเส้น
วิธีทั่วไปวิธีหนึ่งคือการสร้างอาร์เรย์ของอักขระและรูปแบบมอร์สที่ตรงกัน ตัวอย่างเช่น อักขระแต่ละตัวต่อไปนี้จะถูกบันทึกเป็น:
- NS. _
- NS _…
- ค _. _.
- 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 x 1 เท่านั้น ฉันเลือกสร้างอาร์เรย์ 128 อักขระเพื่อถอดรหัสเครื่องหมายวรรคตอน
ขั้นตอนที่ 4: บันทึกการออกแบบ
มอร์สถอดรหัสได้ยากเมื่อมีสัญญาณรบกวน สัญญาณที่ไม่ต้องการจะต้องถูกปฏิเสธ … ซึ่งต้องใช้ตัวกรองบางประเภท
มีความเป็นไปได้มากมาย:
- เฟสล็อกลูป
- ตัวเหนี่ยวนำ-ตัวเก็บประจุตัวกรอง
- ตัวต้านทาน-ตัวเก็บประจุที่ใช้งานตัวกรอง
- การประมวลผลสัญญาณดิจิตอล เช่น Fast Fourier Transform หรือตัวกรอง Goertzel
วิธีที่ 1, 2, 3 ต้องการส่วนประกอบภายนอกที่เทอะทะ
วิธีที่ 4 ไม่ต้องการส่วนประกอบภายนอก … ความถี่ถูกตรวจจับโดยใช้อัลกอริธึมทางคณิตศาสตร์
การแปลงฟูริเยร์อย่างรวดเร็ว (FFT)
วิธีหนึ่งในการตรวจจับการมีอยู่ของโทนเสียงในรูปคลื่นที่ซับซ้อนคือการใช้ Fast Fourier Transform
ภาพที่ 1 แสดงให้เห็นว่า FFT (Fast Fourier Transform) แบ่งสเปกตรัมเสียงออกเป็น “ถังขยะ” อย่างไร
ภาพที่ 2 แสดงให้เห็นว่า FFT “ถังขยะ” ตอบสนองต่อสัญญาณอย่างไร … ในกรณีนี้คือ 800Hz หากมีสัญญาณที่สองที่บอกว่า 1500Hz เราจะเห็นการตอบสนองสองครั้ง … หนึ่งครั้งที่ 800Hz และอีกสัญญาณหนึ่งที่ 1500Hz
ตามทฤษฎีแล้ว ตัวถอดรหัสรหัสมอร์สสามารถทำได้โดยการตรวจสอบระดับเอาต์พุตของช่องความถี่ FFT โดยเฉพาะ … จำนวนมากแสดงถึงการมีอยู่ของจุดหรือเส้นประ … ตัวเลขขนาดเล็กหมายถึงไม่มีสัญญาณ
ตัวถอดรหัสรหัสมอร์สดังกล่าวสามารถทำได้โดยการตรวจสอบ "bin 6" ในรูปภาพที่ 2 แต่วิธีนี้มีข้อผิดพลาดหลายประการ:
- เราต้องการเพียงหนึ่งช่องความถี่ … ส่วนที่เหลือเป็นการคำนวณที่สูญเปล่า
- ช่องความถี่อาจไม่ปรากฏบนความถี่ที่น่าสนใจอย่างแน่นอน
- มันค่อนข้างช้า (20mS ต่อ Arduino loop()
อีกวิธีหนึ่งคือการใช้ตัวกรอง Goertzel
ตัวกรอง Goertzel
ตัวกรอง Goertzel คล้ายกับ FFT แต่มีถังความถี่เดียว
ภาพที่ 3 แสดงการตอบสนองความถี่ของตัวกรอง Goertzel เพื่อแยกขั้นตอนเสียง
ภาพที่ 4 เป็นการกวาดตัวกรองเดียวกันในช่วงความถี่เดียวกัน
ฉันตัดสินใจ "ไป" ด้วยอัลกอริทึม Goertzel เป็น:
- เวลาวนรอบ Arduino () โดยใช้อัลกอริทึม Goertzel คือ 14mS (มิลลิวินาที) เทียบกับ 20mS (มิลลิวินาที) สำหรับโซลูชัน FFT โดยใช้ไลบรารี Arduino "fix_FFT"
- ตั้งค่าความถี่กลางของตัวกรองแบนด์พาส Goertzel ได้ง่าย
- แบนด์วิดธ์อยู่ที่ประมาณ 190Hz
ภาพที่ 5 แสดงเอาต์พุตตัวเลขจากตัวกรอง 900Hz Goertzel เมื่อตรวจพบเสียง ฉันได้ตั้งค่าเกณฑ์โทนเสียงของฉันเป็นค่า 4000 … ค่าที่สูงกว่า 4000 หมายถึงโทนเสียง
ตามทฤษฎีแล้ว คุณเพียงแค่ต้องปรับตัวกรองของคุณให้มีความถี่ในการฟังที่สบาย น่าเสียดายที่เอาต์พุตเสียงจากลำโพงมอนิเตอร์ขนาด 1 นิ้วของฉันลดลงอย่างรวดเร็วต่ำกว่า 900Hz เพื่อหลีกเลี่ยงปัญหาใด ๆ ฉันจึงใช้ความถี่ตัวกรอง 950Hz พบสูตรที่จำเป็นสำหรับการคำนวณความถี่ตัวกรองสำรองในส่วนหัวของโค้ด
ถอดรหัส
การถอดรหัสจุดและขีดกลางนั้นไม่ง่ายอย่างที่คิด
มอร์สที่สมบูรณ์แบบถูกกำหนดเป็น:
- จุด = 1 หน่วย
- ช่องว่างภายในตัวอักษร = 1 หน่วย
- dash = 3 หน่วย
- ช่องว่างระหว่างตัวอักษร = 3 หน่วย
- ช่องว่างระหว่างคำ = 7 หน่วย
ในการถอดรหัสมอร์สที่สมบูรณ์แบบ เราต้องการระยะเวลาเสียงอ้างอิง 2 หน่วย
- จุด < 2 หน่วย
- พื้นที่องค์ประกอบ < 2 หน่วย
- dash > 2 หน่วย
- ตัวอักษร _space > 2 หน่วย
- word_space > 6 หน่วย (เช่น 3 x หน่วยอ้างอิง)
ใช้งานได้กับเครื่องมอร์ส แต่ใน "โลกแห่งความเป็นจริง":
- ความเร็วในการส่งแตกต่างกันไป
- ระยะเวลาของแต่ละจุดแตกต่างกันไป
- ระยะเวลาของเส้นประแต่ละเส้นจะแตกต่างกันไป
- ตัวอักษร E, I, S, H, 5 มีเฉพาะจุดที่เฉลี่ยถึงระยะเวลาของจุด
- ตัวอักษร T, M, O, 0 มีเฉพาะขีดกลางซึ่งเฉลี่ยระยะเวลาของเส้นประ
- ช่องว่างของคำอาจไม่มาถึง
- การซีดจางทำให้เกิดข้อผิดพลาดซึ่งตัวถอดรหัสต้องกู้คืน
- สัญญาณเสียหายเนื่องจากการรบกวน
ตัวอักษรที่มีเฉพาะจุดและขีดกลางจะได้รับการแก้ไขบางส่วนหาก:
เราประเมินระยะเวลาอ้างอิงจนกว่าเราจะได้รับจุดที่ถูกต้องและเส้นประที่ถูกต้อง ฉันใช้ 200 มิลลิวินาทีซึ่งถูกต้องหากความเร็วในการส่งอยู่ระหว่าง 6 WPM (คำต่อนาที) ถึง 17 WPM คุณอาจต้องเพิ่มค่านี้หากคุณกำลังเรียนรู้มอร์ส ตารางความเร็วรวมอยู่ในซอฟต์แวร์
การเปลี่ยนแปลงความเร็วจะได้รับการแก้ไขหาก:
- เราทำค่าเฉลี่ยกลิ้งในแต่ละจุดและแต่ละเส้นประและ
- คำนวณระยะเวลาอ้างอิงใหม่หลังจากได้รับสัญลักษณ์แต่ละอัน
ช่องว่างของคำและช่องว่างของคำที่ไม่ถึงจะได้รับการแก้ไขหากเรา:
- จำเวลาของการเปลี่ยนขอบท้าย (โทนเป็นไม่มีโทน) ครั้งสุดท้าย
- รีสตาร์ทอัลกอริทึมหลังจากแต่ละตัวอักษร
- คำนวณเวลาที่ผ่านไปในขณะที่รอการเปลี่ยนแนวหน้าถัดไป (ไม่มีโทนเสียง) และ
- ใส่ช่องว่างถ้าเกิน 6 หน่วยเวลา
มอร์สออสซิลเลเตอร์
ตอนแรกฉันลองใช้ Piezo buzzers แต่พบว่า:
- ความถี่ได้รับการแก้ไข
- ความถี่เอาต์พุตสูงเกินไปสำหรับการฟังเป็นเวลานาน
- Piezos มักจะลอยออกจาก Goertzel passband
จากนั้นฉันก็ลองขับตัวแปลงสัญญาณอะคูสติกด้วยคลื่นสี่เหลี่ยม 750Hz แต่พบว่ามีเสียงสะท้อนที่กรองฮาร์โมนิกที่ 1 และ 3 ออก ภาพที่ 6 แสดงเอาต์พุตของเครื่องขยายเสียงไมโครโฟนเป็นคลื่นสี่เหลี่ยม 750Hz … เราเห็นฮาร์โมนิกที่ 5 !!!
จากนั้นฉันก็หันไปใช้ลำโพงขนาดเล็ก ภาพที่ 7 แสดงเอาต์พุตของไมโครโฟนเป็นคลื่นสี่เหลี่ยม 750Hz ที่ส่งไปยังลำโพงขนาดเล็ก … คราวนี้เราเห็นพื้นฐาน … ไม่ใช่ฮาร์มอนิกที่ 5 ตัวกรอง Goertzel ละเว้นฮาร์โมนิกใดๆ
หมายเหตุ
[1]
th.wikipedia.org/wiki/Goertzel_algorithm
www.embedded.com/the-goertzel-algorithm/
ขั้นตอนที่ 5: ซอฟต์แวร์
การติดตั้ง
- ดาวน์โหลดไฟล์แนบ MorseCodeDecoder.ino [1]
- คัดลอกเนื้อหาของไฟล์นี้ไปยังร่าง Arduino ใหม่
- บันทึกภาพร่างเป็น "MorseCodeDecoder" (ไม่มีเครื่องหมายคำพูด)
- รวบรวมและอัปโหลดภาพร่างไปยัง Arduino. ของคุณ
อัพเดตซอฟต์แวร์ 23 กรกฎาคม 2563
เพิ่มคุณสมบัติต่อไปนี้ในไฟล์แนบ "MorseCodeDecoder6.ino"
- หน้าต่าง "ที่แน่นอนแบล็คแมน" [2]
- "Noise_blanker"
การปรับ:
- เพิ่มระดับเสียงของเครื่องรับจนกว่าไฟ LED จะเริ่มกะพริบแล้วดับลง
- ตอนนี้ปรับเครื่องรับของคุณจนกว่า LED จะกะพริบตามขั้นตอนพร้อมกับมอร์สที่เข้ามา
- Noise_blanker ได้รับการตั้งค่าให้ละเว้นเสียงระเบิดสูงสุด 8mS (หนึ่งรอบ)
- เกณฑ์เสียงรบกวนสามารถปรับได้โดยการตั้งค่า Debug=true และดู Serial Plotter. ของคุณ
บันทึก
[1]
ตั้งค่า Arduino Serial Monitor ของคุณเป็น 115200 บอด หากคุณต้องการดูข้อความด้วย
[2]
- ภาพที่ 1 … หน้าต่าง Blackman ที่แน่นอน
- ภาพที่ 2 … ตัวกรอง Goertzel ที่ไม่มีหน้าต่าง Blackman ที่แน่นอน
- รูปภาพ 3,,, ตัวกรอง Goertzel พร้อมใช้หน้าต่าง Blackman ที่แน่นอน
ขั้นตอนที่ 6: การทำงาน
ตัวถอดรหัส
วางเครื่องไว้ข้างลำโพงของคุณเมื่อฟังมอร์ส
- แคปซูลไมโครโฟนอิเล็กเตรตรับสัญญาณมอร์สจากลำโพงของคุณ
- เอาต์พุตของไมโครโฟนอิเล็กเตรตจะถูกขยาย 647 ครั้ง (56dB) ก่อนที่จะถูกส่งไปยัง Arduino เพื่อประมวลผล
- ตัวกรองแบนด์พาสแบบดิจิตอลของ Goertzel จะแยกสัญญาณมอร์สออกจากสัญญาณรบกวน
- การถอดรหัสทำได้โดยใช้ไบนารีทรี
- เอาต์พุตตัวถอดรหัสจะแสดงเป็นข้อความบนจอแสดงผล TFT 320 x 240 พิกเซล นอกจากนี้ยังถูกส่งไปยัง Arduino “Serial Monitor” หากคุณไม่ต้องการใช้จอแสดงผล
ผู้ส่งมอร์ส
รวมผู้ส่งมอร์สด้วย ทำให้คุณสามารถฝึกส่งมอร์สและทำงานดังนี้:
- โทนเสียงที่ได้ยินคงที่ถูกสร้างขึ้นบนขา Arduino 4
- เราได้ยินเสียงนี้ผ่านลำโพงของตัวถอดรหัสทุกครั้งที่เรากดปุ่มมอร์ส
- โทนเสียงถูกตั้งค่าเป็นความถี่เดียวกับตัวกรอง Goertzel ซึ่งหลอกให้ตัวถอดรหัสคิดว่ามันฟังมอร์สจริง … สิ่งที่คุณส่งจะปรากฏเป็นข้อความที่พิมพ์บนจอแสดงผล
การส่งของคุณจะดีขึ้นเมื่อตัวถอดรหัสหยิบข้อผิดพลาดทั่วไป เช่น:
- ช่องว่างระหว่างสัญลักษณ์มากเกินไป (ตัวอย่าง: Q ถูกตรึงเป็น MA)
- ช่องว่างระหว่างตัวอักษรมากเกินไป (ตัวอย่าง: NOW พิมพ์ว่า NO W)
- รหัสไม่ถูกต้อง
ขั้นตอนที่ 7: สรุป
ตัวถอดรหัส
คำแนะนำนี้อธิบายวิธีการสร้างตัวถอดรหัสมอร์สที่แปลงรหัสมอร์สเป็นข้อความที่พิมพ์
- ตัวถอดรหัสสามารถถอดรหัสมอร์สได้อย่างน้อย 80 WPM (คำต่อนาที)
- ตัวถอดรหัสจะติดตามรูปแบบต่างๆ ของความเร็วในการส่งที่ได้รับโดยอัตโนมัติ
- ข้อความจะแสดงบน Serial Monitor ของคุณ (หรือบนโมดูลการแสดงผล 320 x 240 TFT หากติดตั้งไว้) [1]
ผู้ส่ง
รวมผู้ส่งมอร์สด้วย
- ผู้ส่งจะช่วยคุณปรับปรุงคุณภาพการส่งมอร์สของคุณ
- ตัวถอดรหัสยืนยันว่าสิ่งที่คุณส่งไปนั้นถูกต้อง
ค่าอะไหล่
ค่าใช้จ่ายโดยประมาณของตัวถอดรหัสมอร์สซึ่งน้อยกว่าจอแสดงผล TFT ที่เป็นอุปกรณ์เสริมคือ 25 เหรียญ
คลิกที่นี่เพื่อดูคำแนะนำอื่น ๆ ของฉัน
รางวัลรองชนะเลิศในการประกวด Audio Challenge 2020
แนะนำ:
DIY 37 Leds เกมรูเล็ต Arduino: 3 ขั้นตอน (พร้อมรูปภาพ)
DIY 37 Leds เกมรูเล็ต Arduino: รูเล็ตเป็นเกมคาสิโนที่ตั้งชื่อตามคำภาษาฝรั่งเศสหมายถึงวงล้อเล็ก
หมวกนิรภัย Covid ส่วนที่ 1: บทนำสู่ Tinkercad Circuits!: 20 ขั้นตอน (พร้อมรูปภาพ)
Covid Safety Helmet ตอนที่ 1: บทนำสู่ Tinkercad Circuits!: สวัสดีเพื่อน ๆ ในชุดสองตอนนี้ เราจะเรียนรู้วิธีใช้วงจรของ Tinkercad - เครื่องมือที่สนุก ทรงพลัง และให้ความรู้สำหรับการเรียนรู้เกี่ยวกับวิธีการทำงานของวงจร! หนึ่งในวิธีที่ดีที่สุดในการเรียนรู้คือการทำ ดังนั้น อันดับแรก เราจะออกแบบโครงการของเราเอง: th
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): 6 ขั้นตอน (พร้อมรูปภาพ)
Bolt - DIY Wireless Charging Night Clock (6 ขั้นตอน): การชาร์จแบบเหนี่ยวนำ (เรียกอีกอย่างว่าการชาร์จแบบไร้สายหรือการชาร์จแบบไร้สาย) เป็นการถ่ายโอนพลังงานแบบไร้สาย ใช้การเหนี่ยวนำแม่เหล็กไฟฟ้าเพื่อจ่ายกระแสไฟฟ้าให้กับอุปกรณ์พกพา แอปพลิเคชั่นที่พบบ่อยที่สุดคือ Qi Wireless Charging st
4 ขั้นตอน Digital Sequencer: 19 ขั้นตอน (พร้อมรูปภาพ)
4 ขั้นตอน Digital Sequencer: CPE 133, Cal Poly San Luis Obispo ผู้สร้างโปรเจ็กต์: Jayson Johnston และ Bjorn Nelson ในอุตสาหกรรมเพลงในปัจจุบัน ซึ่งเป็นหนึ่งใน “instruments” เป็นเครื่องสังเคราะห์เสียงดิจิตอล ดนตรีทุกประเภท ตั้งแต่ฮิปฮอป ป๊อป และอีฟ
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: 13 ขั้นตอน (พร้อมรูปภาพ)
ป้ายโฆษณาแบบพกพาราคาถูกเพียง 10 ขั้นตอน!!: ทำป้ายโฆษณาแบบพกพาราคาถูกด้วยตัวเอง ด้วยป้ายนี้ คุณสามารถแสดงข้อความหรือโลโก้ของคุณได้ทุกที่ทั่วทั้งเมือง คำแนะนำนี้เป็นการตอบสนองต่อ/ปรับปรุง/เปลี่ยนแปลงของ: https://www.instructables.com/id/Low-Cost-Illuminated-