PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erster Roboter mit Raspberry Pi



Zondan
16.10.2012, 11:39
Hallo! :)

Ich bin neu im Forum und möchte mit Roboterbau anfangen.
Genauer gesagt möchte ich, wie der Titel verratet, einen Roboter bauen der durch einen Raspberry Pi gesteuert wird.
Das ist vermutlich nicht der einfachste Start den man wählen kann, aber ich denke man ist so sehr flexibel.

Anfangen möchte ich klein und dann mit der Zeit erweitern. Noch hab ich den kleinen Computer nicht(am 3.Juli bestellt) aber er sollte in nächsten Wochen kommen. Mein erstes Ziel wäre mal ein Fahrgestell über den Pi zu steuern. Das hier (http://www.conrad.at/ce/de/product/191152/C-Control-Robot-System-Fahrgestell-Robby-RP5RP6-Roboter/SHOP_AREA_37371&promotionareaSearchDetail=005) hab ich mir überlegt.

Jedoch bezweifel ich das der GPIO vom Pi stark genug ist um Motoren direkt zu powern also muss da wohl ein Verstärker dazwischen kommen. Ich nehme an sowas macht man mit Transistoren, aber ich hab keine Ahnung wie. Mein Elektrotechnisches Wissen beschränkt sich leider auf das Ohmische Gesetz und die Kirchhoffschen Regeln in ganz einfachen Netzen.(also nur mit Widerständen)

Das nächste Problem ist die Powerzufuhr. Sowohl der Pi als auch das Fahrgestell werden Strom benötigen. Am liebsten wäre es mir natürlich alles über eine Zentrale Stelle mit Strom zu versorgen aber das stelle ich mir schwierig vor.

Die Programmierung wird denk ich, zumindest für das was ich erstmal erreichen will, nicht das allzu große Problem. Kann mich aber natürlich irren.

Hoffe jemand kann mir helfen.

ePyx
16.10.2012, 11:59
Zunächst erstmal : "Willkommen im Forum."

Bei RS bestellt? Was du machen kannst ist einen µC zu nehmen, der die Motorsteuerung übernimmt und diesen dann via I²C, SPI oder USART vom RPi anzusteuern. Hatte ich auch mal vor, aber mittlerweile mach ich es lieber mit einem AVR, da ich den zu Hause habe.
Vorteil wäre dabei, dass du das Ganze modular aufbauen kannst. Das ist gerade für den Einstieg nicht verkehrt, da man sich dann nach und nach das Wissen aneignen kann und nur ein grobes Gesamtkonzept benötigt.

Für die Versorgung würde ich einen Akku (zwei oder mehr Zellen) verwenden, um dann die benötigten Spannungen zu erzeugen (Spannungsregler). Für kleine Motoren reicht als Motorsteuerung auch ein L293D, da kann man sich die Beschaltung etc von einigen Bots hier oder größeren Projekten
wie dem C't-Bot oder dem Probot (Conrad) abgucken. Für kleine Gleichstrommotoren wie sie in dem RP5/RP6-Chassis verwendet werden reicht der Regler.

Zondan
16.10.2012, 12:25
Danke für die Antwort.
Ja bei RS bestellt. Laut deren FAQ Seite sollte das Paket spätestens am 12. November losgeschickt werden.

Das Problem mit Mikrocontrollern ist halt das ich keine Ahnung von denen habe. Nicht das es mich nicht interessiert aber ich hab einfach absolut keine Ahnung was so ein Ding kann bzw was der Vorteil ist einen zwischen den Computer und den Motor zu hängen. Steuern müsste ich den Controller ja sowieso über den GPIO vom Pi. Also was bringt mir der Controller? Das ich weniger Pins nutzen muss da ich Nachrichten anstatt Signale sende? Wie gesagt keine Ahnung.

Der Hauptgrund warum ich den Pi nutzen will ist damit ich eben verschiedenste Geräte dranhängen kann. Anfänglich das Fahrgestell, dann ein paar LEDs, ein Mikrofon, WLAN-Stick, vielleicht eine Webcam,...

Die Spannungsregler sind eine super Idee. Bevor ich jedoch anfange das zu bauen werde ich hier nochmal nachfragen.

BastelWastel
16.10.2012, 12:32
Jedoch bezweifel ich das der GPIO vom Pi stark genug ist um Motoren direkt zu powern also muss da wohl ein Verstärker dazwischen kommen. Ich nehme an sowas macht man mit Transistoren, aber ich hab keine Ahnung wie.

Servus Zondan,
die GPIO vom PI koennen nur einige mA liefern und haben auch nur 3,3V Pegel.
Direkt treiben kann man damit im besten Fall kleine LEDs.

Entweder du steuerst mit den GPIOs eine Treiberstufe z.B. eine H-Bruecke,
oder (was ich bevorzugen wuerde) du lagerst solche Aufgaben auf einen kleinen ATMEGA der die Bruecke steuert und uebergibst dem nur Sollwerte via i2c.
Damit wuerdest du zum einen den PI entlasten und haettest direkt einen Schutz der GPIOs.

Den PI wuerde ich frei halten fuer rechenintesives.

Gruss, Andreas

HannoHupmann
16.10.2012, 12:43
Klingt mal wieder nach klassischem Anfängerfehler. Eine Frage sei daher vorweg erlaubt. Mit Linux kennst du dich aber so gut aus, dass du das Pi wirklich gut bedienen und programmieren kannst?

In der Theorie hört es sich nämlich immer toll an ein Embedded Linux zu nehmen, mit all diesen Möglichkeiten. In der Praxis bin ich, dann immer am Linux gescheitert. Das Betriebssystem ist toll und ich bin auch immer noch fasziniert davon, aber es wirklich programmieren zu können kostet sehr, sehr viel Zeit mit learning by dooing. Linux hat einfach zu viele Befehle und Möglichkeiten für einen Einsteiger um sofort "voll durch zu steigen"

@Zondan deine Fragen sind so rudimentär und Grundsätzlich, dass ich dir wirklich erst mal ein einfaches Roboterporjekt ans Herz legen möchte. Microcontroller = µC sind da deutlich einfacher zu handhaben und eben für ein Projekt mit Embedded Linux trotzdem notwendig. Ich denke der Asuro oder ein anderer "Fertigroboter" ist ein guter Einstieg.

ePyx
16.10.2012, 13:27
Danke für die Antwort.
Ja bei RS bestellt. Laut deren FAQ Seite sollte das Paket spätestens am 12. November losgeschickt werden.

Das Problem mit Mikrocontrollern ist halt das ich keine Ahnung von denen habe. Nicht das es mich nicht interessiert aber ich hab einfach absolut keine Ahnung was so ein Ding kann bzw was der Vorteil ist einen zwischen den Computer und den Motor zu hängen. Steuern müsste ich den Controller ja sowieso über den GPIO vom Pi. Also was bringt mir der Controller? Das ich weniger Pins nutzen muss da ich Nachrichten anstatt Signale sende? Wie gesagt keine Ahnung.

Der Hauptgrund warum ich den Pi nutzen will ist damit ich eben verschiedenste Geräte dranhängen kann. Anfänglich das Fahrgestell, dann ein paar LEDs, ein Mikrofon, WLAN-Stick, vielleicht eine Webcam,...

Die Spannungsregler sind eine super Idee. Bevor ich jedoch anfange das zu bauen werde ich hier nochmal nachfragen.

Der Vorteil von einem Controller zwischen Motor und Computer ist, dass auf der Computerseite sich die Komplexität verringert und du unter Umständen auch einige von deinen kostbaren GPIOs sparst. Klar geht es, dass man mittels GPIO eine Halbbrücke ansteuert. Aber warum soll man das auf dem Computer machen und die Resourcen dort verbrauchen?
Ich für meinen Teil hatte eigentlich vor, die Ansteuerung der Motoren (Geradeauslauf, Encoderauswertung und kleinere Steueraufgaben) in einem ATTiny2313 + H-Brücke zu realisieren, diesen kann ich mittels I²C mit beliebiger Hardware (geplant war erst ein XMega128A1, dann ein RPi und jetzt wird es wahrscheinlich ein AVR in DIL40) ansteuern.

Das man als Anfänger große Ziele hat ist denke ich jedem klar. Allerdings sollten die natürlich auch realisierbar sein und bleiben.

Friedleif
16.10.2012, 14:38
Hmja, ich würde den Rasperry Pi in dem Fall auch nicht als wirklich Anfänger tauglich bezeichnen. Andererseits ist er schon recht gut dokumentiert und das Forum auf rasperrypi.org gut besucht. Auch Linux ist sehr gut dokumentiert. Trotzdem wird es ohne Linux und C Kenntnisse ein steiniger Weg. Auch Englisch sollte zumindest gut lesbar sein.
Die GPIOs haben auch noch 2 Problemchen: Keine Schutzbeschaltung und 3V3 Logik.

Vielleicht findest du hier ein paar Anregungen: http://blog.ianrenton.com/raspberry-pi-day-1-accessories-assemble/

Zumindest wird hier das Problem der Pegelanpassung und der Stromversorgung behandelt.

Wenn noch kein Fahrgestell vorhanden ist wäre das im Blog verwendete eventuell geeignet. Die RC Tanks gibts komplett mit Akku, Elektronik etc. für unter 100 Euro mit der Option später auf Metallteile umzurüsten.

BastelWastel
16.10.2012, 15:20
Die GPIOs haben auch noch 2 Problemchen: Keine Schutzbeschaltung und 3V3 Logik.
Ein Problem ist das nicht wirklich, es treibt ja auch keiner dicke Motoren direkt aus uC Pins ;)

