Skip to content

Technik Blog

Programmieren | Arduino | ESP32 | MicroPython | Python | Raspberry Pi | Raspberry Pi Pico

Menu
  • Smarthome
  • Arduino
  • ESP32 & Co.
  • Raspberry Pi & Pico
  • Solo Mining
  • Über mich
  • Deutsch
  • English
Menu

ATmega32u4 mit USB-HID Funktion an Panzerkette

Posted on 29. Oktober 20214. März 2025 by Stefan Draeger

In diesem Beitrag möchte ich dir ein nettes Gadget vorstellen, es ist ein kleines ATmega32u4 Board mit 70mAh Akku (LIR2032H) und USB-HID Funkion.

ATmega32u4 Board mit USB-HUD Funktion unter Windows
ATmega32u4 Board mit USB-HID Funktion unter Windows

Das Board habe ich mir selber gekauft, da ich dieses hier jedoch vorstelle und dir Links zu Shops gebe, wo du dieses bei gefallen erwerben kannst, möchte ich diesen Beitrag trotzdem als „Werbung“ kennzeichnen.

ATmega32u4 Board
ATmega32u4 Board
ATmega32u4 Board mit 70mAh Akku
ATmega32u4 Board mit 70mAh Akku

  • Bezug des Atmega32u4 an Panzerkette
    • Lieferumfang
  • Aufbau des Atmega32u4 Boards
    • Gewicht
    • Akkuleistung
  • Anschluss an einen Microsoft Windows 10 PC
  • Programmieren des Boards in der Arduino IDE
    • Beispiel 1 – öffnen einer Webseite
    • Beispiel 2 – starten von Programmen
  • Beispiel 3 – steuern der RGB LEDs
  • Mögliche Attacken mit dem „Cyber A Necklace“

Bezug des Atmega32u4 an Panzerkette

Dieses kleine Board habe ich über amazon.de für knapp 30 € inkl. Versandkosten* erstanden.

Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!

Da ich Amazon-Prime Kunde bin, hat in diesem Fall die Lieferung nur knapp 24h gedauert und war damit recht schnell bei mir.

Das Board findest du aber auch im offiziellen Shop von dstike unter Cyber A Necklace jedoch zu einem deutlich höheren Preis von 39 $ (ca. 33,57 €) zzgl. Versandkosten.

Lieferumfang

Zum Lieferumfang gehört:

  • das Board,
  • eine Knopfzelle vom Typ LIR2032H,
  • eine 70 cm lange Panzerkette,
  • eine farbige Anleitung in englischer Sprache
atmega32u4 Board & Panzerkette
atmega32u4 Board & Panzerkette
Anleitung "Cyber A Necklace" auf englisch
Anleitung „Cyber A Necklace“ auf englisch

Aufbau des Atmega32u4 Boards

Das 3 cm x 3 cm Board verfügt über

  • Mikrochip atmega32u4,
  • eine Micro-USB Buchse,
  • einen RESET Taster,
  • zwei NeoPixel vom Typ WS2812B,
  • ein LIR2032H, 70mAh, 3,7 V Akku,
  • eine SMD LED zum Anzeigen das gerade der Akku geladen wird,
  • einen Schalter um das Board AN / AUS zu schalten
Pinout des atmega32u4 Boards
Pinout des atmega32u4 Boards

Gewicht

Die Kette wiegt alleine 86g und inkl. Board 96g. Das ist schon eine ordentliche Ansage.

Gewicht der Panzerkette inkl. Arduino atmega32u4 Board
Gewicht der Panzerkette inkl. Arduino atmega32u4 Board
Gewicht der Panzerkette
Gewicht der Panzerkette

Ich denke mal das dieses Board auch nicht wirklich als Halschmuck getragen wird, es ist wohl eher als nettes Gadget gemeint.

Akkuleistung

Der Akku ist eine kleine Knopfzelle vom Typ LIR2032H.

BeschreibungZeit
komplette Aufladungca. 40 min.
Arbeitszeit3h bis 4h

Sollte der Akku einmal defekt sein oder seine Leistung stark verlieren, so findest du auf zbsp. ebay.de einen Ersatz für knapp 1,5 € zzgl. Versandkosten* (ebenfalls ca. 1,5 €).

Du musst aber darauf achten, dass der Typ passt, es gibt auf dem Markt auch Knopfzellen vom Typ CR2032, welche nicht wieder aufladbar sind!

Anschluss an einen Microsoft Windows 10 PC

Bevor das Board an den PC angeschlossen wird (ob Linux oder Windows) muss sichergestellt werden das, der Schalter auf Position „OFF“ steht.

