Zuletzt geändert am 18. März 2019 um 22:32

FPV-Auto

Version vom 18. März 2019, 22:32 Uhr von Tut (Diskussion | Beiträge) (FPV Control Board)

Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:

  • Einfach nachzubauen
  • Steuerung per FPV über WLAN
  • Selbstgedrucktes Chassis aus dem 3D-Drucker
  • Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung
  • Energieversorgung: 2x 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)
  • Antrieb: 4x Mini-Motor mit Getriebe
  • Lenkung: Nur über unterschiedliche Ansteuerung der Motoren
  • Elektronik:
    • Raspberry Pi Zero W mit Kamera für FPV
    • Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller

FPV Control Board

Blockschaltung

Block diagram FPV Auto Shield.png

Features und Implementation

  • Stromversorgung:
    • 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)
      • LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)
      • TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)
      • TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)
      • TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)
      • TPS62007 (Buck, teuer, größeres Gehäuse)
    • Booster: 3x einstellbar, am besten mit Enable
      • 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)
      • 4 - 6V/2A für Motoren
      • evtl. separate 5V/1-2A für Servos/Neopixel
      • TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar) -> 1x für Motoren, 1x für Servos
      • TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)
  • Batteriemanagement:
    • bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)
    • bq24262 (Lader, per I2C einstellbar, 3.40 EUR)
    • bq24125 (Nur Lader, gut, aber 5.50 EUR!)
    • bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden
    • Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom
    • Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx
    • Reiner Balancer: bq2920x
    • Buck-Boost Charger: bq25703
    • Günstiger Buck Charger: bq24133
  • Motortreiber:
    • Kontrollierbar mit 3.3V Pegeln
    • 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen
    • DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)

Der DRV8835 ist mit nur 2 PWM-Kanälen einfacher anzusteuern da er by design einen Pin für die Richtung hat und einen für den PWM pro H-Brücke. Der DRV8833 ist für 4 PWMs ausgelegt. Er kann zwar auch nur mit 2 angesprochen werden, aber das ist komplizierter anzusteuern.

  • Pegelwandler:
    • 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich PCA9685)
    • 2x 3.3V -> 5V für Neopixel
  • Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V MAX98357A ist hier gut
  • NRF24L01+ Mini-Modul

Pinbelegung ATmega328

Arduino-Pin Port Funktion
0 PD0 (RxD) TxD am Raspi
1 PD1 (TxD) RxD am Raspi
2 PD2 (INT0)
3 PD3 (OC2B) DRV8835 BENBL
4 PD4
5 PD5 (OC0B)
6 PD6 (OC0A)
7 PD7
8 PB0
9 PB1 (OC1A) PWM/Servo out A
10 PB2 (OC1B) PWM/Servo out B
11 PB3 (MOSI/OC2A) DRV8835 AENBL
12 PB4 (MISO)
13 PB5 (SCK)

Platinen

FPV-Auto PCB Top.png FPV-Auto PCB Bot.png

Motoren


Reifen

20180604 201225.jpg 20180604 201232.jpg

Ø = 5,5 cm
U = π·d = 17,3 cm
200 RPM = 57,6 cm/sec
250 RPM = 72 cm/sec

Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen Datei:Felge8-2018.zip (spitze Madenschraube M3 wird benötigt)
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) Reifen


Akkus

18650 Akku

Chassis

Da es zwei unterschiedliche Ansätze zur Nutzung gibt

  • Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren
  • Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren

wurde das Chassis als Baukasten System entwickelt mit dem sich diese und weitere Ansprüche umsetzen lassen. Basis ist der mittlere Rahmen der die Motoren aufnimmt.

  • Maße: 115mm x 72mm x 15mm
  • Aufnahme für 4 12GA Motoren
  • Aufnahme für Raspberry Pi Zero Minikamera

20180624-fpvauto-rahmen.jpg

Für die Tumbler Version werden zwei flache (5mm) Schalen jeweils oben und unten an den Rahmen geschraubt, sie bieten dem Stack aus Raspberry Pi Zero und Drohnen Shield, sowie einer 18650 Zelle Platz

20180624-fpvauto-tumblrschale.jpg 20180624-fpvauto-fpvauto-tumblrconfig.jpg 20180624-fpvauto-fpvauto-tumblrchassis.jpg


Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.

20180624-fpvauto-stdschale.jpg 20180624-fpvauto-fpvauto-stdconfig.jpg 20180624-fpvauto-fpvauto-stdchassis.jpg

Datei:Chassis11.zip Schalen
Datei:X Chassis 11.zip Chassis

Raspberry Pi Zero W

Samba Freigabe

Einrichten wie hier beschrieben Raspberry_Pi_Grundlagen#Samba

Git

Git installieren

 sudo apt-get install git

Das Repository https://github.com/hackffm/FPVCar.git clonen

 git clone https://github.com/hackffm/FPVCar.git

Software

Videostreaming

Hier könnten wir UV4L verwenden.
Neben einfachem Videostreaming wie mjpg und h264 wird auch WebRTC unterstützt. Damit lassen sich bidirektionale Video-, Audio- und Datenstreams aufbauen um eine Telepräsenz realisieren zu können.
Ach ja und stereoskopische Kameras werden auch unterstützt.

Beispiel mit Gesichtserkennung [1]
Hier wird gezeigt wie man sich die Bibliothek installiert [2]

Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20. Das kann über die Oberfläche unter Control Panel gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt. Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern. Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf . Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart

Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.

 <img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480">