Für Maker von 9 bis 99
Markus Knapp
Roboter bauen mit Arduino
Die Anleitung für Einsteiger
- Einfach einsteigen, kein Vorwissen erforderlich; für Maker von 9 bis 99
- Alle Grundlagen: Arduino-Programmierung, Elektronik und Robotik
- Einen eigenen Roboter bauen und schrittweise um neue Fähigkeiten erweitern
Sie möchten Ihren eigenen Roboter bauen und nebenbei den Arduino „richtig“ kennenlernen? Dann ist das Ihr Buch! Zuerst richten Sie Ihren Arduino ein und erhalten eine Einführung in dessen Programmierung sowie in die Grundlagen der Robotik und Elektronik. Dann geht es gleich ans Eingemachte: Schritt für Schritt montieren Sie Ihren eigenen Roboter und statten ihn z.B. mit Motoren, Servo, Rädern und Sensoren aus. Viele farbige Abbildungen, fertige Programme und Erweiterungstipps unterstützen Sie dabei. Für Einsteiger ohne Vorwissen geeignet!
411 Seiten, 2. aktualisierte Auflage 2016, broschiert, in Farbe,
ISBN 978-3-8362-4351-3
Für Windows, Mac OS, Linux
29,90 €
Hier bestellbar – mit kostenlosem Versand nach Deutschland und Österreich. Oder bei Amazon.
Den Roboter-Bausatz gibt es als StartKit bei watterott electronic.
PS.: Ich habe „keine Aktien“ im Roboter-Kit und daher leider auch gar keinen Einfluss auf die Lieferzeit des Bausatzes. Falls es einmal nicht lieferbar sein, einfach Kontakt zum Service von watterott aufnehmen und nach der Lieferbarkeit fragen…
Kunststoffteile/Chassis selbst lasern?
Es ist auch problemlos möglich, sich die Kunststoffteile lasern zu lassen. Die Vorlagen dazu gibt es frei verfügbar hier: https://github.com/markusk/StarterKit-Robotics/tree/master/docu
Alternativ ist das Chassis auch einzeln bestellbar.
gutes Video
Danke. Video ist jetzt fertig und vertont!
Mensch Markus, wusste gar nicht, dass du ein Buch schreibst. Mal schauen….gibt es das für den Kindle? Cooles Video!!!
Tja, ich sag es dir… Und es ist endlich fertig: Am 27.10. ist die Veröffentlichung. Ob es auch direkt für den kindle lieferbar ist, kann ich nicht sagen. Aber bei Galileo Press bekommst du ja auch immer das eBook.
Das ist dann auch übertragbar. Für den Paperwhite ist es aufgrund der detailreichen Fotos sicher nicht so zu empfehlen. Für alle anderen bestimmt schon.
Ach ja: Das Video hat übrigens der Alex aus unserem Team produziert!
Ist bei der gebundenen Ausgabe auch die digitale Version dabei?
Hallo Hans,
das Buch ist seit einiger Zeit sowohl gedruckt, als E-Book oder zusammen als Bundle erhältlich:
https://www.rheinwerk-verlag.de/roboter-bauen-mit-arduino_4242/
Gruß, Markus
Hallo Markus,
ich habe mir Dein Buch gekauft, weil ich gern mit dem Arduino experimentiere. Habe schon selbst versucht aus einzelnen Arduino Komponenten und kleinen Motoren und LEGO Teilen meines Sohnes ( hoffentlich merkt er es nicht) einen kleinen Roboter zu bauen. Funktioniert recht gut, aber mit Hilfe Deines Buches werde ich ihn noch verbessern können. Danke dafür. Echt tolles Buch und vorallem für Laien wie mich sehr gut verständlich.
MfG Thomas
Hallo Thomas,
ganz vielen Dank für dein tolles Feedback, das freut mich wirklich sehr! Es ist immer wieder schön, so eine Bestätigung für die viele Arbeit zu bekommen. Danke!
Wenn du magst, freue ich mich natürlich immer über jede positive Rezension bei Amazon… :-)
https://www.amazon.de/Roboter-bauen-mit-Arduino-Einsteiger/dp/3836229412?ie=UTF8&camp=1638&creative=19454&creativeASIN=3836229412&linkCode=as2&linkId=CO5XXTCYFIIGVXPM&redirect=true&ref_=as_li_tl&tag=robotiklabor-21
PS.: Ich hatte den Kommentar nicht vorher gelesen.
Hallo
Klasse Buch. Als absoluter Laie komme ich damit sehr gut zurecht. Ich versuche auch immer die im Download angebotenen Listings nachzuvollziehen und zu verstehen. Allerdings bewegt sich bei der Datei Roboter_Software.ino der Servo nur dann, wenn er ein Hindernis erkennt. Während der Fahrt bleibt er bei 90 Grad. Istvdas ein Fehler ? Vielleicht komme ich ja auch noxh dahinter :-).
Also nochmals vielen Dank für doeses Erwachsenenspielzeug. Daumen hoch.
VG vom Niederrhein
Uwe Schicht
danke für dein tolles Feedback, Uwe. Das freut mich wirklich sehr! Wenn du Lust hast, würde ich mich über so einen Text bei Amazon als Rezension auch sehr freuen. :) http://amzn.to/2eekLEl
Zu deiner Frage:
Der Server sollte sich auch während der Fahrt ständig drehen; quasi wie ein „Radar“. Wenn er das bei dir nicht macht, stimmt irgendetwas nicht im Sourcecode. Vielleicht wurde hier etwas verändert? Wenn du das Buch der Reihe nach komplett durcharbeitest, solltest du aber die Ursache auch finden können. Ansonsten melde dich nochmal über das Kontakt-Formular auf dieser Seite – vielleicht kann ich dir aus der Ferne etwas helfen.
Es handelt sich wohl um einen (kleinen) Fehler in der runtergeladenen Roboter_Software.ino: In der Funktion DriveForward() wird zwar die Variable ServoPosition gemäß der gewünschten Schwenkbewegung aktualisiert, aber der Wert nicht an den Servo übermittelt — ein Einfaches SensorServo.write(ServoPosition); am Ende der Funktion sollte genügen (nicht getestet).
Bin selbst als Elektroniklaie mit Programmiererfahrung auch begeistert vom Buch (habe die 2. Ausgabe). Wenn ich dazu komme, will ich auch ein entsprechendes ausführliches Feedback auf Amazon hinterlassen.
Ich habe allerdings ein Problem mit dem Standardaufbau, das ich als Elektronik-Anfänger einfach nicht gelöst bekomme: Bei Batterie-Versorgung (4 volle Eneloop im Watterott-Bausatz) bekommt man höhere Werte vom IR-Distanzsensor als bei USB. Das sieht man sehr gut bei aufgespieltem Roboter_Sensortest.ino: Zieht man USB raus (nur Batterieversorgung), blinkt die LED bei gleicher gemessenen Entfernung fast doppelt so schnell; steckt man USB wieder rein, wieder langsamer.
Habe es eingegrenzt auf irgendwas mit der Spannung: Bei Batterieversorgung ist die Eingangsspannung 5,14V, am 5V-Pin liegen aber nur 4,25V an. Bei USB sind beide Spannungen über 5V. Am IR-Distanz-Signal-Ausgang liegt interessanterweise bei beiden Stromquellen dieselbe Spannung an. Habe auch schon versucht, erst den 5V-Pin und dann den 3,3V-Pin mit AREF zu verbinden — bei 5V-Pin keine Änderung der von analogRead(), bei 3,3V-Pin leichte Besserung, aber nicht wirklich gut.
Wenn ich einen 9V-Block anschließe (am runden Stecker des Arduino UNO), sind die Werte ziemlich gleich zu USB.
Nachdem ich exakt den im Buch beschriebenen Aufbau habe (selbst den Batterietyp), kann ich mir vorstellen, dass Du bei der Entwicklung mit demselben Problem gekämpft hast. Wie hast Du das mit den falschen Werten bei Batterieversorgung gelöst? Ich hab das Gefühl, dass es durch einen Standardkniff gelöst werden kann, z.B. irgendwo vielleicht noch was mit Pull-Up- oder Pull-Down-Widerständen gemacht werden muss, aber hab leider wenig Ahnung von allem Elektronischen.
Hallo Andreas,
danke für dein Feedback. Wenn ich das richtig sehe, wird ServoPosition innerhalb der Funktion DriveForward sehr wohl an den Servo gesendet. Aber eben stets zu Beginn dieser Funktion. Da diese in der loop-Funktion ständig aufgerufen wird, wird sie auch an den Servo gesendet.
Das Problem mit den Distanzen ist mir so tatsächlich noch nie aufgefallen. Ich habe mir den Bausatz und Software ja eben auch nicht ausgedacht. Ich nutze ihn nur für mein Buch…
Mein Roboter fährt jetzt seit einigen Jahren mit den gleichen Akkus recht erfolgreich durch die Gegend. Aber es ist richtig, die Stromversorgung ist etwas knapp bemessen. Man könnte den Roboter durch einen sogenannten step up-Regler (oder auch DC/DC-Konverter) auf z.B. 6 Volt hoch regeln. Damit dürfte sich ads Problem lösen lassen. Hier findest du sehr gute Tipps dafür:
https://www.robotfreak.de/blog/roboter-starterkit-v2-modifikationen/
Hallo Markus und frohes Neues Jahr!
Vielen Dank für Deine Antwort. Habe mich jetzt noch mal hingesetzt und den Fehler im Code gefunden. Das hier ist glaub ich beim Versuch, den Code verständlicher zu machen, so stehengeblieben:
ServoPosition = ServoPosition–;
Idem dito für ServoPosition++
Ich glaube, hier wollte jemand eigentlich aus ServoPosition–; bzw. ++ zum besseren Verständnis ein ServoPosition=ServoPosition+1 machen, wurde dann aber mittendrin abgelenkt. ;)
Das Problem ist, dass ++ und — als Postfix den ursprünglichen Wert zurückgeben und erst danach die Variable aktualisieren (als Präfix ist es umgekehrt), wodurch der Variable ServoPosition ihr alter Wert zugewiesen wird (es findet keine Änderung statt). Denke aber nicht dass es als Präfix gedacht war: ++ und Zuweisung ist sowieso doppelt gemoppelt.
Herzlichen Dank auch für den Link zu dem Blogpost von robotfreak.de! Das ist genau, was ich gesucht habe. Ich werde dann auch gleich schauen, ob das ständige Zittern des Servos durch Entstörkondensatoren weggeht (wird mein erster „echter“ Einsatz von Kondensatoren, drück mir die Daumen).
Sehr cool, Andreas! Großes Kino. Ich hätte es nicht besser beschreiben können und du hast natürlich absolut Recht.
Und: Du bist der Erste, der es bemerkt hat. Danke. :)
Ich habe den Code korrigiert und die Sourcen neu hochgeladen. Im Buch ist dieser Teil nur beschrieben und nicht abgedruckt, wenn ich nichts übersehen habe. Hier muss also erfreulicherweise nichts korrigiert werden.