Taster zum Ein-/Auschalten des Ladevorgangs
Taster zum Ein-/Auschalten des Ladevorgangs
Markierung des Tasters ON/OFF auf der Rückseite
Markierung des Tasters ON/OFF auf der Rückseite

Wenn man das Board an einen Microsoft Windows 10 PC anschließt, dauert es ein paar Sekunden bis dieser eingerichtet ist und startet. Danach wird jedoch beim ersten Start versucht das Programm NOTEPAD zu öffnen und die Konsole wird gestartet. Dabei blinken die NeoPixel in verschiedenen Farben.

Wenn das Gerät eingerichtet ist, wird dieses im Geräte-Manager als „Arduino Leonardo“ erkannt.

Eintrag des Boards im Geräte-Manager unter Windows 10
Eintrag des Boards im Geräte-Manager unter Windows 10

Für Boards, welche nicht direkt von der offiziellen Arduino Plattform erworben wurden ist es recht unüblich, dass ein korrekter Name erkannt wird.

Programmieren des Boards in der Arduino IDE

Der verbaute Chip ist dem des Arduino Leonardo gleich, diesen Mikrocontroller habe ich dir bereits im Beitrag Arduino Leonardo – Übersicht vorgestellt und auch gezeigt wie du eine Maus mit diesem ersetzen kannst (Arduino Leonardo & Joystick als Mausersatz).

Auf dem GitHub Repository von lspoplove / BAD findest du einige kleine Beispiele wie du das Board programmieren kannst.

Beispiel 1 – öffnen einer Webseite

Damit wir eine Webseite automatisch öffnen können, müssen wir:

  1. das Fenster „Ausführen“ öffnen
  2. in das Fenster den Text „cmd“ eintragen
  3. diesen Text mit der RETURN / ENTER Taste ausführen
  4. in der geöffneten Kommandozeile den Text „start <WEBSEITE>“ eintragen
  5. und das ganze mit der RETURN / ENTER Taste ausführen

Dabei ist immer darauf zu achten, dass wenn eine Taste per Code gedrückt wird, diese auch wieder „losgelassen“ werden muss. D.h. um in einem Editor den Buchstaben „A“ zu schreiben müssen wir die Shifttaste drücken und das A, beides aber auch wieder loslassen um ggf. andere Buchstaben zu schreiben.

//Bibliothek zum Simulieren von Tastatureingaben
#include <Keyboard.h>

void setup() {
  Keyboard.begin();
  //Pause von 1 sek.
  delay(1000);
  //betätigen der Windows Taste
  Keyboard.press(KEY_LEFT_GUI);
  //Pause von 50 ms.
  delay(50);
  //betätigen der Taste "r"
  Keyboard.press('r');
  //Pause von 50 ms.
  delay(50);
  //Windows Taste wieder loslassen
  Keyboard.release(KEY_LEFT_GUI);
  //Taste "r" wieder loslassen
  Keyboard.release('r');
  //eine Pause von 1 sek.
  delay(1000);
  //Eingeben des Textes und bestätigen mit der RETURN Taste
  Keyboard.println("cmd ");
  //eine Pause von 500 ms.
  delay(500);
  //eingeben des Textes und bestätigen mit der RETURN Taste
  //Damit die Adresse geöffnet werden kann muss diese mit www beginnen!
  Keyboard.println("start www.google.de ");
  delay(500);
  //Kommandozeile schliessen
  Keyboard.println("exit ");
  //beenden 
  Keyboard.end();
}

void loop() {}

Beispiel 2 – starten von Programmen

Im ersten Beispiel habe ich dir gezeigt wie man eine Webseite im Standardbrowser öffnet. Genauso einfach kann man auch Programme starten jedoch funktioniert dieses dann auch nur an dem PC wo der Pfad genauso ist.

  1. Editor / Notepad öffnen,
  2. Text eingeben,
  3. Datei speichern
//Bibliothek zum Simulieren von Tastatureingaben
#include <Keyboard.h>

void setup() {
  Keyboard.begin();
  //Pause von 500 ms.
  delay(1000);
  //öffnen des Dialoges "Ausführen"
  openRunDialog();
  //Pause von 500 ms.
  delay(1000);
  //Wichtig ist hier das Leerzeichen am Ende damit ein RETURN ausgeführt wird!
  Keyboard.println("notepad ");
  delay(1000);
  //Eingeben von zwei Textzeilen
  Keyboard.println("Hallo Welt! ");
  Keyboard.println("1234567890");
  delay(1000);
  //Speichern der Daten in einer Datei
  //betätigen der Tast "Strg"
  Keyboard.press(KEY_LEFT_CTRL);
  delay(50);
  //betätigen der Taste "s"
  Keyboard.press('s');
  delay(50);
  //Taster "Strg" wieder loslassen
  Keyboard.release(KEY_LEFT_CTRL);
  //Taste "s" wieder loslassen
  Keyboard.release('s');
  delay(50);
  Keyboard.println("hierStehtEinText.txt ");
  //beenden
  Keyboard.end();
}

