Die Steuerbox

Um alle Quadropcopter im 5er Formationsflug zu armen und einzustellen, haben wir eine zentrale Steuerbox entworfen. Sie verbindet sich mit allen Copter(über WLAN) und kann so zum Beispiel auch den Flugabstand einstellen.

Die Steuerbox basiert auf dem WLAN-Chip ESP-WROOM-32 und kommuniziert so mit den ESPs auf den OpenMV Cam Shields. Es gibt verschiedene  Benutzereingaben, wie  fünf  Schalter, drei Taster und 2 Schieberegler. Außerdem sind sechs RGB-LEDs verbaut, zur visuelle Ausgabe.

Schalter 1 :OI34
Schalter 2 :OI33
Schalter 3 :OI35
Schalter 4 :OI25
Schalter 5 :OI32

Taster1:IO14
Taster2:IO27
Taster3:IO26
Pot1:IO36(Sensor VP)
Pot2:IO39(Sensor VN)

(von links nach rechts)

 

Formationsflug Konstuktion

Der Plan ist es, vier Quadrocopter, um einen mittleren Quadrocopter, fliegen zu lassen. Dazu müssen auf dem Stab 12 LEDs befestigt sein(vier Stäbe). Um verschiedenste Formationen zu ermöglichen, sollen die LEDs paarweise einschaltbar sein. Gruppe1 und Gruppe2 werden zusammengeschlossen und Gruppe3 und Gruppe4 auch.

Aussicht / To-Do

Hardware:

  • 2 weitere Copter bauen, sobald die Teile aus China ankommen(6.Mai)
  • Copter ausstatten mit Halterungen und Co.
  • ESP32 Shield Platine bestücken
  • Formationsflug Konstruktion
  • Formationsflug LEDs anschließen
  • SteuerBox für den Formationsflug
  • SteuerboxPlatine bestücken / ausprobieren

3D-Druck / Design:

  • Alle Beine und Füße
  • Alle LED Halter für den Formationsflug
  • Neuen Stab mit Stabplatine
  • SteuerBox für den Formationsflug

Software:

 

  1. Gimbal
  2. Höhenberechnung
  3. armen
  4. formel verbessern
  1. Gyro-Daten schicken
  2. protokoll von FC zu OpenMV
  3. Gyro-Daten in Servo Befehle
  4. höhenberechnung: 1 Zeile
  5. umstellen zwischen alter und neuer höhenberechnung app
  6. umstellen zwischen alter und neuer höhenberechnung openmv
  7. app: Arm-Button
  8. cam: arm channel an fc
  9. fc Arm = Fernbedienungarm || cam arm

App mit mehreren Quadros-Verbinden

Allgemein:

  • Plakat
  • Plaktat auf DIN A3 für Juroren
  • Visitenkarten mit Website
  • Vortrag üben und Co.

(Durchstreichen falls erledigt !)

OpenMV Cam Bluetooth Shield Update

in einem vorherigen Beitrag wurde unser Shield für die OpenMV Cam beschrieben. Der neue Schaltplan ist leichter zu verstehen und der Taster wurde durch einen 2-poligen DIP-Schalter ersetzt. Außerdem haben wir ein Platinenlayout erstellt, was wir an eine Firma geben können, die uns die Platinen herstellt.

FlightController Datenübertragung (OpenMV)

Dient dazu, die berechneten Channel-Werte der OpenMV Kamera an den Flightcontroller weiterzuleiten. Zur Zeit ist die Datenübertragung nur von der OpenMV zum Flightcontroller implementiert, eine Rückleitung gibt es zur Zeit nicht.

Hardware

