Änderungen
Aus Hackerspace Ffm
FPV-Auto
,/* Chassis */Alte Datei Links durch Link zu Github Repository ersetzt.
=== Software für FPV-Control Board Arduino ===
==== 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.xz
tar -xvf arduino-1.8.9-linuxarm.tar.xz
sudo mv arduino-1.8.9 /opt
sudo /opt/arduino-1.8.9/install.sh
</pre>
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.
==== 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 ====
==== Avrdude mit GPIO-Reset ====
https://github.com/TOLDOTECHNIK/avrdude-gpio-autoreset
==== 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=on
dtoverlay=hifiberry-dac
dtoverlay=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 pygame
import 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 ==
Ø = 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-stdconfig.jpg|320px]]
[[Datei:20180624-fpvauto-fpvauto-stdchassis.jpg|320px]]
== Raspberry Pi Zero W ==
== Software ==
=== Protokoll für Commandos aus der Webgui ===
{
"modul":"MODULNAME",
"key": "value"
}
Beispiel
{
"modul":"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.