CodenameRoboterschlange Posted May 27, 2015 at 06:50 PM Posted May 27, 2015 at 06:50 PM Hallo, Wir versuchen eine Roboterschlange aus einem Servobrick und 7 Servos zu bauen. So weit so gut. Im moment haben wir unseren Programmcode in Python und die Schlange funktioniert, wenn man sie an einen PC oder Laptop mit Windows oder Linux anschließt, der den Brickd installiert hat. Wir würden das ganze gerne zu vorführungszwecken per Kabel von einem Android-Gerät aus Steuern. Ich habe schon eine Python-Laufzeitumgebung für das Gerät und auch eine Bibliothek gefunden, mit der man direkt USB ansteuern kann (PyUSB). Leider habe ich zu wenig ahnung von Tinkerforge um den Servobrick per USB direkt anzusteuern. Ist soetwas überhaupt möglich, oder gibt es eine andere Möglichkeit den Brick ohne den Brickd anzusteuern? Danke, CodenameRoboterschlange Quote
photron Posted May 28, 2015 at 07:49 AM Posted May 28, 2015 at 07:49 AM Der Brick Daemon leitet die Pakete unseres TCP/IP Protokolls unverändert durch und kümmert sich dabei um das Routing zwischen mehreren Bricks und mehreren TCP/IP Verbindungen. Du kannst also mit einem Brick auch direkt per USB sprechen und ihm die gleichen Pakete schicken, wie sie für unser TCP/IP Protokoll definiert sind: http://www.tinkerforge.com/de/doc/Low_Level_Protocols/TCPIP.html Deutlich einfach ist es aber eine WIFI Extension zu verwenden. Dafür steckst du einen Master Brick unter den Servo Brick und eine WIFI Extension oben auf den Servo Brick. Dann kannst du die WIFI Extension als Access Point konfigurieren, dich vom Smartphone aus damit verbinden und dein bisheriges Steuerprogramm für die Schlange weiterverwenden. Quote
CodenameRoboterschlange Posted June 1, 2015 at 12:24 PM Author Posted June 1, 2015 at 12:24 PM Vielen Dank, Die Lösung mit Wifi-Extension und Masterbrick haben wir auch schon unserem Schulkoordinator vorgeschlagen. Ob wir das Budget dafür bewilligt bekommen steht jedoch in den Sternen . Vielen Dank & viele Grüße, CodenameRoboterschlange Quote
Loetkolben Posted June 1, 2015 at 11:30 PM Posted June 1, 2015 at 11:30 PM Der Brick Daemon leitet die Pakete unseres TCP/IP Protokolls unverändert durch und kümmert sich dabei um das Routing zwischen mehreren Bricks und mehreren TCP/IP Verbindungen. Du kannst also mit einem Brick auch direkt per USB sprechen und ihm die gleichen Pakete schicken, wie sie für unser TCP/IP Protokoll definiert sind: Hallo photron. Och. :staun: Nur mal kurz gefragt: Wie geht das? Kann du mir einen kleinen Ansatz geben? Danke. Der Loetkolben Quote
borg Posted June 2, 2015 at 06:56 AM Posted June 2, 2015 at 06:56 AM Dafür kannst du natürlich in den brickd Source Code gucken: https://github.com/Tinkerforge/brickd/blob/master/src/brickd/usb.c https://github.com/Tinkerforge/brickd/blob/master/src/brickd/usb_transfer.c Ist aber nicht ganz so einfach wie per TCP/IP einen Socket zu öffnen . Quote
photron Posted June 2, 2015 at 08:51 AM Posted June 2, 2015 at 08:51 AM Loetkolben, wie borg schon sagt kannst du dir das alles im brickd anschauen. Was du grob gesagt tun musst ist: - den Brick in der Liste der USB Devices finden - einen USB Handle für den Brick öffnen - Interface 0 claimen Dann kannst du Requests als Bulk Transfer an den Interface 0 OUT Endpoint senden und Responses als Bulk Transfer vom Interface 0 IN Endpoint empfangen. Die Pakete sind die gleichen die auch über TCP/IP versendet werden. Um mit USB zu interagieren kannst du z.B. libusb verwenden. Quote
Loetkolben Posted June 2, 2015 at 11:28 AM Posted June 2, 2015 at 11:28 AM Hallo borg, hallo photron, vielen Dank fuer die ausfuehliche Erklaerung. Ich nehme davon mit, dass man dazu ein Programm schreiben und dabei eine Library (libusb) mit einbinden muss. Die Vorgehensschritte klingen sehr logisch, da USB Devices nunmal keine statische IP USB-Adresse haben. Es scheint also auch kein typisches Shellprogramm zu geben mit dem ich die USB-Devices in geeignet Form ansprechen kann. Danke nochmals. Der Loetkolben Quote
photron Posted June 2, 2015 at 12:19 PM Posted June 2, 2015 at 12:19 PM Loetkolben, ich denke nicht, dass du zwingend ein Programm schreiben muss. Unter Linux kannst du über das Dateisystem mit USB Devices arbeiten, Stichwort usbfs. Siehe /dev/bus/usb und /sys/bus/usb. Quote
Loetkolben Posted June 2, 2015 at 12:28 PM Posted June 2, 2015 at 12:28 PM Ui, jui, jui. Ob ich das hinbekomme? Wenn mal Zeit ist schauen ich mir das an. Fuer mich ist USB nur "Plug&Pray". (Die ganzen Geschichten wuerden hier den Rahmen sprengen) Danke fuer die Hinweise! Der Loetkloben Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.