Gedanken-gesteuerte Drohne: EEG (MindWave) steuert Micro-Racing-Drohne via Arduino MKR1000
Benötigte Hardware
| Komponente | Anzahl |
|---|---|
| Arduino MKR1000 (3,3 V Logik!) | 1 |
| Micro-Racing-Drohne mit Fernsteuerung | 1 |
| NeuroSky MindWave Mobile EEG-Headset | 1 |
| Kondensatoren 100 µF | 4 |
| Widerstände 220 Ω | 4 |
| Steckbrett & Jumper-Wires (ca. 12) | 1 Set |
| Lötkolben, Multimeter, Schraubendreher | – |
Projektidee
Eine Drohne allein durch Konzentration (Aufmerksamkeitslevel) steuern: Heben & Landen. Kein Joystick, keine Funkfernsteuerung – nur Gehirnwellen. Das Tutorial zeigt, wie man die Joystick-Potentiometer der Fernsteuerung überbrückt und durch analoge Spannungen vom Arduino ersetzt (Low-Pass-Filter wandeln PWM in Gleichspannung). Die EEG-Daten werden per Bluetooth an einen PC (Processing) gesendet, der die Aufmerksamkeitswerte seriell an den Arduino übermittelt.
Wichtige Hinweise
- Risiko: Die Fernsteuerung kann dauerhaft beschädigt werden. Nur mit Drohnen/Controllern experimentieren, deren Verlust verkraftbar ist.
- Spannung: Der Controller nutzt 2× AAA-Batterien (~3,3 V). Der Arduino MKR1000 liefert 3,3 V – perfekt. Ein 5-V-Arduino (UNO, Nano) würde den Controller zerstören!
- Umfang: Nur Gas (Throttle) wird gesteuert – Gier, Nick, Roll bleiben mittig. Erweiterung auf volle Steuerung ist möglich, aber komplexer.
- EEG-Alternative: Jeder Sensor (Licht, Temperatur, Taster) kann statt MindWave genutzt werden.
Phase 1: Fernsteuerung hacken (PCB-Modifikation)
- Gehäuse öffnen, Spannung der Joystick-Mittelstellung, Min/Max mit Multimeter messen & notieren.
- Beide Joysticks (je 2 Achsen = 4 Potentiometer) auslöten.
- Widerstand der Potis (zwischen + und –) messen → passende Festwiderstände (hier 10 Ω) an die +/- Pads löten, um den Spannungsteiler zu schließen.
- Drähte an + (B+), – (B–) und die vier Signal-Pads (je Achse ein Signal) löten.
Phase 2: PWM → Analogspannung (Low-Pass-Filter)
Der Arduino gibt PWM aus (Pin 2–5). Ein RC-Tiefpass (100 µF + 220 Ω) glättet das Signal zu einer proportionalen Gleichspannung (0–3,3 V). Vier Filter parallel – einer pro Steuerkanal (Throttle, Yaw, Pitch, Roll).
PWM-Pin → 220 Ω → + 100 µF → GND
│
└→ Signal an Controller-Pad
Die Spannung folgt dem PWM-Duty-Cycle mit leichter Verzögerung – für Gassteuerung ausreichend.
Phase 3: Arduino-Schaltung & Code
Vier PWM-Pins (2, 3, 4, 5) → vier Low-Pass-Filter → vier Signaldrähte am Controller. Shared Ground zwischen Arduino und Controller herstellen!
Arduino-Sketch (Drone Control)
int throttle=0, yaw=127, pitch=127, roll=127;
void setup() {
Serial.begin(115200);
pinMode(2,OUTPUT); pinMode(3,OUTPUT); pinMode(4,OUTPUT); pinMode(5,OUTPUT);
}
void loop() {
if (Serial.available()>0) {
throttle = Serial.parseInt();
yaw = Serial.parseInt();
pitch = Serial.parseInt();
roll = Serial.parseInt();
}
analogWrite(2, throttle);
analogWrite(3, yaw);
analogWrite(4, pitch);
analogWrite(5, roll);
}
Werte: 0–255 (8-Bit). Mitte (127) = Neutralstellung.
Phase 4: MindWave & Processing
- MindWave-Treiber installieren (CD/Download), per Bluetooth koppeln (3 s Power-Taste → blaues Blinken).
- Processing 3 + MindSet-Library installieren.
- COM-Ports prüfen: Arduino (z. B. COM10), MindWave (ThinkGear Connector, z. B. COM5).
- Processing-Sketch startet, liest
attentionLevel(0–100). Ab 40 % Aufmerksamkeit → Throttle linear auf 30–255 mappen. Drückt man 'k' → Notlandung (Throttle=0, Rest=127).
Processing-Code (Ausschnitt)
receiver = new Serial(this, "COM10", 115200);
mindSet = new MindSet(this, "COM5");
void draw() {
throttle = int(map(attentionLevel, 40, 100, 30, 255));
throttle = constrain(throttle, 0, 255);
if (receiver.available()>0) {
receiver.write("throttle:"+throttle+" yaw:127 pitch:127 roll:127");
}
}
Fazit & Ausblick
Ein faszinierendes Proof-of-Concept: PCB-Hacking, PWM-zu-Analog-Wandlung, serielle Kommunikation, EEG-Integration. Die Methode (Joystick überbrücken + Low-Pass) lässt sich auf viele Steuergeräte übertragen. Nächste Schritte: Vollsteuerung (Yaw/Pitch/Roll), PID-Regelung für sanfteres Verhalten, eigene EEG-Features (Blinkerkennung, Meditation).
Herstellungsprozess
- TinyML Spracherkennung mit Edge Impulse auf Arduino Nano 33 BLE Sense
- Echtzeit-Gyroskop-Spiel mit Arduino Nano & MPU-6050
- Arduino Digitaler Würfel: LCD-Würfel mit Zufallszahlen (1–6)
- 37-LED-Roulette-Spiel mit Arduino Nano bauen – Europäisches Layout
- ATtiny85 Mini-Arcade: Snake – Handheld OLED-Spielekonsole selbst bauen
- Tragbarer Entfernungsmesser – Arduino Nano DIY-Kit mit HC-SR04, 18650-Akku und 3D-gedrucktem Gehäuse
- DIY Arduino Luftbefeuchter-Steuerung mit Relais – Sichere Hochspannungs-Installation
- Fortgeschrittener ferngesteuerter Greifer-Roboter für präzises Handling
- Kupfer-Galvanik-Projekt: Intelligentes System mit Arduino UNO bauen
- NeoPixel-Matrix Pong auf Arduino Nano: Neon-Pong selbst bauen