Änderungen

Aus Hackerspace Ffm
Wechseln zu: Navigation, Suche

FPV-Auto

2.288 Byte hinzugefügt, 15:39, 16. Dez. 2019
* Optional: 1 Kanal Class-D Audio-Amp (oder Codec?) für 5V '''MAX98357A''' ist hier gut
* NRF24L01+ Mini-Modul
 
=== Pinbelegung FPV-Auto Board ===
<pre>
AOUT2 AOUT1 | SERVO1 +5V5 GND | VO-
BOUT2 BOUT1 | SERVO2 +5V5 GND | VO+
=======PCB===========PCB==========PCB========
 
[MOTOR_RIGHT] | [SERVO1 +5V5 GND] | |Spk|
[MOTOR_LEFT ] | [SERVO2 +5V5 GND] | |Spk|
=======PCB===========PCB==========PCB========
</pre>
 
=== Pinbelegung ATmega328 ===
==== Package für Arduino ====
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.
<pre>wget https://downloads.arduino.cc/arduino-1.8.9-linuxarm.tar.xztar -xvf arduino-1.8.9-linuxarm.tar.xzsudo mv arduino-1.8.9 /optsudo /opt/arduino-1.8.9/install.sh</pre>In der neuen Arduino-IDE wird dann der 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.
==== Kommandos von FPVAutoControl ====
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>
Kommandos:
* m xx yy rr : Drive mit den Werten XX YY RR(alt, eher unsinn ohne Omniwheels)* f ll rr : Aktiviere Motoren Links / Rechts(-255 ... 0 ... 255)* N aa bb : Stelle Servo A/B (0..180 besser nur 0..160 bei SG90...)* p!999 : Abschalten nach 60sek* ph aa : Stelle Servo A* pv aa : Stelle Servo B
==== Bootloader ====
==== Audio Ausgabe aktivieren ====
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 <pre>sudo nano /boot/config.txt</pre><pre>...#dtparam=audio=ondtoverlay=hifiberry-dacdtoverlay=i2s-mmap...</pre> <pre>sudo nano /etc/asound.conf</pre> <pre>pcm.speakerbonnet { type hw card 0} pcm.dmixer { type dmix ipc_key 1024 ipc_perm 0666 slave { pcm "speakerbonnet" period_time 0 period_size 1024 buffer_size 8192 rate 44100 channels 2 }} ctl.dmixer { type hw card 0} pcm.softvol { type softvol slave.pcm "dmixer" control.name "PCM" control.card 0} ctl.softvol { type hw card 0} pcm.!default { type plug slave.pcm "softvol"}</pre> pygame installieren<pre>sudo apt install python3-pygame</pre> sound downloaden<pre>wget http://www.wavsource.com/snds_2018-06-03_5106726768923853/animals/chicken.wav</pre> python3 script erstellen<pre>import pygameimport time pygame.mixer.init(44100, -16, 1, 1024)pygame.mixer.music.load("chicken.wav")pygame.mixer.music.play() time.sleep(3)</pre> ==== Kamera aktivieren ====https://github.com/jacksonliam/mjpg-streamer
=== Platinen ===
== Reifen ==
* https://www.youtube.com/watch?v=k6QX90taK5c
 
[[Datei:20180604 201225.jpg|320px]]
[[Datei:20180604 201232.jpg|320px]]
 
Ø = 5,5 cm<br>
U = π·d = 17,3 cm<br>
200 RPM = 57,6 cm/sec<br>
250 RPM = 72 cm/sec
 
Felge 8-2018 Zum eingießen in Silikon oder für gedruckte Reifen [[Datei:felge8-2018.zip]] (spitze Madenschraube M3 wird benötigt)<br>
Reifen zum drucken in weichem Material (TPU, Ninjaflex etc.) [https://drive.google.com/open?id=1lXRN7BjhyoFlRAwqvAEh77fFSULiji9e Reifen]<br>
Ø = 5,8 cm<br>
U = π·d = 18,2 cm<br>
50 RPM = 15,2 cm/sec<br>
200 RPM = 60,7 cm/sec<br>
250 RPM = 75,9 cm/sec<br>
Dateien sind hier zu finden https://github.com/bmarl/FPVCar/tree/master/3D-print-parts
== Akkus ==
== Chassis ==
Alle Teile für das aktuelle Chassis sind hier zu finden - https://github.com/bmarl/FPVCar/tree/master/3D-print-parts
 
 
Da es zwei unterschiedliche Ansätze zur Nutzung gibt
*Tumbler mit großer Bodenfreiheit und Option über Kopf zu fahren
[[Datei:20180624-fpvauto-fpvauto-tumblrconfig.jpg|320px]]
[[Datei:20180624-fpvauto-fpvauto-tumblrchassis.jpg|320px]]
 
Für die Standard Version werden zwei 12mm Schalen verwendet, das Chassis bietet dann zwei 18650 Zellen Platz, der RasPi Stack steh hier senkrecht.
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]
Platine verlötet [[Datei:Chassis11Fpvcar platine verloetet.zipjpg|320px]] Schalen<br>[[Datei:X_Chassis_11Chasis verloetet.zipjpg|320px]] Chassis <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>[[Datei:20190421-fpvauto-inwheelchassis01Batterie Halter.jpg|320px]]<br> [[Datei:20190424InWheelFpvcar mit 9dof i2c.zipjpg|320px]] In Wheel Chassis
== Raspberry Pi Zero W ==
== Software ==
=== Protokoll für Commandos aus der Webgui ===
{
"component":"COMPONENTNAME",
"key": "value"
}
Beispiel
 
{
"component":"base",
"forward": 10
}
=== Videostreaming ===
Hier könnten wir UV4L verwenden.<br>
Um den mjpeg Stream in eine Webseite einzubinden einfach folgendes Tag einfügen.
<img id="video" src="http://raspberrypi:8080/stream/video.mjpeg" width="640" height="480">
 
== Emotionen ==
Mit einem OLED Display kann man dem Gefährt Emotionen mit geben.
 
Hier ein Test mit einem 128x64 Pixel Display:<br>
[[Datei:Eyes neutral.png]]
[[Datei:Eyes skeptic.png]]
[[Datei:Eyes angry.png]]
[[Datei:Eyes sad down.png]]
 
Verwendet wird die Python Bibliothek [https://github.com/rm-hull/luma.oled Luma.OLED].<br>
Das Python-Skript liegt im Git Repo unter python/eyes.
 
== ToDo ==
1. Vollbild Control<br>
2. Consolenausgaben des Pythonservers der über eine Serviceunit gestartet ist ins syslog bekommen.<br>
3. Serviceunit ohne Passwortabfrage starten/stoppen können.
279
Bearbeitungen