afu.tools

StartAnleitungen › CW-Dongle für VBand mit ESP32-S3

CW-Dongle für VBand mit ESP32-S3

Ein Paddle-Adapter, der sich als USB-Tastatur ausgibt

· aktualisiert am

cwesp32selbstbau

VBand ist eine Übungsseite, auf der man mit anderen im Browser Telegrafie üben kann. Die Seite hat keinen Zugriff auf angeschlossene Hardware, sie liest die Paddle als Tastatureingaben. Ein Dongle muss sich deshalb als USB-Tastatur ausgeben und die beiden Kontakte des Paddles als Tastendrücke melden. Mehr passiert in dem Gerät nicht, die ganze Zeichenerzeugung läuft im Browser.

Die verbreitete Vorlage ist sipsmi/vband_dongle für Arduino mit Keyboard.h. Welche Zeichen VBand erwartet, steht dort im Quelltext, übernimm sie unverändert, sonst erkennt die Seite die Eingaben nicht.

Warum nicht jeder ESP32 geht

Keyboard.h läuft nur auf Boards mit nativer USB-Anbindung, also auf 32u4 oder SAMD. Beim ESP32 hängt es am Chip:

Chip USB-HID über USB-C Grund
ESP32-C3 nein Der USB-Anschluss hängt am fest verdrahteten Serial/JTAG-Controller. Kein OTG, also keine Tastatur. Über Bluetooth-HID ginge es drahtlos.
ESP32-S3 ja Native USB-OTG-Schnittstelle an GPIO19 und GPIO20, damit lässt sich über TinyUSB eine Tastatur nachbilden.

Der C3 ist der günstigere Chip und wird oft empfohlen, für diese Aufgabe ist er der falsche. Gebaut ist der Dongle deshalb mit einem ESP32-S3 Mini, und damit läuft er.

Software

Der Code aus der Vorlage lässt sich übernehmen, getauscht wird nur die Tastatur-Bibliothek:

#include "USB.h"
#include "USBHIDKeyboard.h"
USBHIDKeyboard Keyboard;

void setup() {
  pinMode(2, INPUT_PULLUP);  // dit, Paddle gegen Masse
  pinMode(3, INPUT_PULLUP);  // dah
  Keyboard.begin();
  USB.begin();
}

INPUT_PULLUP schaltet den internen Hochziehwiderstand ein. Der Eingang liegt dann im Ruhezustand auf High, und der Paddlekontakt zieht ihn beim Schließen gegen Masse auf Low. Ohne den Widerstand hinge der Eingang in der Luft und würde zufällig schalten.

In der Arduino-IDE müssen „USB CDC On Boot“ eingeschaltet und der USB-Modus auf „USB-OTG (TinyUSB)“ gestellt sein. Geflasht wird über genau den nativen USB-C-Port, nicht über einen zusätzlichen UART-Anschluss, falls das Board einen hat.

Prellen

Mechanische Paddlekontakte prellen, sie schließen und öffnen beim Umlegen mehrfach innerhalb weniger Millisekunden. Ein Programm, das jede Flanke als Tastendruck meldet, schickt dann Zeichensalat an den Browser.

Üblich ist eine Sperrzeit von 5 bis 20 ms: Nach einer erkannten Flanke wird der Eingang für diese Zeit ignoriert. Zu kurz gewählt bleibt das Prellen sichtbar, zu lang gewählt gehen bei hohem Tempo Zeichen verloren. Bei 25 WPM ist ein Dit etwa 48 ms lang, mehr als 20 ms Sperrzeit sind also schon knapp.

Verdrahtung

Masse des Paddles an GND, Dit an Pin 2, Dah an Pin 3. Am Gehäuse sitzt eine 3,5-mm-Stereobuchse: Tip ist Dit, Ring ist Dah, Schaft ist Masse. Diese Belegung ist bei Paddles und Transceivern die übliche, prüf sie trotzdem mit dem Durchgangsprüfer nach, bevor du lötest.

Prüfen

Vor dem ersten Besuch bei VBand: Dongle an den Rechner, einen Texteditor öffnen und das Paddle betätigen. Es müssen genau die Zeichen erscheinen, die im Quelltext stehen, je Betätigung genau eines. Kommen mehrere, prellt der Kontakt und die Sperrzeit muss hoch. Kommt keines, ist entweder der USB-Modus falsch eingestellt oder die Verdrahtung vertauscht.

Erst danach die VBand-Seite öffnen. Läuft der Test im Editor sauber und die Seite reagiert trotzdem nicht, liegt es an den Zeichen, nicht an der Hardware.

Wenn der USB-Anschluss klemmt

Ein fehlgeschlagener Flashvorgang kann den nativen USB-Port lahmlegen, der Rechner sieht das Board dann nicht mehr. Der Ausweg: Boot-Taste gedrückt halten, Reset kurz drücken, Boot-Taste loslassen. Danach meldet sich der Download-Modus und du kannst neu flashen. Ein 32u4 wäre an dieser Stelle unter Umständen nicht mehr zu retten, der S3 kommt immer zurück.

Gehäuse

Ein fertiges Modell mit passendem Ausschnitt für die Klinkenbuchse gibt es nicht. Als Basis taugt ein Case für das S3 Super Mini, in das das Loch noch hinein muss. Setz es auf der Seite an, an der die Buchse später sitzen soll, und miss vorher nach, wie weit die Buchse in das Gehäuse hineinragt.

Stand

Gebaut und im Einsatz. Der Aufbau ist so nachvollzogen, an VBand funktioniert er.

Alle Anleitungen · als RSS abonnieren