Friedleif
16.10.2012, 15:35
Ich schrieb ja: Problemchen ;-)

Es ging um die Anfängerfreundlichkeit. Und da kommt manch einer vielleicht doch auf die Idee einen Motor direkt dran zu hängen. Von Kurzschluss und Verwechslung von Strippen mal abgesehen, das passiert jedem Mal. Problem ist da halt auch noch die Lieferzeit. Einen abgerauchten Atmega hab ich am nächsten Tag für kleines Geld beschafft, beim Rasperry kann es noch dauern. Und für die meisten Dinge ist er einfach overkill. Nutze meinen jetzt als Mediencenter und für den Rest einen Schwung Arduino Nano.

Zondan
17.10.2012, 09:40
Mit Linux kennst du dich aber so gut aus, dass du das Pi wirklich gut bedienen und programmieren kannst?

Ich benutze Linux, im besonderen die Distri Archlinux, seit bald 5 Jahren als primäres Betriebssystem. Soll heißen ich hab auf keinem meiner Rechner ein Windows installiert. C Programmieren kann ich natürlich ebenfalls, wenn auch nicht so gut wie ichs gern hätte. Die Syntax ist mir aber bekannt und auch Pointer sind im Normalfall kein großes Problem. Jedoch geb ich zu das ich lieber in C++ oder Java programmiere. Ich hatte vor die Motorsteuerung in C++ zu schreiben.

