Ein echtes Morse-Paddle oder eine Morsetaste kabellos am Morsetrainer: Ein kleiner Bluetooth-Adapter meldet sich als Tastatur an – am iPhone, iPad, Android-Gerät, Mac oder PC, ohne Treiber und ohne App-Installation. Hier findest du alles, um ihn selbst zu bauen: Teileliste, Schaltplan, fertige Software und ein Gehäuse für den 3D-Drucker.
Zu löten sind nur fünf Drähte: drei zur Klinkenbuchse, zwei zum Akku.
Downloads
- Alles als ZIP Anleitung, Software, Quelltext, Gehäuse mit gehaeuse.py, Schaltplan · 212 KB
- Fertige Software (paddle_adapter.uf2) zum Aufspielen per Ziehen und Ablegen · 242 KB
- Gehäuse-Oberteil (STL) für den 3D-Drucker · 107 KB
- Gehäuse-Boden (STL) für den 3D-Drucker · 66 KB
- Quelltext (Arduino) nur nötig, wenn du etwas ändern willst · 19 KB
- Schaltplan (SVG) im Browser öffnen · 7 KB
- Klinkenbuchse von unten (SVG) welcher Stift wohin · 6 KB
Gehäuse
Ein echtes Morse-Paddle kabellos am Morsetrainer: Der Seeed XIAO nRF52840 Plus meldet sich per Bluetooth als Tastatur an (funktioniert mit iPhone, iPad, Android, Mac und PC – ohne Treiber, ohne App-Installation). Punkt-Hebel = Taste [, Strich-Hebel = Taste ] (deutsche Tastatur: „ü“ und „+“); den iambischen Keyer übernimmt der Morsetrainer. Keine Strg-Tasten: Zweimal Strg löst auf dem iPhone einen Kurzbefehl aus und nimmt der App den Ton.
| Datei | Inhalt |
|---|---|
schaltplan.svg | Schaltplan (im Browser öffnen) |
paddle_adapter.uf2 | fertige Software zum Aufspielen per Ziehen und Ablegen |
paddle_adapter/paddle_adapter.ino | Quelltext (Arduino) |
gehaeuse/ | 3D-Druck-Gehäuse: oberteil.stl, boden.stl (siehe gehaeuse/README.md) |
LIZENZ.md | CC BY-NC-SA 4.0 – nachbauen, verändern, weitergeben mit Namensnennung, nicht kommerziell |
Überblick – das ist zu tun
- Teile besorgen (Abschnitt 1).
- Löten: Klinkenbuchse an D0, D1, GND; Akku an BAT+/BAT− (Abschnitt 2,
schaltplan.svg). - Software aufspielen: am einfachsten die fertige Datei
paddle_adapter.uf2per Ziehen und Ablegen (Abschnitt 3) – dafür brauchst du keine Arduino-Software. Nur wenn du die Software ändern willst: Abschnitt 4. - Koppeln mit iPhone/Mac/Android (Abschnitt 5).
- Im Morsetrainer „Geben“ → „Paddle“ wählen und mit dem Tastentest prüfen.
Tipp: Schritt 3 kannst du schon vor dem Löten machen – der XIAO braucht dafür nur das USB-Kabel.
1. Teile
| Teil | Hinweis |
|---|---|
| Seeed Studio XIAO nRF52840 Plus | (die normale oder die Sense-Version geht auch) |
| Klinkenbuchse 3,5 mm Stereo: reichelt EBS 35 (Ledino KB3SPRS) | mit Gewindehals M6 × 0,5 und Mutter – wird in der Gehäusewand festgeschraubt |
| LiPo-Akku 1S 3,7 V: reichelt RD XT 650 S1 (RED POWER, 650 mAh, 58 × 18 × 9 mm) | Modellbau-Akku, vermutlich ohne Schutzschaltung – die Software schützt ihn (siehe unten) |
| Litze, 2 Schrauben M2,5 × 10 (Senkkopf, selbstschneidend) | für den Boden des Gehäuses |
| Gehäuse aus dem 3D-Drucker | gehaeuse/oberteil.stl und gehaeuse/boden.stl |
Ohne Schalter: Der Adapter braucht keinen Ein-/Ausschalter. Nach 15 Minuten ohne Benutzung schläft er und braucht dann unter 1 µA (auch der Spannungsteiler der Akkumessung ist abgeschaltet); ein Druck auf den Punkt-Hebel weckt ihn.
Wie lange hält der Akku? (Schätzung) Verbunden ca. 1–2 mA → eine volle Ladung reicht für etwa 2–3 Wochen Dauerbetrieb, im Alltag für mehrere Monate. Im Schlaf begrenzt nur noch die Selbstentladung des Akkus (ca. 2–3 % im Monat): Bei 20 % Restladung sind das etwa ein halbes Jahr bis zur kritischen Spannung. Deshalb bei längerer Pause etwa alle 3 Monate laden; für Lagerung über Monate auf ca. 50–60 % laden und den Akkustecker ziehen.
Tiefentladeschutz: Sinkt die Akkuspannung unter 3,4 V, blinkt die rote LED 5× und der Adapter schläft. Er lässt sich erst wieder wecken, wenn der Akku über USB geladen ist. So wird der Akku ohne eigene Schutzschaltung nicht tiefentladen.
Der XIAO hat das Ladegerät schon eingebaut (TI BQ25101): Akku an die Lötflächen BAT+ / BAT− auf der Rückseite, USB-C anstecken – er lädt (rote Lade-LED leuchtet). Die Software stellt den Ladestrom auf 100 mA (gut für Akkus ab ca. 150 mAh; für kleinere Akkus in der .ino LADESTROM_100MA = false → 50 mA).
2. Aufbau (siehe schaltplan.svg)
| Klinkenbuchse | Stift an der EBS 35 (Datenblatt KB3SPRS) | XIAO |
|---|---|---|
| Spitze (Tip) – Punkt | 2 (außen, neben Stift 4) | D0 |
| Ring – Strich | 3 (gegenüber, vorn) | D1 |
| Hülse (Sleeve) – Masse | 1 (dickster Stift, mittig am Gewindehals) | GND |
| Schaltkontakte | 4 und 5 | frei lassen |
Lage der Stifte von unten gesehen: klinke_unterseite.svg. Im Zweifel mit dem Multimeter prüfen: Stecker einstecken, Durchgang von der Steckerspitze zum Stift messen.
| Akku | XIAO |
|---|---|
| + (rot) | BAT+ (Lötfläche Rückseite) |
| − (schwarz) | BAT− (Lötfläche Rückseite) |
Der RD XT 650 S1 hat einen JST/BEC-Stecker. Entweder eine passende JST/BEC-Buchse an zwei Litzen zum XIAO löten (dann lässt sich der Akku abziehen – empfohlen), oder den Stecker abschneiden: immer nur einen Draht schneiden und sofort isolieren, damit sich die Enden nie berühren.
- Keine Widerstände nötig – die Eingänge haben interne Pull-ups; der Hebel verbindet nur mit Masse.
- ⚠️ Polung des Akkus prüfen (Multimeter!). Die Kabelfarben an JST-Steckern sind nicht genormt; verpolt geht der XIAO kaputt.
- ⚠️ Akku-Pads nicht kurzschließen, Lötkolben nur kurz an die Pads (Akku dabei abgeklemmt lassen).
- Ladestrom 100 mA (Voreinstellung) ist für 650 mAh gut – eine volle Ladung dauert etwa 7 Stunden.
- Langes, ungeschirmtes Paddle-Kabel und Fehlauslösungen? Dann je einen 100-nF-Kondensator von D0 und D1 nach GND.
2a. Ins Gehäuse einbauen (siehe gehaeuse/README.md)
- Oberteil umgedreht hinlegen (Deckel unten).
- Klinkenbuchse: Gewindehals von innen durch das Loch in der rechten Stirnwand stecken (leicht schräg einführen), außen Unterlegscheibe und Mutter aufschrauben und festziehen. Lötstifte zeigen zum Deckel.
- XIAO: mit der Bauteilseite zum Deckel zwischen die beiden Rippen legen, die USB-C-Buchse in die Öffnung der linken Stirnwand (Buchse zuerst, dann die Platine ablegen). Der Anschlag hinter der Platine hält sie beim Einstecken.
- Akku in die linke Spur legen, Kabel zum XIAO führen (unter der Platine ist Platz für die Drähte an BAT+/BAT−).
- Boden auflegen und mit 2 Schrauben M2,5 × 10 anschrauben. Leisten im Boden drücken den XIAO gegen die Rippen, die Mulde hält die Klinkenbuchse.
Alle Drähte auf der Rückseite des XIAO (der Seite ohne Bauteile, zum Boden hin): Die Bauteilseite mit den LEDs liegt am Deckel unter dem Lichtfenster und muss flach bleiben. D0/D1 (linke Kante) und GND (rechte Kante) sind die ersten beiden Pins neben der USB-C-Buchse – die Drähte von unten an die Halblöcher löten, möglichst wenig Lötzinn auf der Oberseite. Leisten und Rippen lassen dort 7 mm frei. Dünne Litze (0,14 mm²), unter der Platine zur Klinkenbuchse führen.
3. Software aufspielen – ohne Arduino (einfachster Weg)
Du brauchst nur ein USB-C-Datenkabel (manche Kabel können nur laden – dann erscheint kein Laufwerk).
- XIAO mit dem USB-C-Kabel an den Mac anschließen.
- Den winzigen Reset-Knopf (neben dem USB-Anschluss, mit „RST“ beschriftet) zweimal schnell hintereinander drücken. Die LED pulsiert, und im Finder erscheint ein neues Laufwerk (meist „XIAO-SENSE“).
- Die Datei
paddle_adapter.uf2aus diesem Ordner auf das Laufwerk ziehen. - Das Laufwerk verschwindet von selbst, der XIAO startet neu und die blaue LED blinkt kurz jede Sekunde – die Software läuft und wartet auf eine Bluetooth-Verbindung. (macOS meldet eventuell „Volume nicht korrekt ausgeworfen“ – das ist normal und schadet nicht.)
Erscheint kein Laufwerk: anderes Kabel probieren, schneller doppelt drücken, anderen USB-Anschluss nehmen.
Im geschlossenen Gehäuse (Reset-Knopf nicht erreichbar): USB-C-Kabel anstecken, beide Paddle-Hebel 10 Sekunden gedrückt halten → grüne LED blinkt 3× → das Laufwerk erscheint; weiter mit Schritt 3. Doch nichts aufspielen? Einfach das USB-Kabel abziehen – der Adapter startet wieder die bisherige Firmware und ist sofort benutzbar. Bricht ein Kopiervorgang mittendrin ab, bleibt er im Update-Modus: Kabel wieder anstecken und die Datei erneut aufs Laufwerk ziehen. Der Griff geht nur am USB-Kabel (im Akkubetrieb passiert nichts) und erst, wenn diese Firmware einmal drauf ist. Mit einer Morsetaste (nur ein Kontakt) geht der Griff nicht – dann kurz ein Paddle einstecken oder in der Arduino IDE auf Hochladen klicken (Abschnitt 4, die IDE startet den XIAO selbst neu).
4. Software ändern – mit der Arduino IDE (nur bei Bedarf)
Nur nötig, wenn du Einstellungen ändern willst (z. B. Schlafzeit, Ladestrom). Einmalig einrichten:
- Arduino IDE 2 von https://www.arduino.cc/en/software herunterladen und in „Programme“ ziehen.
- Arduino IDE öffnen → Menü Arduino IDE → Einstellungen … → Feld „Zusätzliche Boardverwalter-URLs“:
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.jsoneintragen → OK. - Menü Werkzeuge → Board → Boardverwalter … → nach „Seeed nRF52“ suchen → „Seeed nRF52 Boards“ installieren (NICHT „Seeed nRF52 mbed-enabled Boards“). Dauert ein paar Minuten.
- Rosetta (nur Mac mit Apple-Chip): Das Hochlade-Werkzeug des Seeed-Pakets ist ein Intel-Programm. Fragt macOS beim ersten Hochladen nach „Rosetta installieren“ – bestätigen. Oder vorab im Terminal:
softwareupdate --install-rosetta --agree-to-license - python-Befehl (macOS-Stolperfalle): Das Seeed-Paket ruft beim Übersetzen den Befehl
pythonauf, den macOS nicht mehr mitbringt. Ohne diesen Schritt bricht das Übersetzen mit „xcode-select: Failed to locate 'python'“ ab. Einmalig im Terminal (fragt nach deinem Mac-Passwort): Danach die Arduino IDE einmal beenden und neu starten.sudo mkdir -p /usr/local/bin sudo ln -sf "$(python3 -c 'import sys; print(sys.executable)')" /usr/local/bin/python
Jedes Mal, wenn du die Software änderst:
- Datei → Öffnen … →
paddle-adapter/paddle_adapter/paddle_adapter.ino. - Oben im Quelltext unter „Einstellungen“ ändern, was du möchtest.
- Werkzeuge → Board → Seeed nRF52 Boards → „Seeed XIAO nRF52840 Plus“ wählen.
- XIAO per USB anschließen, Werkzeuge → Port → den Eintrag
/dev/cu.usbmodem…wählen. - Auf den runden Pfeil nach rechts („Hochladen“) klicken. Unten erscheint „Hochladen abgeschlossen“ bzw. „Device programmed“.
Klappt das Hochladen nicht („Failed to upgrade target“ o. Ä.): Reset zweimal drücken (der XIAO geht in den Programmiermodus), unter Werkzeuge → Port den jetzt erscheinenden Port wählen und erneut hochladen.
Einstellungen oben in der .ino: Pins, Entprellzeit, Schlafzeit (15 min), Name, Ladestrom.
5. Koppeln und benutzen
- Adapter einschalten → blaue LED blinkt = wartet auf Verbindung.
- iPhone/iPad: Einstellungen → Bluetooth → „Morsepaddle DL2TTA 3F7A-1“ antippen (die 4 Zeichen sind bei jedem Adapter anders, siehe unten; „-1“ ist der Kanal, siehe „Mehrere Geräte“). Mac: Systemeinstellungen → Bluetooth → Verbinden. Android: Bluetooth → Gerät koppeln.
- Grünes Doppelblinken = verbunden. Danach verbindet er sich beim Einschalten von selbst.
- Morsetrainer → Geben → Paddle, dann „Tastentest“ aufklappen. Er zeigt „Empfangen: BracketLeft ↓ gedrückt“ beim Punkt-Hebel und „BracketRight“ beim Strich-Hebel. Sind Punkt und Strich vertauscht: in der App „Paddle tauschen“ einschalten.
| LED | Bedeutung |
|---|---|
| blau, kurzes Blinken jede Sekunde | wartet auf Verbindung |
| alle LEDs aus | getrennt nach 1 Minute Pause – Hebel drücken verbindet wieder (oder er schläft, siehe unten) |
| grün, 2× | verbunden |
| blau, 1×, 2× oder 3× beim Einschalten | Kanal 1, 2 oder 3 |
| blau, einmal lang beim Halten beider Hebel | jetzt loslassen = nächster Kanal |
| rot, 3× beim Einschalten | alle Kopplungen gelöscht |
| rot, 1× | geht schlafen |
| rot, 5× | Akku leer – schläft bis zum Laden (Tiefentladeschutz) |
| grün, kurzes Blitzen alle 2 Sekunden (nur am USB-Kabel) | Akku wird geladen |
| grün, dauerhaft (nur am USB-Kabel) | Akku voll (oder kein Akku angeschlossen) |
| Lade-LED neben der USB-Buchse (fest auf der Platine, unabhängig von der Software) | leuchtet beim Laden |
- Schlafen: Im Akkubetrieb schläft der Adapter nach 15 Minuten ohne Benutzung (Stromaufnahme dann unter 1 µA). Aufwecken: Punkt-Hebel drücken – nach 1–2 Sekunden ist er wieder verbunden. Am USB-Kabel schläft er nicht.
- Akkustand wird ans Gerät gemeldet (iPhone: Batterie-Widget, Mac: Bluetooth-Menü).
- Kopplung löschen (alle Kanäle): beim Einschalten beide Hebel gedrückt halten, bis die rote LED dreimal blinkt; auf den Geräten den Adapter zusätzlich „ignorieren“. Für ein weiteres Gerät ist das nicht nötig – dafür gibt es die Kanäle.
- Bildschirmtastatur am iPhone/iPad: Solange eine Bluetooth-Tastatur verbunden ist, blendet iOS die Bildschirmtastatur aus. Deshalb trennt sich der Adapter nach 1 Minute ohne Hebeldruck von selbst – danach ist die Bildschirmtastatur wieder da, auch für die Mitschrift bei „Gruppen“. Der nächste Hebeldruck verbindet wieder (ca. 1 Sekunde); dieser erste Druck gibt noch kein Zeichen. Die Zeit steht in der Firmware als
TRENNEN_NACH_MS.
Morsetaste (Handtaste) statt Paddle
Einfach einstecken und im Morsetrainer Geben → Handtaste wählen – keine andere Firmware nötig. Die Taste muss zwischen Spitze und Hülse schalten (so sind fast alle Morsetasten verdrahtet); der Adapter sendet dann [, das die App bei „Handtaste“ als Taste nimmt. Die Länge von Punkt und Strich bestimmst du selbst.
- Mono-Stecker gehen auch: Er verbindet den Ring dauerhaft mit Masse. Der Adapter erkennt das (Strich beim Einschalten oder 15 Sekunden am Stück „gedrückt“) und schaltet den Strich-Eingang ab – kein Stromverbrauch, und er schläft normal ein.
- Danach wieder ein Paddle einstecken: Der erste Punkt schaltet den Strich-Hebel wieder ein. Dasselbe gilt, wenn du am Paddle den Strich-Hebel über 15 Sekunden festhältst.
- Schaltet deine Taste zwischen Ring und Hülse, kommt nichts an – dann in der Taste die Drähte tauschen.
Mehrere Geräte: drei Kanäle
Der Adapter merkt sich drei Geräte, z. B. iPhone, iPad und Mac – wie die „Easy-Switch“-Taste mancher Tastaturen. Jeder Kanal funkt mit einer eigenen Bluetooth-Adresse und steht als eigenes Gerät in der Liste: „Morsepaddle DL2TTA 3F7A-1“, „…-2“, „…-3“. Ein Gerät sieht nur „seinen“ Kanal – die anderen Geräte schnappen sich den Adapter deshalb nicht mehr weg, und niemand muss entkoppeln.
- Kanal wechseln: beide Hebel 3 Sekunden halten, bis die blaue LED einmal lang aufleuchtet, dann loslassen. Der Adapter startet neu, blinkt die Kanalnummer (blau 1×, 2× oder 3×) und verbindet sich mit dem Gerät dieses Kanals. Nach Kanal 3 kommt wieder Kanal 1. Der Kanal bleibt auch im Schlaf gespeichert.
- Mit Handtaste (Mono-Stecker): die Taste 5 Sekunden halten, bis blau aufleuchtet, dann loslassen.
- Einrichten (einmalig): Auf Kanal 1 das erste Gerät koppeln. Kanal wechseln, auf dem zweiten Gerät „…-2“ koppeln. Ebenso Kanal 3. War der Adapter vorher schon mit mehreren Geräten gekoppelt, auf den Geräten außer dem ersten den alten Eintrag einmal „ignorieren“ und dann den neuen Kanal koppeln.
- Im Morsetrainer kommen beim Halten beider Hebel ein paar Zeichen an – einfach ignorieren.
Mehrere Adapter in einem Raum (Kurs, Clubabend)
Jeder Adapter hat einen eigenen Namen: „Morsepaddle DL2TTA“ + 4 Zeichen aus seiner Bluetooth-Adresse (z. B. 3F7A), dahinter der Kanal. Die Adresse ist fest im Chip – alle Adapter bekommen dieselbe Firmware, nichts muss einzeln eingestellt werden.
- Einmalig: Adapter einzeln einschalten, den Namen in der Bluetooth-Liste ablesen und die 4 Zeichen aufs Gehäuse schreiben (Etikett oder Edding).
- Beim Koppeln genau diesen Namen antippen.
- Ein verbundener Adapter ist für andere unsichtbar (nur eine Verbindung gleichzeitig) – niemand „schnappt“ ihn während der Benutzung weg. Danach verbindet er sich nur von selbst mit dem Gerät, mit dem er gekoppelt ist.
6. Fehlersuche
| Problem | Lösung |
|---|---|
| Kein Laufwerk nach Doppeldruck auf Reset | Anderes USB-Kabel (viele Kabel können nur laden); schneller doppelt drücken |
| Taucht in Bluetooth nicht auf | Blinkt die blaue LED? Sonst schläft er (Punkt-Hebel drücken) oder der Akku ist leer → USB anstecken |
| Verbindet sich mit dem falschen Gerät | Kanal wechseln (beide Hebel 3 s); beim Einschalten zeigt die Zahl der blauen Blinker den Kanal |
| Verbindet, aber Tastentest zeigt nichts | In der App den Reiter „Geben“ wählen; Klinkenstecker ganz einstecken; mit Drahtbrücke D0–GND testen |
| Ein Hebel „hängt“ | Kontakt prellt/klebt → ENTPRELLEN_MS erhöhen (z. B. 8); Paddle-Kontakte reinigen |
| Punkt und Strich vertauscht | In der App „Paddle tauschen“ – oder die Drähte an D0/D1 tauschen |
Getestet: Der Quelltext ist mit dem Board-Paket „Seeed nRF52 Boards“ 1.1.13 für „Seeed XIAO nRF52840 Plus“ ohne Fehler und Warnungen übersetzt; die UF2-Datei ist daraus erzeugt (Startadresse 0x27000). Erprobt mit Paddle und iPhone. Rückmeldungen gern über „💬 Rückmeldung“ im Morsetrainer.
Gehäuse drucken
| Datei | Teil |
|---|---|
oberteil.stl | Deckel mit Wänden: USB-C-Öffnung links, Loch für die Klinkenbuchse rechts, Rippen für Akku und XIAO, dünne LED-Stelle |
boden.stl | Boden mit Leisten für den XIAO und Mulde für die Klinkenbuchse, 2 Senkungen für M2,5 × 10 |
Außenmaße: 70 × 48 × 16 mm.
Halt der Teile: Alles wird geklemmt; nur der Boden ist mit 2 Schrauben befestigt.
- XIAO: liegt zwischen zwei Leisten im Boden und zwei Rippen im Deckel. Ein Anschlag hinter der Platine fängt den Druck beim Einstecken des USB-Kabels ab.
- Klinkenbuchse: wird mit ihrer Mutter in der Stirnwand festgezogen (Wand dort 1,8 mm).
- Akku: liegt auf dem Boden und wird von drei Rippen im Deckel gehalten.
Vorschau: vorschau_*.png. Schnitte: schnitt_xiao.png (quer) und schnitt_laengs.png (längs durch die Elektronik).
- PLA oder PETG, 0,2 mm, 3 Wände. Helles Material, damit die LEDs durch die 0,6 mm dünne Stelle im Deckel scheinen.
- Oberteil mit der Deckfläche nach unten drucken. Die dünne LED-Stelle liegt dann auf dem Druckbett; es braucht keine Stützen.
- Boden flach drucken, Senkungen nach unten.
Einbau: siehe ../ANLEITUNG.md, Abschnitt 2a.
Maße anpassen
Alle Maße stehen oben in gehaeuse.py, zum Beispiel Lage der USB-C-Buchse, Platinendicke und Spiel. Neu erzeugen mit python3 gehaeuse.py; nötig sind manifold3d, numpy und pillow.
Annahmen, die am echten Teil zu prüfen sind:
- XIAO: 21 × 17,8 mm, Platine 1,2 mm dick; die USB-C-Buchse sitzt 1,6 mm über der Platine.
- Klinkenbuchse: Der Gewindehals liegt mittig in der 6,1 mm hohen Buchse.
Passt etwas nicht, den Wert in gehaeuse.py ändern und neu erzeugen.
Lizenz
© 2026 Holger Behrens, DL2TTA. Bauanleitung, Schaltplan, Software und Gehäuse stehen unter CC BY-NC-SA 4.0: Du darfst den Adapter nachbauen, die Unterlagen verändern und weitergeben – mit Namensnennung, nicht kommerziell (z. B. keine fertigen Adapter oder Bausätze verkaufen) und Veränderungen unter denselben Bedingungen.
Fragen oder Verbesserungen? Im Morsetrainer unten auf „💬 Rückmeldung“ tippen. 73 de DL2TTA




