กลับไปหน้ารวมไฟล์
morse-bug-keyer-e553ba.md

ชื่อโปรเจกต์: Morse \

Story:

เรื่องราวมันมีอยู่ว่า... เครื่องส่งรหัสมอร์สแบบออโต้เนี่ยมันมีหลายสไตล์นะน้อง ซึ่งเจ้าตัว "Bug" เนี่ยถือว่าเป็นแบบที่เบสิกที่สุดแล้ว ของจริงมันจะมีแป้นคันโยก (Paddle) ให้เราโยกซ้ายโยกขวาได้ ถ้าโยกไปทางหนึ่งมันจะรัวจุด (Dots) ออกมาเป็นชุด แต่ถ้าโยกไปอีกทางมันจะออกเป็นขีด (Dash) หนึ่งครั้งต่อการกดหนึ่งที ซึ่งวงจรและโค้ดที่พี่จัดให้เนี่ย คือการจำลองการทำงานของไอ้เจ้าอุปกรณ์ที่ว่านี้เลย จัดไปวัยรุ่น!

Hardware description:

Hardware ก็ไม่มีอะไรซับซ้อน มี Switch 2 ตัว กับ Piezo sounder (ลำโพงบัซเซอร์) อีกหนึ่งตัว

  • ตัว Switch เราจะต่อเข้ากับ Input 2 ช่อง แล้วเปิดใช้งาน Internal Pull-up ไว้ด้วยนะ เวลาเรากด Switch ปุ๊บ สัญญาณมันก็จะวิ่งลง GND ทันที ห้ามช็อตนะตัวนี้ เช็กสายดีๆ
  • ส่วนเจ้า Piezo ข้างหนึ่งก็ต่อลง GND อีกข้างก็ต่อเข้ากับ Pins PWM เพื่อรับสัญญาณเสียง (Drive Signal) ให้มันดังปี๊บๆ ตามจังหวะ

Software overview:

ในส่วนของ Software พี่ใช้เทคนิค Debounce เพื่อแก้ปัญหาสัญญาณสวิตช์กระเพื่อม โดยใช้ Timer Interrupt มาคอยเช็กสถานะ Switch เป็นระยะๆ ถ้ามันนิ่งพอถึงจะถือว่ามีการกดจริง

  • ใน Loop หลักของโค้ด (main line code) จะคอยเช็กว่าปุ่มไหนโดนกดบ้าง
  • ถ้าเป็นปุ่ม Dot มันจะสร้างจุดรัวๆ ออกมาตราบเท่าที่น้องยังกดค้างไว้
  • แต่ถ้าเป็นปุ่ม Dash มันจะสร้างขีดออกมาแค่ครั้งเดียวต่อการกดหนึ่งครั้ง

เราสามารถปรับความเร็วและระยะห่างของรหัสได้ 3 ระดับ โดยการดึง Pins A0, A1 หรือ A2 ลง GND ซึ่งจะได้ความเร็วที่ 5, 13 และ 20 WPM (คำต่อนาที) ตามลำดับ ใครอยากรู้ว่าคำนวณค่าพวกนี้มาได้ยังไง ไปลองหาอ่านเพิ่มเติมดูนะน้อง สู้งานหน่อย!

Quirks:

ความกวนของมันก็มีนิดหน่อยนะ:

  • ถ้าจะส่ง Dash น้องต้องปล่อยปุ่ม Dot ก่อนถึงจะกด Dash ได้ ไม่งั้นมันจะเงียบกริบจนกว่าน้องจะปล่อยแล้วกดใหม่
  • ในทางกลับกัน ถ้ากำลังรัวปุ่ม Dot อยู่แล้วน้องเผลอไปกดแล้วปล่อยปุ่ม Dash มันจะสร้างช่องว่าง (Gap) ในสายของจุดให้ทันที ซึ่งเอาไว้ใช้ส่งตัวอักษรคู่ อย่างเช่น "ss" ได้แบบหล่อเท่เลยงานนี้

References (Checked 4/4/2020):

[1] [2] [3] [4]

EXPANDED TECHNICAL DETAILS

High-Speed CW Communication

โปรเจกต์นี้คือการจำลองเครื่อง Morse Keyer ระดับโปรสไตล์ "Bug" ที่จะช่วยคุมจังหวะของ "Dits" และ "Dahs" ให้แม่นยำเป๊ะๆ

  • Iambic Keying Logic: ใช้คันโยกสองฝั่ง โดย Arduino จะรับหน้าที่จัดการจังหวะ Ratio 1:3 และระยะห่างระหว่างตัวอักษรให้แบบเนียนๆ
  • Adjustable WPM (Words Per Minute): สามารถใช้ Potentiometer ปรับความเร็วได้แบบเรียลไทม์ ตั้งแต่ 5 ไปจนถึง 50 WPM เลยทีเดียว

Audio and Data

  • Sidetone Oscillator: ตัว Arduino จะสร้างเสียง "Sidetone" ความถี่ 700Hz ออกทางลำโพง Piezo เพื่อให้คนส่งได้ยินเสียงตัวเอง (Monitor) ในขณะเดียวกันก็ส่งสัญญาณไปยังเครื่องส่งวิทยุผ่าน Optocoupler ได้ด้วย งานเนียนกริบ!

ข้อมูล Frontmatter ดั้งเดิม

title: "Morse \"bug\" keyer"
description: "2 switches, a sounder and an interrupt"
author: "glennedi"
category: "Audio & Sound"
tags:
  - "audio"
  - "morse code"
views: 5398
likes: 7
price: 435
difficulty: "Easy"
components:
  - "1x Piezo sounder element"
  - "2x 7mm Pushbutton (Normally open type)"
  - "1x Arduino UNO"
tools: []
apps:
  - "1x Arduino IDE"
downloadableFiles:
  - "https://projects.arduinocontent.cc/f8597ad5-6fc3-44d0-af77-872fe09265c8.ino"
  - "https://projects.arduinocontent.cc/f8597ad5-6fc3-44d0-af77-872fe09265c8.ino"
documentationLinks: []
passwordHash: "865eaf18712fdaf9ecd158cfff5a3836d43dcdf9e6f411117c7c61f45c9e604f"
encryptedPayload: "U2FsdGVkX1+VTQkqCuwyD//RfFJPtVrTP4I97ArcnxBmdDlsYG3hdaJ4KuUn0CcCSkeUOxU4ohblEl0ZnNeqTqP4pvPMJFXBRaRdGcXGhno="
seoDescription: "Build a Morse 'bug' keyer using 2 switches, a sounder, and an interrupt. A simple Arduino project for Morse code enthusiasts."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/morse-bug-keyer-e553ba_cover.jpg"
lang: "th"