void openRunDialog() {
  //betätigen der Windows Taste
  Keyboard.press(KEY_LEFT_GUI);
  //Pause von 50 ms.
  delay(50);
  //betätigen der Taste "r"
  Keyboard.press('r');
  //Pause von 50 ms.
  delay(50);
  //Windows Taste wieder loslassen
  Keyboard.release(KEY_LEFT_GUI);
  //Taste "r" wieder loslassen
  Keyboard.release('r');
}

void loop() {}

Hier nun das Video wie es aussieht, wenn der Mikrocontroller an den Computer angeschlossen wird.

Beispiel 3 – steuern der RGB LEDs

Zum Steuern der RGB LEDs wird vorgeschlagen die Adafruit NeoPixel Bibliothek zu installieren. (Es wird aber ebenfalls auch mit der FastLED Bibliothek funktionieren.) Die Bibliothek kannst du entweder vom GitHub Repository adafruit / Adafruit_NeoPixel als ZIP Datei herunterladen oder aber ganz einfach über den Bibliotheksverwalter.

Eintrag im Bibliotheksverwalter in der Arduino IDE
Eintrag im Bibliotheksverwalter in der Arduino IDE

Im nachfolgenden Beispiel möchte ich dir zeigen wie man die RGB LEDs vor dem Ausführen von KeyBoard aktionen auf die Farbe „rot“ gesetzt werden und im Abschluss auf „grün“.

Somit hat man einen Indikator geschaffen, ob der Vorgang in Gange ist oder bereits abgeschlossen ist.

//Bibliothek um die NeoPixel anzusteuern
#include <Adafruit_NeoPixel.h>
//Bibliothek zum simulieren von Tastatureingaben
#include <Keyboard.h>

//die NeoPixel sind über den digitalen Pin D12 angeschlossen
#define PIN 12
//gesamt 2 NeoPixel sind verbaut
int numPixels = 2;

//instanziieren eines Objektes für die Steuerung der verbauten NeoPixel
Adafruit_NeoPixel strip = Adafruit_NeoPixel(numPixels, PIN, NEO_GRB + NEO_KHZ800);

//RGB Farbe Rot
uint32_t red = strip.Color(255, 0, 0);

//RGB Farbe Grün
uint32_t green = strip.Color(0, 255, 0);

void setup() {
  strip.begin();
  //setzen der Helligkeit 0 = AUS / 255 = voll
  strip.setBrightness(50);
  //setzen der Farbe "rot"
  setLedColor(red);
  //mache Dinge
  doThings();
  //setzen der Farbe "grün"
  setLedColor(green);
}

//setzen einer Farbe
void setLedColor(uint32_t color) {
  //für jeden NeoPixel im Stripe mache...
  for (uint16_t i = 0; i < strip.numPixels(); i++) {
    strip.setPixelColor(i, color);
  }
  //anzeigen der Farbe
  strip.show();
}

void doThings() {
  Keyboard.begin();
  //Pause von 500 ms.
  delay(1000);
  //öffnen des Dialoges "Ausführen"
  openRunDialog();
  //Pause von 500 ms.
  delay(1000);
  //Wichtig ist hier das Leerzeichen am Ende damit ein RETURN ausgeführt wird!
  Keyboard.println("notepad ");
  delay(1000);
  //Eingeben von zwei Textzeilen
  for(int i = 1;i<100;i++){
    Keyboard.println("Row "+String(i,DEC));
    delay(50);
  }
  delay(1000);
  //beenden
  Keyboard.end();
}

void openRunDialog() {
  //betätigen der Windows Taste
  Keyboard.press(KEY_LEFT_GUI);
  //Pause von 50 ms.
  delay(50);
  //betätigen der Taste "r"
  Keyboard.press('r');
  //Pause von 50 ms.
  delay(50);
  //Windows Taste wieder loslassen
  Keyboard.release(KEY_LEFT_GUI);
  //Taste "r" wieder loslassen
  Keyboard.release('r');
}

void loop() {}

In dem Video erkennt man gut, dass vor dem Ausführen von Keyboard Eingaben die Farben der NeoPixel auf „rot“ gesetzt werden und nachdem Ablauf die Farbe zurück auf „grün“ wechselt.

Mögliche Attacken mit dem „Cyber A Necklace“

Ich habe dir nun gezeigt wie man das Programm Notepad öffnet, einen Text eingibt und speichert, dabei noch die LEDs leuchten lässt.

