AR Drone 2.0 + 1Sheeld: Echtzeit-Flugdaten-Streaming zum PC
Komponenten und Materialien
| Komponente | Anzahl | Hinweise |
|---|---|---|
| Arduino Mega 2560 | 2 | Einer für die Drohne, einer für den PC |
| 1Sheeld | 1 | Smartphone-Sensor-Shield für Arduino |
| AR Drone 2.0 | 1 | Quadrocopter von Parrot |
| XBee Funkmodul | 2 | Für drahtlose Kommunikation zwischen Drohne und Bodenstation |
Projektbeschreibung
Dieses Projekt ermöglicht die Echtzeit-Übertragung verschiedener Flugdaten vom AR Drone 2.0 an einen PC. Ein Smartphone, das über 1Sheeld mit einem Arduino auf der Drohne verbunden ist, erfasst Sensordaten wie Beschleunigung, GPS-Position, Orientierung, Gyroskop, Umgebungsgeräusche und Helligkeit. Diese Daten werden über zwei XBee-Module drahtlos an einen zweiten Arduino am PC gesendet und dort visualisiert.
Das System nutzt zwei Arduino Mega 2560: Einen als „Master“ an der Bodenstation (PC-seitig) und einen als „Slave“ auf der Drohne. Der Master sendet Befehle über XBee an den Slave, welcher die gewünschten Sensordaten vom 1Sheeld abruft und zurückfunkte. Eine lustige und einfache Möglichkeit, alle Smartphone-Sensoren für Drohnenanwendungen zu nutzen – und nebenbei schöne Luftbilder zu machen.
Funktionsweise
- Master (Bodenstation): Empfängt Benutzereingaben über Serial Monitor (z. B. 'o' für Orientierung, 'a' für Beschleunigung, 'g' für GPS, 'm' für Mikrofon, 'b' für Helligkeit, 'p' für Foto) und sendet entsprechende Kommandos via XBee an den Slave.
- Slave (Drohne): Liest Sensordaten vom 1Sheeld (OrientationSensor, AccelerometerSensor, GPS, Mic, LightSensor, Camera) und sendet sie per XBee zurück. Nutzt Text-to-Speech für akustische Rückmeldung.
- Kommunikation: XBee-Module im transparenten Modus bei 9600 Baud; AltSoftSerial-Bibliothek für zuverlässige serielle Kommunikation.
Code
Master-Code (C/C++)
Läuft auf dem Arduino am PC. Benötigt Bibliothek AltSoftSerial.
#include <AltSoftSerial.h>
int verifica = 0;
AltSoftSerial xBee;
char c, h, stop = 's';
void setup() {
Serial.begin(115200);
Serial.println("Master OK");
Serial.println();
printMenu();
xBee.begin(9600);
}
void loop() {
Serial.flush();
if (Serial.available() > 0) {
c = Serial.read();
if (c == 'o' || c == 'a' || c == 'm' || c == 'g' || c == 'b' || c == 'p') {
handleCommand(c);
}
}
}
void printMenu() {
Serial.println("Befehl eingeben:");
Serial.println("'o' Orientierungssensor");
Serial.println("'a' Beschleunigungssensor");
Serial.println("'b' Helligkeitssensor");
Serial.println("'g' GPS-Position");
Serial.println("'m' Mikrofon (Geräuschpegel)");
Serial.println("'p' Foto aufnehmen");
}
void handleCommand(char cmd) {
// Implementierung für jeden Sensortyp analog zum Originalcode
// Sendet Kommando via xBee, liest Antwort, gibt auf Serial Monitor aus
// Abbruch mit 's' möglich
}
Slave-Code (C/C++)
Läuft auf dem Arduino an der Drohne. Benötigt AltSoftSerial und OneSheeld-Bibliothek.
#include <OneSheeld.h>
#include <AltSoftSerial.h>
char variabile;
AltSoftSerial xBee;
char master;
int voce = 0;
void setup() {
Serial.begin(115200);
Serial.println("Slave ok");
OneSheeld.begin();
xBee.begin(9600);
}
void loop() {
receiveEvent();
requestEvent();
}
void receiveEvent() {
while (xBee.available() > 0) {
master = xBee.read();
variabile = master;
}
}
void requestEvent() {
switch (variabile) {
case 'o':
xBee.print("Asse x: "); xBee.print(OrientationSensor.getX());
xBee.print(" Asse y: "); xBee.print(OrientationSensor.getY());
xBee.print(" Asse z: "); xBee.println(OrientationSensor.getZ());
break;
case 'a':
xBee.print("Asse x: "); xBee.print(AccelerometerSensor.getX());
xBee.print(" Asse y: "); xBee.print(AccelerometerSensor.getY());
xBee.print(" Asse z: "); xBee.println(AccelerometerSensor.getZ());
break;
case 'g':
xBee.print("Longitudine: "); xBee.print(GPS.getLongitude());
xBee.print(" Latitudine: "); xBee.println(GPS.getLatitude());
break;
case 'm':
xBee.print("dB: "); xBee.println(Mic.getValue());
break;
case 'b':
xBee.print("Lumen: "); xBee.println(LightSensor.getValue());
break;
case 'p':
Camera.setFlash(ON);
Camera.rearCapture();
xBee.println("Foto aufgenommen");
break;
// Text-to-Speech Fälle '1'..'6','0' analog
}
variabile = 0;
}
Schaltplan
Die Verdrahtung zwischen Arduino und XBee ist sowohl für den Bodenstations-Arduino als auch für den Drohnen-Arduino identisch. Das Schema zeigt die Verbindung von XBee VCC, GND, TX, RX an die entsprechenden Arduino-Pins (AltSoftSerial nutzt fest definierte Pins: Arduino Mega – TX an Pin 46, RX an Pin 48).
Hinweise & Tipps
- Stellen Sie sicher, dass beide XBee-Module denselben PAN-ID und Kanal konfiguriert sind.
- Die Reichweite hängt von der XBee-Variante ab (Series 1 ca. 100 m, Pro-Varianten bis 1,6 km).
- Für den 1Sheeld muss das Smartphone per Bluetooth mit dem Shield gekoppelt sein und die 1Sheeld-App laufen.
- Der Master-Code wartet auf Einzelbuchstaben-Befehle; senden Sie 's', um einen laufenden Datenstrom zu stoppen.
Herstellungsprozess
- Die Cloud-Revolution: Wie Cloud Computing IT, Sicherheit und Karrieren transformiert
- Globale Farbstoffindustrie im Wandel: Ökologische Wende, Regulierungsdruck und technologische Innovation
- Drone Pi: Dual-Mode Multiwii & Raspberry Pi Quadrocopter für Smartphone- und Fernsteuerung
- Wie Smartphones die Zukunft vernetzter Autos formen
- 6 Wege, wie KI & IoT Geschäftsabläufe 2019 revolutionieren
- Edge Computing & IoT-Strategie: Insights vom IoT World 2019
- KI kartiert globale informelle Siedlungen aus Satellitenbildern mit niedriger Auflösung
- Elbit Systems: Führende Verbundstofflösungen für Israel und die USA
- Sollten Sie Ihre Pumpe beschichten? Vor- und Nachteile abwägen
- Wartungsdokumentation meistern: Vertrauenswürdiger Ansatz zum Schutz Ihrer Assets