The title JavaScript for Raspi, Arduino & Co. - especially with the focus on "programming and controlling robots, maker project and IoT devices" has made me take the book by Lyza Danger Gardner from the dpunkt.verlag in the shortlist of my studies.
sum impressionMy summary impression for the fast-readers: primarily Johnny-Five and Node.js is presented with execution of Firmata on the Arduino and later on the Tessel 2. Lyza explains everything from the ground up understandably with the help of illustrations (which in color even more meaningful contained). From the title you should delete "Raspi"; otherwise no prior knowledge of JavaScript is needed, but helpful.
Links- the book is written in german language and is aimed at readers in german language
Die ersten 10% gehen für Danksagung, Einführung in die Materie und Vorbereitung des 500 Seiten umfassenden Werkes drauf. In Kapitel 2 hätte ich mir neben der Host-Methode auch noch ein Beispiel mit eingebettetem JS auf dem Arduino gewünscht, und zwar ohne den Einsatz von Firmata. Wie Johnny-Five autark auf dem Arduino ausgeführt werden kann, erfährt der Leser erst ab Kapitel 8 "Tessel führt nativ aus" - bis dahin ist Durchhalten angesagt. Zumal sich das Beispiel auf den Tessel v2 bezieht und kein Arduino zum Einsatz kommt.
Lobenswert ist die hervorragende Strukturierung der Kapitel mit einer Lern-Zusammenfassung an jedem Kapitel-Ende. Der Begriff "Callback" hätte meiner Einsicht nach in Kapitel 2 noch erklärt werden müssen. Das wird dann auf Seite 314 nachgeholt.
Über ein ganzes Kapitel hinweg habe ich mir im Kopf behalten, dass der Autor "sein Versprechen noch einlösen muss, was der Grund ist, den Widerstand in Kapitel 3.2 von 250 Ohm auf den Standard von 220 Ohm zu reduzieren". Glücklichweise wird das Versprechen in Kapitel 3.3 eingelöst (der Durchlass-Spannung einzelner Komponenten wegen). Ein Hinweis etwas früher darauf hätte meine Gedanken nicht abschweifen lassen.
Welche Pakete/Komponenten-Klassen von Johnny-Five via npm-Install noch zur Verfügung stehen (also über die im Buch genannten Pakete wie nanotimer, request, keypress, node-serialport, leds und motors), wird nicht beantwortet. Ein Verweis bspw. mit einem Linkverzeichnis fehlt.
Bei der Behandlung des LCD Displays in Kapitel 5.2 wäre es noch erwähnenswert gewesen, dass es auch Adapter für die sehr einfache I2C-Schnittstelle gibt. Im späteren Verlauf ab Seite 232/238 wird die "Grove"-Schnittstelle (vgl. auch die Produkte von SeeedStudio dazu) erwähnt.
Ein Beispiel-Code mit einem Piezo als Input (das Beispiel mit dem Klopfen an der Tür aufgreifend) wäre ebenfalls noch das Kapitel abrundend gewesen.
Der Autor spricht dem durchhaltenden Leser auf Seite 169 aus der Seele: "wann fangen wir denn endlich damit an, Roboter zu bauen?" Dennoch werden die Grundlagen mit den physikalischen Zusammenhängen anschaulich und kurzweilig erklärt.
Als Fan des Particle Photons habe ich sehr wohl das Icon (Seite 256) dazu erkannt, doch leider wird seine WiFi-Unterstützung und die Cloud-Anbindung von Particle.io nicht weiter aufgegriffen (auf Seite 439 wird auf einer Seite darüber berichtet). Die Frage ob Photons auch JavaScript ausführen können bleibt offen!
Anmerkung: Particle-User können die Particle API JS nutzen!
Klasse wie der Autor die Wirkungsweise eines Transistors skizziert, doch wäre neben den "N-Transistoren" auch die "P-Transistoren" erwähnenswert, vgl. Kapitel 6.14. Die Übersetzung lautet übrigens "Basis, Emitter und Kollektor".
Die wenigen Rechtschreibfehler (*) lenken nicht vom Thema ab und so ist das Buch bislang ein gutes Fundament, welches auch die physikalischen Zusammenhänge herausgegriffener Komponenten erörtert.
Ich bin bis dato bis Seite 300 vorgedrungen und ich nehme an, dass der Raspberry noch in den folgenden "praktischen Projekten" behandelt wird.
(*)
a.) Bei der Auflistung in Kapitel 2 "Inhalt dieses Kapitels" - vierter Spiegelpunkt "Einen".
b.) Kapitel 5.2 müsste "Bei diesem erweiterten Timer" lauten, statt "Ti1mer".
c.) "Blitzlicht einer Kamera" statt "Kamerab-litze", vgl. Seite 187 in Kapitel 6.18.
Wie gesagt: nicht so entscheidend.



Comments