Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Hexapode: Lynxmotion Roboter
Ein Hexapode (BH3-R von Lynxmotion) soll mit Hilfe eines Raspberry Pi und Java gesteuert werden. Der Hexapode besitzt einen SSC-32U Servocontroller mit einer seriellen Schnittstelle, über die alle 18 Motoren des Hexapoden kontrolliert werden können. Um mit Java die serielle Schnittstelle benutzen zu können, wird die Pi4J-Bibliothek verwendet. Ziel ist es, eine (kleine) Java-API für den Roboter zu entwickeln, so dass zukünftige Gruppen sich mit algorithmischen Aufgaben (Laufen Lernen, künstliche Intelligenz usw.) beschäftigen können.
Übersicht
Hardware
Prinzip-Schaltbild
Der Servocontroller und der Raspberry Pi bezeihen beide Strom seperat von Stromquellen. Diese sind noch Netzteile. Später sollen diese durch Batterien ersetzt werden, welche den Hexapoden mehr Bewegungsfreiheit geben werden. Da der Raspberry Pi mit 3.3 Volt läuft und der Servocontroller mit 5 Volt ist ein Levelshifter nötig damit die beiden Kommunizieren können. Der Raspberry Pi sendet Befehle an den Servocontroller der diese dann durchführt und die Motoren ansteuert. Diese Kommunikation wird geschieht durch die Pi4j Library die ein Senden von seriellen Befehlen ermöglicht. Der Servocontroller versorgt auch alle Motoren mit Strom.
Detail-Schaltbild
- Raspberry
- Stromversorgung: Netzteil
- GND, 3.3 Volt, TX und RX zum Levelshifter
- GND von Pin 6
- 3.3 Volt von Pin 1
- TX von Pin 8
- RX von Pin 10
Levelshifter findet in der Mitte von diesem Board platz
- Levelshifter (4-channel I2C-safe Bi-directional Logic Level Converter - BSS138)
- GND, 3,3 Volt, TX und RX vom Raspberry zur Niedrigspannungsseite(LV)
- GND, 5 Volt, TX und RX vom SCO32 Controller zur Hochspannungsseite(HV)
- Lynxmotion SSC-32U USB Servo-Controller
- Stromversorgung: Netzteil 5V bei Benutzung von 5V Motoren (beim vorgesehenen Kabel wurden Blau-Rot und Braun-Schwarz zusammengelötet)
- GND, 5 Volt, TX und RX zum Levelshifter
- GND,RX und TX zu dne RX,TX,GND Pins in der Mitte des Servocontrollers
- 5 Volt von einem der Mittleren Pins A-H
- VL-VS Jumper nicht gesetzt!
- VS1-VS2 Jumper gesetzt (d.h. alle Motoren sind mit Strom versorgt)
Software
Grafische Oberfläche zum debuggen
Zum Herumspielen mit den Befehlen des Boards und Testen der Hardware eignet sich das Programm CuteCom. Dieses muss auf dem Raspberry-PI installiert sein und man kann es über ssh öffnen, indem man sich via
ssh -X username@hostname
am Raspberry anmeldet.
Installation via apt
sudo apt install cutecom
Um CuteCom (TODO)
Setup
Auf Raspberry Pi einloggen
Hiernach können sie sich mit Hilfe von SSH auf dem Raspberry Pi einloggen:
ssh <user>@<Adresse>
Oder sie benutzen ein Remote Desktop programm wie z.B. VNC Viewer. Diese haben den Vorteil, dass es ihnen eine Benutzeroberfläche bietet.
Serielle Schnittstelle aktivieren
Um mit Java auf die serielle Schnittstelle zugreifen zu können, muss diese zuerst aktiviert werden, denn standardmäßig wird sie vom Kernel für Systemnachrichten benutzt.
Folgende Punkte sind dabei zu beachten. Diese Punkte werden anschließend ausführlich besprochen.
- Der Benutzer muss der Gruppe dialout angehören.
- Die serielle Schnittstelle muss mit raspi-config freigeschaltet werden.
- In der Datei /boot/config.txt muss eine Zeile geändert werden.
Gruppenzugehörigkeit dialout überprüfen
Der user (in der Regel pi) der ttyAMA0 benutzen will, muss der Gruppe dialout angehören.
Auf der Konsole kann mit id (zeigt alle Gruppen des aktiven Benutzers an) geprüft werden, ob der Benutzer bereits der Gruppe dialout angehört.
Wenn nicht, wird durch die folgende Zeile die Gruppe dialout dem Benutzer pi hinzugefügt.
sudo usermod -a -G dialout pi
Jetzt sind noch zwei Schritte abzuarbeiten:
Step 1: Schnittstelle in raspi-config aktivieren
- sudo raspi-config
- Select Interfacing Options
- Select Serial
- „Would you like a login shell to be accessible over serial?“ Select <No>
- „Would you like the serial port hardware to be enabled?“ <Yes>
- „The serial login shell is disabled The serial interface is enabled“ <Ok>
- Select <Finish> and select <Yes> when asked „Would you like to reboot now“
Step 2: /boot/config.txt editieren
Nach dem Neustart muss noch die Datei /boot/config.txt editiert werden:
Hier ist die Zeile enable_uart = 0 auf
enable_uart = 1
abzuändern.
Nach einem Neustart sollte dann das Gerät (die serielle Schnittstelle) unter /dev/ttyAMA0 sichtbar sein.