Ich mache mir wenig sorgen wenns um Linux geht. Viel komplizierter stell ich mir die Programmierung von einem Mikrocontroller vor.


@Zondan deine Fragen sind so rudimentär und Grundsätzlich, dass ich dir wirklich erst mal ein einfaches Roboterporjekt ans Herz legen möchte. Microcontroller = µC sind da deutlich einfacher zu handhaben und eben für ein Projekt mit Embedded Linux trotzdem notwendig. Ich denke der Asuro oder ein anderer "Fertigroboter" ist ein guter Einstieg.

Ein Fertigroboter den ich dann einfach nur programmiere ist aber leider nicht das was ich will.

Ich möchte mehr über Elektronik lernen. Das heißt für mich soviel wie möglich selber zusammenlöten und vorallem verstehen was ich da tue.



Der Vorteil von einem Controller zwischen Motor und Computer ist, dass auf der Computerseite sich die Komplexität verringert und du unter Umständen auch einige von deinen kostbaren GPIOs sparst. Klar geht es, dass man mittels GPIO eine Halbbrücke ansteuert. Aber warum soll man das auf dem Computer machen und die Resourcen dort verbrauchen?
Ich für meinen Teil hatte eigentlich vor, die Ansteuerung der Motoren (Geradeauslauf, Encoderauswertung und kleinere Steueraufgaben) in einem ATTiny2313 + H-Brücke zu realisieren, diesen kann ich mittels I²C mit beliebiger Hardware (geplant war erst ein XMega128A1, dann ein RPi und jetzt wird es wahrscheinlich ein AVR in DIL40) ansteuern.

Das man als Anfänger große Ziele hat ist denke ich jedem klar. Allerdings sollten die natürlich auch realisierbar sein und bleiben.

Dann brauche ich wohl einen entsprechenden Controller. Nur wie programmiert man sowas? Bzw was muss ich mir besorgen um damit anzufangen. Ich nehme an ich könnte den Controller schon mal kaufen und damit etwas rumspielen bevor mein RPi da ist.


@Friedleif:
Danke ich werde mir den Blog durchlesen