Es wird der UART3 der OpenMV Kamera verwendet. Der Anschluss erfolgt über P04 (TXD und P5 (RXD). Auf dem Flightcontroller ist die Schnittstelle an den ??? UART angeschlossen.

Datenverbindung

UART1, 115200 Baud, 8 Datenbits, no parity, 1 Stop, kein Handshake (OpenMV)

Bei der Smartphone-Datenübertragung ist die Baudrate 9600 Baud.

Checksumme

Die Datenübertragung zwischen der OpenMV Kamera und dem Flightcontroller erfolgt über DatenFrames (s.u.). Um diese Übertragung sicher zu machen, wird eine Checksumme verwendet. Dieselbe Checksummen-Berechnung wird auch für die Kommunikation zwischen OpenMV und Handy benutzt.

Frame Protokoll

  • StartByte (0xAA)
  • DummyByte (0x00)
  • Channel0 (16 Bit) = Yaw
  • Channel1 (16 Bit) = Pitch
  • Channel2 (16 Bit) = Throttle
  • Channel3 (16 Bit) = Roll
  • Channel4 (16 Bit) = KameraServo (nur bei Smartphone, not used bei OpenMV)
  • Channel5 (16 Bit) = Status
  • CRC16 (16 Bit, Startwert = 0)
  • DummyByte (0x00)
  • StopByte (0x55)

Kodierung Channels

Die Channels werden im „Servoformat“ kodiert:

In Servo-Mittelposition ist der Channelwert = 1500

In Servo-Position links ist der Channelwert = 900

In Servo-Position rechts ist der Channelwert = 2100

Todo Liste März 2018

Was geht

  • Finden des Punkts mit der höchsten Intensität (über ColorTable), nur für Debugging
  • Bildauswertung mit colortable in SquareArray[]
  • Finden der 3 Leds in SquareArray, mit Löschen der Neighbours
  • Datenempfang UART (Bluetooth) * Datenauswertung Bluetooth-Protokoll (work in progress)

todo

Durchgestrichene Punkte sind bereits erledigt.

Prio 1: Datenübertragung

  • [SW] CRC-Berechnung
  • [SW] Fertigstellung Datenauswertung Bluetooth-Protokoll
  • [SW] Datensenden UART
  • [SW] Bluetooth-Protokoll Senden
  • [SW] UART-Protokoll Flightcontroller (Senden)

Prio 2: Regelung

  • [SW] Umsetzen des Java-Codes zur Led-Auswertung in C
  • [SW] PID-Implementierung (testen CMSIS-Algo)
  • [SW] Daten für UART bereitstellen
  • [SW] Messen der Framerate (ohne Debugausgabe), Framerate über Bluetooth abrufbar

Prio 3: Copter-Test (1)

  • [HW] testen der PID-Einstellungen für kleinen Copter (1)
  • [HW, SW] testen der Entfernungseinstellung über Bluetooth und Handy

Prio 3: Plakat und StandDoku

  • [HW, SW] Layout des Plakats
  • [HW, SW] Druck des Plakats
  • [HW, SW] Layout Flyer
  • [HW, SW] Druck Flyer

Prio 4: Messen

  • [HW, SW] Wie empfindlich ist die Bildschärfe auf unterschiedliche Entfernungen (2,5m – 10m) bei verschiedenen Linsen?

Prio 5: Handling

  • [SW] Zustandssignalisierung über Leds
  • [SW] Abspeichern der PID Werte in ein EEprom o.ä.

Prio 6: Verbesserungen

  • [SW] LedErkennung per Filter mit 4 Aussenpunkten, dafür ggf. zweite ColorTable notwendig
  • [SW] LedErkennung: Entfernung der 4 Aussenpunkte abhängig von der Entfernung
  • [SW] Regelung der Belichtung abhängig von MaxIntensity, Entfernung
  • [SW] Änderung der SquareSize abhängig von der Entfernung des Copters

Prio 7: Copter-Test (2)

  • [HW, SW] testen der PID-Einstellungen für kleinen Copter (2), Finetuning mit allen Verbesserungen

Prio 8: Formationsflug

  • [HW] Leds am großen Copter anbringen, mittlere Led mit Servo
  • [SW] Ansteuerung des Servos vom Flightcontroller, Auswertung des Gyro
  • [HW] Fernsteuerungfrage klären

Bluetooth Datenübertragung

Dient dazu, Parameter der OpenMV Kamera während dem Betrieb lesen und ändern zu können oder Aktionen auf der OpenMV Kamera zu starten.

Hardware

Es wird der UART1 der OpenMV Kamera verwendet. Der Anschluss erfolgt über P0 (RXD und P1 (TXD). Zusätzlich wird der Pin P2 verwendet. Dieser kann den Mode-Eingang des Bluetooth-Moduls umschalten. Im Normalbetrieb ist dieser Pin Low.

Datenverbindung

UART1, 115200 Baud, 8 Datenbits, no parity, 1 Stop, kein Handshake

Checksumme

Die Datenübertragung zwischen Handy und OpenMV Kamera erfolgt über Frames (s.u.). Um diese Übertragung sicher zu machen, wird eine Checksumme verwendet. Dieselbe Checksummen-Berechnung wird auch für die Kommunikation zwischen OpenMV und Flightcontroller benutzt.

Frame Protokoll

  • StartByte (0xAA)
  • PacketType (1 Byte unsigned)
  • Index (4 Byte int)
  • Data (4 Byte float)
  • CRC16 (2 Byte, Startwert = 0)
  • StopByte (0x55)

Set Data in OpenMV: PacketType = 1

Datenübertragung vom Handy zur OpenMV Kamera.

Schreibt Daten in Variablen der OpenMV Kamera. Mit jedem Frame wird eine float Variable, die durch Index festgelegt wird, an die OpenMV Kamera gesendet.

Die Kamera antwortet mit PacketType = 3 mit der Einstellung, die geändert wurde.

Die Einstellungen sind:

"Throttle P",   "Throttle I",   "Throttle D",   "Throttle Offset",  "Throttle Status",  "Throttle setPoint",
"Yaw P",        "Yaw I",        "Yaw D",        "Yaw Offset",       "Yaw Status",       "Yaw setPoint",
"Pitch P",      "Pitch I",      "Pitch D",      "Pitch Offset",     "Pitch Status",     "Pitch setPoint",
"Roll P",       "Roll I",       "Roll D",       "Roll Offset",      "Roll Status",      "Roll setPoint",
"CameraPitch P","CameraPitch I","CameraPitch D","CameraPitch Offset","CameraPitch Status","CameraPitch setPoint",
"toleranceFactor", "sendDebugData"

Query Data from OpenMV: PacketType = 2

Datenübertragung vom Handy zur OpenMV Kamera.

Fragt nach einer Variablen der OpenMV Kamera am angegebenen Index. Die OpenMV Kamera antwortet mit „Response Data“ (PacketType = 3) des angefragten Index.

Query all Data from OpenMV: PacketType = 3

Datenübertragung vom Handy zur OpenMV Kamera.

Fragt nach allen Variablen der OpenMV Kamera. Die OpenMV Kamera antwortet mit mehreren „Response Data“ (PacketType = 3) Paketen (für jede Variable ein Paket).

Response Data from OpenMV: PacketType = 4

Datenübertragung von der OpenMV Kamera zum Handy.
Schickt  Variablen der OpenMV Kamera zurück zum Handy. Dies ist eine Antwort auf die „Query Data“ Frage des Handys (PacketType = 2). Mit jedem DatenFrame wird eine float Variable, die durch Index festgelegt wird, von der OpenMV Kamera zurück ans Handy gesendet.

Save Settings to Flash: PacketType = 5

Wenn dieser Befehl an die Kamera and die Kamera geschickt wird, speicht sie alle Einstellungen auf dem Flash Filesystem der OpenMV Kamera.

Index und Data sind Null / dont care.

Debug Data from OpenMV: PacketType = 6

Datenübertragung von der OpenMV Kamera zum Handy.
Schickt  Variablen der OpenMV Kamera zurück zum Handy.Wenn die Variable „SendDebugData“ > 0.5 ist, dann werden die DebugDaten in jedem Kameraframe gesendet.

DEBUG DATA FRAME PROTOKOLL
  1. StartByte (0xAA)
  2. PacketType (1 Byte unsigned) = 4
  3. Led0-X-Pos (-1.0 – 1.0, float)
  4. Led0-Y-Pos (-1.0 – 1.0, float)
  5. Led1-X-Pos (-1.0 – 1.0, float)
  6. Led1-Y-Pos (-1.0 – 1.0, float)
  7. Led2-X-Pos (-1.0 – 1.0, float)
  8. Led3-Y-Pos (-1.0 – 1.0, float)
  9. Entfernung (in m, float)
  10. FPS, float
  11. throttle Short
  12. yaw Short
  13. pitch Short
  14. roll Short
  15. CRC16 (16 Bit, Startwert = 0, alle Daten inkl. PacketType)
  16. StopByte (0x55)

Set Waypoint in OpenMV: PacketType = 7

Wenn dieser Befehl an die Kamera geschickt wird, gibt sie einen Befehl an den FC weiter zum Waypoint-Erstellen.

Im Moment nicht implementiert.

Settings saved to FlashAcknowledge: PacketType = 8

Dieses Package schickt die OpenMV Kamera zurück, sobald alle Settings im Flash gespeichert wurden.

Index und Data sind Null / dont care.

Weitere Stab und Quadrocopter Einzelteile

Anzahl Name Link Preis
6 High-Power LED Nichia NCSR219B-V1 SMD-LED 1,64 €
6 Kühlkörper Kühlkörper 23x23mm 1,49 €
2 Konstantstromquelle Meanwell LDD-350LW (350 mA) 6,49 €
6 LED-Linsen Carclo Linse 10mm 19.5° 1,36 €
1 USB-Micro Verlängerung 2x Micro USB Verlängerung 0,2m 5,99 €
1 Flachbandkabel Farbiges Flachbandkabel 6,49 €
1 XT60 Stecker Nylon Hochstrom XT60 Stecker 6,25 €
1 Bluetooth Modul HC-05 Bluetooth Modul 7,49 €