Home

Raspberry Pi Roboter Ameise - analog

image

Contents

1. Um unsere Image Datei mit dem Namen 2012 12 16 wheezy raspbian img bei euch so hnlich auf die SD Karte zu schreiben wechseln wir mit cd nun in das Verzeichnis in der sich die Image Datei befindet Dazu geben wir in das Konsolenfenster den Befehl axel LINUX gt cd home axel Downloads axel LINUX Downloads gt Hier schauen wir mit ls nach ob die Datei auch da ist axel LINUX Downloads gt ls wheezy 34 Die Dinger hei en immer noch Laufwerk obwohl sich bei SSDs und SD Karten nichts bewegt 35 Ehrlich gesagt Ich hab einfach meine SD Karte genommen auf der schon Raspbian ist 36 Der Befehl cd steht f r change directory wechsele das Verzeichnis 37 Der Befehl Is steht f r list und listet die Verzeichnisse und Dateien im aktuellen Verzeichnis auf Seite 17 2012 12 16 wheezy raspbian img 2012 12 16 wheezy raspbian zip Das ist offensichtlich der Fall und wir k nnen das Image auf der SD Karte jetzt mit dem Befehl dd bs 1M if 2012 12 16 wheezy raspbian img of dev sde Ihr m sst hier nat rlich statt dev sde nat rlich euren Pfad zur SD Karte angeben Mit der Option bs 1M haben wir dd mitgeteilt dass 1Mbit Bl cke bertragen werden sollen Der Befehl dd braucht lange das kann schon mal mehrere Minuten dauern und sollte nicht unterbrochen werden Wenn alles gut gegangen ist meldet sich nach einiger Zeit der Prompt zur ck Unser Raspbian Betriebssystem ist nun auf der SD Karte und wir k nne
2. change pass Change password for pi user change locale Set locale change timezone Set timezone memory split Change memory split overclock Configure overclocking ssh Enable or disable ssh server boat behaviour Start desktop on boot update Try to upgrade raspi config Selects Finishes Abbildung 9 Das Konfigurations Men des Raspberry Pi Gehen wir die Auswahlm glichkeiten im Detail mal durch 4 1 info Zeigt einen kurzen Text an der ungef hr bersetzt so lautet Dieses Werkzeug stellt einen direkten Weg zur Verf gung um erste Einstellungen des Raspberry Pi vorzunehmen Obwohl es jederzeit gestartet werden kann gibt es mit einigen Optionen Schwierigkeiten wenn ihr sie zu stark ver ndert 4 2 expand roots Mit dieser Option wird die root Partition automatisch angepasst Das urspr ngliche Image hat etwa 2GB Habt ihr das Image auf eine AGB oder gr ere SD Karte bertragen so wird jetzt der Rest so konfiguriert dass ihr beim n chsten Start die volle SD Kartengr e zur Verf gung habt 4 3 Overscan Hier k nnen wir den Overscan ausschalten disable oder einschalten enable Ist der Overscan aktiviert wird ein schwarzen Rand um das Bild gezeichnet Das kann ganz n tzlich sein wenn wir nicht den HDMI Anschluss nutzen sondern den gelben analogen Videoausgang zum Beispiel einen alten Fernseher zu nutzen Die nderung der Einstellung wird erst beim n chsten Start des Pi bernommen Eigentlich w
3. Jetzt k nnen wir im Emacs unter Tools wieder Compile anklicken und mit der Best tigung der aufkommenden Fragen das Programm dreiLEDS compilieren Wir schauen uns die Meldungen genau an Es sollten jetzt kein Fehler aufgetreten sein sonst m ssen wir noch mal dran Da das Programm jetzt Hardware anspricht brauchen wir root Rechte um es zu starten und geben daher ein sudo dreiL EDS Wir haben es geschafft Nacheinander brennen die drei Leuchtdioden und gehen dann nacheinander auch wieder aus Herzlich Gl ckwunsch zu diesem Erfolg 186 while steht hier f r bis 187 Oder bis wir den Strom Stecker ziehen Den Stecker ziehen gilt unter Hackern als unsportlich Wir k nnen es auch mit Ctrl C versuchen Ctrl C steht f r control C also das gleichzeitige dr cken der Strg und der c Taste Steuerung hei t auf englisch controller Seite 52 10 Servos An dieser Stelle besch ftigen wir uns ein bisschen mit Servos aus dem Modellbau mit denen wir die Beine unserer Roboter Ameise bewegen Servos sind richtige elektromechanische Wunderwerke die es inzwischen f r wenig Geld gibt Sie bestehen aus einem Motor einem Getriebe und einer Ansteuerungselektronik Ein billiges in die Roboter Ameise eingebautes Servo sehen wir in Bild 26 Abbildung 26 Ein eingebautes Servo Dieses Servo hat Abmessungen von ca 40x40x20 mm Mit 4 Schrauben kann man es in der Aussparung eines Sperrholzbre
4. etwas herunter klettern indem wir neben dem Haus Symbol auf den kleinen gr nen Kreis mit dem Pfeil nach oben klicken Jetzt sind wir auf dem Haupt Ast home Statt Ast werde ich ab jetzt immer von Verzeichnis reden aber wir stellen uns das ganze trotzdem wie ein Baum vor In dem Verzeichnis home gibt es erst mal nur ein einziges Unterverzeichnis mit dem Namen pi Statt Verzeichnis wird auch oft der Begriff Ordner gebraucht und das Symbol von Pi sieht auch so ein bisschen so aus wie ein Ordner Klicken wir jetzt noch mal auf den gr nen runden Kreis mit dem Pfeil nach oben sind wir an der Wurzel angekommen Da erkennen wir daran dass jetzt in der oberen Zeile nur noch steht Vom Wurzelverzeichnis verzweigen sich viele Unter Verzeichnisse Und wir finden auch das Verzeichnis home als eines unter vielen wieder Der File Manager ist ein ziemlich m chtiges Programm dass uns eine Menge Informationen bereit h lt Ihr probiert einfach alles aus so macht man sich am schnellsten damit vertraut Ich m chte euch nur ein paar wichtige Dinge zeigen die wir sp ter h ufiger brauchen Klickt mal oben in der 62 pi steht da weil das unser Benutzername ist ihr erinnert euch 63 Wenn ich klicken schreibe meine ich immer die linke Maustaste sonst sag isch s euch 64 Das Wort desk kennt ihr aus dem Englischunterricht 65 Wir haben bisher noch keine gel scht deshalb ist der Rubbish leer 66 A
5. i If you call this it will not actually access the GPIO Use for testing bcm2835 set debug 1 if bcm2835 init return 1 printf g o b ack lzeft r ight n Als n chstes Teilen wir der GPIO Schnittstelle noch mit dass an PIN 8 10 und 12 Ausg nge haben wollen Und dann definieren wir noch drei Variablen Die Variable speed definiert wie oft unsere PWM Signale an die Servos wiederholt werden sollen Das bestimmt die Geschwindigkeit mit der unsere Ameise krabbelt Die Variable i nutzen wir wieder f r Z hler Die Variable key nutzen wir zur Eingabe von Buchstaben Buchstabenvariablen sind vom Typ char Set the GPIO pins to be an output bcm2835 gpio fsel SERVO1 BCM2835 GPIO FSEL OUTP bcm2835 gpio fsel SERVO2 BCM2835 GPIO FSEL OUTP bcm2835 gpio fsel SERVO3 BCM2835 GPIO FSEL OUTP start to move int speed 50 int 1 0 char key g Ab hier startet die Endlosschleife mit while 1 Mit dem Befehl getchar wartet das Programm so lange bis eine Taste gedr ckt wurde und bergibt die Taste an die Variable key Danach folgt 202 Ich habe den Namen key gew hlt der hier soviel hei t wie Taste weil hier die Variable aus der Tastaturabfrage gespeichert werden soll mit der ich mein Programm steuern kann 203 char steht f r character auf deutsch Zeichen Variablen vom Typ char ben tigen nur ein Byte im Speicher und sind daher die kl
6. make verstanden wird Seite 38 Mit ls k nnen wir wieder nachschauen ob unser Sourcecode Hello_world cpp und unser Makefile auch wirklich da sind Falls ihr Sie nicht findet m sst ihr euch auf die Suche begeben oder nochmal probieren sie anzulegen Jetzt ist es an der Zeit euch das Programm make vorzustellen Das Programm make startet den gcc und befolgt dabei die Anweisungen die im Makefile stehen Das ist schon alles Ihr gebt also einfach hinter dem Prompt make ein Und schon wird euer Sourcecode Hello_world cpp bersetzt und die Programm Datei HelloWorld erzeugt Wen berrascht das noch Mit Is l sehen wir trotzdem nach Unser gerade erzeugtes Programm k nnen wir jetzt wieder mit HelloWorld ausf hren Gar nicht schlecht oder Aber es kommt noch besser Wir k nnen n mlich wenn wir ein Makefile haben das Compilieren auch mit dem Emacs starten Dazu ffnen wir den File Manager und klicken uns zum Verzeichnis ErstesProjekt durch Hier sehen wir jetzt drei Dateien HelloWorld Hello world cpp und Makefile Vielleicht sehen die Symbole bei euch leicht anders aus als in Bild 16 Das macht nichts ra If ErstesProjekt lt raspbertypi se and Lue Ele Edit Go Bookmarks Wiew Tools Help ar d 5 hornespisc ProgsjErstesProjekt rv Places F TN ei b 2 d L ED Desktop Hello world Hello world c Makefile E 7 PP E Rubbish Applications FROGGYSD RPi
7. Ich benutze in allen Betriebssystemen den Firefox Browser und der schl gt meistens schon vor mit welchem Programm die Datei entpackt werden kann Die entpackte Datei hat einen Namen der bei mir so hei t 2012 12 16 wheezy raspbian img Dabei handelt es sich um ein sogenanntes Image Ein Image ist eine Eins zu Eins Kopie der Daten eines Datentr gers Es werden also auch die Partitionen und Dateisysteme mit kopiert Um ein Image auf einen Datentr ger zu bertragen gibt es f r LINUX und Mac das Programm dd disk dump Dieses Programm ist sehr m chtig und man kann sich damit sogar seinen Computer zerst ren Wenn man nicht wei was man tut k nnte man ungewollt die Festplatte des PCs berschreiben Deshalb ist es ratsam erst mal nach zu schauen wie die Datentr ger und Laufwerke eigentlich heifsen Das finden wir mit dem LINUX Programm fdisk heraus ffnen wir dazu ein Konsolenfenster indem wir Alt F2 dr cken und das Programm xterm aufrufen Es meldet sich die bash Dort geben wir fdisk mit der Option 1 ein Bei meinem LINUX kann man fdisk nicht so einfach aufrufen ohne das man weils wo es ist Das l sst sich aber schnell mit dem Befehl cnf fdisk herausfinden axel LINUX gt cnf fdisk Das Programm fdisk ist verf gbar im Paket util LINUX das auf ihrem System installiert ist Der absoluter Pfad f r fdisk ist usr sbin fdisk daher ist es wohl beabsichtigt dass dieses nur von einem Benutzer mit Superuser Rec
8. anfangs umdefiniert Es gibt an welche Pin Nummer angesteuert werden soll Das zweite Argument ist die Festlegung das dieser Pin jetzt ein 178 Der R ckgabewert ist das Ergebnis der Funktion 179 char steht f r character Das mit sind in erster Line Buchstaben aber auch Sonderzeichen oder Ziffern gemeint 180 Wer es genauer wissen will kann sich im Interget schlau machen oder die angegebene Literatur studieren 181 if steht f r wenn 182 Wahr entspricht 1 falsch entspricht 0 183 Schaut euch die Datei bcm2835 h und bcm2835 c in aller Ruhe mal an und versucht zu verstehen was da abgeht Ganz sch n kompliziert oder Gut das wir die nicht selbst schreiben mussten 184 Unter initialisieren versteht man alles in einen geordneten Zustand zu bringen 185 Eine Schnittstelle auf englisch interface ist eine Verbindung zwischen zwei Welten Hier zwischen dem Raspberry Pi und unserer Roboter Ameise Seite 51 Ausgang ist Bis jetzt hat sich noch nicht viel in unserem Programm getan Alles war nur notwendige Vorbereitung Der eigentliche Teil passiert erst in der nachfolgenden while Schleife Alles was in den geschweiten Klammern der while Schleife steht wird so lange ausgef hrt bis das was zwischen den runden Klammer nach while steht falsch wird also logisch 0 Bei dieser while Schleife wird das jedoch nie passieren denn zwischen den runden Klammern steht explizit 1
9. left speed turnright speed break Cases right speed turnleft speed right speed turnleft speed break case g right speed 204 case hei t Fall und zur im grammatischen Sinne Die Programmiersprachen Grammatik wird auch Syntax genannt Seite 62 up speed left speed down speed break default neutral speed break i return 0 Damit ist mein Hauptprogramm zu ende was ihr daran erkennt das die geschlossene geschweifte Klammer der main Funktion kommt Nehmen wir an in der Variablen key steht g f r go Dann werden nacheinander die Funktionen right up left down ausgef hrt Wenn keine Eingabetaste gedr ckt wurde dann wird durch default die Funktion neutral ausgef hrt W rde ich nicht nur einmal die g Taste dr cken habe sondern ggg so w rde die while 1 Schleife drei mal hintereinander alles was in case g steht ausf hren Die Ameise w rde also drei Schritte nach vorn gehen und dann wieder wegen default in Neutral Stellung Entsprechendes passiert zum Beispiel bei rrr oder gglggll Der Tastaturspeicher merkt sich n mlich die Tasteneingabe und die while 1 Scheife arbeitet die Befehle an mein Programm nacheinander ab Aber schauen wir uns meinen Sourcecode der Funktion neutral mal genauer an Der Funktion neutral wird die Variable speed bergeben und die Z hlervariable
10. und Group das Wort root 5 2 Die Rechte der LINUX Benutzer Und jetzt werden wir so langsam merken dass LINUX eigentlich ein Betriebssystem f r Gro srechner ist Ja wir haben es auf dem kleinen Raspberry Pi mit einem Gro rechner Betriebssystem zu tun das zum Beispiel auch vom Deutschen Wetterdienst benutzt wird Auf jedem LINUX System gibt es wenigstens zwei Benutzer Bei uns sind wir das mit dem Namen pi und dann sind wir es noch mal mit dem Namen root Bei LINUX Rechnern kann es beliebig viele Benutzer geben Jeder Benutzer hat einen eigenen Bereich in dem er seine Daten speichern kann In seinem Bereich kann er festlegen was man mit seinen Daten machen darf Machen heifst bei LINUX read write oder execute Diese Rechte kann der Owner jeder Datei oder jedem Verzeichnis zuordnen Der Benutzer root hat eine Sonderstellung Er kann mit allen Daten auf dem Rechner tun und lassen was er will auch wenn er nicht der Owner ist Deshalb sollte auf einem LINUX Gro rechner das Passwort von root auch nicht so einfach zu knacken sein Man kann mehrere Benutzer zu Gruppen zusammenfassen Eine besondere Gruppe ist die Gruppe root und ihr k nnt euch jetzt sicher vorstellen was diese Gruppe f r Rechte hat Und dann gibt es noch andere Other Normalerweise vertraut man seinen Kollegen auf dem LINUX Gro rechner und gibt allen das Leserecht Damit nicht jemand unge
11. world cpp finden 4 Mit gcc o HelloWorld Hello word cpp den Sourcecode compilieren 5 Fehler beseitigen mit dem Emacs 6 Mit Is l das Programm HelloWorld finden 7 Mit HelloWorld das Programm ausf hren 8 4 Makefiles Makefiles werden erst so richtig praktisch wenn wir Programme schreiben die aus mehreren Sourcecode Dateien bestehen Programm Datei Sourcecode Beschreibungstextfile und Makefile packt man vorteilhafter Weise in einen eigenen Projekt Ordner Wir erzeugen einen in 137 mv steht f r move bewegen Versucht mal mv a out home pi a out und schaut wo die Datei geblieben ist dann wisst ihr was ich mit bewegen meine Ein weiterer LINUX Befehl ist rm a out rm steht f r remove Damit seid ihr die Datei wieder los Ihr k nnt die Datei ja jederzeit mit dem gcc wieder neu erzeugen 138 Ich habe hier nat rlich absichtlich hnliche Namen genommen damit man wei dass die Dateien zusammen geh ren LINUX unterscheidet zwischen Gro und Kleinschreibung Manche Fehlermeldung ist auf nachl ssige Schreibweise zur ck zu f hren aber ihr seid ja sorgf ltig oder 139 F r so kleine HelloWorld Programme sind Makefiles v llig berfl ssig wie wir gesehen haben aber wir wollen ja sp ter noch nettere Programme schreiben und da ist es gut wenn wir die Grundz ge schon mal kennen Seite 37 unserem Unterverzeichnis c Progs unseres Heimatverzeichnises home pi u
12. Auswahlschalter f r NiCd Akkus Bei NiMH Akkus sollte man aber auf eine Entladung vor Seite 10 der Umweltbelastung durch Cadmium generell ab obwohl NiCd Akkus auch eine Nennspannung von 1 2 V haben und den Raspberry Pi nicht zerst ren k nnen 75 9 pj S DM Abbildung 5 Die R ckseite der Roboter Ameise mit dem Batteriehalter und den NiMH Akkus Den Batteriehalter habe ich mit einem Kabelbinder an der Grundplatte befestigt was aber nicht so praktisch ist Ihr solltet in festschrauben oder festkleben In Bild 5 erkennt man au erdem das Anschlusskabel mit dem Batterieklipp der als Steckkontakt f r den und Pol des Batteriehalters dient So einen Batteriehalter f r 4 AA Akkus und auch den Batterieklipp mit Anschlusskabel bekommt ihr im Elektronikhandel um die Ecke oder online Jetzt m sst ihr nur noch die Anschlusskabel mit einem Micro B USB Stecker verbinden um den Raspberry Pi mit Strom zu versorgen So einen Micro B USB Stecker kann man auch einzeln kaufen billiger wird es aber wenn ihr ein USB Kabel mit Micro B USB Stecker kauft diese durchschneidet und das andere dem Laden verzichten Erstens ist es nicht notwendig und zweitens reduziert man die Lebensdauer Seite 11 Ende weg schmei t Zum Durchschneiden nehmt ihr einen Seitenschneider aber ein starke Schere tut es auch Jetzt braucht ihr ein kleines scharfes K chenmesser und ritzt etwa 2 cm vom abgeschnittenen Ende rings herum eine Kerbe in den Isolier
13. Befehle an das Betriebssystem schickt Bei LINUX ist bash absoluter Standard Es gibt aber auch andere Shells 129 Der Befehl ls steht f r list und listet alles auf was im aktuellen Verzeichnis steht 130 Befehlsoptionen werden bei LINUX Kommandos h ufig mit einem Minuszeichen und einem Buchstaben an den Befehl angeh ngt 1 sagt hier dass wir mehr Infos haben wollen Probiert es mal ohne l aus und ihr wisst was ich meine Wenn ihr wissen wollt welche Optionen ein Befehl hat kein Mensch kann sich die alle merken dann gebt mal zum Beispiel man Is ein und schaut was passiert man steht hier brigens f r Manual oder Anleitung Seite 35 gibt einige Meldungen im TX Terminal aus pi raspberrypi ls l total 20 drwxr xr x 2 pi pi 4096 Jan 23 21 18 c Progs drwxr xr x 2 pi pi 4096 Jan 5 21 20 Desktop drwxrwxr x 2 pi pi 4096 Jul 20 2012 python games rw r r 1 pi pi 26 Jan 22 21 19 textl Wir sehen jetzt was im Verzeichnis home pi steht Doch woher wissen wir das es das Verzeichnis home pi ist Ganz einfach am Prompt Der Prompt sagt uns das wir der Benutzer pi auf dem Computer raspberrypi sind Da hinter kommt ein Wellenzeichen Dies deutet an dass wir uns im Hauptverzeichnis des Benutzers pi befinden und das ist nun mal home pi Die erste Zeile mit total 20 soll uns nicht weiter st ren Der erste Buchstabe in der zweiten Zeile ist ein d und bedeutet dass es sich bei c Pro
14. Die lteren Versionen haben teilweise nur 256MB 50 Der Graphikprozessor stellt das Bild auf dem Monitor zusammen Der Hauptprozessor macht alles andere 51 RAM ist die Abk rzung f r random access memory das ist ein Speicher auf den man genauso gut Daten abspeichern schreiben wie lesen kann Das RAM ist nur ein anderer Name f r den Hauptspeicher 52 F r Standard Einstellung wird im englisch der Begriff default verwendet 53 overclock hei t hier nicht ber der Uhr sondern bertakten Seite 21 Standardm ig arbeitet der Prozessor mit 700 MHz Dynamisches bertakten bedeutet das die h here Taktrate nur bei Bedarf verwendet wird Dadurch l sst sich Energie sparen Das ist zwar bei der Stromrechnung zu vernachl ssigen aber wir m ssen bedenken das die Energie im Prozessor vollst ndig in W rme umgewandelt wird und dieser dadurch berhitzen kann Zwar kontrolliert sich der Prozessor selbst und taktet langsamer wenn er w rmer als 85 C wird aber eine andauernde hohe Temperatur kann die Lebensdauer des Prozessors verk rzen Bei einer zu hohen Taktrate kann sich der Prozessor auch mal verschlucken und das System wird instabil Dann sollte man wieder zu geringeren Taktraten zur ck kehren Ich habe hier nichts ver ndert denn der Vorteil durch die h here Taktrate ist nicht sonderlich sp rbar in unserem Ameisen Projekt 4 10 ssh Mit ssh haben wir die M glichkeit ber das Netzwerk die Kommandoeb
15. Gottfried Wilhelm Leibniz nein nicht der mit dem Keks abgeschrieben hat void neutral int speed 1 int i 0 while i speed i i bcm2835 gpio write SERVO1 bcm2835 gpio write SERVO2 delayMicroseconds 1370 bcm2835 gpio write SERVO1 bcm2835 gpio write SERVO2 delay 15 Seite 63 HIGH HIGH LOW LOW Die Funktion right ist nach dem selben Muster aufgebaut Wie ihr seht werden jetzt auch alle drei Servos angesteuern Servo 1 und 2 drehen nach rechts w hrend Servo 3 runter geht Auch hier habe ich die Mikrosekunden von Servo 3 nachjustiert void right int speed i int i 0 while i speed i i bcm2835 gpio write SERVOI delayMicroseconds 1000 bcm2835 gpio write SERVOI bcm2835 gpio write SERVO2 delayMicroseconds 1000 bcm2835 gpio write SERVO2 bcm2835 gpio write SERVO3 delayMicroseconds 1250 bcm2835 gpio write SERVO3 delay 15 HIGH LOW HIGH LOW HIGH LOW Seite 64 Die Funktione up left und down laufen nach dem gleichen Muster ab Ich muss dazu nicht mehr viel erkl ren oder void up int speed 1 int i 0 while i speed i i bcm2835 gpio write SERVO1 delayMicroseconds 1000 bcm2835 gpio write SERVO1 bcm2835 gpio write SERVO2 delayMicroseconds 1000 bcm2835 gpio write SERVO2 bcm2835 gpio write SERVO3 delayMicroseconds 1600 bcm2835 gpio write SERVO3 delay 15 void Left int spe
16. Help BISE E 2 include lt bcm2835 h gt include stdio h Servo an P n 10 define PIN RPI V2 GPIO P1 io int main int argc char argv If you call this 1t will not actually access the GPIO Use for testing bem2835_ set debug 1 1f bcm2835 n t return 1 printf Hallo AxelXn Set the pin to be an output bcm2835 gpio fsel lPIN BCM2835 GPIO FSEL OUTP Beweg das Servo IME x1 while 1 1 N i l while 1 100 ij bcm2835 gpiao write PIM HIGH delayMicroseconds 1800 bcm2835 gpio write PIN LOW delay 18 1 t while i 100 1 z l4 bcm2835 gpio wrltelPIN HIGH delayMicroseconds 1200 bcm2835 gpio write lPIN LOW delay 18 return 0 Abbildung 30 Der Sourcecode servo c im Emacs Unsere Endlosschleife beginnt wieder mit while 1 Davor haben wir eine Z hlvariable mit int i Seite 58 definiert Als erstes setzen wir die Variable i auf 1 Mit der weiteren while Schleife fragen wir ab ob i auch kleiner als 100 ist Innerhalb dieser while Schleife z hlen wir i mit dem Befehl i hoch Dann setzen wir den Ausgang von Pin 10 f r 1800 ps auf 3 3 V und danach f r 18 ms auf GND Das machen die Befehle bcm2835 gpio write PIN HIGH delayMicroseconds 1800 bcm2835 gpio write PIN LOW delay 18 Weil diese while Scheife etwa 100 mal 20 ms durchlaufen wird bleibt das Servo etwa 2 Sekunden in der Stellung Dan
17. IF ER B 4e d a B to Location Filename Points to Permissions Owner Group S b 5 bcm2835 1 17 F bcm2835 1 17 drwxr xr x 1000 100 o Pdr ooBytes Abbildung 19 Der Xarchiver zum entpacken von komprimierten Dateien Klicken wir oben in der Zeile auf das Symbol mit dem Pappkarton und dem orangen Pfeil speichert sich das Verzeichnis bcm2835 1 17 in unser Homeverzeichnis home pi Das Verzeichnis k nnen wir uns jetzt im File Manager anschauen und den Xarchiver wieder schlie en Es gibt eine ganze Menge folder und files Zu den foldern geh ren die Verzeichnisse doc example und scr Wir schauen uns alles mal an ver ndern aber nichts Unter den files gibt es eine README P Datei die 156 Das sind die Verzeichnisse in denen die Dokumentation Beispiele und Sourcecodes stehen 157 Es ist guter Stiel und den beherrscht Mike nat rlich in unseren Projekten einen Textfile mit dem Namen README Seite 43 wir uns auch mal durchlesen und notfalls mit Hilfe der Webseite http www leo org bersetzen Wir finden auch einige Makefiles und configure Dateien Eine der configure Datei hat keine extension und ist ausf hrbar brigens wenn wir uns im File Manager befinden und die Taste F4 dr cken ffnet die ein Kommandozeilen Fenster mit der bash und wir sind schon direkt in dem richtigen Verzeichnis Das erkennen wir nat rlich sofort am Prompt der jetzt pi raspberrypi bcm2835 1 17 hei t Sollte uns d
18. LXDE Symbol ffnet sich ein Auswahl Men Hier k nnen wir ber Unter Men s verschiedene Programme starten Mit diesen Programmen kann jeder f r sich ein bisschen rumspielen und sich vertraut machen Rechts neben dem LXDE Symbol in der Task Leiste ist das Symbol f r den File Manager Den ffnen wir mal mit der linken Maus Taste Es erscheint das Fenster des File 57 Siehe Kapitel davor 58 Manchmal wird dies auch als Desktopsystem bezeichnet 59 An dieser Stelle m chte ich mich bei Hong Yen Lee bedanken denn LXDE ist richtig gut geworden 60 Task Leiste ist nat rlich denglisch und hei t richtig taskbar und wird auf deutsch mit Startleiste bersetzt 61 File ist das englische Wort f r Datei Der File Manager ist sowas wie bei Windows der Explorer Seite 23 Managers Links in dem Kasten sehen wir jetzt ein Haus Symbol neben dem steht pi Darunter ist das Symbol eines Bildschirms neben dem steht Desktop Wenn wir hier klicken sehen wir die gleichen Symbole die auch links im gro en Bildschirm zu sehen sind Der Desktop zeigt also das Zeug was auf dem Schreibtisch liegt Unter Desktop ist ein M lleimer Symbol neben dem Rubbish steht Wenn wir bei Rubbish klicken sehen wir die Dateien die wir gel scht haben Unter Rubbish steht Applications Hier sehen wir die Programme die wir teilweise auch ber den Desktop oder das LXDE Symbol links unten in der Task Leiste erreichen k nnen bri
19. Programm ist freie Software Du kannst es unter den Bedingungen der GNU General Public License wie von der Free Software Foundation ver ffentlicht weiter geben und oder modifizieren Die Ver ffentlichung dieses Programms erfolgt ohne irgendeine Garantie Die GPL kannst du unter http www gnu org lisences nachlesen include bcm2835 h m Blinks on RPL pins GPIO 18 21 una 23 define LEDl RPI GPIO P1 19 define LEDZ RPI GPIO P1 21 define LED3 RPI GPIO Pl 23 Abbildung 24 Der erste Teil der Datei dreiLEDsblinken cpp im Emacs Die erste Zeile nach dem Kommentar Block ist eine include Anweisung an den Compiler Anweisungen an den Compiler werden in c c immer mit einem eingeleitet Es soll damit die Datei bcm2835 h eingef gt werden An dieser Stelle m ssen wir uns kurz mit Header Dateien besch ftigen um zu verstehen was das soll Der Sinn dahinter ist das wir das Hauptprogramm mit neuen Funktionen bekannt machen wollen die in der Header Datei definiert sind Zu jeder Header Datei geh rt aber auch eine c c 173 Unser europ isches Urheberrecht ist vergleichbar mit dem Copyright der USA Wir Europ er brauchen aber ein Copyright nicht extra erw hnen da wir das Urheberrecht als Autor auch ohne Hinweis haben denn es ist bei uns nicht ver u erbar Falls gegen die Lizenz aber in den USA versto en wird wovon wir bei diesem Programm nicht ausgehen l sst sich unser Recht besser durchsetz
20. Raspberry Pi einzugeben mit den Worten login as Hier geben wir nat rlich pi ein Jetzt werden wir nach dem Passwort auf unserem Raspberry Pi gefragt mit den Worten pi 192 168 x yyy s password Hier geben wir nat rlich raspberry ein Und siehe da nach mehreren Zeilen Text den ihr ja mal bersetzen k nnt taucht der Prompt des Raspberry Pi auf Wir gehen aus purer Freude mal den Befehl ls 1 ein und die jetzige Meldung sollte uns irgendwie bekannt vorkommen 12 2 SSH unter LINUX 12 3 Die Ameise zum Leben erwecken Nachdem wir mit ssh oder PuTTY ein Verbindung zum Raspberry Pi aufgenommen haben geben wir den Befehl sudo shutdown now ein um den Raspberry Pi herunter zu fahren und aus zu schalten Das dauert ein Weilchen Ist alles aus der Monitor vom Raspberry Pi dunkel und die Verbindung zu ihm erloschen k nnen wir jetzt unsere Roboter Ameise von den Kabeln zu Maus Monitor und Tastatur befreien Nur den WLAN USB Adapter sollten wir noch eingesteckt lassen Wir versorgen jetzt den Raspberry Pi ber die Batterie der Roboter Ameise Sobald der Raspberry Pi an die Batterie angeschlossen ist und wieder Strom hat sollte er wieder booten Das k nnen wir jetzt leider nur noch an der blinkenden gr nen LED mit der Bezeichnung ACT erkennen Nach einer Weile sollte auch der WLAN USB Adapter seine Arbeit aufnehmen und uns das mit blinken mitteilen So ein zwei Minuten kann es durchaus dauern bis der Ras
21. Seite wiki rc network de Servo zu werfen 10 2 Servos ansteuern mit dem Raspberry Pi Wir haben gelernt wie wir LEDs blinken lassen k nnen Dazu werden in zeitlicher Reihenfolge GPIO Pins ein und ausgeschaltet In dem Zeitdiagramm in Bild sehen wir dass das Ansteuern von Servos eigentlich genau so geht Lediglich die Zeiten sind etwas anders Bei den LEDs war es immer 500 ms an und 500 ms aus Dazu nutzten wir Mikes c Befehl bcm2835 delay 500 den er uns in seiner Header Datei bcm2835 h zur Verf gung gestellt hatte und bergaben diesem Befehl die Integer Zahl 500 die f r 500 ms stand Ihr erinnert euch Wir brauchen zum Ansteuern von Servos vier delay Zeiten Ungef hr eine Millisekunde f r Vollausschlag rechts ungef hr zwei Millisekunden f r Vollausschlag links etwa 1 5 Millisekunden f r die Mittelstellung und 20 Millisekunden f r die Periode mit der die Pulse wiederholt werden sollen Wir brauchen also delay Zeiten die genauer sind als ganzzahlige Vielfache von einer Millisekunde Wenn wir uns die Header Datei bcm2835 h mit dem Emacs noch mal genauer ansehen finden wir doch tats chlich eine Funktion die uns weiterhilft Das ist die Funktion extern void bcm2835 delayMicroseconds unsigned int micos Und mehr noch wir finden auch noch zwei define Anweisungen an den Compiler die diese delay Befehle umbenennen und uns den Bandwurmnamen ersparen In unserem eigenem c Programm 197 Wir klicken
22. Wo soll er auch sonst hin Wenn wir uns das Datenblatt einer LED anschauen werden wir feststellen dass so ziemlich alle roten gelben und gr nen LEDs in Durchlassrichtung einen Spannungsabfall von etwa 2 5 V haben Wenn hingegen der GPIO Pin auf low liegt also bei 0 Volt kann auch kein Strom flie en und ohne Strom leuchtet die LED nicht und es gibt auch keinen Spannungsabfall Bei 3 3 V am GPIO muss also die restliche Spannung am Widerstand abfallen An dem Widerstand ist der Spannungsabfall dann also Ung E U cpio Urzp 3 3 V 2 5 V 0 8 V Wir wissen vom Raspberry Pi dass der Strom der aus dem GPIO flie t nicht gr er als 16 mA sein darf da er sonst kaputt zu gehen droht Mit dem ohm schen Gesetz k nnen wir also jetzt die minimale Widerstandsgr fse berechnen R Uza 1 70 8V 16mA 50 Ohm Der Widerstand sollte also gr er als 50 Ohm sein dann ist der Strom der aus dem GPIO flie t kleiner als 16 mA Mit einen Widerstand von 68 Ohm sind wir also auf der sicheren Seite 9 2 1 Die Hardware Jetzt m ssen wir das ganze noch aufbauen F r euch habe ich einen typischen Widerstand in Bild 21 und eine typische LED in Bild 22 fotografiert Abbildung 21 Ein elektronischer Abbildung 22 Eine Leuchtdiode LED Widerstand Widerst nde und LEDs gibt es in verschiedenen Bauformen Wir k nnen am Besten die bedrahteten Bauteile gebrauchen Widerst nde haben zwei Anschl sse die gleichwertig sind Es ist vol
23. ausf hren Wir haben also jetzt einen Sourcecode mit dem Emacs geschrieben und in dem Verzeichnis c Progs unter dem Namen Hello world cpp abgespeichert Wir wechseln in das Verzeichnis home pi c Progs und geben hier den Befehl gcc Hello world cpp ein Wenn alles richtig ist sollten wir nach kurzer Zeit wieder den Prompt erhalten Falls wir irgend etwas falsch gemacht haben kommen jetzt Fehlermeldungen die wir uns durchlesen sollten da das hilfreich sein kann 131 directory ist hier das gleiche wie folder und daher wissen wir dass es ein Verzeichnis oder Ordner ist 132 Das ist der Besitzer der Datei 133 Da LINUX ein Gro computer Betriebssystem ist k nnten auch mehrere Benutzer mit dem Computer arbeiten LINUX l sst es zu diese zu Gruppen zusammen zu fassen Auf dem Pi macht das aber wenig Sinn 134 Nur so zur Verwirrung 135 Ein Byte besteht aus 8 bit Ein bit ist die kleinste Speichereinheit und kann entweder 0 oder 1 sein Alles andere versteht ein Computer nicht 136 cd steht f r change directory also wechsle das Verzeichnis Seite 36 um den Fehler zu finden auch wenn sie auf Englisch sind Wir k nnen jetzt mit dem Emacs den Programmcode noch mal aufrufen ver ndern und wieder abspeichern ohne den Emacs zu schlei en Dann wiederholen wir auf der Kommandoebene den Befehl gcc Hello_world cpp Das machen wir so lange bis wir alle Fehler beseitigt haben Jetzt
24. down By this the ant is crowling forward After installing bcm2835 you can build this with something Like gcc o filename l rt lt filename gt c l bcm2835 sudo filename This software is under GPLv3 Lisence My special thanks to Mike McCauley mikem open com au Copyright C 2013 Axel Huelsmann Dann habe ich die einzubindenden Header Dateien mit include angegeben und mir mit define etwas Tipparbeit erleichtert Wie ihr seht will ich die drei Servos an Pin 8 10 und 12 anschlie en include bcm2835 h Zinclude lt stdio h gt servos are connected to the GPIO P1 connector Pin 08 PinlO and Pinl2 GND of the servos are connected to Pin06 5V supply is connected to Pin02 define SERVOl RPI V2 GPIO P1 08 define SERVO2 RPI V2 GPIO P1 10 define SERVO3 RPI V2 GPIO P1 12 Nachfolgent habe ich mir ein paar Funktionen definiert Will man in c selbst Funktionen verwenden muss man die Funktion definieren und kann dann sp ter den Sourcecode dazu schreiben Das kommt euch erst mal doppelt gemoppelt vor hat aber den Sinn das der Compiler sich Speicherplatz reservieren kann void up int void down int void right int Seite 60 void left int void turnright int void turnleft int void neutral int Jetzt folgt unser Hauptfunktion main die Initialisierung der GPIOs und eine Einzeilige Bedienungsanleitung int main int argc char argv
25. einem der Online H nder die im Anhang aufgelistet sind Einige Kleinteile und vor allem Schrauben habe ich vom Ausschlachten alter Elektronik und manchem Kabel konnte ich so zu einem zweiten Leben verhelfen Damit sollten unsere Kosten berschaubar bleiben F r meine Roboter Ameise rechnete ich nicht mal 60 zusammen Etwas Werkzeug zu haben ist auch kein Fehler Ein L tkolben ist n tzlich und ein paar Schraubenzieher Wenn ihr ein Messger t habt erleichtert das die Fehlersuche Eine Laubs ge um das Sperrholzbrettchen zu bearbeiten ist auf jeden Fall von Vorteil In diesem Buch werden wir s mtliche Grundlagen besprechen die notwendig sind um das Projekt Roboter Ameise zu meistern so dass wir am Ende nicht nur einen tollen Roboter haben sondern auch etwas Programmieren und LINUX kennengelernt haben F r die Fernsteuerung werden wir uns noch mit der Netzwerktechnik besch ftigen und dabei lernen wie man aus einem alten Laptop einen prima WLAN Server macht Was braucht man noch um erfolgreich eine Roboter Ameise zu bauen Vor allem Geduld und Z higkeit und den Willen niemals aufzugeben Am meisten Spa hatte ich immer wenn ich un berwindbar scheinende Probleme letztendlich gel st habe Mir hat der Bau meiner Roboter Ameise viel Spa gemacht und den m chte ich mit euch teilen und w nsche euch viel Erfolg beim Nachbau Schickt mir ein Bild von eurem Unget m wenn ihr es geschafft habt 1 Ein Servo besteht aus einem elektrisch
26. einfach nur LINUX geworden 105 Der Name des Editors Emacs steht f r Editor MACroS Macros sind eine Ansammlung von Befehlen an ein Programm die nacheinander ausgef hrt werden sollen 106 Richard Stallman ist so ein richtiger Urcomputer Hacker mit langen Haaren und etwas Bauchspeck Er sitzt halt einfach zu viel vor dem Computer Richard haben wir viel zu Verdanken wenn es darum geht Software ohne Einschr nkungen zu nutzen oder zu ver ndern Das k nnen wir n mlich nur wenn wir dazu die Rechte haben und Richard k mpft schon immer f r diese unsere Rechte Seite 30 Emacs ist in unserem raspbian Betriebssystem erst mal nicht enthalten Wenn wir aber eine Verbindung zum Internet haben k nnen wir Emacs leicht nach installieren Dazu starten wir ein LX Terminal und tippen auf der Kommandoebene den Befehl sudo apt get install emacs Um zu verstehen was hier anl uft nehmen wir den Befehl mal auseinander Mit dem vorangestellten Befehl sudo verschaffen wir uns root Rechte Mit apt get verbinden wir uns mit der APT Bibliothek im Internet Hier gibt es viele n tzliche Programme die schon so bereitgestellt sind dass sie sich automatisch auf unserem Raspberry Pi installieren lassen Mit dem Zusatz install teilen wir der APT Bibliothek mit dass wir gerne ein Programm installieren w rden Jetzt m ssen wir der Bibliothek nur noch mitteilen was wir haben wollen Wir schreiben also dahinter emacs Schauen wir
27. erkannt das int kein Befehl ist sondern ein Typ und das Wort gr n eingef rbt Das Wort main hat er als Hauptfunktion erkannt und blau eingef rbt Bei der main Funktion hat man sich darauf geeinigt das wenn sie fehlerfrei durchl uft eine 0 zur ck liefern soll Sollten andere Zahlen erscheinen weils man das etwas falsch gelaufen ist Der main Funktion werden beim Aufruf die Parameter argc das ist wieder eine ganze Zahl vom Typ int und argv vom Typ char bergeben Damit hat es folgendes auf sich Rufen wir ein Programm von der Kommandozeile auf k nnten wir ihm Parameter bergeben Diese Parameter kann dann das Programm bearbeiten Wir brauchen das hier aber nicht und werden uns momentan nicht weiter damit belasten Die erste Anweisung im main Programm ist eine if Anweisung Wenn genau das passiert was in der runden Klammer hinter if steht dann soll das was dahinter steht ausgef hrt werden Falls nicht wird der hintere Teil ignoriert Was in der runden Klammer steht muss entweder wahr sein oder falsch Die if Anweisung steht hier in zwei Zeilen und wird erst dann mit dem obligatorischen beendet Diese zwei Zeilen dienen also nur der besseren Lesbarkeit Eine Zeile h tte es auch getan Das erste Zeichen nach der runden Klammer ist ein Ausrufezeichen Dies steht f r eine logische Verneinung Hinter dem wird die Funktion bcm2835_init aufgerufen Diese
28. geben wir auf der Kommandoebene ls l ein und wir sollte eine neue Datei sehen die den Namen a out hat Wenn wir dem gcc n mlich nicht mitgeteilten wie das Programm hei en soll das aus unsrem Sourcecode compiliert werden soll gibt er ihm einfach den Namen a out Das es sich bei a out um ein ausf hrbares Programm handelt erkennen wir daran dass es in der Liste der Eintr ge die durch ls ausgegeben wird gr n erscheint Au erdem erkennen wir die x Eintr ge am Anfang der Zeile Um das Programm auszuf hren geben wir einfach a out ein und schauen was passiert Da sollte jetzt in der n chsten Zeile Hallo Welt stehen und dann pi raspberrypi c Progs Warum das solltet ihr jetzt verstanden haben oder ich habe es schlecht erkl rt Um das Programm a out umzubenennen k nnen wir wieder wieder im File Manager ein bisschen rumklicken Oder wir benutzen den LINUX Befehl mv mv a out HelloWorld Mit rm k nnt ihr Dateien auch wieder l schen Damit wir aber den Umweg ber das umbenennen gar nicht erst gehen m ssen k nnen wir dem gcc auch mit der Option o direkt sagen wie unser Programm hei en soll gcc o HelloWorld Hello world cpp Zusammenfassung 1 Mit dem Emacs den Sourcecode schreiben und unter c Progs Hello_world cpp abspeichern 2 In LXTerminal mit cd c Progs ins Verzeichnis home pi c Progs wechseln 3 Mit Is l den Sourcecode Hello
29. i wird auf 0 gesetzt Dann kommt eine neue while Schleife die 50 mal durchlaufen wird Innerhalb der while i lt 50 Schleife wird die Variable i mit dem Befehl i bei jedem Durchlauf um eins erh ht Das vordere und hintere Servo unserer Ameise sind an SERVO1 und SERVO2 angschlossen Da die Funktion delayMicroseconds 1370 us wartet gehen die Servos in Mittelstellung Ja Moment war nicht die Mittelstellung der Servos 1500 us Ihr habt ja vollkommen Recht Ich war etwas nachl ssig beim beim Montieren meiner Beinchen auf den Servos Im Nachhinein habe ich etwas mit den Mikrosekunden gespielt bis es gestimmt hat Ihr werdet wahrscheinlich hnliches machen m ssen Bei mir war die Neutralstellung bei beiden Servos gleich sonst m sste ich das in diesem Sourcecode auch noch ber cksichtigen Der Funktion neutral ist es brigens egal was Servo 3 mit den mittleren Beinchen macht Servo 3 bekommt kein PWM Signal und ich nutze einfach Isaac Newtons Schwerkraft um alle 6 Beinchen auf dem Boden zu halten 205 go f r gehe 206 Denn speed war ja 50 und wenn i auch 50 wird wird die Aussage i lt 50 falsch und die Schleife bricht ab 207 Isaac war genial Mit der von ihm aufgestellten Gravitationstheorie von 1686 konnte erstmals die Schwerkraft richtig erkl rt werden Die dazu notwendige Mathematik erfand er gleich mit behauptete er Wir vermuten heute allerdings das er von K nigin Charlottes Freund
30. low rue 9 low D a u low low rgo low unge e low low pwe 9 high 5 B nge 9 high 3 3 Volt 5 Volt ground do not connect general purpose input output Tabelle 1 Pin Belegung der 26 poligen Stiftleiste P1 des Raspberry Pi Solltet ihr ein altes Board der Rev 1 haben d rft ihr die mit DNC gekennzeichneten Pins nicht verwenden Au erdem sind GPIOO und GPIO1 in Rev 2 jetzt GPIO2 und GPIO3 Die 3 3 Volt d rfen h chstens mit 50 mA belastet werden Die 5 V h ngen direkt mit der Spannungsversorgung des Raspberry Pi zusammen und liefern so viel Strom wie unser angeschlossenes Netzteil her gibt Wir sollten es aber nicht bertreiben sonst brennen die d nnen Leiterbahnen auf der Platine ab Die GPIO Ausg nge schalten zwischen 0 V und 3 3 V und sind mit maximal 16 mA belastbar 9 1 Die Software zum GPIO Stecker Um die Stiftleiste mit einem c c Programm steuern zu k nnen verwenden wir ein Bibliothek die wir aus dem Internet bekommen An dieser Stelle wollen wir uns bei Mike MC Cauley bedanken f r die gute Arbeit und daf r dass er die Bibliothek als Open Source unter GPL V2 lizenziert Um die Bibliothek zu installieren gehen wir mit dem Midori Webbrowser auf die Webseite http www open com au mikem bcm2835 index html Die aktuelle Version zur Zeit als ich dieses Buch schrieb war die Version 1 17 und wir k nnen die 154 Achtung Die GPIOs sind direkt mit dem Broadcom Mikr
31. mal was passiert Es gibt eine ganze Menge Informationen die wir in Ruhe durchlesen Unser Raspberry Pi unterh lt sich n mlich mit der APT Bibliothek dar ber welche Dateien uns fehlen damit Emacs auch richtig installiert wird und fehlerfrei funktioniert Irgendwann werden uns Fragen gestellt die wir mit ja beantworten sollten Das ganze geht eine Weile Wir k nnen brigens unten in der Task Leiste rechts ein kleines K stchen verfolgen dass mit gr nen Balken anzeigt wie stark der Pi ausgelastet ist Wenn die gr nen Balken das K stchen von unten bis oben ausgef llt haben ist der arme Pi voll am R deln und wir sollten einfach abwarten Die Mitteilungen im LXTerminal k nnen das ganze Fenster f llen Irgendwann sehen wir aber wieder den Prompt Unser Prompt sollte brigens etwa so aussehen pi raspberrypi Jetzt geben wir hinter dem Prompt emacs ein und sollten das folgende Fenster sehen G e emacs Hlinux blai NK Rs Fie Edit Options Buffers Tools Help TE Bx S z Welcome to GNU Emacs one component of the GNU Linux operating system Emacs S Tutorial Learn basic keystroke commands Einf hrung in Emacs Emac Guided Tour Overview of Emacs features at gnu org a Em acs Manual View the Emacs manual using Info Ab sence of Warranty GNU Emacs comes with ABSOLUTELY NO WARRANTY opying Conditions Conditions for redistributing and changing Emacs Grderihg Manuals Purchasing printed copies of manuals T
32. newly created folder Das machen wir Ich habe mein neues Verzeichnis c Progs genannt Dieses erscheint jetzt im File Manager und wir ffnen es mit einem Doppelklick Das Verzeichnis c Progs ist erwartungsgem erst mal leer Mit Rechtsklick in die Leere und der Prozedur mit der wir das Verzeichnis erzeugt haben erzeugen wir jetzt einen neuen Blank File mit dem Namen Hello_world cpp Wenn wir jetzt mit einem Rechtsklick auf das Symbol von Hello_world cpp klicken ffnet sich ein Popup und wir klicken auf GNU Emacs 23 wie in Abbildung 15 zu sehen ist m c Progs lt raspberrypi gt MJ NX File Edit Go Bookmarks View Tools Help v a Y 4 A homepi Progs gt O Places v 5 Pi B open E Desktop iia GNU Emacs 23 5 pI 3 Rubbish 3 Leafpad en Applications Open with FROGGYSD ge Cut Ld Copy m RPi OS A C Paste MBR_RPI amp i G Delete Rename Compress Y Properties 1 item 1 hidden Free space 2 4 GB Total 4 1 GB Abbildung 15 File Manager mit Auswahlmen 114 Source hei t Quelle und als code bezeichnet man den Text der Programmiersprachen Kommandos 115 Gcc steht f r GNU compiler colection also soviel wie LINUX Programmiersprachen bersetzer Sammlung Der gcc kann n mlich nicht nur c c code bersetzen sondern auch viele andere Programmiersprachen 116 Das kann aus Platzgr nden durchaus sein 117 Gib einen Nam
33. und hilft uns durch farbiges Hervorheben Kommentare beginnen immer mit einem vorangestellten Doppelkreuz F r unser HelloWorld Programm sieht der Makefile so aus Dies ist der Makefile f r das Programm HelloWorld Erstellt von Forrest Black am 31 02 2013 Version 0 1 Helloworld Hello world cpp gcc o HelloWorld Hello world cpp Wir verlassen jetzt den Emacs nachdem wir den Makefile gespeichert haben und gehen im TXTerminal auf die Kommandozeile zur ck Wenn wir in unserem Projekt Ordner sind sehen wir das an unsrem Prompt Der sollte jetzt so aussehen pi raspberrrypi c Progs ErstesProjekt 140 mkdir steht f r make directory also Mach ein Verzeichnis 141 cp steht f r copy Soviel englisch kann jeder oder 142 Der Zusatz wird auf englisch extension genannt und wir erkennen an ihm mit welchem Programm wir die Datei bearbeiten k nnen 143 bash Befehle sind meistens selbst Programme 144 Unter Ordner Verzeichnis oder auch englisch folder versteht man immer das gleiche Lasst euch dadurch nicht verwirren 145 Der Linker ist ein Programm dar mehrere Dateien die vom Compiler bersetzt wurden zusammen bindet falls das notwendig ist 146 Leerzeichen tun hier nicht das gleiche und sind oft die Quelle von Fehlern 147 Die Syntax ist sozusagen die Grammatik einer Programmiersprache und auch der Makefile wird in der eigenen Makefile Sprache geschrieben die von dem Programm
34. wurden sie von Napoleon h chst pers nlich belobigt Es gab sogar Orden 163 Das Formelzeichen f r Strom ist I die Einheit wird mit A abgek rzt 164 Die elektrische Stromst rke messen wir in Ampere abgek rzt A Benannt wurde diese Einheit nach dem Franzosen Andre Marie Ampere der ein absolutes Multitalent war Genial war damals seine Erkenntnis dass elektrische Str me Magnetfelder verursachen Andre Marie konstruierte ein Messger t zur Messung von Strom das er Galvanometer nannte Wisst ihr noch wie Alessandro s Freund Luigi mit Nachnamen hie In Ermangelung besseren Wissen unterlief Andre Marie ein folgenschwerer Fehler an dem die Physiker heute knabbern Andre definierte die technische Stromrichtung in entgegengesetzter Richtung zur Flussrichtung der Elektronen Damals war das Elektron leider noch nicht entdeckt und wir m ssen Ampere diesen Lapsus verzeihen 165 Leuchtdiode ist das Selbe wie LED LED steht f r light emiting diode also Licht aussendende Diode 166 In den USA zeichnet man eine Zackenlinie 167 R steht f r englisch resistor auf deutsch Widerstand 168 In unserem Fall ist das ein Draht Seite 45 angibt mit einem waagerechten Strich an der Spitze An die LED werden nur noch zwei kleine Pfeile dran gemalt Diese symbolisieren das emittierte Licht Der Strom der aus der LED flie t flie t gegen GND ab Der Strom durch den Widerstand ist also der gleiche wie durch die LED
35. 0V und 3 3 V ausgeben 0 V entspricht einer logischen 0 Null oder low 3 3 V entspricht einer logischen 1 high Um eine LED leuchten zu lassen besch ftigen wir uns etwas mit Elektrotechnik aber keine Angst es reicht das ohm sche Gesetz Was Str me und Spannungen sind ist erst mal schwer zu fassen da wir diese weder sehen anfassen noch sp ren k nnen Vielleicht hilft euch meine Analogie zur Wasserleitung Der Druck in der Wasserleitung entspricht der elektrischen Spannung oder LIESMICH aufzunehmen und darin Informationen zum Projekt zu speichern 158 Hintergrund hei t aus englisch background 159 Das Ohm sche Gesetz ist nach Georg Simon Ohm benannt Es besagt das Strom und Spannung umgekehrt proportional zueinander sind und die Proportionalit t der Widerstand des elektrischen Leiters ist Au erdem ist Ohm auch die Einheit des elektrischen Widerstands die mit dem griechischen Buchstaben Omega U abgek rzt wird 160 es sei denn wir greifen in die Steckdose Wir haben es hier aber nur mit Spannungen von maximal 5 V zu tun und das ist vollkommen ungef hrlich Wer Netzteile aufschraubt lebt hingegen gef hrlich und sollte zumindest wissen was er tut Seite 44 162 Spannungen werden in Volt gemessen Die Wassermenge die durch die Leitung flie t ist der 164 Strom den wir in Ampere messen Wenn ein GPIO Ausgang auf high programmiert ist sollt ein Strom du
36. 2835 GPIO FSEL OUTP bcm2835 gpio fsel LED2 BCM2835 GPIO FSEL OUTP bcm2835 gpio fsel LED3 BCM2835 GPIO FSEL QOLUTP Blink while 1 1 Er Turp xt am bcm2835 gpio write LEDl HIGH wait a bit bDcm2835 delay 500 ZE harm xt on bcm2835 gpio write LlED2 HIGH wait a bit bcm2835 delay 5080 AE harm xt am bcm2835 gpio write LED3 HIGH wait a bit bcm2835 delay 580 F burn ct ut bcm2835 gpio write LEDl LOW wait a bit Dcm2835 delay 500 Fr Burst mcr bcm2835 gpio write LED2 LOW wait a bit bcm2835 delay 5080 TE turm ct air bcm2835 gpio write LED3 LOW wait a bit bcm2835 delay 580 retur 8 U dreilEDsblinken cpp Bot L36 C L Abbrev CRM Buffer Size Moda File GNU Emacs 584 Fundamental 35 Buffer List Bot L5 Buffer Menu Switch to buffer default scratch Abbildung 25 Das Hauptproramm von dreiLEDsblinken im Emacs Jetzt folgt das Hauptprogramm Mike hat hier den vollst ndigen Aufruf der main Funktion beschrieben Das w re nicht n tig gewesen ist aber guter Stil Wir sehen das oben in Bild 25 Wenn Funktionen ein Ergebnis haben muss nat rlich auch festgelegt werden welchen Typ dieser Seite 50 hat Der R ckgabewert jeder Funktion wird mit dem Befehl return bergeben und ist bei unserer main Funktion eine ganze Zahl und daher vom Typ Integer Deshalb steht hier auch vor main die Typenbezeichnung int Der Emacs hat
37. Festplatte des kleinen LINUX Rechners Raspberry Pi laden Wie schon in der Einleitung erw hnt hat der Raspberry Pi als Festplatte eine SD Karte Diese sollte 4 GB oder gr er sein Wir m ssen also die herunter geladene Datei auf die SD Karte bertragen Dazu muss sie aber erst mal entpackt werden denn sie kommt zun chst komprimiert als zip Datei Der PC mit dem ihr Raspian aus dem Internet herunter geladen habt ist entweder ein Windows Apple oder LINUX Rechner F r LINUX Rechner habe ich den Vorgang sehr ausf hrlich beschrieben 22 Unter einer LINUX Distribution versteh man eine Variante von LINUX die von einem bestimmten Herausgeber ver ffentlicht wird 23 Es ist nicht immer leicht sich auf Englischsprachigen Webseiten zurecht zu finden wenn die Englischkenntnisse erst noch im aufgbau sind Ich lasse mir dann durch die Webseite dict leo org helfen LEO ist die Abk rzung von Link Everything Online und wurde von Leuten der TU M nchen ins Leben gerufen und die verstehen was von Technik 24 Komprimiert hei t hier das die Datenmenge mit einem speziellem Verfahren verringert wurde Entpacken bedeutet das die urspr nglichen Daten wieder hergestellt werden Seite 14 3 1 Das Betriebssystem Raspbian auf eine SD Karte laden mit Hilfe eines LINUX PC Wenn auf eurem PC mit dem ihr Raspbian aus dem Internet geladen habt ein LINUX Betiebssystem ist egal welche Distribution habt ihr Gl ck denn mit LINUX geht es am schnellsten
38. Funktion wurde in der Header Datei definiert Sie initialisiert die GPIO Schnittstelle Sollte diese Funktion einen Fehler feststellen liefert sie keine logische 0 zur ck 0 ist aber das Gegenteil von falsch also wahr 1 Somit wird auch der Befehl hinter der if Anweisung ausgef hrt Da steht aber return der Befehl der die main Funktion sofort beendet und eine 1 bergibt was ja soviel hei t wie Fehler wie wir inzwischen wissen Ganz sch n verschachtelt das Ganze oder Blickt ihr noch durch Diese if Anweisung macht also zwei Dinge gleichzeitig Erstens Sie initialisiert die GPIO Schnittstelle Zweitens Sie stellt fest ob beim Initialisieren ein Fehler auftritt und teilt das dann dem Hauptprogramm mit Ja das ist schon gehobener c Programmierstil Den werden wir uns nat rlich merken und sp ter selbst anwenden Es folgen drei Funktionsaufrufe der Funktion bcm2835_gpio_fsel Diese Funktion wurde wieder im Header File bcm2835 h definiert und sagt der GPIO Schnittstelle welche Pins Ausg nge sind Per default also wenn nicht anderes mitgeteilt wird sind die GPIO Pins n mlich Eing nge Das ist bliche Praxis bei Microcontrollern denn so ist sichergestellt das nicht irgendwelche Spannungen anliegen die zuf llig kurzgeschlossen werden und den Broadcom Microprozessor zerst ren k nnten Das erste Argument in der runden Klammer von Dcm2835 gpio fsel haben wir mit define
39. Il LOW bcm2835 gpio write SERVO2 HIGH delayMicroseconds 1750 bcm2835 gpio write SERVO2 LOW delay 15 Mein Programm ist f r euch nat rlich nur ein Beispiel um erst mal anzufangen Ihr m sst zum Compilieren wieder einen Makefile schreiben aber ihr wisst ja jetzt wie das geht Um die richtigen Mikrosekunden zu finden habe ich meine Ameise aufgebockt sonst reifst mir das Mistvieh immer die Leitungen raus Frei laufen kann die Ameise so noch nicht denn ich habe immer noch Tastatur Maus und Monitor an den Raspberry Pi angeschlossen Aber das f hrt uns zum n chsten Kapitel 12 Die Ameise fernsteuern mit ssh Eine super praktische Sache um von einem Rechner einen anderen fernzusteuern ist SSH SSH erm glicht eine verschl sselte Verbindung zwischen zwei Rechnern ber ein unsicheres Netzwerk Der eine Rechner ist der Raspberry Pi der andere Rechner ist ein PC oder Laptop Wie wir den Raspberry Pi ber den WLAN Haus Router ans Internet bringen haben wir schon besprochen Der PC sollte auch eine Verbindung zu dem Haus Router haben Dabei ist es egal ob ber WLAN oder ber Ethernet Kabel Sch n w re es wenn der PC oder Laptop ein LINUX Betriebssystem hat denn damit kennen wir uns ja jetzt schon ein bisschen aus Apple ist wie LINUX ein Unix artiges Betriebssystem und geht wahrscheinlich auch Ich hab es aber nicht ausprobiert Falls wir keinen LINUX PC haben gibt es zwei M glichkeiten 1 Wir installieren LINUX als zw
40. Immer wenn wir Befehle oder Programme mit voran gestelltem sudo ausf hren werden wir erst mal nach dem Passwort gefragt Nachdem wir das Passwort f r root eingegeben haben kommen jede Menge Informationen Wie ihr seht habe ich zwei Laufwerke sda mit 60 GB das ist meine SSD und sdb mit 500 GB das ist meine Festplatte Auf sda gibt es zwei Partitionen Auf der Partition sdal habe ich mein LINUX Betriebssystem und die Programme Die zweite Partition sda2 ben tigt LINUX intern Meine Daten habe ich auf der Festplatte sdb Auf sdb gibt es 3 Partitionen Die Laufwerke sda und sdb sind also f r dd unbedingt tabu sonst ist alles hin Um heraus zu bekommen wie unsere SD Karte hei t legen wir diese jetzt in den SD Karten Leser des LINUX PCs und geben den Befehl erneut ein axel LINUX gt sudo usr sbin fdisk 1 root s password Disk dev sda 60 0 GB 60022480896 bytes 32 SSD steht f r solid state disk Eine SSD ist schneller als ein Festplattenlaufwerk und so booted mein Rechner schneller 33 Der Name Festplatte stammt noch aus der Zeit als viel mit Floppylaufwerken gearbeitet wurde Floppy heifst eigentlich felxibel und damit meinte man eine runde flexieble Magnetscheibe die in so einer Art quadratischem Briefumschlag mit L chern steckte Im Gegensatz zu Floppies die man tauschen konnte wie heute CDs bestehen Festplatten aus mehreren starren bereinander angeordneten Magnetscheiben die sich in staubfrei abgedichteten Geh
41. OS MBR RPI xems rhidde ee space 24 GB otl 4 1 GB Abbildung 16 Der File Manager mit dem Inhalt des Ordners ErstesProjekt Starten wir also wieder mit Rechtsklick auf die Datei Hello world cpp den Emacs und editieren sie bis sie aussieht wie in Bild 17 Worauf es ankommt ist eigentlich nur die letzte Zeile in die ich jetzt im printf bei der Format Anweisung f r die Integer Zahl ein n eingef gt habe Dadurch sollte jetzt nach der Ausf hrung des Programms HelloWorld der Prompt in einer neuen Zeile stehen Wir klicken erst mal oben in der Leiste auf Tools Es ffnet sich ein Pulldown Men in dem wir auf Compile klicken Jetzt erscheint ganz unten im Emacs eine Zeile in der steht 148 brigens geben wir mit dem vor dem Prorammnamen nur an das wir es aus dem Verzeichnis starten wollen in dem wir gerade sind 149 Den File Manager k nnen wir auch bequem von der Kommandozeile aus ffnen mit dem Befehl pcmanfm Wenn ihr im File Manager auf Help klickt wisst ihr woher ich diesen Befehl habe Seite 39 Compile command make k Hier dr cken wir einfach die weiter Taste Jetzt werden wir gefragt Save file home pi c Progs ErstesProjekt Hello_world cpp y n Wir geben nat rlich y f r yes ein Der Compiler macht jetzt genau das was im Makefile steht Das teilt Emacs uns auch in dem mittleren Fenster mit Wenn wir das ganze wiederholen stellt das Programm make
42. Raspberry Pi jetzt starten also die Stromzufuhr am Micro USB Stecker herstellen sollten wir jetzt nach einiger Zeit das folgende Bild sehen Ist das nicht der Fall weil wir zum 54 Die Benutzeroberfl che das ist der Teil des Betriebssystems der die Fensterverwaltung bernimmt ist bei Raspbian LXDE Diese Abk rzung steht f r Lightweight X11 Desktop Environment Es ist sozusagen Leichtgewicht unter den Benutzeroberfl chen und ben tigt wenig Specher und Rechenleistung und ist daher sehr gut f r den Raspberry Pi geeignet 55 tool hei t auf englisch Werkzeug Unser gestartetes Programm raspi config das uns dieses Men zur Verf gung gestellt hat wird auch als tool bezeichnet 56 Das Herunterfahren ist das Gegenst ck zum Booten Hier werden alle Programme beendet und die Prozesse ordentlich abgeschlossen Seite 22 eine andere Einstellung gew hlt haben sollten wir jetzt den Befehl Beispiel in boot_behaviour startx eingeben iFi Config 3 S rarcti SA a Abbildung 10 Montiorbild nach dem Starten des Raspberry Pi Wir sehen jetzt die Benutzeroberfl che von LXDE LXDE wurde 2006 von dem Taiwaner Hong Yen Lee ins Leben gerufen und erfreut sich nicht nur seit dem internationaler Beliebtheit und sondern hat auch die Unterst tzung von vielen Entwicklern gefunden Unten auf dem Desktop finden wir die Task Leiste Klicken wir mit der linken Maustaste ganz links unten auf das
43. Seite 1 Bau und Programmierung einer Raspberry Pi Roboter Ameise Mit einer Einf hrung in LINUX und c c copyright 2014 by Forrest Black analog photonics com Seite 2 1 Einleitung In diesem Buch wird beschrieben wie wir mit dem kleinen LINUX Rechner und ein paar Servos aus dem Modellbau eine Roboter Ameise zum Laufen bringen Diese Roboter Ameise k nnen wir dann autonom laufen lassen oder mit einem alten Laptop fernsteuern Als kleinen LINUX Rechner verwenden wir hier den Raspberry Pi mit dem sich ohne weitere Elektronik die Servos direkt ansteuern lassen Es reichen 3 Servos die jeweils zwei Beine antreiben Servos bekommt man schon f r ca 3 und der Raspberry Pi ist f r ca 30 zu haben Die Festplatte unseres LINU X Rechners ist eine SDHC Karte mit mindestens 4 GB die etwa 7 kostet Wir brauchen auch noch einen Monitor mit DVI oder HDMI Anschluss sowie eine Tastatur und Maus jeweils mit USB Anschluss Ein 4 Port USB Hub mit Netzteil ist auch hilfreich Der bernimmt dann gleich die Spannungsversorgung Als Gestell reicht ein kleines Sperrholzbrett das wir uns zurecht s gen oder wir stellen uns eine Platine her F r die Funkverbindung brauchen wir noch einen WLAN USB Adapter der f r etwa 12 zu haben ist Kleinteile wie Stecker Kabel Schrumpfschl uche L tzinn und der gleichen besorgen wir nach und nach Es ist gut wenn wir einen Elektronikh ndler in der N he haben sonst bestellen wir bei
44. ach folgt eine weitere while Schleife mit einer Pulsdauer von 1200 ps die auch noch 99 mal durchlaufen wird und das Servo in die andere Richtung dreht Dann f ngt alles wieder von vorn an und immer so weiter bis wir Ctrl C dr cken oder den Stecker ziehen Zu diesem Programm erzeugen wir uns nat rlich noch einen geeigneten Makefile und kompilieren das Ganze Das geht wie beim Blinken der LEDs 11 Die Ameise lernt laufen Wir wissen jetzt alles um unserer Ameise das Laufen bei zu bringen Ihr k nnt also eigentlich schon loslegen und selbst einen Sourcecode schreiben denn ihr wisst ja jetzt wie das geht Ich habe das auch getan und euch meinen kompletten Sourcecode im Anhang abgedruckt Den gibt es aber nat rlich auch auf der CD Mein Programm arbeitet mit Eingaben so dass ich auch noch steuern kann ob die Ameise vorw rts r ckw rts nach rechts oder nach links l uft Hier k nnen wir meinen Sourcecode St ck f r St ck meinen Sourcecode einmal durchgehen Ich habe zun chst einmal einen Kommentarblock geschrieben geschrieben antVOl c Program to drive 3 servos using bcm2835 library on a Raspberry Pi 0 0 legs IN IN 201 Den Stecker ziehen wir nur im u ersten Notfall sonst m ssen wir ja wieder booten und das h lt nur auf Seite 59 cr Sl S2 53 servos 0 0 0 legs Servo S1 and S2 are turning right and left Servo S3 is turning up and
45. berrypi NER SSID WLAN huelsmann Authentication WPA Personal PSK Encryption TKIP PSE EFFFFEFEEF EFF FF E E EAP method Mo Identity 993 Password EE cAcetificate WEF keys i keyg Optional Settings IpString Priority Inner auth d VPS Save Remove Abbildung 13 Die Einstellungen f r die Verbindung zum WLAN Router Wie ihr seht werden die Eintr ge aus Scan gr tenteils in Abbildung 13 bernommen Zum Beispiel steht bei SSID der Name eures WLAN Routers In der Zeile darunter steht hinter Authentication eines der Verschl sselungsverfahren das mit Scan gefunden wurde und in eckigen Klammern stand Darunter steht hinter Encryption das Entschl sselungsverfahren das mit dem Scan gefunden wurde und auch in der eckigen Klammer stand Wir machen also nichts falsch wenn wir hier nichts ver ndern Jetzt m ssen wir in PSK nur doch das Passwort unseres WLAN Netzwerks eingeben Wenn ihr das nicht kennt m sst ihr denjenigen fragen der den WLAN Router eingerichtet hat Dieses Passwort sollte nicht zu einfach und schon gar nicht leicht 96 SSID steht f r service set identification Das ist einfach der Name des WLAN Netzwerks Diesen Namen vergibt man wenn man den WLAN Router anlegt Falls man bei der Einrichtung des WLAN Routers keinen Namen angegeben hat hei t er so wir er vom Hersteller angegeben wurde Eine SSID hat jedes WLAN Net
46. chrauben Bindedraht USB Kamera Seite 71 16 2 LINUX Befehle info help man ls Is l Cd cd mv rm top mkdir rmdir sudo gcc i Linus Torvalds David Diamond Just for Fun Wie ein Freak die Computerwelt revolutionierte Die Biographie des LINUX Erfinders Deutscher Taschenbuch Verlag 2002 ISBN 10 3423362995 ii Michael Kofler LINUX Studentenausgabe Addison Wesley Verlag 2009
47. dazu auf das Lupen Symbol in der oberen Leiste des Emacs Das seht schneller als den ganzen Text zu scrollen Seite 56 k nne wir also auch ruhig die Befehle delay und delayMicroseconds verwenden Aber schauen wir uns die Definition der Funktion St ck f r St ck an um zu verstehen was da abgeht Die Definition beginnt mit einem Spezifizierer hier extern Der Emacs hat erkannt dass es sich dabei um einen Spezifizierer handelt und ihn violett eingef rbt extern bedeutet dass die nachfolgende Funktion oder Variable berall verwendet werden kann also auch au erhalb der Funktion in der sie vorkommt F r uns ist das nicht so wichtig denn wir werden die delay Funktionen innerhalb der main Funktion aufrufen Es folgt die Angabe des R ckgabe Typs Die delay Funktionen geben aber keinen Wert zur ck sie rechnen ja nichts aus sie warten nur Die Bezeichnung eines Typs den es gar nicht gibt ist in c c void Innerhalb der Funktionsklammer steht noch unsigned int Dies bedeutet dass die ganze Zahl die der Funktion bergeben wird im Gegensatz zu nur int nicht negativ sein darf Typenbezeichnungen d rfen bei der Definition von Funktionen in c c Programmen niemals weggelassen werden da der Compiler sonst nicht wei wie viel Speicherplatz er f r die Funktion reservieren soll Ach ja die Hardware N he von c c l sst wieder gr en Jetzt haben wir Alles was wir brauc
48. dem habe ich gleich drei LEDs mit Widerst nden mit den GPIO Pins GPIO10 GPIO9 und GPIO11 verbunden Das sind die Pins 19 21 und 23 Der Pin 25 ist GND Die anderen Kabel h ngen einfach in der Luft Meinen Aufbau k nnt ihr in Bild 23 bewundern b i UG Widerst nd Abbildung 23 Drei LEDs mit P1 angeschlossen 9 2 2 Die Software Jetzt muss das Ganze noch ber ein Programm angesteuert werden Dazu gehen wir von Mike s Beispiel blink c aus das wir im Verzeichnis home pi bcm2835 1 17 examples finden Wir ffnen es mit dem Emacs und speichern es gleich wieder unter einem neuen Namen und in einem neuen Verzeichnis indem wir auf File und dann Save as klicken Wir wechseln jetzt zu dem Verzeichnis c Progs und legen ein neues Verzeichnis mit dem Namen ZweitesProjekt an Der Datei geben wir jetzt den Namen dreiLEDsblinken cpp Wenn ihr wollt k nnt ihr nat rlich auch auf die Kommandoebene und mit den Befehlen cd Is mkdir und cp das selbe Ergebnis erzielen Wenn ihr es nicht auf Anhieb schafft seid ihr in bester Gesellschaft ben und ausprobieren sind der Schl ssel zum Erfolg Ich koch mir wenn klappt dann immer eine Tasse Kaffee zur Belohnung Bei Misserfolgen sp le ich den Frust mit dem Kaffee runter und probiere es sp ter nochmal Wir ndern jetzt erst mal die erste Kommentar Zeile von Mike s Programm in dreiLEDsblinken cpp ab und lesen uns durch was Mike uns so geschrieben hat Mi
49. der Mitte der Grundplatte bewegen Die Position des mittleren Servos habe ich mir auf dem Brettchen wieder mit Bleistift angezeichnet An die Seiten des Servos habe ich kleine Holzst ckchen geleimt Diese Holzst ckchen habe ich von einer erbeuteten ausgebrannten Silvesterrakete und mir zurecht ges gt Ich bin mir fast sicher ihr findet auch etwas passendes ohne euren Etat berm ig zu strapazieren Das dritte mittlere liegende Servo habe ich dann nur noch mit zwei d nne Holzschrauben angeschraubt Auch hier ist Vorbohren ratsam 14 Der von Ephraim Kishon beschrieben Monoschraubismus hat sich auch hier nicht bew hrt Seite 8 I y x 4 ER NN ha E T t E 6s 9 PI Sm Die mit einfachen Mitteln zusammen gebaute Roboter Ameise Abbildung 2 Details vom Einbau des vorderen und mittleren Servos auf der Grundplatte seht ihr in Bild 3 Man kann auch deutlich die beiden fest geleimten Holzkl tzchen rechts und links vom mittleren Servo sehen die dieses fixieren uc MP u Fr Tu pe ct E bes N 2 Ber S Abbildung 3 Details vom Einbau des vorderen und mittleren Servos Seite 9 Die Position des hinteren und mittleren Servo auf der Grundplatte seht ihr in Bild 4 Die beiden Holzs ulen nach oben verwende ich als Halterung f r die Platine des Raspberry Pi Abbildung 4 Hinteres und mittleres Servo auf der Grundplatte 2 2 Die Stromversorgung Auf der R ckseite der Grundplatte habe ich den Batteriehalter f r die S
50. die Aussparung entnehmen wir dem Datenblatt der Servos 13 FreeCAD ist ein kostenloses 3d CAD Programm dass auf den Betriebssystemen LINUX Apple und Windows funktioniert Es kann bei Sourceforeg unter http sourceforge net projects free cad herunter geladen werden Es wird von J rgen Riegel und Werner Mayer betreut und spricht auch deutsch wenn s denn sein muss Es versteht die g ngigen Datei Formate f r CAD Zeichnungen wie DXF SVG STEP und IGES Seite 6 amp BR FreeCAD Datei Bearbeiten Ansicht Werkzeuge Makro Formteil Einfach Parametrisch Fenster Hilfe Aue mis 59 6 Hit E Rio 2er N TEITAASS ago4aeajgefsonutsd q 5 Combo Ansicht o x Projekt Aufgaben Bezeichnungen amp Eigenschaften Applikation v grundplatte gt amp Cut003 Abbildung 1 Die Sperrholz Grundplatte mit den Aussparungen f r die Servos gezeichnet mit dem Pogramm FreeCAD Ich habe Schrauben mit einem gro en Kopf genommen die ich beim Ausschlachten eines alten Computers erbeutet habe Nachdem ich die Servos probehalber in die Grundplatte gesetzt habe habe ich mir mit Bleistift Markierungen an den Schraubstellen gemacht F r die Schrauben habe ich etwas kleiner L cher als den Durchmesser der Schrauben gebohrt und dann mit den Schrauben Gewinde ins Holz geschnitten Das dritte Servo wird gelegt eingebaut weil es mit seinen zwei Beinchen die Ameise hin und her kippen soll Die mittleren Beinchen sollten sich in
51. dpl tte mit den Seyvos nn ea 6 22 DIE SOR VOrSOFB Ug een 11 2 3 Beine biegen aaa ERINNERT 14 3 Erste Begegnung mit dem LINUX Rechner Raspberry Pi eese enn 14 3 1 Das Betriebssystem Raspbian auf eine SD Karte laden mit Hilfe eines LINUX PC 15 3 2 Das Betriebssystem Raspbian auf eine SD Karte laden mit Hilfe eines Windows PC 18 3 3 Das Betriebssystem Raspbian auf eine SD Karte laden mit Hilfe eines Apple PC 19 4 Den Raspberry Pi zum ersten mal booten u 22222200000000020000000000000nn0 0 eere eene nentes saneta stessa ns 19 MAIDEN ED oT 21 d 5 expahti TOOL sapi usto eisen 21 IE OVE CI ee see ER 21 44 contiguresKeyDOSPG and Dada 21 A chante Dass ous ecrit MEDI MA ME DE E Ui IC 22 ZEO Chances TOEle nenne ee iin 22 d change EIHIeZ OTIO asien 227 ZO MEMO DID sauna anni 22 A OVO O oon menn rear eue sins ORUM Mun ta DE 22 EOS eint MMC IEEE SU MINIME MI E 23 Z1 lDoOt DEDOS IOUE Seesen areas ste 23 4 12 Update NER RR E E A TO T O E OO S N 23 5 Mit LINUX etwas vertraut werden ac u 23 551 LINUX Verzeichnis System cm 26 3 2 Die Rechte der LINUX Benut ee kaike 27 O MBIENVISETIHS IMEET io Eoi a bees die te telis bored epe dd bots bne tuae as 28 7 Der Editor Endes ocio on Ste D o erlegen een 34 8 Kleine Einf hrung in die Computersprache c cH uuuueeeseessessensnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnonnsennnen 36 8 1 Den Sourcecode eines einfachen Programms sc
52. e weiter Taste wird auch h ufig mit Return bezeichnet oder auch neue Zeile 151 Ein Programm das uns mit einer grafischen Benutzeroberfl che beim Programmieren hilft wird auch IDE genannt IDE steht f r integrated development environment oder integrierte Entwicklungsumgebung Seite 40 Abbildung 18 Die 26 polige Stiftleiste mit de Bezeichnung P1 Hier finden wir die GPIOs Auf der Stiftleiste befinden sich einige GND pins 5 Volt und 3 3 Volt Spannungen und die GPIO s Es gibt inzwischen mehrere Versionen des Raspberry Pi Als ich dieses Buch schrieb war die Revision 2 die neueste Leider hat sich dadurch die Pin Belegung leicht ge ndert Die Bedeutung der einzelnen Pins ist in Tabelle 1 definiert Pin 1 ist auf der Platine dadurch besonders gekennzeichnet Das L t Pad ist nicht rund sondern quadratisch ist 152 GND steht f r ground Auf deutsch wird das mit Masse oder Erde bersetzt Damit ist das Bezugssystem der Spannungen gemeint GND ist das Bezugs Potential und hat die Spannung OV 153 GPIO steht f r general surpose input output Gemeint sind damit frei programmierbare Anschl sse zur Ein und Ausgabe Seite 41 Pull Rev 1 Rev 2 Pin Pin Rev 2 Rev 1 Pull 1 o Oe high m 9 high ma high ua low D D ue low low me O low low rue 9
53. ed 1 int i 0 while i speed i bcm2835 gpio write SERVO1 delayMicroseconds 1700 bcm2835 gpio write SERVO1 bcm2835 gpio write SERVO2 delayMicroseconds 1750 bcm2835 gpio write SERVO2 bcm2835 gpio write SERVO3 delayMicroseconds 1600 bcm2835 gpio write SERVO3 delay 15 HIGH LOW HIGH LOW HIGH LOW HIGH LOW HIGH LOW HIGH LOW Seite 65 void down int speed 1 int i 0 while i speed i i bcm2835 gpio write SERV0O1 HIGH delayMicroseconds 1700 bcm2835 gpio write SERVOIl LOW bcm2835 gpio write SERV02 HIGH delayMicroseconds 1750 bcm2835 gpio write SERV02 LOW bcm2835 gpio write SERVO3 HIGH delayMicroseconds 1250 bcm2835 gpio write SERVO3 LOW delay 15 Ich hatte anfangs Schwierigkeiten eine Drehbewegung hin zu bekommen bis ich die Funktionen turnright und turnleft eingef hrt habe Dann habe ich das mittlere Servo 3 einfach in der Ansteuerung weg gelassen und dann ging s void turnright int speed i int i 0 while i speed i i bcm2835 gpio write SERVOIl HIGH delayMicroseconds 1000 bcm2835 gpio write SERVOIl LOW bcm2835 gpio write SERVO2 HIGH delayMicroseconds 1000 bcm2835 gpio write SERVO2 LOW delay 15 Seite 66 void turnleft int speed i int i 0 while i speed 1 i bcm2835 gpio write SERVOIl HIGH delayMicroseconds 1700 bcm2835 gpio write SERVO
54. ein Ergebnis von Scan Bei euch sieht das so hnlich aus Ich habe nur einen Eintrag von meinem WLAN Netzwerk mit dem Namen WLAN huelsmann Ihr findet hier jetzt eine Zeile mit dem Namen von eurem Netzwerk und m glicherweise auch noch die Namen der Netzwerke eurer Nachbarn Ich habe diese Fenster etwas in die Breite gezogen um alles zu sehen denn hier stehen einige n tzliche Informationen Zum Beispiel arbeitet mein Netzwerk bei einer Frequenz von 2 457 GHz Die Signalst rke mit der mein USB WLAN Adapter meinen WLAN Router empf ngt betr gt 73 dBm Das ist nicht viel aber da k nnten auch noch kleinere Werte stehen bis der Empfang schlecht wird In der Spalte flags steht bei mir WPA PSK TKIP WPA2 PSK CCMPI ESS Hier teilt uns mein WLAN Router mit wie die bertragungsdaten verschl sselt werden damit kein anderer sie mitlesen kann Ihr solltet diese Zeile doppelklicken damit ihr das folgende Fenster steht 93 Falls hier gar nichts steht solltet ihr es mit erneutem booten versuchen Falls dann immer noch nichts da steht m sst ihr mal schauen ob ihr den USB wlan Adapter ber einen USB Hub mit separater Stromversorgung anschlie en k nnt Manchmal hilft auch den wlan Adapter direkt in den Rapberry Pi zu stecken und Maus und Tastatur ber den Hub zu versorgen Ich hatte jedenfalls mit manchen Pi Platinen Schwierigkeiten und hab nicht herausbekommen warum Irgendwann klappte es aber immer 94 Gigahertz GHz also e
55. einste adressierbare Speichereinheit Seite 61 der switch Befehl Den muss ich euch hier kurz erkl ren Ihr habt bereits die if Verzweigung kennen gelernt Zur Erinnerung Wenn in der runden Klammer hinter dem if etwas wahres stand dann wurde der Befehl dahinter ausgef hrt Stand da etwas falsches wurde dieser Befehl ignoriert Bei der switch Anweisung wird geschaut was in der runden Klammer hinter switch steht und davon wird abh ngig gemacht welche Befehle jetzt ausgef hrt werden sollen Alle Befehle die aufgrund der switch Anweisung ausgef hrt werden sollen stehen in einem Block der mir geschweiften Klammern eingerahmt wird Es ist wieder guter Programmierstil zur besseren Lesbarkeit den Sourcecodes der Befehle die zusammen geh ren gleich weit einzur cken Die Befehle die zusammengeh ren werden mit der Anweisung case am Anfang und break am Ende eingerahmt Falls also der Fall eintritt das in der Variablen key ein b steht wird alles zwischen case b und break ausgef hrt sonst werden diese Befehle bergangen Die switch Verzweigung wird also noch auf r und g gepr ft Falls keiner der Buchstaben in der Variablen key steht wird default ausgef hrt while 1 this is the main loop i key getchar switch key i case b left speed up speed right speed down speed break case l left speed turnright speed
56. eites Betriebssystem 208 SSH steht f r secure shell sichere shell Was eine shell ist wisst ihr noch von der bash 209 Ich bevorzuge OpenSuse mit KDE OpenSuse kann man sich im Zeitschriftenhandel als Beilage CD besorgen dann hat man auch gleich eine Installationsanleitung oder man l dt es bei www opensuse org direkt herunter und brennt 2 Seite 67 Wir verwenden das Programm PuTTY unter Windows Auf dem Raspberry Pi haben wir ja schon daf r gesorgt das ssh l uft Falls nicht schauen wir uns das noch mal in Kapitel 4 10 auf Seite21 an 12 1 PuTTY unter Windows Diese Kapitel kann berschlagen werden wenn wir einen LINUX PC zur Verf gung haben Bei einem Windows PC installieren wir zun chst das Programm PuTTY Um sicher zu stellen dass wir nicht einem Freeware Piraten 1 2 3 4 5 6 7 auf dem Leim gehen gehen wir folgenderma en vor Wir gehen mit dem InternetExplorer oder dem Firefox auf die Webseite de wikipedia org Dort geben wir im Suchfeld PuTTY ein Wikipedia gibt h ufig einen Web Link zu den Originalseiten im Internet an Das ist sicherer als ber Google zu gehen da es nur eine M glichkeit gibt Diese kann zwar auch gef lscht sein doch das kommt sehr selten vor und wird au erdem von der Comunity schnell gemerkt und korrigiert Von dort laden wir uns das Installationsprogramm putty 0 62 installer exe herunter Es k nnte inzwischen sein das es inzwi
57. en 174 include hei t einf gen 175 Header Dateien enthalten c c Sourcecode dessen Anweisungen zuerst compiliert wird Wir hatten das schon mal im ErstenProjekt mit der stdio h Seite 48 Datei mit gleichem Namen aber der Endung c oder cpp in der die Arbeitsweise der Funktion beschrieben ist Meistens interessiert uns das gar nicht so genau Wir wollen nur wissen was die neuen Funktionen k nnen Wie sie das machen berlassen wir anderen Die Header Datei bcm2835 h von Mike definiert einige ganz nette Funktionen mit denen wir nicht nur die GPIOs steuern k nnen Diese schauen wir uns noch im Detail an Es folgen einige define Anweisungen an den Compiler Define Anweisungen sind leicht zu verstehen Anstelle eines langen Bandwurms hier zum Beispiel RPI GPIO P1 09 k nnen wir jetzt im Sourcecode kurz und pr gnant LED1 schreiben 176 define hei t definiere 177 Wenn wir einen neueren Raspberry Pi der Revision 2 haben sollten wir hier statt RPI GPIO P1 xx RPI V2 GPIO P1 xx schreiben da sich die Pin Belegung inzwischen ge ndert hat xx steht nat rlich f r die Pin Nummer an P1 Schaut euch dazu Tabelle 1 genauer an Seite 49 o Ml emacs linux blai V uve i6 File Edit Options Buffers Tools C Help M Ej x gj save SrgUndo d T Q int main int argc char argv 1 if bem2835 init return l Set the pin to be an output bcm2835 gpio fsel LEDI BCM
58. en Motor mit Getriebe und einer elektronischen Ansteuerung und trotz seines geringen Preises ein mechatronisches Wunderwerk 2 Autonom bedeutet das der Roboter von allein laufen kann und z B Hindernissen selbst ausweicht 3 Zu deutsch Himbeerkuchen Entwickelt wurde dieser Einplatinen Computer von einer Wohlt tigkeitsorganisation in England die sich zum Ziel gesetzt hat in Schulen die Informatik zu f rdern siehe www raspberrypi org 4 SDHC Speicher Karten sind der Standard vieler Kameras Tablets Netbooks und manchmal auch von Handys SD steht f r secure digital zu deutsch sicher digital HC steht f r high capacity also hohe Speicherkapazit t Die Karten sind 2 4 x 3 2 cm gro und 2 1 mm dick und haben 9 elektrische Kontakte Die SDHC Karten sind nach der Schreibgeschwindigkeit klassifiziert Class 6 bedeutet 6 MB s SDHC Karten sind nicht fl chtige Speicher das hei t sie behalten ihre Information auch wenn keine Versorgungsspannung anliegt 5 Haben wir am Monitor nur einen DVI Eingang so ben tigen wir ein HDMI zu DVI Kabel VGA unterst tzt der Raspberry Pi leider nicht daf r kann man aber versuchen den analogen Video Ausgang mit einem Fernseher zu verbinden 6 Schrumpfschl uche sind kleine Plastikr hrchen die sich zusammenziehen wenn es ihnen zu hei wird Seite 3 Seite 4 Inhaltsverzeichnis LE MEIN ee 2 2 De Roboler Ameise sis Gom dom pct db fd inm oc a E e abeunt xu d 6 2 1 Die Grim
59. en f r das neu angelegte Verzeichnis ein 118 Blank File ist eine Datei in der nichts aber auch gar nichts drin steht Seite 33 8 1 Den Sourcecode eines einfachen Programms schreiben und verstehen Nach etwas Geduld ffnet sich der Emacs und wir k nnen damit beginnen unser erstes und zugegeben etwas dummes Programm zu schreiben Die Nummerierung am Zeilenanfang tippen wir nicht mit ein Wir schreiben folgenden Sourcecode Dateiname Hello world cpp Programmierer Axel Datum Mersion 0 0 include lt stdio h gt main 1 int A A 815 printf Hallo WeltXn printf i A oo oo Ui A W N HG HB e He Ha W N H C 14 Die Zeilennummerierung am Anfang sind nur Bezugsnummern und werden im Programmcode nicht eingegeben Gehen wir den Sourcecode mal Zeile f r Zeile durch Die Zeile 1 beginnt mit zwei Schr gstrichen Alles was in einer Zeile hinter zwei Schr gstrichen steht hat f r den Computer keine Bedeutung Es steht da nur f r uns Bis zur Zeile 4 stehen da also nur Informationen die dazu dienen dass wir auch nach Jahren diesen Sourcecode zuordnen k nnen Die Zeile 5 ist eine Leerzeile und hat auch keine Bedeutung und dient nur der besseren Lesbarkeit Die Zeile 6 beginnt mit einem Dahinter steht mit include eine Anweisung an den Compiler Dieser soll den Programmteil stdio h aus einer Programmbibliothek zu benutzen Er steht in spitzen Klammern Das bedeute
60. ene des Raspberry Pi von entfernten Rechnern zu bedienen Es gibt auch Optionen von ssh die es erlauben Grafik Fenster zu bertragen zum Besispiel ein Kamera Bild Davon werden wir im Laufe des Projekts ausgiebig Gebrauch machen und wir schalten die ssh F higkeit ein enable 4 11 boot behaviour Hier k nnen wir einstellen ob wir beim Start direkt auf die grafische LXDE Oberfl che wollen oder nicht Wir k nnen falls wir hier No eingegeben haben aber auch jederzeit auf der Kommandoebene startx eingeben und wechseln dann im Nachhinein auf die grafische Benutzerberfl che 4 12 update Dies ist der letzte Eintrag des Men s Wenn der Raspbery Pi eine Netzwerkverbindung zum Internet hat versucht er hier das Tool raspi config zu aktualisieren Durch das dr cken der Tabulator Taste kommen wir zu lt Finish gt und k nnen damit das Men beenden Ich empfehle den Raspberry Pi jetzt neu zu starten Dazu sollte man ihn ordentlich herunterfahren Dazu verwenden wir auf der Kommandozeile den Befehl sudo shutdown now Auf der grafischen Benutzeroberfl che klicken rechts unten aud das kleine rote K stchen mit der 1 im Ring und w hlen dann Shutdown Jetzt m ssen wir etwas warten bis der Bildschirm keine Meldungen mehr liefert und die gr ne ACT Leuchtdiode nicht mehr blinkt Vorsichtshalber warten wir noch etwas bevor wir den USB Stecker der Stromversorgung ziehen 5 Mit LINUX etwas vertraut werden Wenn wir den
61. er schwarze Hintergrund im Kommandozeilen Fenster st ren k nnen wir durch klicken auf Edit und dann auf Prefrences die Hintergrund Farbe ver ndern Mit ls k nnen wir uns wieder anzeigen was im Verzeichnis drin steht Auf der Kommandozeile starten wir jetzt das configure Programm mit dem Befehl configure Es folgen jede Menge Informationen die die Abh ngigkeiten mit anderen Installationspaketen berpr fen und bei Erfolg die Installation durchf hren Jetzt m ssen wir noch den richtigen Makefile mit dem Programm make aufrufen mit dem Befehl make Anschlie end lassen wir noch von dem Programm make alles berpr fen mit dem Befehl sudo make check Ihr erkennt an dem vorangestellten sudo dass wir uns zuvor root Rechte besorgt haben Diese brauchen wir auch um die Bibliotek endg ltig zu installieren mit dem Befehl sudo make install Jetzt sind wir gut vorbereitet um ein erstes kleines c c Programm zu schreiben mit der wir eine am GPIO angeschlossene LED blinken lassen k nnen 9 2 Wir lassen LEDs blinken Eigentlich wollen wir ja Servos ansteuern aber es ist ganz gut wenn wir erst mal mit was Einfachem lernen wie die GPIOs angesteuert werden Wenn wir an den GPIOs Leuchtdioden blinken lassen k nnen ist das Ansteuern von Servos auch nicht mehr so schwer Beginnen wir also mit etwas Hardware Die GPIO Pins am Raspberry Pi k nnen wenn sie als digitale Ausg nge programmiert sind Spannungen von
62. er unn tig Damit dr ckt man aus dass alle Befehlszeilen mit der gleichen Einr ckung zusammen geh ren Jetzt folgt die erste richtige Befehlszeile des Programms Wir definieren eine Variable mit dem Namen A Vor A steht das Wort int Damit zeigen wir an das die nachfolgende Variable vom Type Integer ist Jede Variable muss einen Type haben denn damit ist geregelt wie viel Speicherplatz die Variable bekommt ah ja die Hardware N he von C In Zeile 11 wird der Variablen A der Wert 815 zugewiesen In Zeile 12 steht der Befehl printf der daf r sorgt das unser Text in Hochkomma auf den Bildschirm ausgegeben wird Der Backslash gefolgt von dem n gibt an dass Nachfolgendes in einer neuen Zeile ausgegeben werden soll In Zeile 13 geben wir den Inhalt der Variablen A aus Dazu m ssen wir der Funktion printf mitteilen wie wir es gerne h tten Da wir eine Integer Variable ausgeben wollen verwenden wir die Formatanweisung i Formatanweisungen stehen immer in Hochkomma Jedes Programm und damit auch unser Hauptprogramm main wird eigentlich mit dem Befehl return beendet Wir lassen ihn weg denn der gcc ist manchmal genauso nachl ssig wie wir Danach folgt die geschlossene geschweifte Klammer und unser Programmcode ist fertig Wir speichern das ganze im Emacs verlassen den Emacs und kehren wieder auf die Komandozeile im LXTerminal zur ck um ein paar hil
63. fest das nichts zu tun ist mit dem Satz HelloWorld is up to date z em cs23 raspberrypi lt raspberrypi gt v File Edit Options Buffers Tools C Help E d 3 L3 Ed do 4 A Pogramm Name hello pi cpp Progarmmierer pi Version 2013 01 20 Dies ist ein ganz simples Programm mit dem wir feststellen ob der gcc richtig arbeitet Zinclude lt stdio h gt main int A A 815 printf Hello n pr ntf 1 n A Ie Hello world cpp All L17 C l Abbrev mode compilation default directory home pi c Progs ErstesProjekt Compilation started at Sat Jan 26 16 27 44 make k make Helloworld is up to date Compilation finished at Sat Jan 26 16 27 44 iw U compilation All L3 Compilation exit 01 Abbildung 17 Die ver nderte Datei Hello world cpp im Emacs nachdem sie compiliert wurde Eigentlich wollte ich euch in diesem Kapitel nur etwas c c beibringen Jetzt habt ihr auch noch etwas bash LINUX und make gelernt Au erdem k nnt ihr jetzt den Emacs als Programmierhilfe nutzen Nicht schlecht f r den Anfang 151 9 Der GPIO Stecker des Raspberry Pi Auf der Platine des Raspberry Pi befindet sich eine Stiftleiste mit 26 Stiften Die Stiftleiste hat die Bezeichnung P1 und befindet sich neben der gelben Video Buchse Bild 18 zeigt das entsprechende Detail der Platine 150 Di
64. freiche LINUX Befehle zu lernen 8 2 Mit der bash vertraut werden LINUX Befehle werden von einem Programm verarbeitet das bash hei t Die bash startet automatisch sobald wir das LX Terminal ge ffnet haben und wartet auf unsere Befehle Wir geben einfach mal den Befehl hallo ein Jetzt meldet sich die bash mit bash hallo command not found Ja hallo hallo ist kein LINUX Kommando das die bash versteht 129 130 ls Wir geben daher erst mal ein mit der Option und siehe da die bash versteht uns und 122 In c c wird ein Befehl nicht durch eine neue Zeile abgeschlossen Ihr k nntet auch mehrere Befehle in eine Zeile schreiben und jeweils durch ein trennen Ihr k nnt aber auch einen Befehl auf mehrere Zeilen verteilen 123 Integer Typen sind ganze Zahlen 124 Eine Variable ist eine Speicherstelle in der ein Wert abgelegt ist der auch ge ndert werden kann 125 In der Computerei wird alles was man irgendwie anfassen kann mit Hardware bezeichnet Umgekehrt ist Software der berbegriff f r Programme und Daten 126 print steht f r drucken und mit printf drucken wir eine formatierte Ausgabe auf die Konsole 127 return hei t hier soviel wie Geh zur ck wo du hergekommen bist 128 bash ist die Abk rzung f r bourne again shell also die wiedergeborne Shell Nein das hat hier nichts mit Matt Damon zu tun Unter einer Shell versteht man ein Programm mit dem man
65. g Seite 25 Write f r den Benutzer root und nur Read only f r alle anderen Das klingt jetzt etwas kompliziert ist es auch aber dadurch wird das System sehr sicher Bei LINUX werdet ihr nicht so schnell Probleme mit Viren bekommen denn der Virus wird nicht so schnell an die Rechte kommen um Dateien des Betriebssystems zu ver ndern 6 Mit Wi Fi ins Internet Wir wollen jetzt mit dem Raspberry Pi ins Internet Das geht mit dem Ethernet Anschluss und einem entsprechendem Kabel zu unserem Haus Router oder besser ber WLAN Ich gehe mal davon aus dass ihr einen WLAN Server in eurem Haushalt habt Falls nicht solltet ihr jetzt einen zum Beispiel bei ebay ersteigern Der Billigste tut es denn egal wie schnell und teuer eure Verbindung von eurem Internet Provider zu eurem Haus Router ist diese Verbindung ist eigentlich immer langsamer als die langsamste WLAN Verbindung zwischen eurem Computer und dem Router und die langsamste Verbindung in der Kette bestimmt die Geschwindigkeit Sp ter werden wir noch einen LINUX Labtop zum WLAN Router machen damit wir die Ameise auch ohne Haus Router fernsteuern k nnen Aber auch da ist die Geschwindigkeit nicht wirklich wichtig Ich lasse daher in der nachfolgenden Beschreibung alle Informationen weg die wir nicht brauchen Ich sollte noch erw hnen dass der billige WLAN Router als DHCP Server arbeiten sollte damit sich Labtops und auch der Raspberry Pi automatisch anmelden
66. gens haben alle Fenster nicht nur das Fenster des File Managers bei LXDE immer den gleichen Rahmen Ganz oben ist ein schwarzer Balken in dem eine n tzliche Information steht Rechts oben in dem schwarzen Balken gibt es drei Symbole Klicken wir auf das Linke von den dreien so verschwindet unser Fenster in der Task Leiste Ein Klick auf das Symbol in der Task Leiste und das Fenster ist wieder da Klicken wir auf das Mittlere nimmt unser Fenster den gesamten Desktop ein Wenn wir nochmal darauf dr cken nimmt das Fenster wieder seine urspr ngliche Gr e ein Mit dem ganz Rechten Symbol k nnen wir das Fenster schlie en Das funktioniert wie bei vielen anderen Betriebssystemen auch Aber klicken wir erst mal auf das Haus Symbol in unserem File Manager das neben dem pi steht Jetzt sollten wir oben in der Zeile so was wie home pi sehen und um zu verstehen warum das so ist m ssen wir uns etwas damit besch ftigen wie das LINUX File System aufgebaut ist Erfreulicher weise ist das sehr logisch so dass wir es wenn wir es verstanden haben was nicht schwer ist auch leicht merken k nnen 5 1 LINUX Verzeichnis System Die Verzeichnisstruktur bei LINUX ist wie ein Baum mit sten Unten ist die Wurzel und dann verzweigt es sich Bei home pi sind wir also schon auf dem Haupt Ast home und dem Unter Ast pi Zwischen den Verzweigungen steht bei LINUX immer der Schr gstrich Wir k nnen von unserem Ast pi
67. gs um ein directory handelt Jetzt kommen einige rwx oder Diese stehen f r read write und execute also lesen schreiben und ausf hren Die Ersten drei stehen f r die Berechtigung des owner Das sind wir Die n chsten drei stehen f r die group und die letzten drei f r alle Die Zahl die dann folgt ist erst mal unwichtig Dann kommt der Name des Besitzers owner das sind wir und der Name der Gruppe die hei t hier wie der Besitzer Dann kommt eine Zahl die die Gr e in Byte angibt Danach kommt das Datum mitsamt der Uhrzeit die angeben wann das Verzeichnis oder die Datei das letzte mal ver ndert wurde Und zum Schluss steht da noch der Name der Datei oder des Verzeichnisses Diese Informationen konnten wir uns auch vom File Manager besorgen da mussten wir dann ein bisschen rumklicken Ihr seht wenn man sich mit den LINUX Befehlen auskennt ist man auf der Kommandozeile schneller Kennt man sich weniger aus ist man mit klicken schneller Wir wechseln jetzt auf der Kommandoebene in das neue Verzeichnis c Progs Dazu benutzen wir den Befehl cd c Progs Der Prompt hat sich jetzt ver ndert und zeigt uns an das wir tats chlich gewechselt haben Mit Is oder Is 1 k nnen wir uns jetzt ansehen was in dem Verzeichnis ist brigens mit dem Befehl cd kommen wir wieder in das bergeordnete Verzeichnis zur ck 8 3 Ein c c Programm compilieren und
68. hen um mal ein Servo hin und her zu bewegen und wir legen einen neuen Ordner unter home pi c Progs an mit dem Namen DrittesProjekt In diesem Projekt Ordner erstellen wir einen neuen File mit dem Namen servo c Am einfachsten machen wir das indem wir aus dem Zweiten Projektordner den File dreiLEDsblinken c kopieren und umbenennen Dann brauchen wir nur die entscheidenden Stellen abzu ndern und sparen uns l stige Tipparbeit Das Programm ohne die Kommentarzeilen am Anfang seht ihr in Bild 30 Mit den beiden include Dateien erweitern wir wieder unsere M glichkeiten des Sourcecodes Die delay Funktionen und die Funktionen f r das Ansteuern der GPIO Pins holen wir uns ber die Header Datei bcm2835 h Die Ausgabefunktion printf wird durch die Einbindung des Header Files stdio h erm glicht Den PWM Eingang am Servo verbinden wir mit Pin 10 vom GPIO Stecker P1 GND holen wir uns von Pin 6 und die 5 Volt von Pin 2 oder 4 200 198 Genauer gesagt ein Typenspezifizierer Andere Beispiele f r Spezifizieren sind zum Beispiel unsigned und long 199 void hei t soviel wie egal 200 Eigentlich brauchen wir keine Ausgabe auf die Konsole um ein Servo zu bewegen Es ist aber ganz praktisch zu sehen ob das Programm berhaupt l uft falls wir Probleme mit dem richtigen Anschliessen des Servos haben Seite 57 G k emacsz3qraspberrypi lt raspbertypi un Me SKI File Edit Options Buffers Tools C
69. hreiben und verstehen 38 8 2 Mit der Dash vertraut werden sun nn 39 8 3 Ein c c Programm compilieren und ausf hren sess 40 BAM AKe MOS seen ee unseren este 41 9 Der GPIO Stecker des Raspben vP Luna eb 47 Jt Die SoftWare zum GPIO Stecker ae a Pone p Ea b b br b n ebd 50 9 2 Wir lassen LEDSDlinken ahnen ee eu 93 921 DETWI o ec n NT E 56 9 22 DIE SOWIE S date orna ENIM DA AELIAN Reese 98 9 2 3 Das Programm compilieren und ausf hren eese 63 IO SONO eC r 64 10 1 WieTunktiontert etm sw sao Ra ae 64 10 2 Servos ansteuern mit dem Raspberry Pi ccccceeceeeeeeeennnnnssnnnnnnnnnnnsnsnnsseeennnnnnnnsenunnanneennnn 67 T Die Xmierse Iernt laufen aaa 71 12 Die Ameise fernsteuern mit ssh 00000000000Rnennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnsnnnenenne 79 12 1 PU TY unter WIBGOWS ee ae ee 80 P2 SSA unter LINUX CR 82 12 3 Die Ameise zum Leben erwecken e oa a aE OOR TERTON ETE 82 I3 Eine Kamera A soda ME DM lea 82 Seite 5 14 Ein LINUX Dabtop als Fernsteuerung seen a FRA E FxHNH KY TOETATE 02 15 Den Staubrunterm Bett SUCBOD ido o is HERE ass 03 LANDANO T cee 83 16 L LIste ger Komponelen ns ee ee aaa 83 1952 TET Cuir p re ner 83 Seite 6 2 Die Roboter Ameise Eine mit einfachen Mitteln zusammengebaute Roboter Ame
70. hten gestartet werden kann z B root Wir brauchen also root Rechte um fdisk in dem Verzeichnis usr sbin auszuf hren und besorgen uns diese mit dem vorangestellten Befehl sudo Bei mir sieht das dann so aus axel LINUX gt sudo usr sbin fdisk 1 25 Partitionen sind Bereiche auf einem Datentr ger Bei Windows werden sie h ufig mit Buchstaben und einem Doppelpunkt gekennzeichnet z B C f r die erste Partition der Festplatte A und B wurden historisch f r Floppylaufwerke verwendet aber die kennt heute kaum noch jemand Bei LINUX hei en die Partitionen z B sdal oder sda2 26 Dateisysteme beschreiben wie die Dateien auf dem Datentr ger abgespeichert werden Das bekannteste Dateisystem ist FAT16 oder FAT32 file allocation table mit 16 oder 32 bit FAT kann von Windows Mac und LINUX gelesen und geschrieben werden Modernere Dateisysteme sind z B ext4 oder NTFS NTFS geh rt aber Microsoft und kann von LINUX zwar gelesen nicht aber beschrieben werden Bei ext4 verweigert Windows die Zusammenarbeit 27 Unter Windows gibt es auch ein Programm fdisk Das arbeitet hnlich aber nicht ganz genau so 28 Konsolen bestanden fr her als es noch keine grafische Benutzeroberfl che gab aus einem Bildschirm und einer Tastatur mit der man die Kommandos an den Computer gab Die Maus war noch nicht erfunden In einem Konsolenfenster kann man diese Art der Computerei nachempfinden 29 Bash steht f r bourne again shell Bourne again weil die
71. ilt wie er zum Arbeiten braucht Will man mehr wissen gibt es f r den privaten Bastler h ufig un berwindbare H rden LINUX hat den Vorteil dass das Betriebssystem f r jeden der es wissen m chte offen ist Alle Information zu LINUX sind frei zug nglich wenn es auch immer schwerer f r den Anf nger wird sich hier zurecht zu finden Aber es gibt gute Literatur zur Einf hrung und in diesem Buch versuche ich die Grundlagen anzusprechen wenn sie ben tigt werden F r den LINUX Anf nger ist zun chst etwas verwirrend das LINUX nicht gleich LINUX ist Es gibt unterschiedliche Distributionen Zu den bekanntesten z hlen Fedorra OpenSuse Ubuntu und Debian W hrend Fedorra und OpenSuse Abk mmlinge der Firmen RedHat bzw Suse sind ist Debian eine Distribution die sehr unabh ngig ist und Ubuntu von der Firma Canonical hat sich davon abgeleitet Das Betriebssystem f r den Raspberry Pi ist Raspbian das sich wie Ubuntu von Debian ableitet Als ich dieses Buch schrieb hie die Raspbian Version wheezy und kann bei www raspberrypi org downloads kostenlos herunter geladen werden Die Datei hat einen Namen der ungef hr so hei t 2012 12 16 wheezy raspbian zip Das Datum am Anfang hei t inzwischen bestimmt anders aber ihr wisst was ich meine oder Ihr ladet nat rlich die gerade aktuelle Version herunter denn mit jeder neuen Version sollte das Raspbian besser werden Jetzt m sst ihr euer Raspbian Betriebssystem noch auf die
72. ine Milliarde Hertz Die Einheit der Frequenz wird zu Ehren von Heinrich Hertz so genannt Heinrich hat damals als Erster die von James Clark Maxwell vorhergesagten elektromagnetischen Wellen nachgewiesen Ohne Heinrich h tten wir wohl etwas l nger auf Radios Fernseher und Handys verzichten m ssen 95 Das dBm deziBell em ist eine sonderbare Einheit f r eine Leistung wird aber von Technik Nerds gern verwendet Wegen Alexander Graham Bell der die Verbreitung des Telefons voran gebracht hat verwenden wir diese Einheit So umstritten diese Einheit auch ist Alexanders Ruf ist es brigens auch aber das k nnt ihr selbst nachlesen Jedenfalls hat das Telefon ihn reich gemacht brigens das kleine m hinter dem dB kennzeichnet dass wir uns auf ein Milliwatt 1 mW 0 001 Watt beziehen Streng genommen ist das dBmgar keine Einheit sondern es kennzeichnet das logarithmisches Verh ltnis der gemessenen Leistung zu einem Milliwatt 73 dBm sind also 7 3 Bell bezogen auf ein Milliwatt oder 107 1 mW 0 00000005 mW 0 05 nW Das ist eine ganz sch n winzige Leistung und wir k nnen daher Baukl tze staunen wie hervorragend und trotzdem billig heute kleine Antennen Verst rker sein k nnen Wenn man sich viel mit Verst rkern besch ftigt wie ich findet man pl tzlich das dB wieder praktisch weil man bei Verst rkerketten die dB s nur addieren muss um die Gesamtverst rkung zu ermitteln Seite 28 5 NetworkConfig amp rasp
73. ird hier nur in der Datei boot config txt der Parameter disable_overscan gesetzt Das k nnten wir aber auch mit einem Texteditor manuell eintragen 4 4 configure keyboard Hier k nnt ihr eure Tastatur angeben Zum Beispiel ob ihr einen separaten Nummerblock habt und ob eure Tastatur Deutsch ist Ich habe 105 Tasten und German eingegeben Die anderen Fragen habe ich alle mit ok beantwortet Seite 20 Voreingestellt ist eine englische Tastatur mit englischem Layout ber den Punkt Other bekommen wir eine zus tzliche Auswahl in der erst mal die Grundanordnung ausw hlt wird Zu bemerken ist noch dass es nicht einfach nur ein deutsches Layout gibt sondern sogar zwischen der Schweiz und Osterreich noch unterschieden werden kann Die Frage ob per Control Alt Backspace der X Server beendet werden soll beantworten wir mit Yes So haben wir die M glichkeit die grafische Oberfl che mit dieser Tastenkombination zu beenden um ein nicht mehr reagierendes Programm zu beenden Damit das System die Einstellungen bernimmt braucht es eine Weile 4 5 change_pass Hier kann das Passwort des Benutzers pi ver ndert werden Will man das Passwort ndern sollte man sich eines berlegen das m glichst mit allen Tastatureinstellungen gleich eingeben werden kann Dann erspart man sich die berraschung mit dem vertauschten z und y 4 6 change locale Hier w hlte ich de_DE UTF 8 UTF 8 Mit diesem Zeichensatz w hlen wi
74. ise seht ihr in Bild 2 Sie hat sechs Beine wie jede Ameise und ein kleines Gehirn das ist der Raspberry Pi LINUX Computer In diesem Kapitel wird die Montage beschrieben Der Raspberry Pi ist ein kleiner billiger LINUX Rechner mit dem wir uns sp ter noch genauer befassen werden Er l t sich bei den Firmen RS oder Farnell bers Internet besorgen ist aber h ufiger ausverkauft Es gibt zwei Modelle A und B Das A Modell tut es f r unsere Zwecke auch und kostet ca 20 plus Versandkosten Das B Modell kostet ca 10 mehr hat aber daf r mehr Stecker M glichkeiten und einen gr eren dynamischen Speicher Wir ben tigen noch einen WLAN USB Adapter einen USB Hub eine Tastatur und eine Maus Wenn wir das nicht noch irgendwo anders her besorgen bekommen wir es auch bei RS oder Farnell und sparen Versandkosten Die sechs Beinchen werden von drei Modellbau Servos bewegt also immer zwei Beinchen werden von einem Servo bewegt Wie Servos funktionieren und wie man sie anschlie t erkl re ich euch in Kapitel 10 F r ein Servo muss man etwa 6 ausgeben und bekoomt die zum Beispiel bei Conrad oder HobbyKing Wir brauchen Servos mit den Abmessungen 40 x 20 mm 2 1 Die Grundplatte mit den Servos Als Grundplatte tut es ein Holzbrettchen das etwa 100 x 200 mm gro und ungef hr 3 bis 4 mm dick ist So etwas kann man im Baumarkt kaufen Ich habe versucht die Kosten so gering wie m glich zu halten und bin dann bei eine
75. k nnen Als USB WLAN Adapter f r den Raspberry Pi empfehle ich den EDIMAX oder den Wi Pi Beide Adapter benutzen Treiber die schon im LINUX Kernel von raspbian enthalten sind und funktionieren plug and play Es gehen auch andere USB WLAN Adapter aber nicht alle Ihr solltet euch also besser vor dem Kauf informieren Nachdem wir den USB WLAN Adapter eingesteckt haben starten wir auf dem Desktop des Raspberry Pi das Programm wpa_gui indem wir auf das Symbol mit dem Namen WiFi Config doppelklicken 02 Wi Fi ist ein Produktzertifikat f r kompatible WLAN Verbindungen 83 Der Ethernet Anschluss ist links neben den USB Anschl ssen 84 Ich habe einen alte Speedport W900V von der Telekom mit dem ich auch die DECT Telefone betreibe 85 WLAN ist die Abk rzung f r wireless local area network also ein drahtloses Netzwerk im lokalen Bereich 86 DHCP steht f r dynamic host configuration protocol 87 Der EDIMAX ist sehr klein daf r hat der Wi Pi den besseren Empfang 88 Einstecken und sofort damit arbeiten 89 Wenn ihr auf Help ganz oben klickt erfahrt ihr wem wir dieses tolle Progarmm verdanken Seite 26 BA wpa gui lt g raspbernypi gt uu Wu Kei File Network Help Adapter Network a WLAN huelsmann x Current Status Manage Networks wPS Status Completed statian Last message Authentication WPA PSK Encryption TRIP S 5I WLAN huelsmann BSSIB OO la 4F Sb Sb IP add
76. ke schreibt uns zum Beispiel wie wir das Programm mit dem gcc compilieren sollen und das wir es dann mit dem voran gestellten Befehl sudo starten sollen Das merken wir uns f r den Makefile Unter 172 Ich habe so eine Eselsbr cke Das k rzere Bein ist abgeschnitten zu Englisch cut Kathode hei t auf englisch cathode Merkt ihr s Naja es ist halt eine Eselsbr cke Seite 47 Author schreiben wir jetzt unseren Namen dazu ohne den Hinweis auf Mike zu l schen Wir k nnen uns auch noch beim Urheberrecht erw hnen Wir wissen das Mike seine Programme unter GPL gestellt hat Hier hat er es nicht extra erw hnt Wir holen das nach Mein Kommentar Text sieht dann aus wie in Bild 24 o s emacs l nux blai 2 NJ e ia File Edit Options Buffers Tools C Help 1 amp BI X gh Save Funde gu B q dreiLEDsblinken cpp IF Example program for bcm2835 library Blinks a pin on an off every 0 5 secs 1 After installing bcm2835 you can build this with something like r gec G Blink l rt PLEK e Bom29835 sudo blink FF Or you can test it before installing with FE gegt g Blink l rt HT or BTC wo sre bem2z835 c blink c sudo blink Author Mike McCauley mikem open com au mit Erg nzungen durch Axel H lsmann Copyright C 2811 Mike McCauley und C 2012 Axel H lsmann rf id BLHZZ h v 1 21 2012 05 38 01 51 25 mikem Exp Lizenz GPL v3 Dies
77. lkommen egal wie rum ich ihn anschlie e Bei der LED oder allgemein bei Dioden ist das nicht so Der Strom kann nur von der Anode zur Kathode flie en so hei en die Anschl sse einer Diode In die andere Richtung sperrt die Diode das hei t sie l sst keinen Strom flie en und ohne Strom 169 Der Spannungsabfall ist nichts f r die M lltonne Im Sprachgebrauch von Elektronikern ist hier gemeint das diese Spannung an den beiden Klemmen des Bauelements anliegt wenn ein Strom dadurch flie t 170 Denn GND liegt auch auf OV 171 mA steht f r Milliampere 16 mA 0 016 A oder 10 A Das kleine m vor einer Einheit erspart uns die Null vor und nach dem Komma und auch noch das Komma selbst Naturwissenschaftler und Ingenieure finden diese Schreibweise unglaublich praktisch und so gibt es auch noch p n f micro nano femto f r die sehr kleine Gr en 10 10 107 aber auch das k M G kilo Mega Giga f r die Gro en k 1000 10 10 10 Seite 46 leuchteten LEDs auch nicht Leuchtdioden brauchen also eine Kennzeichnung damit wir sehen wo die Kathode ist Wenn ich eine neue LED habe erkenne ich das an dem k rzeren Drahtbeinchen Da flie t also der technische Strom aus der LED wieder raus und in unserem Falle direkt zum GND Man kann die Bauteile nat rlich zusammen l ten Ich habe mir da im Elektronik Handel so einen Stiftleisten Stecker besorgt und die Bauteile auf einem Steckbrett miteinander verbunden Au er
78. mantel des Kabel Aber Vorsicht nicht zu tief in das Kabel schneiden denn die Inneren Leitungen sollten nicht verletzt werden In einem USB Kabel sind vier Leitungen mit den Farben gr n wei rot und schwarz In die Isolierung dieser Leitungen solltet ihr nicht schneiden Die u ere Isolierung kann man jetzt abziehen Wenn das nicht so leicht geht hilft h ufig wenn man das Kabel an der geritzten Stelle um 90 hin und her knickt Wenn alles nichts hilft muss man mit dem Messer noch mal vorsichtig nachritzen Das ganze sieht dann aus wie in Bild 6 Abbildung 6 Das abisolierte USB Kabel Die besseren USB Kabel haben ein Drahtgeflecht um die vier Leitungen und manchmal auch noch so eine Art Alufolie Das k nnt ihr alles mit der Schere vorsichtig mit weg schneiden Die wei e und die gr ne Leitung sind die Datenleitungen f r das USB Signal Die brauchen wir hier auch nicht und schneiden sie weg Die rote Leitung ist die 5 V Leitung der Stromversorgung und die schwarze Leitung ist die Bezugsmasse GND oder 0 V Jetzt kommt der gro e Auftritt des L tkolbens des Schrumpfschlauchs und des L tzinns Den Schrumpfschlauch ziehen wir nat rlich vor dem Zusammenl ten ber die Leitungen und das Kabel Sp ter ist der Jammer dann immer gro Bild 12 zeigt so ein Elektroniker Stilleben Wir m ssen also nur die roten und schwarze Leitungen von unserem Micro USB Kabel und dem Batterieklipp miteinander verbinden Dazu nehmen wir wieder un
79. n diese jetzt in den Raspberry Pi stecken 3 2 Das Betriebssystem Raspbian auf eine SD Karte laden mit Hilfe eines Windows PC F r Windows Rechner ben tigen wir die Programme WinZip und Win32DiskImager Mit WinZip entpacken wir die herunter geladene Datei so dass wir die Datei 2012 12 16 wheezy raspbian img vorliegen haben Dann stecken wir die SD Karte in den Kartenleser und schauen uns an welchen Laufwerksbuchstaben die SD Karte hat Um an den Win32DiskImager heran zu kommen gehen wir auf die Webseite http sourceforge net projects win32diskimager starten den Download und installieren das kostenlose Programm Im Win32DiskImager geben wir an wo die Image Datei 2012 12 16 wheezy raspbian img zu finden ist In der Device Box w hlen wir den Laufwerksbuchstaben der SD Karte aus Vorsicht wenn ihr den falschen Buchstaben erwischt lauft ihr Gefahr euren PC zu schrotten Jetzt m sst ihr aus write klicken und abwarten bis der Schreibvorgang zu Ende ist Das kann einige Zeit dauern 3 3 Das Betriebssystem Raspbian auf eine SD Karte laden mit Hilfe eines Apple PC Das Apple Mac OS X Betriebssystem geh rt wie LINUX zu den Unix artigen Betriebssystemen Daher l uft vieles hnlich ab wie bei LINUX PCs Ihr ffnet ein Terminal und wechselt auf die Komadozeile Mit dem Befehl df h schaut ihr euch an wie die Laufwerke hei en Jetzt legt ihr die SD Karte ein und gebt wieder df h ein Jetzt solltet ihr wissen wie eure SD Karte hei t
80. n jetzt auf dem Monitor lauter Meldungen vom booten sehen Irgendwann m ssen wir uns am Raspberry Pi anmelden Standardm ig ist als Benutzername pi einzugeben Das Passwort lautet raspberry Nach einiger Zeit sehen wir auf dem Monitor folgendes Auswahl Men 39 lt pfad gt steht hier f r den Pfad zur Image Datei 40 Unter booten versteht man das starten des Betriebssystems W rtlich bedeutet booten so viel wie die Stiefel anziehen 41 Leider unterst tzt der Raspberry Pi kein VGA HDMI zu VGA Adapter sind relativ teuer und nicht zu empfehlen Man kann aber den Videoausgang auf der gelben Chinch Buchse verwenden und an einen Fernseher anschiefsen 42 PWR steht f r englisch power was auf deutsch Leistung hei t 43 ACT steht f r englisch acknowledge was auf deutsch so viel wie Arbeitet hei t 44 Achtung Beim ersten Start steht die Tastatureinstellung auf Englische Tastatur Dadurch sind die Tasten Z und Y vertauscht Gebt also beim ersten mal als Passwort nicht raspberry sonder raspberrz ein wenn ihr eine Deutesche Tastatur angeschlossen habt 45 Wir k nnen dieses Men jederzeit wieder starten wenn wir auf der Komandozeile den Befehl sudo raspi config eingeben Seite 19 Raspi config too to f ll SD card Information abaut this Expand root partition LATi expand rootfs overscan Change overscan configure keyboard Set keyboard layout
81. nd geben ihm den Namen ErstesProjekt Dazu k nnen wir wieder in dem File Manager rumklicken oder auf der Kommandoebene den Befehl 140 mkdir home pi ErstesProjekt eingeben In diesen Ordner kopieren wir jetzt die Datei Hello world cpp mit dem LINUX Befehl cp home pi c Progs Hello_world cpp c Progs ErstesProjekt Der Grundaufbau des Befehls cp ist immer cp zuKopierendeDatei Zusatz woSollSieHin Dazwischen ist ein Leerzeichen Bei der zuKopierendenDatei habe ich den kompletten Pfad mit angegeben Bei der woSollSieHin Datei habe ich mir Erleichterung verschafft in dem ich mein Homeverzeichnis mit gt angeben habe und den Dateinamen weggelassen habe Das Programm cp wei ja schon wie die Datei hei t und bietet mir den bescheidenen Komfort an den Dateinamen wegzulassen Aber zur ck zum Makefile Diesen erstellen wir uns nat rlich auch mit dem Emacs und speichern ihn in unserem Projekt Ordner ErstesProjekt Es ist altes Brauchtum dem Makefiles immer den Namen Makefile zu geben dann muss keiner lange danach suchen In dem Makefile stehen die Abh ngigkeiten und Regeln die angeben wie die Programm Dateien erzeugt werden sollen mit allen Optionen an den Compiler und Linker In jeder Zeile steht eine Anweisungen Abh ngigkeiten stehen ganz links am Anfang der Zeile auszuf hrende Regeln m ssen mit dem Tabulator einger ckt werden Emacs erkennt die Syntax eines Makefiles
82. net sich ein neues Fenster mit einer gro sen weilsen Fl che in die wir etwas schreiben k nnen Ich habe hier so phantasielos wie oben erw hnt Dies ist mein erster Text eingegeben Danach habe ich auf das Symbol der Diskette geklickt um die Datei text1 zu speichern Das Symbol ist links neben dem orangen Symbol mit dem x und wenn ihr mit dem Mauszeiger dar ber fahrt kommt wieder so ein Popup und erkl rt euch was passiert Interessanter Weise wird das Disketten S ymbol jetzt grau aber sobald wir wieder etwas an unserem Text ver ndern wird es wieder normal Der Emacs ist ganz sch n gut programmiert findet ihr nicht auch Wir schlie en den Emacs jetzt wieder und ffnen den File Manager unten in der Task Leiste Jetzt sollten wir in unserem Hauptverzeichnis home pi nicht nur die Verzeichnisse python_games und Desktop finden sondern auch die neu erzeugte Datei text1 Wenn ihr hier jetzt einen Doppelklick auf text1 macht ffnet sich der Emacs und zeigt uns den Inhalt von text1 an damit wir an dem Text weiter arbeiten k nnen Aber nach dem Doppelklick nur Geduld der Pi ist ja kein Supercomputer obwohl er mit LINUX l uft 8 Kleine Einf hrung in die Computersprache c c Eigentlich wurde von den Machern des Raspberry Pi die Computersprache Python f r erste Programmierkontakte vorgesehen Python Programme laufen aber einfach zu langsam Mich st rt so was Ich bin daher der Meinung wir sollten
83. nz von 50 Hz wiederholt 50 Hz entspricht einer Periodendauer von 20 ms Die Periodendauer ist unkritisch und muss nicht so genau eingehalten werden Die Pulsweite selbst liegt zwischen 1 ms linker Anschlag und 2 ms rechter Anschlag W hrend des Pulses liegt die Spannung auf High Pegel und den Rest der Periodenl nge auf Low Pegel ist In Bild 29 habe ich euch ein schematisches Zeitdiagramm gemalt 193 Meistens sind die drei Leitungen des Servos noch farblich kodiert wie in dem Bild gezeigt GND ist schwarz 5V ist rot und das PWM Signal ist gelb oder wei 194 1 Zoll 1 inch 25 4 mm Ein zehntel inch sind 1 10 Zoll also 2 54 mm Und dieses Ma lieben die Elektroniker Ihr habt ja Recht Asterix w rden sagen Die spinnen die 195 High Pegel entspricht der logischen 1 und muss ber 2 5 V sein Die 3 3 V die der Raspberry Pi am GPIO liefern kann reichen also 196 Low Pegel entspricht dr logischen 0 und muss under 0 5 V sein Auch das kann der Raspberry Pi am GPIO Seite 55 3 3W GND Abbildung 29 Spannungs Zeit Diagramm f r ein Servo PWM Signal In Bild 29 habe ich als Beispiel eine Pulsweite von 2 ms eingezeichnet Das bedeutet also rechter Vollausschlag Wenn ihr sicher stellen wollt dass das Servo genug Zeit hat um in die gew nschte Stellung zu fahren solltet ihr einige Pulsweiten mit der gew nschten Zeit bermitteln Falls ihr mehr zu Servos wissen wollt empfehle ich euch einen Blick auf die Web
84. o Keyboard Host Name or IP address Port Bell 192 168 2 129 22 i iine Connection type Raw Telnet Rlogn SSH Serial Appearance Behaviour Load save or delete a stored session Translation S EEE aved Sessions Colours Connection x Default Settings Data 3 toad Proxy Telnet Wagen Delete SSH Serial Close window on exit l Always Never Only on clean exit About Help Abbildung 31 Das Konfigurationsfenster von PuTTY Wenn wir PuTTY starten meldet sich zuerst der PuTTY Configurator wie in Bild 31 zu sehen ist Das ist ein Fenster in das wir die IP Adresse unseres Raspberry Pi in das Feld mit der berschrift Host Name or IP address eingeben m ssen Lokale Internetadressen fangen meistens mit 192 168 an Wir klicken nun unten auf den Button open P 4t ws d d programs included w exact distribution ividual files in L1 qm ermitted by applicable s st login Sat Feb Dp L Abbildung 32 Das Terminal Fenster v Der PuTTY Configurator schlie t sich nun und wir sehen ein Terminal Fenster 32 in dem wir 212 Wenn wir die IP Adresse des Raspberry Pi nicht mehr kennen geben wir im LXTerminl den Befehl iwconfig eine ebian GNU Linux comes wi on PuTTY Unter wlanO0 finden wir dann in der zeiten Zeile inet addr 192 168 2 xxx Seite 69 aufgefordert werden unseren Benutzernamen auf dem
85. o Prozessor BCM2835 verbunden Kurzschl sse am GPIO k nnen den Prozessor besch digen 155 Ihr findet sie auch auf der beiliegenden CD Seite 42 komprimierte Installationsdatei direkt aus dem Internet laden indem wir auf den link http www open com au mikem bcm2835 bcm2835 1 17 tar gz klicken Alternativ k nnen wir uns die Datei mit dem PC von der CD auf einen USB Stick kopieren Wenn wir den USB Stick dann in den Raspberry Pi stecken k nnen wir mit dem File Manager eine Kopie in unser Homeverzeichnis home pi kopieren Hier geben wir auf der Kommandoebene folgendes ein tar zxvf bcm2835 1 17 tar gz cd bcm2835 1 17 configure make sudo make check sudo make installation Wem das zu schnell ging und erkl rt haben will was hier abl uft liefst sich im nachfolgenden Absatz durch was Sache ist Wen das eher langweilt kann schon zur n chsten berschrift Das entpacken der Datei machen wir auf der Kommandozeile mit dem Befehl tar Anschie end wechseln wir mit cd in das neue Verzeichnis bcm2835 1 17 Alternativ k nnen wir nat rlich auch durch doppelklicken im File Manager auf die Datei bcm2835 1 17 tar gz die Datei entpacken Es ffnet sich der Xarchiver wie er in Bild 19 zu sehen ist Durch klicken auf den Filenamen zeigt er uns an was in der bcm2835 1 17 tar gz so alles drin ist wenn wir E bem2835 1 17 tar gz Xarchiver 0 5 2svn r29673 lt raspberrypi gt v AJS Archive Action Help 1 p ee 3 ho JJ
86. o start Open a File Open Home Directory Customize Startup To quit a partially entered command type Control g This is GNU Emacs 24 2 1 x86 64 suse linux gnu GTK Version 3 4 4 of 2012 10 10 on build2O Copyright C 2012 Free Software Foundation Inc U GNU Emacs ALL L18 Fundamental Ovwrt lt C print gt is undefined Abbildung 14 Das Startfenster des GNU Emacs Nur um etwas mit dem Emacs vertraut zu werden schreiben wir einen bl den Text in eine Datei Dazu gehen wir mit dem Mauszeiger oben links im Emacs Fenster auf das stilisierte Blatt Papier 107 Y oder y f r yes 108 Der Prompt steht am Anfang einer Kommandozeile wenn wir neue Befehle eingeben k nnen Seite 31 Symbol mit dem kleinen gr nem Plus und schauen uns das Popup an In dem Popup steht Specify a new file s name to edit the file Wenn wir nicht schnell genug lesen und das kann passieren verschwindet die Meldung wieder Wir klicken also auf das Papier Symbol und es ffnet sich ein neues Fenster das wir so hnlich schon mal beim File Manager gesehen habt Oben in der Eingabezeile neben Name blinkt der Cursor Hier geben wir den Namen unserer ersten Textdatei an Ich habe hier phantasieloser Weise den File Namen text1 eingegeben und unten rechts auf den Button geklickt der mit einem gr nen Kreis in dem ein weilser Pfeil versehen ist und auf dem au erdem noch OK steht Nun verschwindet das Fenster und es ff
87. pberry Pi wieder da ist und wir zu ihm Verbindung aufnehmen k nnen Jetzt nat rlich ber den Windows PC mit PuTTY oder ber den LINUX PC mit ssh Haben wir wieder Verbindung k nnen wir jetzt mit cd in unser Verzeichnis mit dem Programm antv01 wechseln und dieses wieder mit sudo antVO1 starten Mit der Tastatur des PC k nnen wir jetzt die Roboter Ameise zum Beispiel mit gggllllggg ber WLAN fern steuern Viel Spass dabei 13 Eine Kamera anschlie en 14 Ein LINUX Labtop als Fernsteuerung hostapd auf dem Labtop installieren Macht den Labtop zum Access Point anlegen der Datei etc hostapd minimal conf mit Emacs test hostapd inferface wlanO driverznl80211 ssid axel2rpi channel 6 213 W hrend wir das Passwort eingeben sehen wir nicht was wir geschrieben haben Das ist normal denn andere die uns ber de Schulter gucken sollen unser Passwort nicht unbedingt mitlesen k nnen Seite 70 Befehl eingeben hostapd dd hostapd minimal conf 15 Den Staub unterm Bett suchen Bla bal 16 Anhang 16 1 Liste der Komponeten Raspberry Pi SDHC Speicherkarte USB Tastatur USB Maus USB Hub mit Netzteil HDMI Kabel zum Monitor USB WLAN Adapter Grundplatte Servo Federstahl Draht 2mmf r die Beine Holzperlen f r die F e Flachbandkabel 26 polig Stiftleiste 2x13 2 53 mm Raster 26 polige Buchse f r Flachbandkabel Batteriekasten NiMH Akkus AA Batterie Klip Schalter Distanzst cke S
88. pplications hei t auf deutsch Anwendungen 67 Englisch root 68 Im englischen auch slash genannt Bei Windows wird brigens der back slash verwendet 69 Englisch folder 70 Die Symbole die zu einem Verzeichnis oder einer Datei geh ren werden auf englisch icon genannt Seite 24 Leiste auf View Jetzt ffnet sich ein Pulldown Men in dem wir auf Detailed List View klicken In dem gro en Unterfenster des File Managers wird jetzt jeder Unterordner und jede Datei in eine eigene Zeile einer Tabelle geschrieben Klicken wir auf die erste Spalten berschrift Name so wird die Reihenfolge der Zeilen umsortiert Wir klicken hier noch mal und sehen jetzt die alphabetische Reihenfolge Die berschrift der zweiten Spalte hei t Description Hier steht zum Beispiel auch in der Zeile home folder Das berrascht uns jetzt nicht denn wir wissen ja inzwischen dass es sich bei home um ein Verzeichnis handelt Es gib noch mehr Spalten Was die bedeuten findet ihr jetzt selbst heraus Klickt jetzt mal mit der rechten Maus Taste auf das Verzeichnis bin Es ffnet sich ein Auswahl Men in dem ihr ganz unten auf Properties klickt Es ffnet sich ein neues Fenster und ihr werdet noch mehr Informationen zu dem Verzeichnis finden Wenn ihr oben auf den stilisierten Karteikarten Reiter mit der Aufschrift Permission klickt seht ihr ein neues Bild Hier steht neben Owner
89. r Motor ausgeschaltet Ist die Differenz zwischen Soll und Ist Winkel zu gro wird der Motor unter Spannung gesetzt Ist die Differenz zu klein wird die Spannung am Motor umgepolt Die gew nschte Winkelstellung wird dem internen Controller IC nicht durch eine analoge Spannung mitgeteilt sondern durch ein PWM Signal ber den Stecker wie er in Bild 28 zu sehen ist 190 Die Steuerelektroden eines FETs nennt man Gates Das hat jetzt aber wirklich nichts mit dem Gr nder der Firma Microsoft zu tun Die Elektrode die an GND oder der Spannungsquelle angeschlossen wird hei t Source von englisch Quelle Die dritte Elektrode der Strom geschaltet wird hei t Drain von englisch Senke 191 FET ist die Abk rzung f r Feld Effekt Transistor FETs sind vereinfacht ausgedr ckt spannungs gesteuerte Stromschalter 192 PWM steht f r Puls Weiten Modulation Seite 54 Fe Re Abbildung 28 Ein typischer Verbindungsstecker eines Servos Ein Servo Stecker hat daher immer drei Anschl sse GND 5V und das PWM Signal Wenn ihr neue Servos kauft achtet darauf was sie f r einen Stecker haben Ich empfehle euch Futuba Graupner oder Conrad Stecker Die haben einen Kontakt Abstand vor 2 54 mm und passen auf die normalen Stiftleisten Schauen wir uns noch an wie das PWM Signal eines Servos aussehen muss Mit der Weite eines Pulses wird der Winkel der Drehscheibe definiert Dieser Puls wird mit einer Freque
90. r alten Schublade vom Sperrm ll f ndig geworden In diese Grundplatte s gen wir uns mit der Laubs ge vorne und hinten zwei rechteckige Aussparungen von ca 40 x 20 mm f r unsere Servos und zwar so dass die Drehachsen des vorderen und hinteren Servos auf der Mittellinie der Grundplatte sind Ich habe euch eine CAD Zeichnung mit dem Programm FreeCAD gezeichnet wie ihr in Bild 1 erkennt Die Datei der Zeichnung ist auch auf der beiliegenden CD zu finden Falls die Servos nicht gut in die Aussparung passen sollten kann man mit einer Nagelfeile etwas nachbessern Die Position der Servos ist auch auf der Grundplatte in Bild 2 zu sehen Die Servos werden mit vier Schrauben auf der Grundplatte befestigt 7 http raspberrypi rsdelivers com default aspx http piregistration element14 com raspberryPi1 html none raspberrypi 8 Ein dynamischer Speicher verliert seine Information wenn die Spannungsversorgung fehlt Daf r kann man aber sehr viel schneller Daten abspeichern und auslesen als zum Beispiel mit der SDHC Karte 9 Ein USB Hub ist eine Erweiterung eines USB Steckers um typischer Weise 4 weitere USB Steckpl tze Es gibt welche mit externem Netzteil Solche k nnen wir dann direkt zur Stromversorgung unsres Raspberry Pi benutzen 10 Bei Maus und Tastatur tun es die billigsten Wichtig ist nur dass sie USB Stecker haben 11 http ein com hobbyking store 3743 HXT 6 ke 39 2g 16sec Twin bearing servo html 12 Die exakten Ma e f r
91. r die Sprache des Systems Zur Auswahl markieren wir den den Punkt mit der Leertaste Mit der TAB Taste kommen wir auf die Schaltfl che Ok und w hlen wieder de_DE UTF 8 aus Dadurch geben Programme deutsche Texte aus wenn diese verf gbar sind Wieder ben tigt das System einen Augenblick um die Einstellung zu bernehmen 4 7 change timezone Hier teilen wir dem Raspberry Pi mit in welcher Zeitzone wir uns befinden Ich ahbe Europe und Berlin ausgew hlt 4 8 memory_split Der Hauptspeicher das ist der Chip der auf den Prozessor gel tet ist hat eine Gr e von 512 MB Diesen Speicher teilen sich Hauptprozessor und Grafikprozessor Beide haben Zugriff auf einen bestimmten Anteil des RAM Es gibt vier Einstellm glichkeiten f r den Grafikprozessor 32 64 128 256 MB Den Rest bekommt der Hauptprozessor Wenn ihr keine aufw ndigen Videofunktionen ben tigt reichen 32 MB F r 3D intensive Anwendungen w hlt ihr 128 MB Die Standard Einstellung ist 64MB Auch diese Einstellung wird erst nach dem Neustart wirksam 4 9 overclock Hier kann man die Taktfrequenz mit der der Prozessor seine Befehle abarbeitet einstellen 46 Layout ist nat rlich englisch und bedeutet hier die Anordnung der Tasten 47 Mit System ist hier das Betriebssystem des Raspberry Pi gemeint also hier Raspbian 48 Chip ist nat rlich wieder englisch und bedeutet soviel wie elektronischer Baustein 49
92. rch die Leuchtdiode flie en Die LED f ngt dann an zu leuchten Wir schauen uns dazu den Schaltplan aus Bild 20 an GPIO U 8 834 GPIOmax D on 16 mA R 68 Ohm LED W Zr U 25V GND Abbildung 20 Schaltplan zur Ansteuerung einer LED an einem GPIO Pin In Bild 12 sehen wir von oben nach unten mehrere Symbole Der oberste Kreis soll den GPIO Pin symbolisieren Von dort geht ein Anschluss an den Widerstand Widerst nde werden in Europa als Rechteck gezeichnet und international als Formelzeichen mit R bezeichnet Auf der Verbindungslinie die eine elektrisch leitende Verbindung symbolisiert ist ein kleiner Pfeil gezeichnet Dieser ist das Symbol f r den Strom und gibt die technische Stromrichtung an Str me haben das Formelzeichen I Aus dem Widerstand R flie t der Strom in die LED Das Symbol einer LED ist das Gleiche wie das einer Diode ein Dreieck dessen Spitze die technische Stromrichtung 161 Spannung hei t auf englisch voltage Das Formelzeichen ist U und im englischen V Die Einheit Volt wird immer mit V abgek rzt 162 Volt wurde nach dem Italiener Alessandro Volta im vorletzten Jahrhundert so benannt Allesandro hatte schon immer eine Leidenschaft f r S mpfe und die richtige Erkl rung f r die animalische Elektrizit t die sein Freund von Luigi Galvani an toten Fr schen entdeckt hatte Heute w rde den beiden sicherlich der Tierschutzverein auf die Pelle r cken Damals
93. ress 192 168 2 129 Connect Disconnect Scal Abbildung 11 Das Fenster des Programms wpa gui mit dem Symbol WiFi Config Ihr solltet jetzt das Fenster des Programms wpa_gui sehen wie in Abbildung 11 Das Programm kann auch von der Kommandozeile aus gestartet werden indem man im Terminal Fenster den Befehl gui_wpa eingibt Oben im Fenster steht rechts neben Adapter jetzt wlan0 Darunter steht neben Network der Name des WLAN Netzwerks mit dem wir uns verbinden wollen Mein Netzwerk hei t WLAN huelsmann bei euch steht nat rlich etwas anderes oder erst mal gar nichts Man kann sich mit mehreren Netzwerken verbinden die dann durchnummeriert beginnend mit 0 ausgew hlt werden k nnen Daher steht hier noch 0 vor meinem Netzwerk Namen Darunter gibt es drei Karteikarten Reiter mit den Namen Current Status Manage Network und WPS Current Status sollte vorn liegen sonst m sst ihr es anklicken Jetzt klickt ihr unten rechts auf den Button mit dem Namen Scan und dann seht ihr ein neues Fenster 90 Momentaner Zustand 91 Netzwerk verwalten 92 Der deutsche Name f r Button ist Schaltfl che aber den benutzt keiner Seite 27 2 i Scan results lt raspberrypi COMES Eee asso reuny saa es WLAN huels 0Q la 4f 9bf 2457 M 73 dBm WPA PSKTKIP WPA2 PSK CCMP ESS Abbildung 12 Der Ergebnis des WLAN Scan In Abbildung 12 erkennt ihr m
94. schen eine neuere Version als 0 62 gibt dann laden wir nat rlich die Wir starten das Installationsprogramm und halten uns an die Anweisungen des Installationsprogramms Am Besten beantwortet man die Fragen immer mit dem Vorschlag der gemacht wird Zum Schluss werden wir noch gefragt ob wir ein Icon auf dem Desktop haben wollen Wir setzen das entsprechende H kchen denn das ist ja ganz praktisch Wir l schen das Installationsprogramm putty 0 62 installer denn wir wollen uns ja nicht zum llen Nun starten wir das Programm PuTTY es sich selbst auf CD Das dauert aber ein bisschen Langfristig kommt ihr als Roboter Programmierer sowieso nicht an LINUX vorbei da ihr die Hardware eines Rechners dann leichter voll ausn tzen k nnt Daher k nnt ihr auch jetzt damit anfangen 210 Unter Freeware Piraten verstehe ich Leute die eigentlich sonst kostenlose Software auf ihrem Server verteilen Liest man sich nicht alles richtig durch was auf der Seite steht und klickt dann unbedarft auf download hat man pl tzlich einen Vertrag abgeschlossen und ein Anwalt bedroht einen mit Abmahnung und erheblichen Kosten 211 Meistens hat sich ein Icon des Installationsprogramms auf dem Desktop eingenistet Das brauche wir nicht mehr B PuTTY Configuration O7 Seite 68 ba a Ea Sm Category j Session Basic options for your PuTTY session Logging Er i Terminal Specify the destination you wantto connectt
95. ser kleines K chenmesser und ritzen die einzelnen Leitungen etwa 2 mm vom Ende an und ziehen die Isolierung ab Die metallischen Dr htchen verdrillen wir zwischen unseren Fingern 17 Ach ich oute mich Ich bin Elektronik Messy und hebe Alles auf Beim n chsten Projekt k nnte ich es ja vielleicht wieder verwenden 18 Was GND bedeutet erkl re ich euch sp ter wenn wir eine LED ansteuern 19 Wenn wir eine Temperatur einstellen k nnen w hlt man etwa 250 C f r bleihaltiges und 300 C f r bleifreies Lot Ein vorheriger Test ist meist unumg nglich 20 Wir brauchen verschiedene Durchmesser f r die einzelnen Leitungen und f r das Kabel Ohne Schrumpfschlauch geht es notfalls auch Dann nehmen wir Isolierband oder notfalls tut es auch Tesafilm 21 Ich nehme immer noch bleihaltiges Lot weil es einfacher zu l ten ist Ich hoffe ihr verzeiht mir Seite 12 BI EN EL aded rn D IPA m amp Abbildung 7 Das USB Kabel vor dem Verl ten Ihr werdet schnell feststellen dass Menschen zum L ten anatomisch schlecht gebaut sind Jedenfalls w nsche ich mir regelm ig mindestens zwei H nde mehr In Bild 7 seht ihr so eine Krokodilklemme die an einen St nder geschraubt ist So etwas hole ich mir dann wenigstens zur Hilfe Was ihr auf dem Bild noch gar nicht seht ist das zweite Kabel mit den Leitungen vom Batterieklipp Ihr werdet es irgendwie hinkriegen Wenn man mit Schrumpfschlauch arbeitet kann man gegebenenfalls seinen L
96. shell eigentlich schon tot war Mit einer shell kann man Befehle an das Betriebssystem senden oder Programme aufrufen 30 H ufig k nnen LINUX Kommandos und Programme der Unterschied zwischen Kommando und Programm ist nicht so ganz abgegrenzt mit Optionen die mit einem Minuszeichen und einem Buchstaben an das Programm bergeben werden beeinflusst werden Hier steht das l f r list auflisten 31 Der Befehl sudo steht f r superuser do Der Superuser also root f hrt den Befehl aus Seite 15 root s password Disk dev sda 60 0 GB 60022480896 bytes 255 K pfe 63 Sektoren Spur 7297 Zylinder zusammen 117231408 Sektoren Einheiten Sektoren von 1 x 512 512 Bytes Sector size logical physical 512 bytes 512 bytes I O size minimum optimal 512 bytes 512 bytes Disk identifier 0x218436fa Ger t boot Anfang Ende Bl cke Id System dev sdal 2048 116198144 58098048 83 LINUX dev sda2 116198152 117226304 514076 82 LINUX Swap Disk dev sdb 500 1 GB 500107862016 bytes 255 K pfe 63 Sektoren Spur 60801 Zylinder zusammen 976773168 Sektoren Einheiten Sektoren von 1 x 512 512 Bytes Sector size logical physical 512 bytes 512 bytes I O size minimum optimal 512 bytes 512 bytes Disk identifier 0x000ccfb6 Ger t boot Anfang Ende Bl cke Id System dev sdbl 63 4209029 2104483 82 LINUX Swap dev sdb2 4209030 86130687 40960829 83 LINUX dev sdb3 128075776 947277823 409601024 83 LINUX
97. t das der Compiler selbst wei wo er ihn findet Der Programmteil stdio h regelt die Standard Ein und Ausgabe und macht unser Programm unter anderem mit der Funktion printf bekannt aber dazu sp ter mehr In unserem Fall ist das die Ausgabe auf den Bildschirm In Zeile 8 beginnt das Hauptprogramm mit dem Namen main Jedes c c Programm hat ein Hauptprogramm von dem alles ausgeht sonst ist es kein c c Programm Direkt hinter main ist eine offene und eine geschlossene runde Klammer Zwischen diesen Klammern kann man Parameter bergeben Wir nutzen diese M glichkeit hier nicht Nach dem Aufruf des Hauptprogramms main folgt eine geschweifte offene Klammer hier in Zeile 9 119 wird als Doppelkreuz oder Gartenhark bezeichnet 120 include hei t einf gen 121 stdio steht f r standard input output Seite 34 Die Zeile 10 und folgende sind mit einem abgeschlossen Damit wird angezeigt dass der Befehl abgeschlossen ist Der h ufigste Fehler von c c Anf ngern ist das falsche Anwenden des In c c ist ein Befehl n mlich keinesfalls durch eine neue Zeile abgeschlossen Ihr k nntet auch mehrere Befehle in eine Zeile schreiben und jeweils durch ein trennen Ihr k nnt aber auch einen Befehl auf mehrere Zeilen verteilen Die Zeile 10 ist unter Verwendung der Tabulatortaste etwas einger ckt Das ist guter Schreibstiel den wir uns angew hnen ab
98. t nicht nur der Vater von c sondern bringt uns sein Baby auch n her Es gibt einige ganz brauchbare B cher von ihm teilweise auch in deutscher bersetzung 113 Ganz gut finde ich zur Einf hrung Thomas Wielands Buch C Entwicklung mit LINUX Vielleicht sollte Thomas mal wieder an einer neuen Auflage arbeiten Seite 32 nicht Wir k nnen es eigentlich noch nicht mal schreiben Wir k nnen nur einen Sourcecode schreiben den kann aber der Pi wiederum nicht verstehen Deshalb ben tigen wir einen bersetzer der wird Compiler genannt Der Compiler ist wiederum ein Programm Nur nicht verwirren lassen Wir benutzen den gcc Der gcc ist eigentlich bei allen LINUX Distributionen dabei Falls er bei unserer Distribution weggelassen wurde holen wir ihn uns aus dem Netz mit dem Befehl den wir ja schon kennen und im LXTerminal als Konsolen Kommando eingeben sudo apt get install gcc Um etwas Ordnung zu halten werden wir ein neues Verzeichnis anlegen in das wir alle Dateien unseres Programms HelloWord hinein legen Ein neues Verzeichnis k nnen wir zum Beispiel mit dem File Manager aus der Task Leiste anlegen Dazu klicken wir nachdem wir den File Manager ge ffnet haben mit der rechten Maustaste in die gro e Fl che in der unsere Ordner und Dateien liegen Es kommt ein Popup in dem wir auf Create New dr cken und dann Folder ausw hlen Wir werden nun aufgefordert mit dem Satz Enter a name for the
99. tpfusch unter dem Schrumpfschlauch den man ber die L tstelle zieht verschwinden lassen Um den Schrumpfschlauch schrumpfen zu lassen muss man ihn erhitzen dann zieht er sich zusammen Das kann man mit einem Hei luftf hn oder einfach mit einem Feuerzeug machen Dann sieht pl tzlich alles richtig professionell aus wie in Bild Abbildung 8 Das zusammen gel tete Micro USB Batterieklipp Kabel Seite 13 2 3 Beine biegen Als n chstes wollen wir unserer Roboter Ameise die Beinchen montieren Dazu besorgen wir uns einen Federstahl Drahl von 2 mm Durchmesser und 1m L nge Zuerst biegen wir die Vorder und Hinter Beinchen mit zwei starken Zangen oder besser einem Schraubstock 3 Erste Begegnung mit dem LINUX Rechner Raspberry Pi Nachdem wir zu Anfang etwas handwerklich gebastelt haben werden wir uns jetzt mit der Computerei besch ftigen Ich bin ein Fan des Betriebssystems LINUX Die Anf nge von LINUX waren in Finnland als der kleine Linus auf dem Scho seines Gro vaters die Tastatur eines Computers entdeckte Inzwischen ist LINUX ein Betriebssystem f r die gr ten und kleinsten Computer Und da so viele Leute an LINUX gearbeitet haben und noch immer arbeiten ist es auch inzwischen richtig gut und dazu auch noch vollkommen kostenlos Die meisten PCs haben Windows von Microsoft als Betriebssystem oder laufen mit Mac OS von Apple Wie diese Betriebssysteme funktionieren wissen die Hersteller Dem Benutzer wird nur so viel mitgete
100. tromversorgung montiert Den Bauch der Roboter Ameise seht ihr in Bild 5 Ich habe NiMH Akkus mit geringer Selbstentladung vom Typ AA eingebaut Ihr solltet auf gar keinen Fall Alkali oder andere 1 5 V Batterien einsetzen da man mit vier 1 5 V Batterien auf 6 V kommt und damit ber die zul ssige maximale Betriebsspannung des Raspberry Pis von 5 5 Volt Es drohen irreparable Sch den Mit einer maximalen Spannung von 1 25 V pro Zelle der NIMH Akkus kommt man genau auf 5 V und bevor der Akku vollst ndig leer wird sinkt die Gesamtspannung unter 4 5 V und der Raspberry Pi Computer steigt langsam aus NiMH Akkus mit geringer Selbstentladung haben eine etwas geringere Kapazit t als Standard NiMH Akkus und sind au erdem merklich teurer Es lohnt sich aber hier etwas mehr zu investieren Von NiCd Akkus rate ich aufgrund des Memory Effekts und 15 Unter der Kapazit t eines Akkus versteht man die Lademenge gemessen in mAh Milliamperestunden Meine Akkus haben 2500 mAh Das bedeutet das sie frisch aufgeladen etwa 2 5 Stunden lang 2 Stunden und 30 Minuten eine Strom von 1 A 1000 mA liefern k nnen bevor sie leer sind Je lter Akkus werden und je fter sie aufgeladen wurden um so geringer wird ihre Kapazit t 16 Unter dem Memory Effekt bei NiCd Akkus versteht man die extreme Reduzierung der Ladekapazit t wenn der Akku nicht vor dem Wiederaufladen nicht vollst ndig entleert ist Moderne Ladeger te haben deshalb eine Entladetaste oder einen
101. ttchens befestigen Oben hat es eine Scheibe die sich nach Rechts und Links drehen kann auf der wir einen gebogenen Draht befestigen k nnen und damit gleich zwei Beinchen gleichzeitig bewegen k nnen 10 1 Wie funktioniert ein Servo Ein Motor treibt ber ein Getriebe die Scheibe an Die Drehposition wird ber ein internes synchron mitlaufendes Dreh Potentiometer abgefragt Dieses fungiert als Winkelmesser der Drehscheibe Bild 27 zeigt ein Blockschaltbild eines Servos 188 Modellbau Servos werden seltener auch als Rudermaschine bezeichnet Servos geh ren zu den so genannten Aktuatoren Aktuatoren sind elektromechanische Bauelemente 189 Ein Potentiometer ist ein verstellbarer Widerstand mit drei Anschl ssen Seite 53 Motor Abbildung 27 Schaltplan eines Servos In Bild 27 habe ich euch die Ansteuerung des Motors mit Feldeffekt Transistoren eingezeichnet Soll der Motor rechts herum drehen leiten die Transistoren T1 und T4 w hrend T2 und T3 sperren Das wird erreicht indem die Steuerelektrode der FETs T1 und T3 vom Controller auf GND und von T2 und T4 auf 5V geschaltet werden Sind alle Gates auf 0 V oder 5V kann kein Strom durch den Motor flie en Legt man an das Potentiometer eine Spannung an so kann man am Mittelabgriff eine Spannung messen die Proportional der Verstellung ist Diese gemessene Winkelstellung wird st ndig mit dem Soll Winkel verglichen Stimmen Mess und Soll Winkel berein wird de
102. und das ist nun mal nicht O0 also nicht falsch Alles was zwischen den geschweiften Klammern steht wird so bis zum St Nimmerleinstag ausgef hrt Als erstes kommt in der while Scheife die Funktion bcm2835_gpio_write Diese ist auch in Mike s Header Datei definiert worden und legt an den Pin der als erstes Argument der Funktion bergeben wird auf HIGH dann leuchtet die angeschlossene LED oder auf LOW dann geht sie aus Die N chste Funktion bcm2835_delay gibt einfach nur an wie lange der Raspberry Pi nichts tun soll Die Zahl die als Argument bergeben wird gibt die Millisekunden an die vertr delt werden soll Ja das war s auch schon Eigentlich ganz einfach oder Nacheinander werden die drei LEDs angeschaltet und dann wieder aus Dann geht s wieder von vorn los uns immer so weiter bis wir Ctrl C dr cken tschuldigung Strg C 9 2 3 Das Programm compilieren und ausf hren Es gibt selten ein Programm das auf Anhieb l uft Der Emacs hilft uns ein bisschen Fehler rechtzeitig zu erkennen indem er alles was er kennt farbig kodiert brigens der h ufigste Anf ngerfehler bei c c ist das vergessen von am Ende einer Befehlszeile Wir wollen unser Programm jetzt compilieren Dazu erstellen wir noch mit dem Emacs einen Makefile in unsrem Projektordner ZweitesProjekt Makefile f r dreiLEDS dreiLEDS dreiLEDsblinken c gcc o dreiLEDS L rt dreiLEDsblinken c l bcm2835
103. uns mit Python nicht aufhalten und gleich mit der Computersprache besch ftigen mit der brigens auch Betriebssysteme programmiert werden C ist eine Hardware nahe Computersprache das hei t das man damit sehr effiziente Treiber f r Hardware schreiben kann Unser Ziel ist Hardware zu programmieren Wir wollen Servos ansteuern und unserer Roboter Ameise das Laufen beibringen Auf dem Weg dorthin lernen wir ganz nebenbei C Die Spracherweiterung von C hat brigens von Bjarne Stroustrup den Namen C bekommen aber wir werden diese Erweiterung nur da benutzen wo wir sie brauchen Wer mehr ber C C wissen will und das kann passieren wenn man erst mal von der Programmierung infiziert wurde sollte sich ein gutes Bucht besorgen Fangen wir mit dem d mmsten Programm an mit dem wohl jeder angehende Programmierer egal welche Programmiersprache er lernt in Ber hrung kommt Diese Programm heift HelloWord Das Programm besteht aus Nullen und Einsen und nur der Raspian Pi wird es lesen k nnen wir 109 Unter einem Popup versteht man eine Meldung in einem kleinen K stchen mit einer kleinen Information 110 Bestimme einen neuen Datei Namen um die Datei zu erg nzen 111 Unter Curser ausgesprochen K rser versteht man hier einen kleinen senkrechten blinkenden Strichs an dessen Stelle man Zeichen eingeben kann 112 Bjarne war Programmierer bei den Bell Labs als er c zu c erweiterte Heute ist er Professor in Texas Bjarne is
104. usen drehen Seite 16 255 K pfe 63 Sektoren Spur 7297 Zylinder zusammen 117231408 Sektoren Einheiten Sektoren von 1 x 512 512 Bytes Sector size logical physical 512 bytes 512 bytes I O size minimum optimal 512 bytes 512 bytes Disk identifier 0x218436fa Ger t boot Anfang Ende Bl cke Id System dev sdal 2048 116198144 58098048 83 LINUX dev sda2 116198152 117226304 514076 82 LINUX Swap Disk dev sde 16 1 GB 16130244608 bytes 64 K pfe 32 Sektoren Spur 15383 Zylinder zusammen 31504384 Sektoren Einheiten Sektoren von 1 x 512 512 Bytes Sector size logical physical 512 bytes 512 bytes I O size minimum optimal 512 bytes 512 bytes Disk identifier 0x000f06a6 Ger t boot Anfang Ende Bl cke Id System dev sdel 8192 122879 57344 c W95 FAT32 dev sde2 122880 31504383 15690752 83 LINUX Nach erneuter Eingabe des Passworts kommt wieder der gleiche Text aber nicht ganz Diesmal ist die Ausgabe mit Angaben zum Laufwerk sde erweitert Meine SD Karte ist also unter dev sde zu finden Wir erkennen au erdem dass auf dieser SD Karte schon zwei Partitionen existieren auf denen bereits Daten sind Diese Daten werden jetzt berschrieben und sind dann weg Falls ich sie noch brauche m sste ich sie jetzt sichern brigens k nnte ich statt fdisk l auch den Befehl df h benutzen Dieser ist aber nicht immer zuverl ssig da die SD Karte erst erkannt wird wenn auf sie schon mal zugegriffen wurde
105. wollt die Daten ver ndern kann gibt man nur sich selbst Schreibrechte Deshalb sehen wir in den Ordnern die unterhalb von unserem Verzeichnis home pi sind h ufig unter Properties im File Manager die Access Control Rechte Read and 71 pulldown hei t nat rlich herunter ziehen Herunterzieh Men ist aber ein furchtbarer Name 72 Englisch detaillierte Listen Ansicht 73 Englisch f r berschrift 74 Properties wird hier mit Eigenschaften bersetzt 75 Das ist der Besitzer des Verzeichnisses oder der Datei 76 Das ist die Gruppe zu der der Besitzer geh rt 77 Leider ist das Wort root bei LINUX mehrfach besetzt Erstens und das haben wir schon kennen gelernt gibt es das Wurzelverzeichnis root Dann gibt es aber auf jedem LINUX Gro und Klein Rechner einen Benutzer mit dem Namen root Das ist der der alles darf Und dann gibt es noch eine Gruppe mit dem Namen root Zu der geh rt der Benutzer root 78 Mit dem Befehl sudo su im Terminal sind wir als User root eingeloggt Das erkennen wir jetzt daran dass der Prompt jetzt root raspberrpi hei t Probiert es aus aber geht m glichst bald mit exit wieder zur ck denn als root kann man ziemlichen Unfug anrichten wenn man nicht wei was man tut bis zum zerst ren des LINUX Betriebssystems 79 Lesen schreiben und ausf hren 80 Das ist der Besitzer der Datei 81 Zugangsregelun
106. z B dev disk3s1 Die SD Karte muss jetzt mit dem Befehl diskutil unmount dev disk3sl zum berschreiben vorbereitet werden Das Laufwerk wird nun umbenannt mit dev disk3sl1 gt dev rdisk3 Mit dem Befehl dd wird wie bei LINUX das Image auf die SD Karte bertragen Dazu brauchen wir Superuser Rechte mit sudo 38 Der Prompt ist der Text am Anfang jeder Zeile der bash in die ein Befehl eingegeben werden kann Bei mir ist das axel LINUX gt Seite 18 sudo dd bs 1m if lt pfad gt 2012 12 16 wheezy raspbian img of dev rdisk3 Der Befehl dd braucht einige Zeit und muss beendet sein bevor mit dem Kommando diskutil eject dev rdisk3 die SD Karte freigegeben werden kann 4 Den Raspberry Pi zum ersten mal booten Jetzt k nnen wir den Raspberry Pi zum ersten mal in Betrieb nehmen Dazu schlie en wir den Monitor ber ein HDMI Kabel an und die Tastatur und Maus ber die beiden USB Anschl sse Falls wir keinen Monitor mit HDMI Anschluss haben tut es auch einer mit DVI Anschluss Dazu brauchen wir dann aber ein HDMI DVI Kabel oder einen HDMI DVI Adapter Um den Raspberry Pi zu starten m ssen wir jetzt nur noch ein Netzteil mit 5V Ausgangsspannung und Micro USB Stecker anschlie en Meistens tut es hier ein Handy Ladeger t Der Raspberry Pi hat keinen Schalter und startet sofort Die Leuchtdiode an der PWR steht leuchtet jetzt rot Die Leuchtdiode neben ACT beginnt unregelm ig gr n zu blinken Wir sollte
107. zt mit dem Internet Browser Midori berpr fen Das gr ne Symbol des Midori liegt links auf dem Desktop und wir k nnen den Browser durch einen Doppelklick starten Zusammenfassung 1 Den USB WLAN Adapter anschlie en 2 Den Raspberry Pi neustarten 3 Das Programm Wi Fi oder wpa_gui starten 4 Mit Scan den Router finden und die Einstellungen merken 5 Doppelklick auf die Zeile in Scan die unseren Router anzeigt 6 Das Passwort eingeben 7 Mit Connect den Raspberry Pi mit dem Router verbinden 8 Mit dem Midori ins Internet 7 Der Editor Emacs Ein Editor ist ein Programm das uns hilft andere Programme aber auch andere Texte zu schreiben Ich benutze immer gern den GNU Emacs der auf Richard Stallman zur ck zu f hren ist 100 Der Name des Haustiers als Passwort w re zum Beispiel grob fahrl ssig 101 Haben wir das schon mal gemacht steht hier jetzt add und wir legen statt 0 WLAN Name jetzt 1 WLAN Name an 102 Die MAC Adresse Media Access Control ist eine Kennung die ein Netzwerk Bauteil eindeutig identifiziert 103 Wir kennen schon den Firefox oder den Internet Explorer Das sind auch beides Browser die uns die Informationen von Webseiten anzeigen k nnen 104 GNU steht f r das rekursive Akronym GNU s Not Unix Unix ist ein Betriebssystem dass als Vorbild f r LINUX galt Das urspr ngliche GNU Betriebssystem von Richard siehe unten war unbrauchbar daher ist aus GNU heute GNU LINUX oder
108. zwerk sonst ist es keins 97 Bei mir nat rlich die SSID meines WLAN Routers mit dem Namen WLAN huelsmann 98 Beglaubigung 99 Scan hei t soviel wie absuchen Seite 29 erratbar sein Die anderen Eintr ge sind nicht weiter wichtig f r uns so dass wir das Fenster mit dem Klicken auf Save schlie en k nnen Wir sehen jetzt wieder das Fenster von Abbildung 11 Hier dr cken wir den Button Connect und dann schauen wir was sich tut Der Raspberry Pi versucht sich jetzt mit dem WLAN zu verbinden Das kann ein paar Augenblicke dauern Dann sollte die Verbindung stehen Bei Status sollte jetzt Completed stehen In Authentication Encryption und SSID stehen jetzt die Eintr ge die wir schon kennen In BSSID stehen jetzt Buchstaben und Zahlen wobei immer zwei Ziffern durch einen Doppelpunkt getrennt sind Das ist die MAC Adresse unseres USB WLAN Adapters Als letzten Eintrag gibt es noch die IP address Hier steht 192 168 2 xxx wobei xxx f r eine Zahl steht die der DHCP Server des WLAN Routers an euren Raspberry Pi vergeben hat Wir k nnen jetzt das Programm wpa gui schie en In der Taskleiste sehen wir jetzt ein Symbol des WLAN Ein Klick auf das Symbol und wir sehen das Fenster des wpa_gui wieder Ab jetzt versucht der Raspberry Pi sich automatisch mit dem Internet zu verbinden wenn wir ihn starten Das wir mit dem Internet verbunden sind k nnen wir jet

Download Pdf Manuals

image

Related Search

Related Contents

Naložite in natisnite celoten priročnik ()  Product User Manual for the "Air Mass Analysis" product    Catalogue Version PDF - Blancs Manteaux Auction  abb reguladores factor potencia rvt  Les Correspondances - Réseau ticéa Saint  Hobart Welding Products OM-240 438E Welding System User Manual  HumaStar 600  BAKER DD7 INSTALLATION INSTRUCTIONS  Istruzioni per l`uso ADP 5300  

Copyright © All rights reserved.
Failed to retrieve file