https://hackerspace-ffm.de/wiki/api.php?action=feedcontributions&user=Srek&feedformat=atomHackerspace Ffm - Benutzerbeiträge [de]2024-03-29T00:35:23ZBenutzerbeiträgeMediaWiki 1.25.3https://hackerspace-ffm.de/wiki/index.php?title=NachtderMuseen2020&diff=10945NachtderMuseen20202020-01-08T12:40:26Z<p>Srek: /* Alien Spaceship Escape */</p>
<hr />
<div>=Nacht der Museen 2020=<br />
<br />
<br />
<br />
==Alien Spaceship Escape==<br />
<br />
[[Datei:20200106 215906.jpg|320px|thumb]]<br />
<br />
===Verfügbare Materialien===<br />
Bodenplatten von Lidl Florabest <br />
46x23x2,7cm<br />
ca. 50 Stück<br />
<br />
Wandhöhe 23cm<br />
<br />
Unterbodenhöhe 10cm<br />
<br />
Fahrbahnbreite- und höhe orientiert sich an den Maßen der [[FPV-Auto]]'s<br />
<br />
----<br />
<br />
ca. 4 m² Acryl Milchglas 3.5mm stark für Wände, Decken oder Boden. (Björn)</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10716FPV-Auto2019-08-06T09:06:35Z<p>Srek: /* Chassis */Alte Datei Links durch Link zu Github Repository ersetzt.</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Package für Arduino ====<br />
Die Idee ist, dass das Board direkt vom Raspberry Zero geupdatet werden kann. Dazu muss auf den Raspberry zunächst Arduino installiert werden - am besten indem zunächst der Default-Arduino via <pre>sudo apt install arduino</pre> installiert wird, und dann aber ersetzt wird, indem von arduino.cc die ARM-Version nach installiert wird.<br />
<pre><br />
wget https://downloads.arduino.cc/arduino-1.8.9-linuxarm.tar.xz<br />
tar -xvf arduino-1.8.9-linuxarm.tar.xz<br />
sudo mv arduino-1.8.9 /opt<br />
sudo /opt/arduino-1.8.9/install.sh<br />
</pre><br />
In der neuen Arduino-IDE unter File->Preferences den Sketchbook-Speicherort auf das Arduino-Verzeichniss aus dem GIT-Repository gesetzt und die IDE neu gestartet. Damit sind sofort alle speziellen Libraries und das FPV-Auto in der Board-Auswahl verfügbar. Auf dem Raspberry muss "FPV-Auto on Raspberry" gewählt werden, um vom Raspberry das aufgesteckte Board umzuprogrammieren. Die Variante ohne "on Raspberry" ist für den Fall, dass man das Board vom PC aus programmieren möchte - hierzu muss man RX/TX/Reset und GND mit einem 3.3V USB-Seriell-Adapter anschliessen.<br />
<br />
==== Kommandos von FPVAutoControl ====<br />
Die Kommandos werden per Serieller Schnittstelle übertragen mit 38400,8N1. Komplexere Kommandos müssen mit einem Return terminiert werden, andere werden direkt ausgeführt um z.B. das Auto rudimentär mit den Tasten W-S-A-D zu steuern. Test per Minicom <code>minicom -b 38400 -D /dev/ttyS0</code><br />
<br />
Kommandos:<br />
* m xx yy rr : Drive mit den Werten XX YY RR (alt, eher unsinn ohne Omniwheels)<br />
* f ll rr : Aktiviere Motoren Links / Rechts (-255 ... 0 ... 255)<br />
* N aa bb : Stelle Servo A/B (0..180 besser nur 0..160 bei SG90...)<br />
* p!999 : Abschalten nach 60sek<br />
* ph aa : Stelle Servo A<br />
* pv aa : Stelle Servo B<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
==== Audio Ausgabe aktivieren ====<br />
Geht am Arduino vorbei, dieses Tutorial nutzen: http://www.lucadentella.it/en/2017/04/26/raspberry-pi-zero-audio-output-via-i2s/ und die asound.conf mit dem Kram von hier bestücken: https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/raspberry-pi-usage#detailed-install-5-16<br />
<br />
<pre>sudo nano /boot/config.txt</pre><br />
<pre><br />
...<br />
#dtparam=audio=on<br />
dtoverlay=hifiberry-dac<br />
dtoverlay=i2s-mmap<br />
...<br />
</pre><br />
<br />
<pre>sudo nano /etc/asound.conf</pre><br />
<br />
<pre><br />
pcm.speakerbonnet {<br />
type hw card 0<br />
}<br />
<br />
pcm.dmixer {<br />
type dmix<br />
ipc_key 1024<br />
ipc_perm 0666<br />
slave {<br />
pcm "speakerbonnet"<br />
period_time 0<br />
period_size 1024<br />
buffer_size 8192<br />
rate 44100<br />
channels 2<br />
}<br />
}<br />
<br />
ctl.dmixer {<br />
type hw card 0<br />
}<br />
<br />
pcm.softvol {<br />
type softvol<br />
slave.pcm "dmixer"<br />
control.name "PCM"<br />
control.card 0<br />
}<br />
<br />
ctl.softvol {<br />
type hw card 0<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "softvol"<br />
}<br />
</pre><br />
<br />
pygame installieren<br />
<pre>sudo apt install python3-pygame</pre><br />
<br />
sound downloaden<br />
<pre>wget http://www.wavsource.com/snds_2018-06-03_5106726768923853/animals/chicken.wav</pre><br />
<br />
python3 script erstellen<br />
<pre><br />
import pygame<br />
import time<br />
<br />
pygame.mixer.init(44100, -16, 1, 1024)<br />
pygame.mixer.music.load("chicken.wav")<br />
pygame.mixer.music.play()<br />
<br />
time.sleep(3)<br />
</pre><br />
<br />
==== Kamera aktivieren ====<br />
https://github.com/jacksonliam/mjpg-streamer<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
<br />
Ø = 5,8 cm<br><br />
U = π·d = 18,2 cm<br><br />
50 RPM = 15,2 cm/sec<br><br />
200 RPM = 60,7 cm/sec<br><br />
250 RPM = 75,9 cm/sec<br><br />
Dateien sind hier zu finden https://github.com/bmarl/FPVCar/tree/master/3D-print-parts<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Alle Teile für das aktuelle Chassis sind hier zu finden - https://github.com/bmarl/FPVCar/tree/master/3D-print-parts<br />
<br />
<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
=== Protokoll für Commandos aus der Webgui ===<br />
{<br />
"modul":"MODULNAME",<br />
"key": "value"<br />
}<br />
<br />
Beispiel<br />
<br />
{<br />
"modul":"base",<br />
"forward": 10<br />
}<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"><br />
<br />
== Emotionen ==<br />
Mit einem OLED Display kann man dem Gefährt Emotionen mit geben.<br />
<br />
Hier ein Test mit einem 128x64 Pixel Display:<br><br />
[[Datei:Eyes neutral.png]]<br />
[[Datei:Eyes skeptic.png]]<br />
[[Datei:Eyes angry.png]]<br />
[[Datei:Eyes sad down.png]]<br />
<br />
Verwendet wird die Python Bibliothek [https://github.com/rm-hull/luma.oled Luma.OLED].<br><br />
Das Python-Skript liegt im Git Repo unter python/eyes.</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10715FPV-Auto2019-08-06T09:04:47Z<p>Srek: /* Reifen */Replaced non working file upload with Github link</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Package für Arduino ====<br />
Die Idee ist, dass das Board direkt vom Raspberry Zero geupdatet werden kann. Dazu muss auf den Raspberry zunächst Arduino installiert werden - am besten indem zunächst der Default-Arduino via <pre>sudo apt install arduino</pre> installiert wird, und dann aber ersetzt wird, indem von arduino.cc die ARM-Version nach installiert wird.<br />
<pre><br />
wget https://downloads.arduino.cc/arduino-1.8.9-linuxarm.tar.xz<br />
tar -xvf arduino-1.8.9-linuxarm.tar.xz<br />
sudo mv arduino-1.8.9 /opt<br />
sudo /opt/arduino-1.8.9/install.sh<br />
</pre><br />
In der neuen Arduino-IDE unter File->Preferences den Sketchbook-Speicherort auf das Arduino-Verzeichniss aus dem GIT-Repository gesetzt und die IDE neu gestartet. Damit sind sofort alle speziellen Libraries und das FPV-Auto in der Board-Auswahl verfügbar. Auf dem Raspberry muss "FPV-Auto on Raspberry" gewählt werden, um vom Raspberry das aufgesteckte Board umzuprogrammieren. Die Variante ohne "on Raspberry" ist für den Fall, dass man das Board vom PC aus programmieren möchte - hierzu muss man RX/TX/Reset und GND mit einem 3.3V USB-Seriell-Adapter anschliessen.<br />
<br />
==== Kommandos von FPVAutoControl ====<br />
Die Kommandos werden per Serieller Schnittstelle übertragen mit 38400,8N1. Komplexere Kommandos müssen mit einem Return terminiert werden, andere werden direkt ausgeführt um z.B. das Auto rudimentär mit den Tasten W-S-A-D zu steuern. Test per Minicom <code>minicom -b 38400 -D /dev/ttyS0</code><br />
<br />
Kommandos:<br />
* m xx yy rr : Drive mit den Werten XX YY RR (alt, eher unsinn ohne Omniwheels)<br />
* f ll rr : Aktiviere Motoren Links / Rechts (-255 ... 0 ... 255)<br />
* N aa bb : Stelle Servo A/B (0..180 besser nur 0..160 bei SG90...)<br />
* p!999 : Abschalten nach 60sek<br />
* ph aa : Stelle Servo A<br />
* pv aa : Stelle Servo B<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
==== Audio Ausgabe aktivieren ====<br />
Geht am Arduino vorbei, dieses Tutorial nutzen: http://www.lucadentella.it/en/2017/04/26/raspberry-pi-zero-audio-output-via-i2s/ und die asound.conf mit dem Kram von hier bestücken: https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/raspberry-pi-usage#detailed-install-5-16<br />
<br />
<pre>sudo nano /boot/config.txt</pre><br />
<pre><br />
...<br />
#dtparam=audio=on<br />
dtoverlay=hifiberry-dac<br />
dtoverlay=i2s-mmap<br />
...<br />
</pre><br />
<br />
<pre>sudo nano /etc/asound.conf</pre><br />
<br />
<pre><br />
pcm.speakerbonnet {<br />
type hw card 0<br />
}<br />
<br />
pcm.dmixer {<br />
type dmix<br />
ipc_key 1024<br />
ipc_perm 0666<br />
slave {<br />
pcm "speakerbonnet"<br />
period_time 0<br />
period_size 1024<br />
buffer_size 8192<br />
rate 44100<br />
channels 2<br />
}<br />
}<br />
<br />
ctl.dmixer {<br />
type hw card 0<br />
}<br />
<br />
pcm.softvol {<br />
type softvol<br />
slave.pcm "dmixer"<br />
control.name "PCM"<br />
control.card 0<br />
}<br />
<br />
ctl.softvol {<br />
type hw card 0<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "softvol"<br />
}<br />
</pre><br />
<br />
pygame installieren<br />
<pre>sudo apt install python3-pygame</pre><br />
<br />
sound downloaden<br />
<pre>wget http://www.wavsource.com/snds_2018-06-03_5106726768923853/animals/chicken.wav</pre><br />
<br />
python3 script erstellen<br />
<pre><br />
import pygame<br />
import time<br />
<br />
pygame.mixer.init(44100, -16, 1, 1024)<br />
pygame.mixer.music.load("chicken.wav")<br />
pygame.mixer.music.play()<br />
<br />
time.sleep(3)<br />
</pre><br />
<br />
==== Kamera aktivieren ====<br />
https://github.com/jacksonliam/mjpg-streamer<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
<br />
Ø = 5,8 cm<br><br />
U = π·d = 18,2 cm<br><br />
50 RPM = 15,2 cm/sec<br><br />
200 RPM = 60,7 cm/sec<br><br />
250 RPM = 75,9 cm/sec<br><br />
Dateien sind hier zu finden https://github.com/bmarl/FPVCar/tree/master/3D-print-parts<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br><br />
[[Datei:20190424InWheel.zip]] In Wheel Chassis (Testplattform)<br><br />
[[Datei:20190605-InWheelChassis.zip]] In Wheel Chassis (Beta 1) mit Befestigungslöchern für Stack<br><br />
[[Datei:20190605-StackHolder.zip]] Stackbefestigung für Beta 1 Chassis. Befestigung mittels 2x M4 Senkkopf 5mm <br><br />
[[Datei:20190715-InWheel.zip]] In Wheel Chassis - Versetzter Stackholder, Ladekontakte, Lautsprechergitter<br><br />
[[Datei:20190722-InWhee-Deckel.zip]] Deckel für In Wheel Chassis - Nur Befestigungsbohrungen<br><br />
kommt noch: In Wheel Chassis mit Clip On Deckel und alterbativ DOF Befestigungspunkten im Deckel<br><br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
=== Protokoll für Commandos aus der Webgui ===<br />
{<br />
"modul":"MODULNAME",<br />
"key": "value"<br />
}<br />
<br />
Beispiel<br />
<br />
{<br />
"modul":"base",<br />
"forward": 10<br />
}<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"><br />
<br />
== Emotionen ==<br />
Mit einem OLED Display kann man dem Gefährt Emotionen mit geben.<br />
<br />
Hier ein Test mit einem 128x64 Pixel Display:<br><br />
[[Datei:Eyes neutral.png]]<br />
[[Datei:Eyes skeptic.png]]<br />
[[Datei:Eyes angry.png]]<br />
[[Datei:Eyes sad down.png]]<br />
<br />
Verwendet wird die Python Bibliothek [https://github.com/rm-hull/luma.oled Luma.OLED].<br><br />
Das Python-Skript liegt im Git Repo unter python/eyes.</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10714FPV-Auto2019-08-06T07:55:45Z<p>Srek: /* Reifen */Neue Reifen Version mit allen Dateien</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Package für Arduino ====<br />
Die Idee ist, dass das Board direkt vom Raspberry Zero geupdatet werden kann. Dazu muss auf den Raspberry zunächst Arduino installiert werden - am besten indem zunächst der Default-Arduino via <pre>sudo apt install arduino</pre> installiert wird, und dann aber ersetzt wird, indem von arduino.cc die ARM-Version nach installiert wird.<br />
<pre><br />
wget https://downloads.arduino.cc/arduino-1.8.9-linuxarm.tar.xz<br />
tar -xvf arduino-1.8.9-linuxarm.tar.xz<br />
sudo mv arduino-1.8.9 /opt<br />
sudo /opt/arduino-1.8.9/install.sh<br />
</pre><br />
In der neuen Arduino-IDE unter File->Preferences den Sketchbook-Speicherort auf das Arduino-Verzeichniss aus dem GIT-Repository gesetzt und die IDE neu gestartet. Damit sind sofort alle speziellen Libraries und das FPV-Auto in der Board-Auswahl verfügbar. Auf dem Raspberry muss "FPV-Auto on Raspberry" gewählt werden, um vom Raspberry das aufgesteckte Board umzuprogrammieren. Die Variante ohne "on Raspberry" ist für den Fall, dass man das Board vom PC aus programmieren möchte - hierzu muss man RX/TX/Reset und GND mit einem 3.3V USB-Seriell-Adapter anschliessen.<br />
<br />
==== Kommandos von FPVAutoControl ====<br />
Die Kommandos werden per Serieller Schnittstelle übertragen mit 38400,8N1. Komplexere Kommandos müssen mit einem Return terminiert werden, andere werden direkt ausgeführt um z.B. das Auto rudimentär mit den Tasten W-S-A-D zu steuern. Test per Minicom <code>minicom -b 38400 -D /dev/ttyS0</code><br />
<br />
Kommandos:<br />
* m xx yy rr : Drive mit den Werten XX YY RR (alt, eher unsinn ohne Omniwheels)<br />
* f ll rr : Aktiviere Motoren Links / Rechts (-255 ... 0 ... 255)<br />
* N aa bb : Stelle Servo A/B (0..180 besser nur 0..160 bei SG90...)<br />
* p!999 : Abschalten nach 60sek<br />
* ph aa : Stelle Servo A<br />
* pv aa : Stelle Servo B<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
==== Audio Ausgabe aktivieren ====<br />
Geht am Arduino vorbei, dieses Tutorial nutzen: http://www.lucadentella.it/en/2017/04/26/raspberry-pi-zero-audio-output-via-i2s/ und die asound.conf mit dem Kram von hier bestücken: https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/raspberry-pi-usage#detailed-install-5-16<br />
<br />
<pre>sudo nano /boot/config.txt</pre><br />
<pre><br />
...<br />
#dtparam=audio=on<br />
dtoverlay=hifiberry-dac<br />
dtoverlay=i2s-mmap<br />
...<br />
</pre><br />
<br />
<pre>sudo nano /etc/asound.conf</pre><br />
<br />
<pre><br />
pcm.speakerbonnet {<br />
type hw card 0<br />
}<br />
<br />
pcm.dmixer {<br />
type dmix<br />
ipc_key 1024<br />
ipc_perm 0666<br />
slave {<br />
pcm "speakerbonnet"<br />
period_time 0<br />
period_size 1024<br />
buffer_size 8192<br />
rate 44100<br />
channels 2<br />
}<br />
}<br />
<br />
ctl.dmixer {<br />
type hw card 0<br />
}<br />
<br />
pcm.softvol {<br />
type softvol<br />
slave.pcm "dmixer"<br />
control.name "PCM"<br />
control.card 0<br />
}<br />
<br />
ctl.softvol {<br />
type hw card 0<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "softvol"<br />
}<br />
</pre><br />
<br />
pygame installieren<br />
<pre>sudo apt install python3-pygame</pre><br />
<br />
sound downloaden<br />
<pre>wget http://www.wavsource.com/snds_2018-06-03_5106726768923853/animals/chicken.wav</pre><br />
<br />
python3 script erstellen<br />
<pre><br />
import pygame<br />
import time<br />
<br />
pygame.mixer.init(44100, -16, 1, 1024)<br />
pygame.mixer.music.load("chicken.wav")<br />
pygame.mixer.music.play()<br />
<br />
time.sleep(3)<br />
</pre><br />
<br />
==== Kamera aktivieren ====<br />
https://github.com/jacksonliam/mjpg-streamer<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
<br />
Ø = 5,8 cm<br><br />
U = π·d = 18,2 cm<br><br />
50 RPM = 15,2 cm/sec<br><br />
200 RPM = 60,7 cm/sec<br><br />
250 RPM = 75,9 cm/sec<br><br />
<br />
[[Datei:190806-Reifen.zip]] Reifen für Druck in TPU oder als Vorlage für eigene Gussform etc.<br><br />
[[Datei:190806-ReifenGussform.zip]] Gussform für Silikon Reifen - Für 4 Reifen werden ca. 100g Silikon benötigt, zzgl. 20g für Kleckern etc.<br><br />
[[Datei:190806-ReifenGussformHelfer.zip]] Einfüllhilfe für Gussform<br><br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br><br />
[[Datei:20190424InWheel.zip]] In Wheel Chassis (Testplattform)<br><br />
[[Datei:20190605-InWheelChassis.zip]] In Wheel Chassis (Beta 1) mit Befestigungslöchern für Stack<br><br />
[[Datei:20190605-StackHolder.zip]] Stackbefestigung für Beta 1 Chassis. Befestigung mittels 2x M4 Senkkopf 5mm <br><br />
[[Datei:20190715-InWheel.zip]] In Wheel Chassis - Versetzter Stackholder, Ladekontakte, Lautsprechergitter<br><br />
[[Datei:20190722-InWhee-Deckel.zip]] Deckel für In Wheel Chassis - Nur Befestigungsbohrungen<br><br />
kommt noch: In Wheel Chassis mit Clip On Deckel und alterbativ DOF Befestigungspunkten im Deckel<br><br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
=== Protokoll für Commandos aus der Webgui ===<br />
{<br />
"modul":"MODULNAME",<br />
"key": "value"<br />
}<br />
<br />
Beispiel<br />
<br />
{<br />
"modul":"base",<br />
"forward": 10<br />
}<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"><br />
<br />
== Emotionen ==<br />
Mit einem OLED Display kann man dem Gefährt Emotionen mit geben.<br />
<br />
Hier ein Test mit einem 128x64 Pixel Display:<br><br />
[[Datei:Eyes neutral.png]]<br />
[[Datei:Eyes skeptic.png]]<br />
[[Datei:Eyes angry.png]]<br />
[[Datei:Eyes sad down.png]]<br />
<br />
Verwendet wird die Python Bibliothek [https://github.com/rm-hull/luma.oled Luma.OLED].<br><br />
Das Python-Skript liegt im Git Repo unter python/eyes.</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10712FPV-Auto2019-07-24T18:54:11Z<p>Srek: /* Chassis */ Chassis mit Clip On Deckel und DOF Befestigungen</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Package für Arduino ====<br />
Die Idee ist, dass das Board direkt vom Raspberry Zero geupdatet werden kann. Dazu muss auf den Raspberry zunächst Arduino installiert werden - am besten indem zunächst der Default-Arduino via <pre>sudo apt install arduino</pre> installiert wird, und dann aber ersetzt wird, indem von arduino.cc die ARM-Version nach installiert wird.<br />
<pre><br />
wget https://downloads.arduino.cc/arduino-1.8.9-linuxarm.tar.xz<br />
tar -xvf arduino-1.8.9-linuxarm.tar.xz<br />
sudo mv arduino-1.8.9 /opt<br />
sudo /opt/arduino-1.8.9/install.sh<br />
</pre><br />
In der neuen Arduino-IDE unter File->Preferences den Sketchbook-Speicherort auf das Arduino-Verzeichniss aus dem GIT-Repository gesetzt und die IDE neu gestartet. Damit sind sofort alle speziellen Libraries und das FPV-Auto in der Board-Auswahl verfügbar. Auf dem Raspberry muss "FPV-Auto on Raspberry" gewählt werden, um vom Raspberry das aufgesteckte Board umzuprogrammieren. Die Variante ohne "on Raspberry" ist für den Fall, dass man das Board vom PC aus programmieren möchte - hierzu muss man RX/TX/Reset und GND mit einem 3.3V USB-Seriell-Adapter anschliessen.<br />
<br />
==== Kommandos von FPVAutoControl ====<br />
Die Kommandos werden per Serieller Schnittstelle übertragen mit 38400,8N1. Komplexere Kommandos müssen mit einem Return terminiert werden, andere werden direkt ausgeführt um z.B. das Auto rudimentär mit den Tasten W-S-A-D zu steuern. Test per Minicom <code>minicom -b 38400 -D /dev/ttyS0</code><br />
<br />
Kommandos:<br />
* m xx yy rr : Drive mit den Werten XX YY RR (alt, eher unsinn ohne Omniwheels)<br />
* f ll rr : Aktiviere Motoren Links / Rechts (-255 ... 0 ... 255)<br />
* N aa bb : Stelle Servo A/B (0..180 besser nur 0..160 bei SG90...)<br />
* p!999 : Abschalten nach 60sek<br />
* ph aa : Stelle Servo A<br />
* pv aa : Stelle Servo B<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
==== Audio Ausgabe aktivieren ====<br />
Geht am Arduino vorbei, dieses Tutorial nutzen: http://www.lucadentella.it/en/2017/04/26/raspberry-pi-zero-audio-output-via-i2s/ und die asound.conf mit dem Kram von hier bestücken: https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/raspberry-pi-usage#detailed-install-5-16<br />
<br />
<pre>sudo nano /boot/config.txt</pre><br />
<pre><br />
...<br />
#dtparam=audio=on<br />
dtoverlay=hifiberry-dac<br />
dtoverlay=i2s-mmap<br />
...<br />
</pre><br />
<br />
<pre>sudo nano /etc/asound.conf</pre><br />
<br />
<pre><br />
pcm.speakerbonnet {<br />
type hw card 0<br />
}<br />
<br />
pcm.dmixer {<br />
type dmix<br />
ipc_key 1024<br />
ipc_perm 0666<br />
slave {<br />
pcm "speakerbonnet"<br />
period_time 0<br />
period_size 1024<br />
buffer_size 8192<br />
rate 44100<br />
channels 2<br />
}<br />
}<br />
<br />
ctl.dmixer {<br />
type hw card 0<br />
}<br />
<br />
pcm.softvol {<br />
type softvol<br />
slave.pcm "dmixer"<br />
control.name "PCM"<br />
control.card 0<br />
}<br />
<br />
ctl.softvol {<br />
type hw card 0<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "softvol"<br />
}<br />
</pre><br />
<br />
pygame installieren<br />
<pre>sudo apt install python3-pygame</pre><br />
<br />
sound downloaden<br />
<pre>wget http://www.wavsource.com/snds_2018-06-03_5106726768923853/animals/chicken.wav</pre><br />
<br />
python3 script erstellen<br />
<pre><br />
import pygame<br />
import time<br />
<br />
pygame.mixer.init(44100, -16, 1, 1024)<br />
pygame.mixer.music.load("chicken.wav")<br />
pygame.mixer.music.play()<br />
<br />
time.sleep(3)<br />
</pre><br />
<br />
==== Kamera aktivieren ====<br />
https://github.com/jacksonliam/mjpg-streamer<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br><br />
[[Datei:20190424InWheel.zip]] In Wheel Chassis (Testplattform)<br><br />
[[Datei:20190605-InWheelChassis.zip]] In Wheel Chassis (Beta 1) mit Befestigungslöchern für Stack<br><br />
[[Datei:20190605-StackHolder.zip]] Stackbefestigung für Beta 1 Chassis. Befestigung mittels 2x M4 Senkkopf 5mm <br><br />
[[Datei:20190715-InWheel.zip]] In Wheel Chassis - Versetzter Stackholder, Ladekontakte, Lautsprechergitter<br><br />
[[Datei:20190722-InWhee-Deckel.zip]] Deckel für In Wheel Chassis - Nur Befestigungsbohrungen<br><br />
[[Datei:20190724-InWhee-Chassis.zip]] In Wheel Chassis mit Clip On Deckel und alterbativ DOF Befestigungspunkten im Deckel<br><br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
=== Protokoll für Commandos aus der Webgui ===<br />
{<br />
"modul":"MODULNAME",<br />
"key": "value"<br />
}<br />
<br />
Beispiel<br />
<br />
{<br />
"modul":"base",<br />
"forward": 10<br />
}<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"><br />
<br />
== Emotionen ==<br />
Mit einem OLED Display kann man dem Gefährt Emotionen mit geben.<br />
<br />
Hier ein Test mit einem 128x64 Pixel Display:<br><br />
[[Datei:Eyes neutral.png]]<br />
[[Datei:Eyes skeptic.png]]<br />
[[Datei:Eyes angry.png]]<br />
[[Datei:Eyes sad down.png]]<br />
<br />
Verwendet wird die Python Bibliothek [https://github.com/rm-hull/luma.oled Luma.OLED].<br><br />
Das Python-Skript liegt im Git Repo unter python/eyes.</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10710FPV-Auto2019-07-22T16:31:13Z<p>Srek: /* Chassis */</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Package für Arduino ====<br />
Die Idee ist, dass das Board direkt vom Raspberry Zero geupdatet werden kann. Dazu muss auf den Raspberry zunächst Arduino installiert werden - am besten indem zunächst der Default-Arduino via <pre>sudo apt install arduino</pre> installiert wird, und dann aber ersetzt wird, indem von arduino.cc die ARM-Version nach installiert wird.<br />
<pre><br />
wget https://downloads.arduino.cc/arduino-1.8.9-linuxarm.tar.xz<br />
tar -xvf arduino-1.8.9-linuxarm.tar.xz<br />
sudo mv arduino-1.8.9 /opt<br />
sudo /opt/arduino-1.8.9/install.sh<br />
</pre><br />
In der neuen Arduino-IDE unter File->Preferences den Sketchbook-Speicherort auf das Arduino-Verzeichniss aus dem GIT-Repository gesetzt und die IDE neu gestartet. Damit sind sofort alle speziellen Libraries und das FPV-Auto in der Board-Auswahl verfügbar. Auf dem Raspberry muss "FPV-Auto on Raspberry" gewählt werden, um vom Raspberry das aufgesteckte Board umzuprogrammieren. Die Variante ohne "on Raspberry" ist für den Fall, dass man das Board vom PC aus programmieren möchte - hierzu muss man RX/TX/Reset und GND mit einem 3.3V USB-Seriell-Adapter anschliessen.<br />
<br />
==== Kommandos von FPVAutoControl ====<br />
Die Kommandos werden per Serieller Schnittstelle übertragen mit 38400,8N1. Komplexere Kommandos müssen mit einem Return terminiert werden, andere werden direkt ausgeführt um z.B. das Auto rudimentär mit den Tasten W-S-A-D zu steuern. Test per Minicom <code>minicom -b 38400 -D /dev/ttyS0</code><br />
<br />
Kommandos:<br />
* m xx yy rr : Drive mit den Werten XX YY RR (alt, eher unsinn ohne Omniwheels)<br />
* f ll rr : Aktiviere Motoren Links / Rechts (-255 ... 0 ... 255)<br />
* N aa bb : Stelle Servo A/B (0..180 besser nur 0..160 bei SG90...)<br />
* p!999 : Abschalten nach 60sek<br />
* ph aa : Stelle Servo A<br />
* pv aa : Stelle Servo B<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
==== Audio Ausgabe aktivieren ====<br />
Geht am Arduino vorbei, dieses Tutorial nutzen: http://www.lucadentella.it/en/2017/04/26/raspberry-pi-zero-audio-output-via-i2s/ und die asound.conf mit dem Kram von hier bestücken: https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/raspberry-pi-usage#detailed-install-5-16<br />
<br />
<pre>sudo nano /boot/config.txt</pre><br />
<pre><br />
...<br />
#dtparam=audio=on<br />
dtoverlay=hifiberry-dac<br />
dtoverlay=i2s-mmap<br />
...<br />
</pre><br />
<br />
<pre>sudo nano /etc/asound.conf</pre><br />
<br />
<pre><br />
pcm.speakerbonnet {<br />
type hw card 0<br />
}<br />
<br />
pcm.dmixer {<br />
type dmix<br />
ipc_key 1024<br />
ipc_perm 0666<br />
slave {<br />
pcm "speakerbonnet"<br />
period_time 0<br />
period_size 1024<br />
buffer_size 8192<br />
rate 44100<br />
channels 2<br />
}<br />
}<br />
<br />
ctl.dmixer {<br />
type hw card 0<br />
}<br />
<br />
pcm.softvol {<br />
type softvol<br />
slave.pcm "dmixer"<br />
control.name "PCM"<br />
control.card 0<br />
}<br />
<br />
ctl.softvol {<br />
type hw card 0<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "softvol"<br />
}<br />
</pre><br />
<br />
pygame installieren<br />
<pre>sudo apt install python3-pygame</pre><br />
<br />
sound downloaden<br />
<pre>wget http://www.wavsource.com/snds_2018-06-03_5106726768923853/animals/chicken.wav</pre><br />
<br />
python3 script erstellen<br />
<pre><br />
import pygame<br />
import time<br />
<br />
pygame.mixer.init(44100, -16, 1, 1024)<br />
pygame.mixer.music.load("chicken.wav")<br />
pygame.mixer.music.play()<br />
<br />
time.sleep(3)<br />
</pre><br />
<br />
==== Kamera aktivieren ====<br />
https://github.com/jacksonliam/mjpg-streamer<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br><br />
[[Datei:20190424InWheel.zip]] In Wheel Chassis (Testplattform)<br><br />
[[Datei:20190605-InWheelChassis.zip]] In Wheel Chassis (Beta 1) mit Befestigungslöchern für Stack<br><br />
[[Datei:20190605-StackHolder.zip]] Stackbefestigung für Beta 1 Chassis. Befestigung mittels 2x M4 Senkkopf 5mm <br><br />
[[Datei:20190715-InWheel.zip]] In Wheel Chassis - Versetzter Stackholder, Ladekontakte, Lautsprechergitter<br><br />
[[Datei:20190722-InWhee-Deckel.zip]] Deckel für In Wheel Chassis - Nur Befestigungsbohrungen<br><br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
=== Protokoll für Commandos aus der Webgui ===<br />
{<br />
"modul":"MODULNAME",<br />
"key": "value"<br />
}<br />
<br />
Beispiel<br />
<br />
{<br />
"modul":"base",<br />
"forward": 10<br />
}<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"><br />
<br />
== Emotionen ==<br />
Mit einem OLED Display kann man dem Gefährt Emotionen mit geben.<br />
<br />
Hier ein Test mit einem 128x64 Pixel Display:<br><br />
[[Datei:Eyes neutral.png]]<br />
[[Datei:Eyes skeptic.png]]<br />
[[Datei:Eyes angry.png]]<br />
[[Datei:Eyes sad down.png]]<br />
<br />
Verwendet wird die Python Bibliothek [https://github.com/rm-hull/luma.oled Luma.OLED].<br><br />
Das Python-Skript liegt im Git Repo unter python/eyes.</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20190722-InWhee-Deckel.zip&diff=10709Datei:20190722-InWhee-Deckel.zip2019-07-22T16:31:09Z<p>Srek: Nur Befestigungslöcher. Befestigungslöcher für DOF Sensor folgen wenn bekannt.</p>
<hr />
<div>Nur Befestigungslöcher. Befestigungslöcher für DOF Sensor folgen wenn bekannt.</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20190715-InWheel.zip&diff=10708Datei:20190715-InWheel.zip2019-07-15T20:52:36Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10707FPV-Auto2019-07-15T20:51:50Z<p>Srek: /* Chassis */ Neue Version mit versetztem Stackholder (wg. Kamerakabel), Ladekontakten und Lautsprecher Gitter</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Package für Arduino ====<br />
Die Idee ist, dass das Board direkt vom Raspberry Zero geupdatet werden kann. Dazu muss auf den Raspberry zunächst Arduino installiert werden - am besten indem zunächst der Default-Arduino via <pre>sudo apt install arduino</pre> installiert wird, und dann aber ersetzt wird, indem von arduino.cc die ARM-Version nach installiert wird.<br />
<pre><br />
wget https://downloads.arduino.cc/arduino-1.8.9-linuxarm.tar.xz<br />
tar -xvf arduino-1.8.9-linuxarm.tar.xz<br />
sudo mv arduino-1.8.9 /opt<br />
sudo /opt/arduino-1.8.9/install.sh<br />
</pre><br />
In der neuen Arduino-IDE unter File->Preferences den Sketchbook-Speicherort auf das Arduino-Verzeichniss aus dem GIT-Repository gesetzt und die IDE neu gestartet. Damit sind sofort alle speziellen Libraries und das FPV-Auto in der Board-Auswahl verfügbar. Auf dem Raspberry muss "FPV-Auto on Raspberry" gewählt werden, um vom Raspberry das aufgesteckte Board umzuprogrammieren. Die Variante ohne "on Raspberry" ist für den Fall, dass man das Board vom PC aus programmieren möchte - hierzu muss man RX/TX/Reset und GND mit einem 3.3V USB-Seriell-Adapter anschliessen.<br />
<br />
==== Kommandos von FPVAutoControl ====<br />
Die Kommandos werden per Serieller Schnittstelle übertragen mit 38400,8N1. Komplexere Kommandos müssen mit einem Return terminiert werden, andere werden direkt ausgeführt um z.B. das Auto rudimentär mit den Tasten W-S-A-D zu steuern. Test per Minicom <code>minicom -b 38400 -D /dev/ttyS0</code><br />
<br />
Kommandos:<br />
* m xx yy rr : Drive mit den Werten XX YY RR (alt, eher unsinn ohne Omniwheels)<br />
* f ll rr : Aktiviere Motoren Links / Rechts (-255 ... 0 ... 255)<br />
* N aa bb : Stelle Servo A/B (0..180 besser nur 0..160 bei SG90...)<br />
* p!999 : Abschalten nach 60sek<br />
* ph aa : Stelle Servo A<br />
* pv aa : Stelle Servo B<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
==== Audio Ausgabe aktivieren ====<br />
Geht am Arduino vorbei, dieses Tutorial nutzen: http://www.lucadentella.it/en/2017/04/26/raspberry-pi-zero-audio-output-via-i2s/ und die asound.conf mit dem Kram von hier bestücken: https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/raspberry-pi-usage#detailed-install-5-16<br />
<br />
<pre>sudo nano /boot/config.txt</pre><br />
<pre><br />
...<br />
#dtparam=audio=on<br />
dtoverlay=hifiberry-dac<br />
dtoverlay=i2s-mmap<br />
...<br />
</pre><br />
<br />
<pre>sudo nano /etc/asound.conf</pre><br />
<br />
<pre><br />
pcm.speakerbonnet {<br />
type hw card 0<br />
}<br />
<br />
pcm.dmixer {<br />
type dmix<br />
ipc_key 1024<br />
ipc_perm 0666<br />
slave {<br />
pcm "speakerbonnet"<br />
period_time 0<br />
period_size 1024<br />
buffer_size 8192<br />
rate 44100<br />
channels 2<br />
}<br />
}<br />
<br />
ctl.dmixer {<br />
type hw card 0<br />
}<br />
<br />
pcm.softvol {<br />
type softvol<br />
slave.pcm "dmixer"<br />
control.name "PCM"<br />
control.card 0<br />
}<br />
<br />
ctl.softvol {<br />
type hw card 0<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "softvol"<br />
}<br />
</pre><br />
<br />
pygame installieren<br />
<pre>sudo apt install python3-pygame</pre><br />
<br />
sound downloaden<br />
<pre>wget http://www.wavsource.com/snds_2018-06-03_5106726768923853/animals/chicken.wav</pre><br />
<br />
python3 script erstellen<br />
<pre><br />
import pygame<br />
import time<br />
<br />
pygame.mixer.init(44100, -16, 1, 1024)<br />
pygame.mixer.music.load("chicken.wav")<br />
pygame.mixer.music.play()<br />
<br />
time.sleep(3)<br />
</pre><br />
<br />
==== Kamera aktivieren ====<br />
https://github.com/jacksonliam/mjpg-streamer<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br><br />
[[Datei:20190424InWheel.zip]] In Wheel Chassis (Testplattform)<br><br />
[[Datei:20190605-InWheelChassis.zip]] In Wheel Chassis (Beta 1) mit Befestigungslöchern für Stack<br><br />
[[Datei:20190605-StackHolder.zip]] Stackbefestigung für Beta 1 Chassis. Befestigung mittels 2x M4 Senkkopf 5mm <br><br />
[[Datei:20190715-InWheel.zip]] In Wheel Chassis - Versetzter Stackholder, Ladekontakte, Lautsprechergitter<br><br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
=== Protokoll für Commandos aus der Webgui ===<br />
{<br />
"modul":"MODULNAME",<br />
"key": "value"<br />
}<br />
<br />
Beispiel<br />
<br />
{<br />
"modul":"base",<br />
"forward": 10<br />
}<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"><br />
<br />
== Emotionen ==<br />
Mit einem OLED Display kann man dem Gefährt Emotionen mit geben.<br />
<br />
Hier ein Test mit einem 128x64 Pixel Display:<br><br />
[[Datei:Eyes neutral.png]]<br />
[[Datei:Eyes skeptic.png]]<br />
[[Datei:Eyes angry.png]]<br />
[[Datei:Eyes sad down.png]]<br />
<br />
Verwendet wird die Python Bibliothek [https://github.com/rm-hull/luma.oled Luma.OLED].<br><br />
Das Python-Skript liegt im Git Repo unter python/eyes.</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10591FPV-Auto2019-06-05T19:12:40Z<p>Srek: Beta 1 Chassis und Stack Befestigung</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Package für Arduino ====<br />
Die Idee ist, dass das Board direkt vom Raspberry Zero geupdatet werden kann. Dazu muss auf den Raspberry zunächst Arduino installiert werden - am besten indem zunächst der Default-Arduino via <pre>sudo apt install arduino</pre> installiert wird, und dann aber ersetzt wird, indem von arduino.cc die ARM-Version nach installiert wird.<br />
<pre><br />
wget https://downloads.arduino.cc/arduino-1.8.9-linuxarm.tar.xz<br />
tar -xvf arduino-1.8.9-linuxarm.tar.xz<br />
sudo mv arduino-1.8.9 /opt<br />
sudo /opt/arduino-1.8.9/install.sh<br />
</pre><br />
In der neuen Arduino-IDE unter File->Preferences den Sketchbook-Speicherort auf das Arduino-Verzeichniss aus dem GIT-Repository gesetzt und die IDE neu gestartet. Damit sind sofort alle speziellen Libraries und das FPV-Auto in der Board-Auswahl verfügbar. Auf dem Raspberry muss "FPV-Auto on Raspberry" gewählt werden, um vom Raspberry das aufgesteckte Board umzuprogrammieren. Die Variante ohne "on Raspberry" ist für den Fall, dass man das Board vom PC aus programmieren möchte - hierzu muss man RX/TX/Reset und GND mit einem 3.3V USB-Seriell-Adapter anschliessen.<br />
<br />
==== Kommandos von FPVAutoControl ====<br />
Die Kommandos werden per Serieller Schnittstelle übertragen mit 38400,8N1. Komplexere Kommandos müssen mit einem Return terminiert werden, andere werden direkt ausgeführt um z.B. das Auto rudimentär mit den Tasten W-S-A-D zu steuern. Test per Minicom <code>minicom -b 38400 -D /dev/ttyS0</code><br />
<br />
Kommandos:<br />
* m xx yy rr : Drive mit den Werten XX YY RR (alt, eher unsinn ohne Omniwheels)<br />
* f ll rr : Aktiviere Motoren Links / Rechts (-255 ... 0 ... 255)<br />
* N aa bb : Stelle Servo A/B (0..180 besser nur 0..160 bei SG90...)<br />
* p!999 : Abschalten nach 60sek<br />
* ph aa : Stelle Servo A<br />
* pv aa : Stelle Servo B<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
==== Audio Ausgabe aktivieren ====<br />
Geht am Arduino vorbei, dieses Tutorial nutzen: http://www.lucadentella.it/en/2017/04/26/raspberry-pi-zero-audio-output-via-i2s/ und die asound.conf mit dem Kram von hier bestücken: https://learn.adafruit.com/adafruit-max98357-i2s-class-d-mono-amp/raspberry-pi-usage#detailed-install-5-16<br />
<br />
<pre>sudo nano /boot/config.txt</pre><br />
<pre><br />
...<br />
#dtparam=audio=on<br />
dtoverlay=hifiberry-dac<br />
dtoverlay=i2s-mmap<br />
...<br />
</pre><br />
<br />
<pre>sudo nano /etc/asound.conf</pre><br />
<br />
<pre><br />
pcm.speakerbonnet {<br />
type hw card 0<br />
}<br />
<br />
pcm.dmixer {<br />
type dmix<br />
ipc_key 1024<br />
ipc_perm 0666<br />
slave {<br />
pcm "speakerbonnet"<br />
period_time 0<br />
period_size 1024<br />
buffer_size 8192<br />
rate 44100<br />
channels 2<br />
}<br />
}<br />
<br />
ctl.dmixer {<br />
type hw card 0<br />
}<br />
<br />
pcm.softvol {<br />
type softvol<br />
slave.pcm "dmixer"<br />
control.name "PCM"<br />
control.card 0<br />
}<br />
<br />
ctl.softvol {<br />
type hw card 0<br />
}<br />
<br />
pcm.!default {<br />
type plug<br />
slave.pcm "softvol"<br />
}<br />
</pre><br />
<br />
pygame installieren<br />
<pre>sudo apt install python3-pygame</pre><br />
<br />
sound downloaden<br />
<pre>wget http://www.wavsource.com/snds_2018-06-03_5106726768923853/animals/chicken.wav</pre><br />
<br />
python3 script erstellen<br />
<pre><br />
import pygame<br />
import time<br />
<br />
pygame.mixer.init(44100, -16, 1, 1024)<br />
pygame.mixer.music.load("chicken.wav")<br />
pygame.mixer.music.play()<br />
<br />
time.sleep(3)<br />
</pre><br />
<br />
==== Kamera aktivieren ====<br />
https://github.com/jacksonliam/mjpg-streamer<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br><br />
[[Datei:20190424InWheel.zip]] In Wheel Chassis (Testplattform)<br><br />
[[Datei:20190605-InWheelChassis.zip]] In Wheel Chassis (Beta 1) mit Befestigungslöchern für Stack<br><br />
[[Datei:20190605-StackHolder.zip]] Stackbefestigung für Beta 1 Chassis. Befestigung mittels 2x M4 Senkkopf 5mm <br><br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"><br />
<br />
== Emotionen ==<br />
Mit einem OLED Display kann man dem Gefährt Emotionen mit geben.<br />
<br />
Hier ein Test mit einem 128x64 Pixel Display:<br><br />
[[Datei:Eyes neutral.png]]<br />
[[Datei:Eyes skeptic.png]]<br />
[[Datei:Eyes angry.png]]<br />
[[Datei:Eyes sad down.png]]<br />
<br />
Verwendet wird die Python Bibliothek [https://github.com/rm-hull/luma.oled Luma.OLED].<br><br />
Das Python-Skript liegt im Git Repo unter python/eyes.</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20190605-StackHolder.zip&diff=10590Datei:20190605-StackHolder.zip2019-06-05T19:12:20Z<p>Srek: Stack Befestigung für Beta 1 Chassis
Benötigt
2x M4 Senkkopf 5mm für Chassis Befestigung
2x M3 15-18mm für Stack Befestigung</p>
<hr />
<div>Stack Befestigung für Beta 1 Chassis<br />
Benötigt <br />
2x M4 Senkkopf 5mm für Chassis Befestigung<br />
2x M3 15-18mm für Stack Befestigung</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20190605-InWheelChassis.zip&diff=10589Datei:20190605-InWheelChassis.zip2019-06-05T19:11:03Z<p>Srek: In Wheel Chassis Beta 1
Befestigungslöcher für Stack
Kameraöffnung
Öffnung für Ladebuchse
Öffnung für versenkten Reset Taster</p>
<hr />
<div>In Wheel Chassis Beta 1<br />
Befestigungslöcher für Stack<br />
Kameraöffnung<br />
Öffnung für Ladebuchse<br />
Öffnung für versenkten Reset Taster</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20190424InWheel.zip&diff=10556Datei:20190424InWheel.zip2019-04-24T12:42:45Z<p>Srek: Srek lud eine neue Version von Datei:20190424InWheel.zip hoch</p>
<hr />
<div>STL Dateien für In Wheel Chassis und Räder</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10555FPV-Auto2019-04-24T12:36:36Z<p>Srek: /* Chassis */Typo</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br><br />
[[Datei:20190424InWheel.zip]] In Wheel Chassis<br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20190424InWheel.zip&diff=10554Datei:20190424InWheel.zip2019-04-24T12:36:13Z<p>Srek: STL Dateien für In Wheel Chassis und Räder</p>
<hr />
<div>STL Dateien für In Wheel Chassis und Räder</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10553FPV-Auto2019-04-24T12:34:53Z<p>Srek: /* Chassis */</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br />
[[Datei:20190424InWheel.zip]]In Wheel Chassis<br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10552FPV-Auto2019-04-24T12:33:36Z<p>Srek: /* Chassis */STL Files für In Wheel Chassis hinzugefügt</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br><br />
STL Files [[Datei:20190424InWheel.zip]]<br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20190421-fpvauto-inwheelchassis01.jpg&diff=10551Datei:20190421-fpvauto-inwheelchassis01.jpg2019-04-21T14:16:50Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10550FPV-Auto2019-04-21T14:16:26Z<p>Srek: /* Chassis */</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
=== Blockschaltung ===<br />
[[Datei:Block diagram FPV Auto Shield.png|1000px]]<br />
<br />
=== Features und Implementation ===<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Pinbelegung ATmega328 ===<br />
{| class="wikitable"<br />
|'''Arduino-Pin''' || '''Port''' || '''Funktion''' <br />
|-<br />
| 0 || PD0 (RxD) || TxD am Raspi <br />
|-<br />
| 1 || PD1 (TxD) || RxD am Raspi<br />
|-<br />
| 2 || PD2 (INT0) || EN_3V3<br />
|-<br />
| 3 || PD3 (OC2B) || DRV8835 BENBL<br />
|- <br />
| 4 || PD4 || EN_5V1<br />
|- <br />
| 5 || PD5 (OC0B) || DRV8835 BPHASE<br />
|-<br />
| 6 || PD6 (OC0A) || DRV8835 APHASE<br />
|-<br />
| 7 || PD7 || EN_5V5<br />
|-<br />
| 8 || PB0 || /CHARGER_CE<br />
|- <br />
| 9 || PB1 (OC1A) || PWM/Servo out A<br />
|-<br />
|10 || PB2 (OC1B) || PWM/Servo out B<br />
|-<br />
|11 || PB3 (MOSI/OC2A) || DRV8835 AENBL<br />
|-<br />
|12 || PB4 (MISO) ||<br />
|-<br />
|13 || PB5 (SCK) || NRF_MOSI<br />
<br />
|-<br />
|A0|| PC0 || NRF_CE<br />
|-<br />
|A1|| PC1 || NRF_CS<br />
|-<br />
|A2|| PC2 || NRF_SCK<br />
|-<br />
|A3|| PC3 || NRF_MISO<br />
|-<br />
|A4|| PC4 || SDA<br />
|-<br />
|A5|| PC5 || SCL<br />
|-<br />
|A6|| ADC6 ||<br />
|-<br />
|A7|| ADC7 || BUTTON_SENSE<br />
|}<br />
<br />
=== Software für FPV-Control Board Arduino ===<br />
<br />
==== Bootloader ====<br />
Verwendet wurde der [https://github.com/MCUdude/MiniCore MiniCore] Bootloader, damit der ATmega328 auch unter 3.3V und 8MHz externen Quarz und mit Optiboot funktioniert. Zum Aufspielen des Bootloaders die Arduino-IDE mit der MiniCore-Erweiterung bestücken, dann kann darüber mit einem externen Programmer der Bootloader eingespielt werden. Genutzte Einstellungen dazu:<br />
* Board: "ATmega328"<br />
* Clock: "8 MHz external"<br />
* BOD: "1.8v"<br />
* Variant: "328 / 328A" (wir haben wohl keine P Version verbaut...)<br />
<br />
<br />
Ist der Bootloader einmal aufgespielt, kann statt MiniCore zu installieren auch nur die Datei unter "arduino-1.8.x/hardware/arduino/avr/boards.txt" um folgendes bevorzugt am Anfang erweitert werden: <br />
<pre><br />
##############################################################<br />
fpva.name=FPV-Auto <br />
fpva.upload.tool=avrdude<br />
fpva.upload.protocol=arduino<br />
fpva.upload.maximum_size=32256<br />
fpva.upload.maximum_data_size=2048<br />
fpva.upload.speed=38400<br />
fpva.build.mcu=atmega328<br />
fpva.build.f_cpu=8000000L<br />
fpva.build.board=AVR_MINI<br />
fpva.build.core=arduino<br />
fpva.build.variant=eightanaloginputs<br />
</pre><br />
<br />
Damit lässt sich das FPV-Auto Board einfach programmieren.<br />
<br />
==== Avrdude mit GPIO-Reset ====<br />
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset<br />
<br />
=== Platinen ===<br />
[[Datei:FPV-Auto PCB Top.png|300px]]<br />
[[Datei:FPV-Auto PCB Bot.png|300px]]<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br><br />
Als Alternative wurde ein Chassis mit den Motoren im Rad entwickelt. Dadurch wir die Radnabe dicker, aber der Platz im Inneren des Chassis wird deutlich größer. Ausserdem läßt sich jetzt der Aufbau des Chassis wesentlich freier gestalten, es müssen lediglich die Befestigungspunkte der Räder vorgesehen werden.<br><br />
[[Datei:20190421-fpvauto-inwheelchassis01.jpg|320px]]<br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=OpenCV_mit_Python&diff=10505OpenCV mit Python2019-03-31T15:13:11Z<p>Srek: /* Installation */</p>
<hr />
<div>= Installation =<br />
Nach Update auf Pycharm 2019.1 kann es zu Problemen mit ALtGr+[ etc. kommen<br />
<br />
Workaround: In PyCharm click Ctrl + Shift + A. Then write registry and click on it. Find actionSystem.fix.alt.gr and uncheck it.<br />
<br />
== Raspberry Pi ==<br />
<br />
=== OpenCV Installation ===<br />
* Installiere eine aktuelle Version mit Allem von [https://www.raspberrypi.org/downloads/raspbian/ Raspbian] auf die SD-Karte, richte alles ein, update das System via:<br />
<code><br />
sudo apt update && sudo apt upgrade -y<br />
</code><br />
* Installiere alles Mögliche nach was OpenCV so braucht (alles muss in eine Zeile):<br />
<pre><br />
sudo apt install libatlas3-base libsz2 libharfbuzz0b libtiff5 libjasper1 libilmbase12 libopenexr22 libilmbase12 libgstreamer1.0-0 libavcodec57 libavformat57 libavutil55 libswscale4 libqtgui4 libqt4-test libqtcore4 libwebp6<br />
</pre><br />
* Installiere dann OpenCV (und falls es fehlt numpy) via pip3, hier als root, in der fettesten Geschmacksrichtung:<br />
<code><br />
sudo pip3 install opencv-contrib-python numpy <br />
</code><br />
* Teste ob numpy und opencv richtig installiert sind. Öffne dazu <code>python3</code> auf der Konsole und probiere aus, ob die beiden folgenden Befehle kein Fehler ausgeben: <br />
** <code>import numpy</code><br />
** <code>import cv2</code><br />
** <code>quit()</code><br />
* Tipp: Als IDE unter Raspbian für Python3 ist '''Thonny''' ein Versuch wert:<br />
** Installation am besten via pip: <code>sudo pip3 install thonny</code><br />
** Nach dem starten von Thonny unter "Tools->Options...->General" den UI mode auf "expert" stellen, bei der Gelegenheit kann auch gleich ein dunkles Theme eingestellt werden, dann sieht es auch gut aus.<br />
** Das Ding kann Variablen anschauen, Breakpoints setzen, Variabelninhalte anzeigen und Pakete installieren und zeigt Vorschläge zum sauberen Programmieren - also ein Ersatz für das PyCharm, was unter Raspberry nicht läuft.<br />
<br />
=== Kamera Installation ===<br />
* Aktiviere die Kamera: <code>sudo raspi-config</code>, dann unter "5 Interfacing Option" die Kamera aktivieren. Tool beenden über "Finish", Raspberry neu starten <code>sudo reboot</code><br />
* Teste die Kamera via <code>raspivid -t 5000</code> : Der Videostream sollte für 5s zu sehen sein.<br />
* Damit auch Standard-Beispiele laufen, sollte die Raspberry-Kamera noch als V4L2-Device eingebunden werden. Dazu folgendes tun:<br />
** Edititere die Datei '''/etc/modules''' als root via <code>sudo nano /etc/modules</code><br />
** Füge am Ende der Datei eine Zeile mit dem Inhalt <code>bcm2835-v4l2</code> ein, Datei dann mit STRG+o speichern, den Editor mit STRG+x verlassen, das System neu starten<br />
** Danach sollte das Kommando <code>ls /dev/video0</code> eine Device-Datei finden und keinen Fehler ausgeben. Wenn nicht, hilft es evtl. im obigen Schritt noch vor die '''bcm2835-v4l2'''-Zeile eine Zeile mit folgendem Inhalt einzufügen: <code>v4l2_common</code> (auch hier nach neu booten). Bei mir war das allerdings nicht nötig.<br />
* Jetzt kann alles zusammen getestet werden, in dem das Skript im Abschnitt [[OpenCV_mit_Python#Testen_der_Kamera_unter_Python-OpenCV]] auf der Konsole oder z.B. in Thonny gestartet wird. Es sollte ein Fenster mit dem Kamerabild in Graustufen anzeigen.<br />
<br />
== Windows (und ggf auch Mac/Linux) via PyCharm ==<br />
* Installiere Python3 von Python.org: '''Wichtig:'''<br />
** Per Rechtsklick als Admin installieren<br />
** Bei Installation auch pip installieren lassen und Pfade setzen lassen<br />
* Installiere PyCharm Community Edition von [https://www.jetbrains.com/pycharm/ Jetbrains]<br />
** Darin habe ich dann ein neues Projekt angelegt, dabei "Virtualenv" als Environment gewählt<br />
** Über "File->Settings..." das Settings-Fenster öffnen,<br />
*** darin dann Links das eigene "Projekt: xxx" ausklappen, dort drunter auf "Project Interpreter" gehen<br />
*** Hier sollte jetzt eine Python3-Version ausgewählt sein und unter den Packages mind. "pip" vorhanden sein<br />
*** Über das kleine "+"-Symbol recht weit rechts können nun weitere Packages für das Projekt installiert werden, es öffnet sich ein Fenster "Available Packages"<br />
**** Darin in der Suche "opencv" eingeben und das Paket '''"opencv-contrib-python"''' installieren - unten wird dann irgendwo angezeigt ob es geklappt hat<br />
**** Darin dann auch noch nach "numpy" suchen und das Paket '''"numpy"''' installieren<br />
**** Dann das Packet-Manager-Fenster schliessen<br />
*** Auch das Settings-Fenster mit "OK" schliessen<br />
** Vermutlich muss man jetzt trotzdem noch etwas warten, weil PyCharm im Hintergrund immernoch installiert. Erst wenn PyCharm fertig ist, kann man das test_video.py starten.<br />
<br />
= Testen der Kamera unter Python-OpenCV =<br />
Das folgende Skript sollte unter allen Betriebsystemen laufen, unter Linux/Raspbian wird ein V4L2 Device benötigt, unter Windows ging es direkt. Das folgende Skript auf der jeweiligen Maschine ausprobieren - via Terminal, Thonny, PyCharm oder was auch immer:<br />
<pre><br />
import numpy as np<br />
import cv2 as cv<br />
cap = cv.VideoCapture(0)<br />
while(True):<br />
# Capture frame-by-frame<br />
ret, frame = cap.read()<br />
# Our operations on the frame come here<br />
gray = cv.cvtColor(frame, cv.COLOR_BGR2GRAY)<br />
# Display the resulting frame<br />
cv.imshow('Hit ESC to close', gray)<br />
if cv.waitKey(1) & 0xFF == 27:<br />
break<br />
# When everything done, release the capture<br />
cap.release()<br />
cv.destroyAllWindows()<br />
</pre> <br />
<br />
Es sollte das Videobild in Graustufen angezeigt werden, im aktiven Kamerabildfenster "ESC" drücken, um das Program ordentlich zu beenden.<br />
<br />
== RAW-Zugriff auf die Raspberry Pi Kamera ==<br />
Mit dem folgenden Skript kann ohne V4L2-Treiber auf die Raspberry Pi Kamera zugegriffen werden. Evtl. ermöglicht das auch feinere Einstellungsmöglichkeiten der Kamera wie z.B. Belichtungszeit etc. <br />
<pre><br />
# OpenCV camera test special for Raspberry Pi<br />
# import the necessary packages<br />
from picamera.array import PiRGBArray<br />
from picamera import PiCamera<br />
import time<br />
import cv2<br />
import numpy as np<br />
<br />
# initialize the camera and grab a reference to the raw camera capture<br />
camera = PiCamera()<br />
camera.resolution = (640, 480)<br />
camera.framerate = 32<br />
camera.rotation = 0<br />
rawCapture = PiRGBArray(camera, size=camera.resolution)<br />
<br />
# allow the camera to warmup<br />
time.sleep(1)<br />
<br />
# capture frames from the camera<br />
for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):<br />
# grab the raw NumPy array representing the image, then initialize the timestamp<br />
# and occupied/unoccupied text<br />
image = frame.array<br />
<br />
# show the frame<br />
gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)<br />
cv2.imshow("Hit ESC to end", gray.astype(np.uint8))<br />
<br />
# clear the stream in preparation for the next frame<br />
rawCapture.truncate(0)<br />
<br />
# if the `q` or ESC key was pressed, break from the loop<br />
key = cv2.waitKey(1) & 0xFF<br />
if key == ord("q") or key == 27:<br />
break<br />
<br />
cv2.destroyAllWindows()<br />
camera.close()<br />
</pre><br />
<br />
Es sollte das Videobild in Graustufen angezeigt werden, im aktiven Kamerabildfenster "ESC" drücken, um das Program ordentlich zu beenden.<br />
<br />
= OpenCV Cheats =<br />
* Tutorials hier: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html<br />
* Buntes Bild in Graustufen umwandeln: <code>gray = cv2.cvtColor(bild,cv2.COLOR_BGR2GRAY)</code><br />
* Graustufen Bild in Buntbild umwandeln: <code>bunt = cv2.cvtColor(gray,cv2.COLOR_GRAY2BGR)</code> (es bleibt Grau, kann dann aber eingefärbt werden)<br />
* Kasten in ein Bild malen: <code>cv2.rectangle(bild, (x0,y0), (x1,y1), (b,g,r), rahmendicke)</code><br />
* Text ins Bild malen: <code>cv2.putText(bild, "Hallo", (10,400), cv2.FONT_HERSHEY_PLAIN, 1, (255,0,255))</code> (Größerer Font: cv2.FONT_HERSHEY_SIMPLEX)<br />
* Bildbereich kopieren: <code>block = bild[y0:y1, x0:x1]</code><br />
* Bildbereich woanders einfügen (Größe muss genau passen!): <code>bild[y0:y1, x0:x1] = block</code><br />
* Alle Farbkomponenten eines Pixels ändern: <code>bild[x,y] = [b,g,r]</code><br />
* Nur eine Farbkomponente ändern (hier g = Index 1 da Reihenfolge BGR): <code>bild[x,y,1] = 255</code><br />
* 8-Bit Farbkomponenten holen: <code>bild.astype(np.uint8)</code> (falls man mal mit float oder so gerechnet hat)<br />
* ArUco Marker (QR-Code ähnlich). http://www.philipzucker.com/aruco-in-opencv/<br />
<br />
== Maus-Events ==<br />
Maus-Events können über ein Callback verarbeitet werden, OpenCV möchte aber wissen, welches der "imshow"-Fenster dafür herangezogen werden soll. Dazu muss das Fenster am Start einmal explizit mit einem Namen versehen werden.<br />
<br />
<pre><br />
mx = 10<br />
my = 10<br />
<br />
def mouseEvent(event,x,y,flags,param):<br />
global mx,my<br />
mx = x<br />
my = y<br />
#print(x, y)<br />
<br />
cv.namedWindow("Window1")<br />
cv.setMouseCallback("Window1", mouseEvent)<br />
</pre></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10312FPV-Auto2018-10-24T09:12:33Z<p>Srek: </p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Steuerung per FPV über WLAN<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
Features und Implementation:<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** '''bq25892 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)'''<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
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.<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich '''PCA9685''')<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Blockschaltung ===<br />
<pre><br />
<br />
Ladekontakt -> bq25892 Battery charger -> 1S LiIon Akku -> LDO 3.3V -> ATmega328 -> NRF24L01<br />
-> Boost 5.1V -> Raspberry PI<br />
-> Boost 6V -> DRV... -> Motor<br />
<br />
<br />
</pre><br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br />
== Raspberry Pi Zero W ==<br />
<br />
=== Samba Freigabe ===<br />
Einrichten wie hier beschrieben [[Raspberry_Pi_Grundlagen#Samba]]<br />
<br />
=== Git ===<br />
Git installieren<br />
sudo apt-get install git<br />
Das Repository https://github.com/hackffm/FPVCar.git clonen<br />
git clone https://github.com/hackffm/FPVCar.git<br />
<br />
== Software ==<br />
<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Mitglieder&diff=10206Mitglieder2018-08-25T20:41:52Z<p>Srek: </p>
<hr />
<div><br />
{|<br />
! width=120px|<br />
! width=150px| Name<br />
! width=120px| Seit<br />
! width=200px| Tag<br />
! width=240px| Projekt<br />
! width=100px| Woher <br />
|- <br />
| [[Datei:Lutz_Lisseck.jpg|100px|link=Benutzer:Tut]]<br />
| Tut<br>(Lutz Lisseck)<br />
| 2011<br>2013 1. Vorstand<br />
| Open Monday (fast immer)<br>andere Tage (gelegentlich)<br />
| [https://www.hackerspace-ffm.de Hackerspace-FFM e.V.] :-) <br>[[FPV-Auto]]<br>[[LoRaWAN]]<br>[[LineCamPrinter]]<br>[[Rundbunt Mini]]<br>[[CO₂-Laser]]<br>[[HackffmActivitySensors]]<br>[[Buntich]]<br />
|<br />
|- <br />
| [[Datei:Avatar strange.jpg|100px|link=Benutzer:Strange]]<br />
| strange<br>(Alexander Oros)<br />
| 2015<br />
| Open Monday<br />
| [[FPV-Auto]]<br>[[DesignerEsszimmerLampe]]<br>[[MikroEcke]]<br />
| Gräfenhausen<br>35 km<br />
|- <br />
| [[Datei:Srek.jpg|100px|link=Benutzer:Srek]]<br />
| [[User:Srek| Srek<br>(Björn Marl)]]<br />
| 2012<br />
| Open Monday/RepRap Wednesday<br />
| [[FPV-Auto]] <br> [[Merlin_Extruder]]<br />
| Friedrichsdorf<br />
|- <br />
| [[Datei:Beroot.jpg|100px|link=Benutzer:Beroot]]<br />
| [[User:Beroot| Beroot<br>(Michael Schopferer)]]<br />
| ca. 2013<br />
| Open Monday<br />
| Wordclock <br> Arduino, ESP & LEDs <br> Lasercutter und Mechanik (fräsen, drehen, ...)<br />
|<br />
|- <br />
| [[Datei:Cheasy.jpg|100px]]<br />
| Cheasy<br>(Christoph Sold)<br />
| 2016<br />
| Open Monday<br />
| Microcontroller (AVM), LEDs <br> Lasercutter<br />
||<br />
|- <br />
| [[Datei:Passbild 2016-03 posterized 003.png|100px]]<br />
| [[Benutzer:Axl|AXL]]<br>(Axel Föhr)<br />
| 2010<br />
| erratic<br />
| Microcontroller, RasPi, Drawbots<br />
|<br />
|}</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Mitglieder&diff=10173Mitglieder2018-08-22T08:25:40Z<p>Srek: </p>
<hr />
<div><br />
{|<br />
! width=120px|<br />
! width=120px| Name<br />
! width=60px | Seit<br />
! width=120px| Tag<br />
! width=200px| Projekt<br />
|- <br />
| [[Datei:Avatar strange.jpg|100px|link=Benutzer:Strange]]<br />
| strange (Alex)<br />
| 2015<br />
| Open Monday<br />
| [[FPV-Auto]]<br>[[DesignerEsszimmerLampe]]<br />
|<br />
|- <br />
| [[Datei:Srek.jpg|100px|link=Benutzer:Srek]]<br />
| [[User:Srek| Srek (Björn Marl)]]<br />
| 2012<br />
| Open Monday<br />
| [[FPV-Auto]] <br> [[Merlin_Extruder]]<br />
|}</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Benutzer:Srek&diff=10172Benutzer:Srek2018-08-22T08:19:49Z<p>Srek: </p>
<hr />
<div><br />
[[Datei:Srek.jpg]]<br><br />
Kurzes Profil:<br />
*Björn Marl<br />
*Geboren 20.8.1966<br />
*Ausbildung zum Informationselektroniker<br />
*Studium der Informatik and der FH Gießen (ohne Abschluß)<br />
*über 15 Jahr selbstständig im Bereich PC/Netzwerktechnik und SW Entwicklung<br />
*2001-2013 angestellt bei [http://www.maxon.net Maxon Computer GmbH] und dort tätig als Leiter der Qualitätssicherung<br />
*seit 2014 Technischer Designer bei Maxon Computer GmbH<br />
*Hobbies: meine Katzen, lesen, CINEMA 4D, Arduino/Elektronik Basteleien, RepRap, Möbelbau, Bogenschießen<br />
*Was kann ich gut?: Logisch denken<br />
*Was kann ich schlecht?: Meine Klappe halten<br />
<br />
[http://my.bonkers.de Mein Website]<br />
<br />
<br />
==Projekte==<br />
<br />
===Alternative RepRap Düse (Merlin)===<br />
<br />
Ich arbeite seit einer Weile an einer eigenen Düsenkonstruktion. Ziel ist es ein komplettes Hotend zu bauen das dauerhaft, stabil (thermisch wie mechanisch) und für schnellen Druck geeignet ist.<br><br />
<br />
Nachdem sich der alte Konstruktionsansatz mit langen Düsen und Heizungen für mich als nicht sinnvoll und zu kompliziert im Aufbau erwiesen hat bin ich im Moment in Gegenrichtung unterwegs.<br><br />
Zur Zeit habe ich sehr gute Ergebnisse mit einer sehr kurzen Düse (<20mm) bei einer gesamten HotEnd Länge von ca. 40mm.<br />
Der Aufbau ist sehr einfach. In einen 10 mm PEEK Zylinder mit M6 Innengewinde wird ein Teflon Inlay mit 6mm Aussengewinde geschraubt, davor wird die Düse eingeschraubt. Die Verschraubung der Komponenten gewährt den sicheren und sehr dichten Sitz. Aussen habe ich den PEEK Zylinder mit einem M10 Gewinde versehen, damit läßt sich das Hotend sehr einfach in einen leicht modifizierten Wade Extruder einschrauben.<br><br />
Das Ergebniss ist ein sehr kurzes Hotend das sich dank geringer Masse schnell aufheizt, aber wenig Wärme an die Umgebung abgiebt. Den Extruder muss ich nicht kühlen, trotz 40W Heizung.<br><br><br />
Die Konstruktion habe ich zu Ehren meines schwarzen Katers, der mich sehr bei den Experimenten unterstützt hat (Beruhigung meiner Nerven nach dem x-ten Fehlschlag), Merlin genannt.<br><br />
----<br><br />
<br />
[[Datei:Merlin 1.75 - 01.jpg|x200px]] [[Datei:Merlin 1.75 - 02.jpg|x200px]] [[Datei:Merlin 1.75 - 03.jpg|x200px]] [[Datei:Merlin 1.75 - 04.jpg|x200px]] [[Datei:Merlin 1.75 - 05.jpg|x200px]]<br />
<br><br />
----<br />
Bisher läuft das neue Hotend sehr zufriedenstellend, höhere Geschwindigketien als 60 mm/s habe ich noch nicht wirklich probiert.<br><br />
Eine Variante mit 16mm Aufnahme und 3mm Filament wurde von [[Benutzer:Manupool|Manupool]] angetestet und läuft bisher auch zufriedenstellend. Hier reicht es theoretisch sogar einen Adapter von 10mm auf 16mm in ABS zu drucken, es braucht keine eigene Hitzebarriere.<br />
<br><br />
Noch ein Wort zur Heizung, ich habe mir von [http://www.ebay.de/itm/160905683107?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649 RepRapdiscount] 10 Patronenheizungen und Thermistoren besorgt und in einen einfachen Alublock mit einer M3 Schraube zum verklemmen der Düse gebaut. Das funktioniert hervorragend. Zwei Dinge sollte man beachten, zum einen müssen Patrone und Thermistor sinnvollerweise mit Hochtemperaturkleber oder Silikon eingeklebt werden, zum anderen machen die 40 Watt Heizleistung es nötig ausreichend dicke Kabel zu verwenden. Die bei den Patronen angebrachten 1m langen Kabel sind sehr gut geeignet, ich habe nur noch Aderendhülsen drauf gemacht. Auf Dauer will ich die ganze Heizung in Hochtemperatursilikon einbetten um sie berührungssicherer zu machen. Auch die Wärmeabstrahlung sollte dann geringer werden. Die Aufheizzeit des neuen Hotends von 24°C auf 230°C liegt jetzt bei ca. 1 Minute.<br />
----<br />
Hier eine Variante von Merlin die für die Verwendung von Airbrush Düsen ausgelegt ist.<br><br />
----<br />
[[Datei:Merlin 1.75 - 06.jpg|x200px]]<br />
----<br />
Kurze Beschreibung / Anleitung zur Herstellung des Hotends<br />
<br />
Die PEEK Barriere ist 40mm lang und hat innen durchgehend M6 Gewinde, aussen<br />
durchgehend M10.<br />
Das PTFE Inlay hat durchgehend M6 Aussengewinde. Die Bohrung ist bei 1.75er<br />
Filament 1.8 mm und bei 3mm Filament 3.1mm.<br />
Wichtig ist bei der Endmontage das zuerst das PTFE auf ca. 30mm Länge<br />
eingeschraubt wird, dann die Düse press dagegen geschraubt wird.<br />
Dann muss das PTFE mit dem passenden Innendurchmesser nachgebohrt werden, damit<br />
das komprimierte Material an der Stoßstelle zur Düse nichts blockiert.<br />
Anschließend das hinten überstehende PTFE einfach mit einem Cuttermesser<br />
abtrennen, das vorher auf passende Länge zu bringne ist nicht sinnvoll.<br />
Evtl. noch eine kleine Senkung in das PTFE damit das Filament sich leichter<br />
einfädelt.<br />
Vorzugsweise sollte das Hotend jetzt nicht mehr auseinander geschraubt werden,<br />
wenn man es öffnet muss man beim zusammenschrauben darauf achten Düse und Inlay<br />
nicht zu fest aufeinander zu pressen, da sonst wieder eine Blockade auftreten<br />
kann. Da skann man aber mit einem Stück Filament ganz einfach testen.<br />
----<br />
[[Datei:Duese1.75.jpg|x200px]]<br />
[[Datei:Duese3.00.jpg|x200px]]</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Benutzer:Srek&diff=10171Benutzer:Srek2018-08-22T08:19:07Z<p>Srek: </p>
<hr />
<div>Kurzes Profil:<br />
[[Datei:Srek.jpg]]<br />
*Björn Marl<br />
*Geboren 20.8.1966<br />
*Ausbildung zum Informationselektroniker<br />
*Studium der Informatik and der FH Gießen (ohne Abschluß)<br />
*über 15 Jahr selbstständig im Bereich PC/Netzwerktechnik und SW Entwicklung<br />
*2001-2013 angestellt bei [http://www.maxon.net Maxon Computer GmbH] und dort tätig als Leiter der Qualitätssicherung<br />
*seit 2014 Technischer Designer bei Maxon Computer GmbH<br />
*Hobbies: meine Katzen, lesen, CINEMA 4D, Arduino/Elektronik Basteleien, RepRap, Möbelbau, Bogenschießen<br />
*Was kann ich gut?: Logisch denken<br />
*Was kann ich schlecht?: Meine Klappe halten<br />
<br />
[http://my.bonkers.de Mein Website]<br />
<br />
<br />
==Projekte==<br />
<br />
===Alternative RepRap Düse (Merlin)===<br />
<br />
Ich arbeite seit einer Weile an einer eigenen Düsenkonstruktion. Ziel ist es ein komplettes Hotend zu bauen das dauerhaft, stabil (thermisch wie mechanisch) und für schnellen Druck geeignet ist.<br><br />
<br />
Nachdem sich der alte Konstruktionsansatz mit langen Düsen und Heizungen für mich als nicht sinnvoll und zu kompliziert im Aufbau erwiesen hat bin ich im Moment in Gegenrichtung unterwegs.<br><br />
Zur Zeit habe ich sehr gute Ergebnisse mit einer sehr kurzen Düse (<20mm) bei einer gesamten HotEnd Länge von ca. 40mm.<br />
Der Aufbau ist sehr einfach. In einen 10 mm PEEK Zylinder mit M6 Innengewinde wird ein Teflon Inlay mit 6mm Aussengewinde geschraubt, davor wird die Düse eingeschraubt. Die Verschraubung der Komponenten gewährt den sicheren und sehr dichten Sitz. Aussen habe ich den PEEK Zylinder mit einem M10 Gewinde versehen, damit läßt sich das Hotend sehr einfach in einen leicht modifizierten Wade Extruder einschrauben.<br><br />
Das Ergebniss ist ein sehr kurzes Hotend das sich dank geringer Masse schnell aufheizt, aber wenig Wärme an die Umgebung abgiebt. Den Extruder muss ich nicht kühlen, trotz 40W Heizung.<br><br><br />
Die Konstruktion habe ich zu Ehren meines schwarzen Katers, der mich sehr bei den Experimenten unterstützt hat (Beruhigung meiner Nerven nach dem x-ten Fehlschlag), Merlin genannt.<br><br />
----<br><br />
<br />
[[Datei:Merlin 1.75 - 01.jpg|x200px]] [[Datei:Merlin 1.75 - 02.jpg|x200px]] [[Datei:Merlin 1.75 - 03.jpg|x200px]] [[Datei:Merlin 1.75 - 04.jpg|x200px]] [[Datei:Merlin 1.75 - 05.jpg|x200px]]<br />
<br><br />
----<br />
Bisher läuft das neue Hotend sehr zufriedenstellend, höhere Geschwindigketien als 60 mm/s habe ich noch nicht wirklich probiert.<br><br />
Eine Variante mit 16mm Aufnahme und 3mm Filament wurde von [[Benutzer:Manupool|Manupool]] angetestet und läuft bisher auch zufriedenstellend. Hier reicht es theoretisch sogar einen Adapter von 10mm auf 16mm in ABS zu drucken, es braucht keine eigene Hitzebarriere.<br />
<br><br />
Noch ein Wort zur Heizung, ich habe mir von [http://www.ebay.de/itm/160905683107?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649 RepRapdiscount] 10 Patronenheizungen und Thermistoren besorgt und in einen einfachen Alublock mit einer M3 Schraube zum verklemmen der Düse gebaut. Das funktioniert hervorragend. Zwei Dinge sollte man beachten, zum einen müssen Patrone und Thermistor sinnvollerweise mit Hochtemperaturkleber oder Silikon eingeklebt werden, zum anderen machen die 40 Watt Heizleistung es nötig ausreichend dicke Kabel zu verwenden. Die bei den Patronen angebrachten 1m langen Kabel sind sehr gut geeignet, ich habe nur noch Aderendhülsen drauf gemacht. Auf Dauer will ich die ganze Heizung in Hochtemperatursilikon einbetten um sie berührungssicherer zu machen. Auch die Wärmeabstrahlung sollte dann geringer werden. Die Aufheizzeit des neuen Hotends von 24°C auf 230°C liegt jetzt bei ca. 1 Minute.<br />
----<br />
Hier eine Variante von Merlin die für die Verwendung von Airbrush Düsen ausgelegt ist.<br><br />
----<br />
[[Datei:Merlin 1.75 - 06.jpg|x200px]]<br />
----<br />
Kurze Beschreibung / Anleitung zur Herstellung des Hotends<br />
<br />
Die PEEK Barriere ist 40mm lang und hat innen durchgehend M6 Gewinde, aussen<br />
durchgehend M10.<br />
Das PTFE Inlay hat durchgehend M6 Aussengewinde. Die Bohrung ist bei 1.75er<br />
Filament 1.8 mm und bei 3mm Filament 3.1mm.<br />
Wichtig ist bei der Endmontage das zuerst das PTFE auf ca. 30mm Länge<br />
eingeschraubt wird, dann die Düse press dagegen geschraubt wird.<br />
Dann muss das PTFE mit dem passenden Innendurchmesser nachgebohrt werden, damit<br />
das komprimierte Material an der Stoßstelle zur Düse nichts blockiert.<br />
Anschließend das hinten überstehende PTFE einfach mit einem Cuttermesser<br />
abtrennen, das vorher auf passende Länge zu bringne ist nicht sinnvoll.<br />
Evtl. noch eine kleine Senkung in das PTFE damit das Filament sich leichter<br />
einfädelt.<br />
Vorzugsweise sollte das Hotend jetzt nicht mehr auseinander geschraubt werden,<br />
wenn man es öffnet muss man beim zusammenschrauben darauf achten Düse und Inlay<br />
nicht zu fest aufeinander zu pressen, da sonst wieder eine Blockade auftreten<br />
kann. Da skann man aber mit einem Stück Filament ganz einfach testen.<br />
----<br />
[[Datei:Duese1.75.jpg|x200px]]<br />
[[Datei:Duese3.00.jpg|x200px]]</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Mitglieder&diff=10170Mitglieder2018-08-22T08:18:48Z<p>Srek: </p>
<hr />
<div><br />
{|<br />
! width=120px|<br />
! width=120px| Name<br />
! width=60px | Seit<br />
! width=120px| Tag<br />
! width=200px| Projekt<br />
|- <br />
| [[Datei:Avatar strange.jpg|100px|link=Benutzer:Strange]]<br />
| strange (Alex)<br />
| 2015<br />
| Open Monday<br />
| [[FPV-Auto]]<br>[[DesignerEsszimmerLampe]]<br />
|<br />
|- <br />
| [[Datei:Srek.jpg|100px|link=Benutzer:Srek]]<br />
| Srek (Björn Marl)<br />
| 2012<br />
| Open Monday<br />
| [[FPV-Auto]] <br> [[Merlin_Extruder]]<br />
|}</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:Srek.jpg&diff=10169Datei:Srek.jpg2018-08-22T08:15:32Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=10122FPV-Auto2018-08-11T19:35:04Z<p>Srek: Files für Reifen, Felgen und Chassis hinzugefügt</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
Features und Implementation:<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** '''TPS61236P (3A max, max 5.5V, 1.66 EUR, Current-Limit einstellbar)''' -> 1x für Motoren, 1x für Servos<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** bq25896 (Lader, +OTG, I2C, 2A oder 3A Ladestrom? Featurecreep. 2.70 EUR)<br />
** bq24262 (Lader, per I2C einstellbar, 3.40 EUR)<br />
** bq24125 (Nur Lader, gut, aber 5.50 EUR!)<br />
** bq25606 (Lader und Booster) - nicht so gut, damit darf nur mit 5V geladen werden<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich PCA9685)<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V<br />
* NRF24L01+ Mini-Modul<br />
<br />
=== Blockschaltung ===<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
Ø = 5,5 cm<br><br />
U = π·d = 17,3 cm<br><br />
200 RPM = 57,6 cm/sec<br><br />
250 RPM = 72 cm/sec<br />
<br />
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br><br />
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br><br />
<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]<br />
<br />
[[Datei:Chassis11.zip]] Schalen<br><br />
[[Datei:X_Chassis_11.zip]] Chassis <br><br />
<br />
<br />
== Software ==<br />
<br />
=== Videostreaming ===<br />
Hier könnten wir UV4L verwenden.<br><br />
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.<br><br />
Ach ja und stereoskopische Kameras werden auch unterstützt.<br />
<br />
Beispiel mit Gesichtserkennung [https://www.linux-projects.org/uv4l/tutorials/custom-webapp-with-face-detection/]<br><br />
Hier wird gezeigt wie man sich die Bibliothek installiert<br />
[https://www.linux-projects.org/uv4l/installation/]<br><br />
<br />
Zum Verwenden die Auflösung und Qualität konfigurieren z.B. auf 640x480 mit einer frame rate von 16 und jpeg quality von 20.<br />
Das kann über die Oberfläche unter <b>Control Panel</b> gemacht werden, die Änderungen werden aber bei jedem Neustart zurückgesetzt.<br />
Besser ist die Konfigurationsdatei für permanente Einstellungen zu ändern.<br />
Sie befindet sich unter /etc/uv4l/uv4l-raspicam.conf .<br />
Anschließend den Service neu starten mit: sudo service uv4l_raspicam restart<br />
<br />
Um den mjpeg Stream in eine Webseite einzubinden einfach<br />
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480"><br />
einfügen.</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:X_Chassis_11.zip&diff=10121Datei:X Chassis 11.zip2018-08-11T19:34:37Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:Chassis11.zip&diff=10120Datei:Chassis11.zip2018-08-11T19:30:07Z<p>Srek: Flache und Normale Chassis Schale</p>
<hr />
<div>Flache und Normale Chassis Schale</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:Felge8-2018.zip&diff=10119Datei:Felge8-2018.zip2018-08-11T19:15:00Z<p>Srek: Felge für FPV Auto</p>
<hr />
<div>Felge für FPV Auto</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=9929FPV-Auto2018-06-24T17:43:08Z<p>Srek: Bildgrößen angepasst</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
Features und Implementation:<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich PCA9685)<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V<br />
* NRF24L01+ Mini-Modul<br />
<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg|320px]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg|320px]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=FPV-Auto&diff=9928FPV-Auto2018-06-24T17:41:36Z<p>Srek: Chassis Infos und Bilder</p>
<hr />
<div>Wir wollen ein fernsteuerbares Auto bauen mit folgenden Features:<br />
* Einfach nachzubauen<br />
* Selbstgedrucktes Chassis aus dem 3D-Drucker<br />
* Selbstgegossene Silikon-Reifen mit selbstgedruckten Gießformen für beste Bodenhaftung<br />
* Energieversorgung: <strike>2x</strike> 1x 18650 LiIon Akku (bevorzugt Zellen mit integrierter Schutzschaltung)<br />
* Antrieb: 4x Mini-Motor mit Getriebe<br />
* Lenkung: Nur über unterschiedliche Ansteuerung der Motoren<br />
* Elektronik:<br />
** Raspberry Pi Zero W mit Kamera für FPV <br />
** Selbstentwickeltes Board für Stromversorgung, Mototreiber, Batteriemanagement, Servokanäle und NRF24L01+ Funkmodul um einen ATmega328 Mikrocontroller<br />
<br />
== FPV Control Board ==<br />
Features und Implementation:<br />
* Stromversorgung:<br />
** 3.3V/0.15A mit Enable und Selbsthaltung für ATmega328 - optimiert auf geringen Ruhestrom (nRF24L01+ typ. 12mA)<br />
*** '''LP5907MFX-3.3/NOPB (LDO, 12uA Iq, Ultra-Low-Noise for RF, SOT-23, 0.45 EUR)'''<br />
*** TPS70633DBVR (LDO, 1uA Iq, 0.64 EUR, SOT-23)<br />
*** TPS62272 (Buck, 3.3V, 1.23 EUR, 18uA)<br />
*** TPS62740 (Buck, mit mehr Schnickschnack, unter 1uA)<br />
*** TPS62007 (Buck, teuer, größeres Gehäuse)<br />
** Booster: 3x einstellbar, am besten mit Enable<br />
*** 5.1V/1A für Raspberry Pi (Zero W braucht etwa 240mA, Kamerastrom extra)<br />
*** 4 - 6V/2A für Motoren<br />
*** evtl. separate 5V/1-2A für Servos/Neopixel<br />
*** TPS61230A (2.4A max 5.5V, 1.66 EUR, seltsames Gehäuse)<br />
<br />
* Batteriemanagement:<br />
** Ideal: Balancer und Ladeschaltung für 2 LiIon in Reihe, min 1A Ladestrom<br />
** Gibts nicht, aber es gibt Balancer mit LDO Ausgang: bq296xx<br />
** Reiner Balancer: bq2920x<br />
** Buck-Boost Charger: bq25703<br />
** Günstiger Buck Charger: bq24133<br />
* Motortreiber:<br />
** Kontrollierbar mit 3.3V Pegeln<br />
** 2 Motorkanäle für bis zu 9V Vin, 0.8A Motorstrom würde reichen<br />
** DRV8835 (Sleep wenn VM aus) oder DRV8833 (Sleep 15uA, int. 3.3V Regler) (welcher ist besser?)<br />
* Pegelwandler:<br />
** 4x 3.3V -> 5V für 4 Servokanäle (Problem: 328 bringt per PWM nur 2 Servokanäle, besser gleich PCA9685)<br />
** 2x 3.3V -> 5V für Neopixel<br />
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V<br />
* NRF24L01+ Mini-Modul<br />
<br />
<br />
== Motoren ==<br />
* [https://de.aliexpress.com/item/12GA-DC-3V-Miniature-Electric-Reduction-Gear-Motor-Metal-Gearbox-for-RC-robot-model-Toy-DIY/2027091831.html 3V 250RPM N20] -- die 250RPM sind etwas flott, daher Tests mit:<br />
* [https://www.aliexpress.com/item/1pcs-EBOWAN-N20-Micro-motor-Electric-gear-box-motor-3v-6v-12v-15-30-50-60/32770564311.html?spm=a2g0s.9042311.0.0.ecb74c4dElVdZS 3V 200RPM N20]<br />
<br />
<br />
== Reifen ==<br />
* https://www.youtube.com/watch?v=k6QX90taK5c<br />
<br />
[[Datei:20180604 201225.jpg|320px]]<br />
[[Datei:20180604 201232.jpg|320px]]<br />
<br />
== Akkus ==<br />
18650 Akku<br />
<br />
== Chassis ==<br />
Da es zwei unterschiedliche Ansätze zur Nutzung gibt<br />
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren<br />
*Universal Drohne zur Ausstattung mit größeren Kameras oder Manipulatoren <br />
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.<br />
*Maße: 115mm x 72mm x 15mm<br />
*Aufnahme für 4 12GA Motoren<br />
*Aufnahme für Raspberry Pi Zero Minikamera<br />
<br />
[[Datei:20180624-fpvauto-rahmen.jpg]]<br />
<br />
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<br />
<br />
[[Datei:20180624-fpvauto-tumblrschale.jpg]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg]]<br />
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg]]<br />
<br />
<br />
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.<br />
<br />
[[Datei:20180624-fpvauto-stdschale.jpg]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdconfig.jpg]]<br />
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg]]</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20180624-fpvauto-fpvauto-stdchassis.jpg&diff=9927Datei:20180624-fpvauto-fpvauto-stdchassis.jpg2018-06-24T17:41:20Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20180624-fpvauto-fpvauto-stdconfig.jpg&diff=9926Datei:20180624-fpvauto-fpvauto-stdconfig.jpg2018-06-24T17:41:10Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20180624-fpvauto-stdschale.jpg&diff=9925Datei:20180624-fpvauto-stdschale.jpg2018-06-24T17:40:58Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg&diff=9924Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg2018-06-24T17:40:50Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg&diff=9923Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg2018-06-24T17:40:44Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20180624-fpvauto-tumblrschale.jpg&diff=9922Datei:20180624-fpvauto-tumblrschale.jpg2018-06-24T17:40:25Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:20180624-fpvauto-rahmen.jpg&diff=9921Datei:20180624-fpvauto-rahmen.jpg2018-06-24T17:40:12Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Raum_2.0_-_PHASE_2&diff=7919Raum 2.0 - PHASE 22015-08-03T13:56:02Z<p>Srek: Sorry, keine weiteren Stühle von mir, die waren leider in keinem brauchbaren Zustand mehr.</p>
<hr />
<div>= Termine =<br />
<br />
* 16.7. 19:00 1. Treffen des Einrichtung-Planungs-Team in Raum 2.0<br />
** Protokoll [[Raum 2.0 - Einrichtung - PHASE 2.0.0.1]]<br />
<br />
* 19.7. 15:00 2. Treffen des Einrichtung-Planungs-Team in Raum 2.0<br />
** Protokoll [[Raum 2.0 - Einrichtung - PHASE 2.0.0.2]]<br />
<br />
* 1.8., 2.8 Infrastruktur Aufbautag.<br />
<br />
= Raum =<br />
<br />
[[Datei:Raum2.0.png|800px]]<br />
<br />
[[Datei:Hackerspace.png|600px]]<br />
<br />
Hauptraum.scad [[Datei:Hauptraum.scad]]<br />
<br />
Doppelraum_A.scad [[Datei:Doppelraum_A.scad]]<br />
noch nicht 100% akkurat (Tür position Größe)<br />
<br />
Doppelraum_B.scad [[Datei:Doppelraum_B.scad]]<br />
noch nicht 100% akkurat (Tür, Fenster position Größe)<br />
<br />
Metro_Biloxxi_Schwerlastregal.scad [[Datei: Metro_Biloxxi_Schwerlastregal.scad]]<br />
<br />
Metro_Biloxxi_Schwerlastregal_Weitspann.scad [[Datei: Metro_Biloxxi_Schwerlastregal_Weitspann.scad]]<br />
<br />
= Nutzungsidee/Vorschlag =<br />
<br />
Erste Nutzungsidee/Vorschlag von Lutz:<br />
<br />
* Großer Raum:<br />
** Haupt-Raum zum Treffen, Unterhalten, Basteln, Chillen und zur Nutzung als Vortragsraum<br />
** Mehrere stabile Arbeitstische + Stühle, am besten frei stellbar<br />
** Stabile Regale für Mitglieder-Projekt-Boxen, Werkzeug etc.<br />
** Ggf. kleine Chill-Ecke mit Couch in Ecke (wenn es nicht zu viel Platz weg nimmt)<br />
** WAF > 0 wenn möglich<br />
<br />
<br />
* Doppelraum, 1. Teil ohne Fenster:<br />
** Haupt-Werkstattraum für große Maschinen, Werkzeuge, Abteilung "Laut+Dreckig"<br />
** Lager für Mechanik-Material (Profile, Schrauben, Stangen, Platten, etc.)<br />
** Lager für größere Projektsachen<br />
<br />
<br />
* Doppelraum, 2. Teil mit Fenster:<br />
** Elektronik-Labor (Gerätepark, Lötarbeitsplatz, etc.)<br />
** Elektronik-Kleinteil-Sortimente<br />
** Trash-Cache(s) bzw. Trash-FIFO (links *reindrück* -> rechts *rausfall*)<br />
** Küchenecke mit Getränkelager <s>und Kühlschrank</s> ''Kühlschrank in Hauptraum, kein Durchgangsverkehr in Werkstatt''<br />
** Arbeitstisch wo Projekte mal nicht jeden Abend weggeräumt werden müssen<br />
** Stellplatz für Kiste mit CO2-Laser und 3D-Drucker und Abzug<br />
<br />
= Einrichtungs-Planungs-Team =<br />
<br />
Um die Räume 2.0 schnell nutzbar zu machen, brauche wir ein überschaubares Team von Leuten, <br />
die bestimmte Einrichtungs-Aufgaben planen und übernehmen/koordinieren.<br />
<br />
<br />
Folgendes muss (vermutlich) gemacht werden:<br />
<br />
* Einfache Renovierungsarbeiten (Wände streichen, Fenster putzen, andere Kleinigkeiten an den Räumen selbst ausbessern)<br />
* Elektrik: Steckdosen für Dauer- und Not-Aus (bzw. Haupt-Aus) Strom, Licht (gerade im Doppelraum muss vermutlich viel gemacht werden).<br />
* Netzwerk: Wifi-Accesspoints in den beiden Räumen, Netzwerkverkabelung. Erfahrungsgemäß nutzen wir hauptsächlich Wifi, trotzdem sollten genug, aber nicht übermäßig (Stromverbrauch!) Netzwerkdosen/Kabel verfügbar sein. Es muss außerdem eine Kabelverbindung zwischen den beiden Räumen geschaffen werden.<br />
* Strom: Wir haben einen eigenen Kraftstrom-Anschluss mit Zähler in der Werkstatt, diesen müssen wir aber selbst anmelden. Hierfür brauchen wir einen günstigen Tarif! (=wenig Grundgebühr)<br />
* Internet: Wir sollten einen für uns sinnvollen Internetprovider auswählen, der vor Ort auch verfügbar ist. Angeblich gibt es nur "Standard-Kram" wie bei Privatnutzern - der sollte uns aber eigentlich auch reichen. <strike>Evtl. muss dafür von uns noch ein Kabel quer durchs Spectaculum (bzw. daran vorbei) gelegt werden, weil der Anschluss angeblich auf der Seite der Oberurseler Str. ist.</strike> Der Verwalter sorgt für einen Telefonanschluss, der dann im Doppelraum irgendwo ankommt.<br />
* Werkstatt-Einrichtung: Stabile Werkbänke für Bohrmaschine, Drehbank... Regale, Ablagen, Werkzeugwand? <br />
* Hauptraum: Tischsystem mit stabilen Platten. Regale+Stühle... Jochen hat hier schon ein paar Ideen und wollte sich kümmern. Wer kann helfen, wer hat ggf bereits Material?<br />
* Elektronikraum: Arbeitstische hier, Kühlschrank (hat jemand einen übrig?)<br />
* Schlösser an den Türen: Die Wände drinnen sind eh nur Leichtbau, für die innerern Türen können wir ein eigenes Schliesssystem machen (elektrisch, Schlüsselsafe oder einfach nur billig-Zylinder mit genug Schlüsseln). Für die Eingangstür hab ich 10 Schlüssel ausgemacht (hier ist erst einmal kein Fancy-Schliesssystem angedacht, da noch mehr Mieter da sind).<br />
* ...weitere Ideen? Material in der Garage? Einwände? Melden!<br />
<br />
= Bereits vorhandenes/zugesagtes Material =<br />
<br />
* Sitze<br />
** Bürostühle (im Raum 2.0) - Anzahl 4x ohne Rollen, 1x mit Rollen<br />
** schwarzes 3er-Sofa (im Raum 2.0) - Abmessungen?<br />
** schwarzes 2x 1er-Sofa-Sessel (im Raum 2.0) - Abmessungen?<br />
** Schalenstühle Lila (derzeit 6x Stück in Raum 1.0)<br />
<br />
<br />
* Tische<br />
** schwarzer Schreibtisch (im Raum 2.0) - Abmessungen?<br />
** schwarzer Auszieh-Schreibtisch (im Raum 2.0) - Abmessungen?<br />
** 1x Stabile Werkbank von David Me.<br />
<br />
<br />
* Netzwerk<br />
** 2x Cisco WLAN AP's (WAP44101N) + 1x PoE Einspeiser (Wichtig Firmware muss aktualisiert werden) kein 5 GHz<br />
** ca. 90m CAT7 Twin-Pair-Verlegekabel (im Raum 2.0) von David Mi.<br />
** zwei hochwertige 24 Port d-link switches und das 19" wandgehäuse von Björn M.<br />
<br />
<br />
* Regal / Schränke<br />
** Schwerlastregal metall (im Raum 1.0) - HxBxT (200 x 100 x 50 cm)<br />
** Laser + 3D-Drucker-Kiste (im Raum 1.0) - HxBxT (180 x 110 x 70 cm)<br />
<br />
<br />
* Aufbewahrung <br />
** Sortimentskästen von AXL, 8x - je HxBxT (54 x 30 x 20 cm)<br />
<br />
<br />
* Installationsmaterial<br />
** Kabelkanal Weiss: 3cm x 1,5cm 1x Länge 166, 1x Länge 179, 1x Länge 200<br />
** Kabelkanal: 200cm x 1,5cm x 1,5cm 6x Weiss und 3x Grau<br />
<br />
<br />
* Sonstige<br />
** Großer 39-Zoll Monitor/Fernseher (derzeit im Flur 1. OG von Fritz-D - wird wieder zurück erobert - war von Björn M. für den Hackerspace gesponsort, 105 x 70 cm)<br />
** Super Nintendo inc Spiele von David Mi.<br />
<br />
== Was wir noch kriegen könnten ==<br />
* 3 Tische mit Flächenmaß von 157x80cm von Alex O.<br />
* ca. 12+ Stühle von Alex O.<br />
* Sofa 150 x 80 von Daniel K.<br />
<br />
= Projekte =<br />
<br />
== Strom ==<br />
<br />
==== Aufgaben ====<br />
<br />
==== Hauptraum ====<br />
* Steckdosen an der Fensterseite, Seiten<br />
<br />
==== Doppelraum - Werkraum ====<br />
* 2x Drehstrom<br />
* Steckdosen<br />
<br />
==== Doppelraum - eRaum ====<br />
* Steckdosen über Tischhöhe platzieren<br />
<br />
==== Team ====<br />
Jochen, David Me., Thomas K.<br />
<br />
== Abluft ==<br />
<br />
==== Aufgabe ====<br />
* Variante A: Abluft ans Abwasser Entlüftung<br />
* Variante B: Abluft durch die Alublech übern Fenster<br />
* Variante C: Abluft direkt durch die Seiten Wand vom Werkraum<br />
* Variante D: Abluft direkt durchs Dach vom Werkraum<br />
<br />
==== Team ====<br />
Jochen, David Me., Thomas K.<br />
<br />
== Netzwerk ==<br />
<br />
==== Aufgabe ====<br />
* Hauptraum<br />
** 3x Doppel Netzwerk am Fenster<br />
** X mal Netzwerk an die Seitenwänden<br />
** 4x Patchkabel über die Deckenverkabelung<br />
<br />
* Doppelraum - Werksraum<br />
** 3x Netzwerk dose<br />
<br />
* Doppelraum - eRaum<br />
** 3x Netzwerk dose<br />
<br />
==== Team ====<br />
Jochen, Thomas K., David Mi., Shintaro<br />
<br />
== Hauptraum streichen ==<br />
<br />
==== Aufgabe ====<br />
# Deckenplatte streichen -> Achtung, Farbe sollte die Schallschluckeigenschaften der Platten nicht verschlechtern!<br />
# Wand streichen<br />
# Untere Kante Silber streichen<br />
<br />
==== Team ====<br />
!!! Brauchen helfende Hände !!!<br />
<br />
== Beleuchtung ==<br />
<br />
=== Hauptraum Leuchtstofflampen ===<br />
Leuchtstofflampen : 150cm 58W Cool White<br />
Wenn alle Lampen an sind verbrauchen wir ca. 696Watt.<br />
Zwei Aufgaben für die Lampen.<br />
<br />
# Leuchtstofflampen tauschen<br />
# Starter tauschen<br />
<br />
Der dreier Lampenschalter um verdrahten. Verdrahtung wie folgt:<br />
* Lampen Reihe am Fenster komplett über ein Schalter einschaltbar.<br />
* 2. 3. Lampen Reihe pro Lampen einzeln die Röhren ausschalten um Stromverbrauch zu reduzieren.<br />
<br />
==== Team ====<br />
Shintaro, Jochen, Thomas K.<br />
<br />
Folie für Seiten Fenster<br />
Spiegelnd und Kreide oder Marker<br />
Lampe<br />
Andere Leuchtmittel 840 oder Kälter<br />
Leuchtstoff Röhren partiell abschaltbar machen da wir sonst ca. 700 Watt nur für die Lampen im Hauptraum verbrauchen.<br />
Elektronische Starter tauschen<br />
(Thomas bestelt)<br />
Strom Anschlüsse<br />
(Thomas, David, Jochen)<br />
Netzwerkkabel von Space zu Space<br />
(Thomas, Jochen)<br />
Abluft (Thomas, Jochen, David)<br />
Abluft am vorhandene Abluft Rohr.<br />
Decken Elemente streichen<br />
Weiße Farbe<br />
Mal Kram<br />
Strom und Netzwerk von Decke<br />
Stahlseile Ösen<br />
7m-8m Stromkabel + Netzwerk (mit Kupplung)<br />
Ein Ausschalter für Spaces (Jochen)<br />
<br />
[[http://excel2wiki.net/index.php]]</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Community_3d-Drucker_2.0&diff=7425Community 3d-Drucker 2.02015-01-02T14:29:43Z<p>Srek: </p>
<hr />
<div>==Prämisse==<br />
*Portabel - Das Gerät sollte einfach am Stück zu transportieren sein, keine hervorstehenden Teile haben und sowohl Stromversorgung, als auch mindestens eine Rolle Material, im Inneren unterbringen<br />
*Multiple Materialien - Zwei oder mehr Materialien sollten gleichzeitig gedruckt werden können<br />
*Heizbare Druckkammer - Der Drucker sollte ummantelt sein und die Druckkammer sollte auf mindestens 70°C aufheizbar sein<br />
*Standard Bauteile - Ausser Druckteilen sollten möglichst nur Standard Bauteile verwendet werden, keine exotischen Komponenten<br />
<br />
==Mechanik==<br />
*Ein Würfelrahmen aus 20mm Aluprofil<br />
*Einhausung aus Polycarbonat/Macrolon<br />
*Thermische Abtrennung zwischen Elektro / Elektronik Bereich und Heizraum<br />
*Standard XYZ Aufbau mit in y bewglichem Druckschlitten<br />
*T2,5, HTD3 o.ä. Riemen Antrieb für X und Y<br />
*Trapezgewindespindel/Gewindestange für Z<br />
*Runde Stahlstangen als Führungen für alle drei Achsen<br />
*Sinter Bronze Lager für alle beweglichen Komponenten<br />
*Zwei kleine X Schlitten mit je einem Bowden Hotend<br />
<br />
Erster Dual X Carriage Test[http://youtu.be/mepZQcvM8Wg Youtube Video]<br />
<br />
==Elektronik==<br />
*RUMBA, RADDS o.ä. mit Unterstützung für mindestens 6 Steppertreiber (X1,X2,Y,Z,E1,E2)<br />
*Graphisches LCD + SD-Card Leser<br />
*Notschalter<br />
*Evtl. 12 Volt Alternative Stromversorgung (Anschluß an Autobatterie)<br />
<br />
==Status==<br />
<br />
===Freitag 22.8.2014===<br />
Abweichend von [[Community_3d-drucker_VorschlagBM|Björns Vorschlag]] wird der Kaltbereich im oberen Bereich des Druckers angeordnet. Es wurde festgestellt das es bis zu einer Temperatur von 70 °C nicht nötig ist die Motoren zu kühlen, sie verbleiben daher im Warmbereich.<br />
<br />
[[Datei:Skizze-CD01.jpg]]<br />
<br />
===Donnerstag 25.12.2014===<br />
Die komplett neu designte X Achse funktioniert, auch die Marlin Anpassung hat geklappt.<br />
Erstes Testvideo der neuen Maschine mit beiden X Schlitten im Einsatz<br />
[http://youtu.be/wf0lRwz0y9U Youtube Video]<br />
<br />
===Sonntag 28.12.2014===<br />
Nach einigen Tests bezüglich der Positionierung der Extruder und des Verlaufs der Bowden Schläuche ist klar geworden das der Z Riemen nach unten muss. Im Zuge dessen habe ich auch den Y Antrieb etwas umdesigned so das jetzt Z und Y problemlos zusammen passen.<br />
Das hat auch zur Folge das sich der Druckraum vergrößert, die Mechanik baut jetzt flacher.<br><br />
[[Datei:141228-01.JPG|border|512px|Y und Z Antriebe und Z Riemenspanner von oben]]<br><br />
[[Datei:141228-02.JPG|border|512px|Y Umlenkung und Riemenspanner von oben]]<br><br />
[[Datei:141228-03.JPG|border|512px|Detail Z Antrieb und Riemenspanner von unten]]<br><br />
[[Datei:141228-04.JPG|border|512px|Y Riemenklemme von unten]]<br><br />
[[Datei:141228-05.JPG|border|512px|Detail Y Umlenkung und Riemenspanner]]<br><br />
Leider war eine Erkenntniss das für die Bowden Schläuche mehr Platz benötigt wird als erwartet, das heisst der finale Drucker wird 54cm statt 44cm hoch und wird damit kein Würfel mehr sein. Auf der Plus Seite haben wir jetzt aber mehr Spielraum was die Platzierung der Elektronik und der Bedienelemente betrifft.<br><br />
Die Kabelbinder bei den Y Wellen sind nur temporär, hier kommt eine Schraublösung zum Einsatz, da fehlen mir im Moment leider die nötigen M3 Senkkopfschrauben, die Zylinderkopfschrauben bauen zu hoch für den Y Schlitten.<br />
===Mittwoch 31.12.2014===<br />
Fortschritte beim Hotend. Wie bei meinem OrdBot habe ich beim Bowden Anschluß auf Pushfits verzichtet, der PTFE Bowdenschlauch wird einfach durch Friktion gehalten. Den Halt bekommt der Schlauch durch ein in das ABS geschnittenes M4 Gewinde.<br><br />
Um andere Hotendbefestigungen zu verwenden muss lediglich der Hotend Halter (letztes Bild in dieser Reihe) ersetzt werden. Deckel und Schlitten können unverändert übernommen werden.<br><br />
[[Datei:HotEnd 01.JPG|border|512px|Beide Hotends im eingebauten Zustand]]<br><br />
[[Datei:HotEnd 02.JPG|border|512px|Seitenansicht]]<br><br />
[[Datei:HotEnd 03.JPG|border|512px|Abdeckung mit Lüfter entfernt]]<br><br />
[[Datei:HotEnd 05.JPG|border|512px|Hotend Halterung]]<br><br />
===Freitag 2.1.2015===<br />
STLs und C4D Dateien des aktuellen Stands<br />
[[Datei:HackFFM C4D.zip||Cinema 4D]]<br><br />
[[Datei:HackFFM STL.zip||STL]]<br></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:HackFFM_STL.zip&diff=7424Datei:HackFFM STL.zip2015-01-02T14:29:23Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:HackFFM_C4D.zip&diff=7423Datei:HackFFM C4D.zip2015-01-02T14:29:17Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Benutzer:Srek&diff=7422Benutzer:Srek2015-01-02T10:47:46Z<p>Srek: </p>
<hr />
<div>Kurzes Profil:<br />
<br />
*Björn Marl<br />
*Geboren 20.8.1966<br />
*Ausbildung zum Informationselektroniker<br />
*Studium der Informatik and der FH Gießen (ohne Abschluß)<br />
*über 15 Jahr selbstständig im Bereich PC/Netzwerktechnik und SW Entwicklung<br />
*2001-2013 angestellt bei [http://www.maxon.net Maxon Computer GmbH] und dort tätig als Leiter der Qualitätssicherung<br />
*seit 2014 Technischer Designer bei Maxon Computer GmbH<br />
*Hobbies: meine Katzen, lesen, CINEMA 4D, Arduino/Elektronik Basteleien, RepRap, Möbelbau, Bogenschießen<br />
*Was kann ich gut?: Logisch denken<br />
*Was kann ich schlecht?: Meine Klappe halten<br />
<br />
[http://my.bonkers.de Mein Website]<br />
<br />
<br />
==Projekte==<br />
<br />
===Alternative RepRap Düse (Merlin)===<br />
<br />
Ich arbeite seit einer Weile an einer eigenen Düsenkonstruktion. Ziel ist es ein komplettes Hotend zu bauen das dauerhaft, stabil (thermisch wie mechanisch) und für schnellen Druck geeignet ist.<br><br />
<br />
Nachdem sich der alte Konstruktionsansatz mit langen Düsen und Heizungen für mich als nicht sinnvoll und zu kompliziert im Aufbau erwiesen hat bin ich im Moment in Gegenrichtung unterwegs.<br><br />
Zur Zeit habe ich sehr gute Ergebnisse mit einer sehr kurzen Düse (<20mm) bei einer gesamten HotEnd Länge von ca. 40mm.<br />
Der Aufbau ist sehr einfach. In einen 10 mm PEEK Zylinder mit M6 Innengewinde wird ein Teflon Inlay mit 6mm Aussengewinde geschraubt, davor wird die Düse eingeschraubt. Die Verschraubung der Komponenten gewährt den sicheren und sehr dichten Sitz. Aussen habe ich den PEEK Zylinder mit einem M10 Gewinde versehen, damit läßt sich das Hotend sehr einfach in einen leicht modifizierten Wade Extruder einschrauben.<br><br />
Das Ergebniss ist ein sehr kurzes Hotend das sich dank geringer Masse schnell aufheizt, aber wenig Wärme an die Umgebung abgiebt. Den Extruder muss ich nicht kühlen, trotz 40W Heizung.<br><br><br />
Die Konstruktion habe ich zu Ehren meines schwarzen Katers, der mich sehr bei den Experimenten unterstützt hat (Beruhigung meiner Nerven nach dem x-ten Fehlschlag), Merlin genannt.<br><br />
----<br><br />
<br />
[[Datei:Merlin 1.75 - 01.jpg|x200px]] [[Datei:Merlin 1.75 - 02.jpg|x200px]] [[Datei:Merlin 1.75 - 03.jpg|x200px]] [[Datei:Merlin 1.75 - 04.jpg|x200px]] [[Datei:Merlin 1.75 - 05.jpg|x200px]]<br />
<br><br />
----<br />
Bisher läuft das neue Hotend sehr zufriedenstellend, höhere Geschwindigketien als 60 mm/s habe ich noch nicht wirklich probiert.<br><br />
Eine Variante mit 16mm Aufnahme und 3mm Filament wurde von [[Benutzer:Manupool|Manupool]] angetestet und läuft bisher auch zufriedenstellend. Hier reicht es theoretisch sogar einen Adapter von 10mm auf 16mm in ABS zu drucken, es braucht keine eigene Hitzebarriere.<br />
<br><br />
Noch ein Wort zur Heizung, ich habe mir von [http://www.ebay.de/itm/160905683107?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1439.l2649 RepRapdiscount] 10 Patronenheizungen und Thermistoren besorgt und in einen einfachen Alublock mit einer M3 Schraube zum verklemmen der Düse gebaut. Das funktioniert hervorragend. Zwei Dinge sollte man beachten, zum einen müssen Patrone und Thermistor sinnvollerweise mit Hochtemperaturkleber oder Silikon eingeklebt werden, zum anderen machen die 40 Watt Heizleistung es nötig ausreichend dicke Kabel zu verwenden. Die bei den Patronen angebrachten 1m langen Kabel sind sehr gut geeignet, ich habe nur noch Aderendhülsen drauf gemacht. Auf Dauer will ich die ganze Heizung in Hochtemperatursilikon einbetten um sie berührungssicherer zu machen. Auch die Wärmeabstrahlung sollte dann geringer werden. Die Aufheizzeit des neuen Hotends von 24°C auf 230°C liegt jetzt bei ca. 1 Minute.<br />
----<br />
Hier eine Variante von Merlin die für die Verwendung von Airbrush Düsen ausgelegt ist.<br><br />
----<br />
[[Datei:Merlin 1.75 - 06.jpg|x200px]]<br />
----<br />
Kurze Beschreibung / Anleitung zur Herstellung des Hotends<br />
<br />
Die PEEK Barriere ist 40mm lang und hat innen durchgehend M6 Gewinde, aussen<br />
durchgehend M10.<br />
Das PTFE Inlay hat durchgehend M6 Aussengewinde. Die Bohrung ist bei 1.75er<br />
Filament 1.8 mm und bei 3mm Filament 3.1mm.<br />
Wichtig ist bei der Endmontage das zuerst das PTFE auf ca. 30mm Länge<br />
eingeschraubt wird, dann die Düse press dagegen geschraubt wird.<br />
Dann muss das PTFE mit dem passenden Innendurchmesser nachgebohrt werden, damit<br />
das komprimierte Material an der Stoßstelle zur Düse nichts blockiert.<br />
Anschließend das hinten überstehende PTFE einfach mit einem Cuttermesser<br />
abtrennen, das vorher auf passende Länge zu bringne ist nicht sinnvoll.<br />
Evtl. noch eine kleine Senkung in das PTFE damit das Filament sich leichter<br />
einfädelt.<br />
Vorzugsweise sollte das Hotend jetzt nicht mehr auseinander geschraubt werden,<br />
wenn man es öffnet muss man beim zusammenschrauben darauf achten Düse und Inlay<br />
nicht zu fest aufeinander zu pressen, da sonst wieder eine Blockade auftreten<br />
kann. Da skann man aber mit einem Stück Filament ganz einfach testen.<br />
----<br />
[[Datei:Duese1.75.jpg|x200px]]<br />
[[Datei:Duese3.00.jpg|x200px]]</div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Community_3d-Drucker_2.0&diff=7421Community 3d-Drucker 2.02014-12-31T16:43:46Z<p>Srek: </p>
<hr />
<div>==Prämisse==<br />
*Portabel - Das Gerät sollte einfach am Stück zu transportieren sein, keine hervorstehenden Teile haben und sowohl Stromversorgung, als auch mindestens eine Rolle Material, im Inneren unterbringen<br />
*Multiple Materialien - Zwei oder mehr Materialien sollten gleichzeitig gedruckt werden können<br />
*Heizbare Druckkammer - Der Drucker sollte ummantelt sein und die Druckkammer sollte auf mindestens 70°C aufheizbar sein<br />
*Standard Bauteile - Ausser Druckteilen sollten möglichst nur Standard Bauteile verwendet werden, keine exotischen Komponenten<br />
<br />
==Mechanik==<br />
*Ein Würfelrahmen aus 20mm Aluprofil<br />
*Einhausung aus Polycarbonat/Macrolon<br />
*Thermische Abtrennung zwischen Elektro / Elektronik Bereich und Heizraum<br />
*Standard XYZ Aufbau mit in y bewglichem Druckschlitten<br />
*T2,5, HTD3 o.ä. Riemen Antrieb für X und Y<br />
*Trapezgewindespindel/Gewindestange für Z<br />
*Runde Stahlstangen als Führungen für alle drei Achsen<br />
*Sinter Bronze Lager für alle beweglichen Komponenten<br />
*Zwei kleine X Schlitten mit je einem Bowden Hotend<br />
<br />
Erster Dual X Carriage Test[http://youtu.be/mepZQcvM8Wg Youtube Video]<br />
<br />
==Elektronik==<br />
*RUMBA, RADDS o.ä. mit Unterstützung für mindestens 6 Steppertreiber (X1,X2,Y,Z,E1,E2)<br />
*Graphisches LCD + SD-Card Leser<br />
*Notschalter<br />
*Evtl. 12 Volt Alternative Stromversorgung (Anschluß an Autobatterie)<br />
<br />
==Status==<br />
<br />
===Freitag 22.8.2014===<br />
Abweichend von [[Community_3d-drucker_VorschlagBM|Björns Vorschlag]] wird der Kaltbereich im oberen Bereich des Druckers angeordnet. Es wurde festgestellt das es bis zu einer Temperatur von 70 °C nicht nötig ist die Motoren zu kühlen, sie verbleiben daher im Warmbereich.<br />
<br />
[[Datei:Skizze-CD01.jpg]]<br />
<br />
===Donnerstag 25.12.2014===<br />
Die komplett neu designte X Achse funktioniert, auch die Marlin Anpassung hat geklappt.<br />
Erstes Testvideo der neuen Maschine mit beiden X Schlitten im Einsatz<br />
[http://youtu.be/wf0lRwz0y9U Youtube Video]<br />
<br />
===Sonntag 28.12.2014===<br />
Nach einigen Tests bezüglich der Positionierung der Extruder und des Verlaufs der Bowden Schläuche ist klar geworden das der Z Riemen nach unten muss. Im Zuge dessen habe ich auch den Y Antrieb etwas umdesigned so das jetzt Z und Y problemlos zusammen passen.<br />
Das hat auch zur Folge das sich der Druckraum vergrößert, die Mechanik baut jetzt flacher.<br><br />
[[Datei:141228-01.JPG|border|512px|Y und Z Antriebe und Z Riemenspanner von oben]]<br><br />
[[Datei:141228-02.JPG|border|512px|Y Umlenkung und Riemenspanner von oben]]<br><br />
[[Datei:141228-03.JPG|border|512px|Detail Z Antrieb und Riemenspanner von unten]]<br><br />
[[Datei:141228-04.JPG|border|512px|Y Riemenklemme von unten]]<br><br />
[[Datei:141228-05.JPG|border|512px|Detail Y Umlenkung und Riemenspanner]]<br><br />
Leider war eine Erkenntniss das für die Bowden Schläuche mehr Platz benötigt wird als erwartet, das heisst der finale Drucker wird 54cm statt 44cm hoch und wird damit kein Würfel mehr sein. Auf der Plus Seite haben wir jetzt aber mehr Spielraum was die Platzierung der Elektronik und der Bedienelemente betrifft.<br><br />
Die Kabelbinder bei den Y Wellen sind nur temporär, hier kommt eine Schraublösung zum Einsatz, da fehlen mir im Moment leider die nötigen M3 Senkkopfschrauben, die Zylinderkopfschrauben bauen zu hoch für den Y Schlitten.<br />
===Mittwoch 31.12.2014===<br />
Fortschritte beim Hotend. Wie bei meinem OrdBot habe ich beim Bowden Anschluß auf Pushfits verzichtet, der PTFE Bowdenschlauch wird einfach durch Friktion gehalten. Den Halt bekommt der Schlauch durch ein in das ABS geschnittenes M4 Gewinde.<br><br />
Um andere Hotendbefestigungen zu verwenden muss lediglich der Hotend Halter (letztes Bild in dieser Reihe) ersetzt werden. Deckel und Schlitten können unverändert übernommen werden.<br><br />
[[Datei:HotEnd 01.JPG|border|512px|Beide Hotends im eingebauten Zustand]]<br><br />
[[Datei:HotEnd 02.JPG|border|512px|Seitenansicht]]<br><br />
[[Datei:HotEnd 03.JPG|border|512px|Abdeckung mit Lüfter entfernt]]<br><br />
[[Datei:HotEnd 05.JPG|border|512px|Hotend Halterung]]<br></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:HotEnd_05.JPG&diff=7420Datei:HotEnd 05.JPG2014-12-31T16:43:22Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:HotEnd_03.JPG&diff=7419Datei:HotEnd 03.JPG2014-12-31T16:43:15Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:HotEnd_02.JPG&diff=7418Datei:HotEnd 02.JPG2014-12-31T16:43:06Z<p>Srek: </p>
<hr />
<div></div>Srekhttps://hackerspace-ffm.de/wiki/index.php?title=Datei:HotEnd_01.JPG&diff=7417Datei:HotEnd 01.JPG2014-12-31T16:42:59Z<p>Srek: </p>
<hr />
<div></div>Srek