ชื่อโปรเจกต์: 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 ได้ด้วย งานเนียนกริบ!