Mit bösen Absichten könnte man nun ein kleines Skript schreiben lassen welches Dateien in dem Ordner „%USERPROFILE%\documents“ löscht.

Der Ablauf wäre wie folgt:

  1. öffnen der Eingabeaufforderung
  2. erzeugen eines Ordners unter „%USERPROFILE%\documents\“
  3. öffnen des Programmes Notepad,
  4. schreiben des Skriptes,
  5. speichern des Skriptes als *.cmd Datei in den zuvor erzeugten Ordner,
  6. öffnen der Eingabeaufforderung
  7. starten des Skriptes

Im Anschluss könnte man nun diesen Mikrocontroller irgendwo platzieren und hoffen, dass dieser an einen Windows-PC angeschlossen wird und dann würde dieser binnen weniger Millisekunden das Skript erzeugen und ausführen.

Schreibe einen Kommentar Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Fragen oder Feedback?

Du hast eine Idee, brauchst Hilfe oder möchtest Feedback loswerden?
Support-Ticket erstellen

Newsletter abonnieren

Bleib auf dem Laufenden: Erhalte regelmäßig Updates zu neuen Projekten, Tutorials und Tipps rund um Arduino, ESP32 und mehr – direkt in dein Postfach.

Jetzt Newsletter abonnieren

Unterstütze meinen Blog

Wenn dir meine Inhalte gefallen, freue ich mich über deine Unterstützung auf Tipeee.
So hilfst du mit, den Blog am Leben zu halten und neue Beiträge zu ermöglichen.

draeger-it.blog auf Tipeee unterstützen

Vielen Dank für deinen Support!
– Stefan Draeger

Kategorien

Tools

  • Unix-Zeitstempel-Rechner
  • ASCII Tabelle
  • Spannung, Strom, Widerstand und Leistung berechnen
  • Widerstandsrechner
  • 8×8 LED Matrix Tool
  • 8×16 LED Matrix Modul von Keyestudio
  • 16×16 LED Matrix – Generator

Links

Blogverzeichnis Bloggerei.de TopBlogs.de das Original - Blogverzeichnis | Blog Top Liste Blogverzeichnis trusted-blogs.com

Stefan Draeger
Königsberger Str. 13
38364 Schöningen

Tel.: 01778501273
E-Mail: info@draeger-it.blog

Folge mir auf

  • Impressum
  • Datenschutzerklärung
  • Disclaimer
  • Cookie-Richtlinie (EU)
©2025 Technik Blog | Built using WordPress and Responsive Blogily theme by Superb
Cookie-Zustimmung verwalten
Wir verwenden Technologien wie Cookies, um Geräteinformationen zu speichern und/oder darauf zuzugreifen. Wir tun dies, um das Surferlebnis zu verbessern und um personalisierte Werbung anzuzeigen. Wenn Sie diesen Technologien zustimmen, können wir Daten wie das Surfverhalten oder eindeutige IDs auf dieser Website verarbeiten. Wenn Sie Ihre Zustimmung nicht erteilen oder zurückziehen, können bestimmte Funktionen beeinträchtigt werden.
Funktional Immer aktiv
Die technische Speicherung oder der Zugang ist unbedingt erforderlich für den rechtmäßigen Zweck, die Nutzung eines bestimmten Dienstes zu ermöglichen, der vom Teilnehmer oder Nutzer ausdrücklich gewünscht wird, oder für den alleinigen Zweck, die Übertragung einer Nachricht über ein elektronisches Kommunikationsnetz durchzuführen.
Vorlieben
Die technische Speicherung oder der Zugriff ist für den rechtmäßigen Zweck der Speicherung von Präferenzen erforderlich, die nicht vom Abonnenten oder Benutzer angefordert wurden.
Statistiken
Die technische Speicherung oder der Zugriff, der ausschließlich zu statistischen Zwecken erfolgt. Die technische Speicherung oder der Zugriff, der ausschließlich zu anonymen statistischen Zwecken verwendet wird. Ohne eine Vorladung, die freiwillige Zustimmung deines Internetdienstanbieters oder zusätzliche Aufzeichnungen von Dritten können die zu diesem Zweck gespeicherten oder abgerufenen Informationen allein in der Regel nicht dazu verwendet werden, dich zu identifizieren.
Marketing
Die technische Speicherung oder der Zugriff ist erforderlich, um Nutzerprofile zu erstellen, um Werbung zu versenden oder um den Nutzer auf einer Website oder über mehrere Websites hinweg zu ähnlichen Marketingzwecken zu verfolgen.
Optionen verwalten Dienste verwalten Verwalten von {vendor_count}-Lieferanten Lese mehr über diese Zwecke
Einstellungen anzeigen
{title} {title} {title}