ePyx
17.10.2012, 10:06
Ich mache mir wenig sorgen wenns um Linux geht. Viel komplizierter stell ich mir die Programmierung von einem Mikrocontroller vor.


Ist eigentlich genau anders herum. Hast halt mehr mit Basics zu tun als mit syscalls oder irgendwelchen Libs.



Ein Fertigroboter den ich dann einfach nur programmiere ist aber leider nicht das was ich will.


Ist bei fast jedem so, der mehr will.


Dann brauche ich wohl einen entsprechenden Controller. Nur wie programmiert man sowas? Bzw was muss ich mir besorgen um damit anzufangen. Ich nehme an ich könnte den Controller schon mal kaufen und damit etwas rumspielen bevor mein RPi da ist.

Dann würde ich mich nach einem einfach gestricktem Board umschauen, womit du erste Gehversuche machen kannst. Da wäre das RN-Control, MyAVR oder auch die Arudino-Boards nicht so verkehrt. Ein Steckbrett, ein paar passive Komponenten und eine Hand voll ICs zum Spielen kosten auch nicht die Welt. Vorteil bei den genannten Boards ist, dass du Add-Ons dazukaufen kannst und dich nicht zu sehr im Layout von Platinen usw. verlierst. Schließlich kostet das auch noch einmal Zeit und die Anschaffung bzw. die damit verbundenen Kosten und die Arbeit stehen dort dann eventuell in keinem Verhältnis zu einander.

Allerdings tut es auch etwas Draht und eine Lochrasterplatine. Für den schnellen Einstieg schau einfach mal ins Wiki oder bei mikrocontroller.net in den Artikelbereich. Dort findest du eigentlich alles was du benötigst. Zur Programmierung von ATMEL-Mikrocontrollern benötigst du dann nur noch ein Programmiergerät wo natürlich die Meinungen auseinander gehen. Jedenfalls kann ein soclhes Gerät von 10/20 € bis einige hundert Euro gehen. Ist aber alles Geschmackssache und natürlich auch abhängig von der Applikation bzw. deren Umfang.

Ansonsten kann man nur sagen, wenn u Fragen hast bist du hier gern willkommen diese hier zu stellen und über mögliche Lösungen zu diskutieren. Jeder wird die hier versuchen zu helfen.

Friedleif
17.10.2012, 12:32
Gerade bei Arduino gibt es günstige Pakete wenn man etwas warten kann: z. B. http://www.ebay.de/itm/328-starter-Kit-IR-Remote-lcd-SD-LED-Servo-ProtoShield-Arduino-compatible-/150915046799?pt=Wissenschaftliche_Ger%C3%A4te&hash=item23233cdd8f#ht_3592wt_1002
Dauert halt 4 Wochen, ansonsten war ich mit den Bestellungen aus China etc. immer zufrieden.
Vorteil bei Arduino: Durch den Bootloader erstmal kein Programmer erforderlich, USB Anschluss, viele Libs vorhanden, viel Dokumentation und Bücher vorhanden
Nachteil: im Vergleich zu anderen Bords teuer (zwischen 10 und 30 Euro), beschränkte Controller Auswahl, für manche Anwendungen zu unflexibel.
Für den späteren Einbau gibt es auch kleinere Versionen der Hardware wir den Nano oder den Mini Pro.


Generell sind die Atmega AVR (die sich ja auch auf den Arduinos, RN Boards etc. finden) hierzulande recht verbreitet, es gibt also zahlreiche Foren und Infos im deutschsprachigen Raum.
Für die meisten Boards ist ein Programmer erforderlich, siehe z.B: http://shop.myavr.de/Programmer%20und%20Bridges/mySmartUSB%20MK3.htm?sp=article.sp.php&artID=100058


PICs finden sich hier relativ selten. Meist ebenfalls Programmer erforderlich, Infos eher im angloamerikanischen Raum da dort gerne verwendet.
Gibt aber auch dafür Arduino ähnliche Boards: http://www.watterott.com/de/PIC32-PINGUINO-MX220


Im Hobbybereich auch wenig verbreitet sind die ARM obwohl günstig, leistungsfähig und 32-bit.
Da gibts einfache Boards auch schon für wenig Geld: http://www.watterott.com/de/STM32F0DISCOVERY


Empfehlenswert sind die Artikel zu den jeweiligen Familien auf mikrocontroller.net


An der möglichen Auswahl mangelt es also nicht :-)
Für den Anfang mit µC würde ich nach vorhandener Doku und Vorkenntnissen auswählen.