Перейти до основного вмісту

Перехідник з ямбічного ключа на Морзе тренажери

logo

В даній статі поглянемо на один з проєктів UARO - спеціальний перехідник для ямбічних Морзе ключів, який дозволить їх підключати до різного роду Морзе тренажерів на телефоні та ПК!


Компоненти

В основі даного перехідника лежить мікроконтролер RP2040, а якщо конкретніше - двеборди Raspberry Pi Pico. Найкраще всього себе зарекомендували девборди RP2040-Zero від Waveshare, через свій доволі маленький розмір. Окрім мікроконтролера також знадобиться гніздо під штекер 3.5мм, так як більшість ямбічних ключів мають саме такий спосіб підключення.

Приклад компонентів в магазині rcscomponents:

Компоненти


Схема

Підключити все доволі просто: на перший контакт 3.5мм гнізда йде земля з мікроконтролера - GND. А другий та третій підключаються до GPIO 14 та GPIO 15. Більше нічого підключати не треба.

Схема з'єднань

Приклад реалізації

Приклад реалізації


Прошивка мікроконтролера

Кнопка BOOT

Для того щоб прошити мікроконтролер, необхідно затиснути кнопку BOOT на платі мікроконтролера, та підключити його до комп'ютера. Комп'ютер побачить мікроконтролер як звичайну флешку, з назвою на кшталт RPI-RP2, та приблизно ось таким змістом всередині:

![Вміст "флешки" мікроконтролера](./images/rpi.png "Вміст "флешки" мікроконтролера")

В такому режимі мікроконтролер очікує прошивку в форматі .uf2. Проєкт базується на прошивці CircuitPython, щоб користувачі могли легко його налаштовувати, без потреби в перекомпіляції прошивки. Необхідно завантажити відповідний .uf2 файл, та копіювати його на мікроконтролер.

Після цього мікроконтролер перезавантажиться, і буде знову доступний як звичайна флешка, але на цей раз з назвою CIRCUITPY, та ось таким змістом:

![Вміст "флешки" після прошивки](./images/circuitpy.png "Вміст "флешки" після прошивки")

Спочатку треба в директорію lib (створіть якщо не існує) помістити бібліотеку adafruit_hid - просто створити директорію adafruit_hid з наступним змістом.

Далі необхідно відкрити та редагувати файл code.py. Видаліть попередній зміст, та копіюйте туди наступний код:

import time
import board
import digitalio
import usb_hid
from adafruit_hid.keyboard import Keyboard
from adafruit_hid.keycode import Keycode

kbd = Keyboard(usb_hid.devices)

button_s = digitalio.DigitalInOut(board.GP14)
button_s.direction = digitalio.Direction.INPUT
button_s.pull = digitalio.Pull.UP

button_a = digitalio.DigitalInOut(board.GP15)
button_a.direction = digitalio.Direction.INPUT
button_a.pull = digitalio.Pull.UP

prev_s = True
prev_a = True

while True:
curr_s = button_s.value
curr_a = button_a.value

# Налаштування кнопок. Наприклад якщо потрібна кнопка Q замість S: міняємо обидва Keycode.S на Keycode.Q

if not curr_s and prev_s:
kbd.press(Keycode.S)
elif curr_s and not prev_s:
kbd.release(Keycode.S)

if not curr_a and prev_a:
kbd.press(Keycode.A)
elif curr_a and not prev_a:
kbd.release(Keycode.A)

prev_s = curr_s
prev_a = curr_a

time.sleep(0.01)

В цілому, перехідник вже готовий до використання. Але пристрої до яких він буде підключений (комп'ютер, телефон) будуть продовжувати бачити його як флеш накопичувач. Щоб цього позбутись, треба в корені флеш накопичувача мікроконтролера (там де знаходиться code.py) створити ще один файл - boot.py з наступним вмістом:

import board
import digitalio
import storage
import time

button = digitalio.DigitalInOut(board.GP14)
button.switch_to_input(pull=digitalio.Pull.UP)
time.sleep(0.1)

if not button.value:
storage.enable_usb_drive()
else:
storage.disable_usb_drive()

Таким чином, мікроконтролер в подальшому не буде підключатись як флеш накопичувач. А якщо треба модифікувати налаштування, то можна затиснути одну зі сторін ямбічного ключа при підключенні (та, яка була припаяна до GPIO 14), і тоді мікроконтролер знову підключиться як флеш накопичувач, що дасть змогу модифікувати код.

В додатках нижче можна завантажити архів, в якому я зібрав всі необхідні файли, які треба помістити в корінь флеш накопичувача після прошивки CircuitPython. Тобто просто копіюєте все з архіву в корінь флеш накопичувача, погоджуючись на заміну файлів, і пристрій буде готовий до роботи.


Використання

Для того щоб користуватись перехідником, достатньо просто підключити його за допомогою Type-C кабелю до необхідного пристрою. Пристрій побачить перехідник як звичайну клавіатуру, і буде імітувати натискання клавіш A та S в залежності від натискання ключа. Клавіші A та S можна замінити на будь які необхідні в файлі code.py - після прошивки перед підключенням перехідника затисніть одну зі сторін ключа (ту, яка була підключена до GPIO 14, тобто ту яка імітує клавішу S), і перехідник підключиться як флеш накопичувач. Далі відкрийте code.py, та відредагуйте строки коду з kbd.press.


Додатки