Schlagwort-Archive: frrm

Arduino und Co: µC fuer Dummies

Arduino Uno unboxing
arduino uno unboxing by bjepson
, cc-by-nc-sa

Wenn ich ein einzelnes Projekt benennen muesste, das meines Erachtens am Meisten fuer die breite Zugaenglichkeit von Mikrocontrollern (µCs) fuer die breite (Nicht-Experten-)Masse getan hat, dann duerfte das Arduino sein. Waehrend man frueher neben einem Evaluationsboard entweder einen Rechner mit klassischer serieller Schnittstelle oder gleich einen ISP zur Programmierung brauchte, und dann auch noch die Untiefen der µC-C-Programmierung erlernen musste, hat der Arduino die Huerden bis zum schnellen Bastelprojekt deutlich gesenkt.

Ich hatte auch ewige Zeiten das oben verlinkte Pollin-AVR-Evaluationsboard herumliegen und versucht, ATMega8-Controller zu programmieren — arg weit bin ich damit aber nie gekommen. Von Arduino hatte ich immer wieder einmal gehoert und Anfang des Jahres stiess ich auf diese Dokumentation — und wusste, dass ich mir so ein Teil kaufen wuerde 🙂

Arduino The Documentary (2010) English HD from gnd on Vimeo.

Der eine Trick, der bei Arduino alles anders macht, ist der eingebaute Bootloader. Nach dem Reset des Chips wartet dieser wenige Sekunden lang, ob jemand versucht, ihm ueber die eigene serielle Schnittstelle neue Software unterzuschieben, und programmiert sich gegebenenfalls mit dieser neu. Auf den Arduino-Platinen ist hierfuer nochmals ein eigener Controller verbaut, der zwischen USB-Anschluss und µC vermittelt, so dass man weder auf einen externen Programmer noch auf klassische serielle Schnittstellen auf Rechnerseite angewiesen ist. Einfach, aber genial.

Der zweite Trick ist die Entwicklungsumgebung, die auf Processing basiert und mittels ihrer Bibliotheken die hardwarenahen Operationen sehr weit wegabstrahiert. An die Stelle bitweiser Verschiebeoperationen treten Funktionen wie digitalWrite(7, HIGH) um beispielsweise an den Pin 7 ein ausgehendes 1-Signal anzulegen — das sollte kein Problem sein, wenn man jemals rudimentaer C oder Java zu programmieren gelernt hat.

Addendum, 2016-03-04: Der urspruengliche Entwickler von Wiring hat dieser Geschichte auch noch ein Scherflein beizutragen. Insbesondere die Doku sollte nicht ohne diesen Kontext gesehen werden.

Arduino Motion Detector
arduino motion detector by plamoni
, cc-by-sa

Mittlerweile sind knapp elf Monate vergangen, in denen ich in der Freizeit immer wieder mit dem Arduino Uno herumgespielt, eigene Shields gebastelt und Low-Cost-Nachbauten auf Lochraster aufgebaut habe. Und Zeit fuer ein wenig Gerante, was mir nicht so ganz gefallen hat.

Shields vs. Breadboard

Arduino ist modular erweiterbar ausgelegt: Ueber die Steckheader beidseitig der Platine sollen sogenannte Shields aufgesteckt werden koennen, die dem Controller beispielsweise Ein- und Ausgabemoeglichkeiten geben: LC-Displays, Taster, Drehregler, Ethernet-Schnittstellen, was auch immer man dort haben moechte.

Das ist an sich eine nette Idee, wenn man mal eben etwas zusammenstecken moechte — und gleichzeitig meines Erachtens der groesste Mist an der ganzen Plattform. Klar, ein LCD-Shield mit Buttons ist fuer 15 EUR zu haben und sofort, ohne weiteren Aufwand aufgesteckt und verwendbar. Das geht aber meines Erachtens nur so lange gut, wie man sich wirklich in dieser Shield-Welt aufhalten und mit Originalboards basteln moechte. Will man jemals mit Steckbrettern (Breadboards) arbeiten, um eigene Komponenten zu verwenden, wird’s mitunter haarig. Man kann sich entweder Prototyping-Shields kaufen (oder aetzen), auf denen man die Komponenten einsteckt, oder muss Arduino und Breadboard auf irgendeine Unterlage kleben, damit diese zueinander fixiert sind und nicht bei jeder Bewegung die Verbindungskabel auseinandergezogen werden.

Arduino LED Modulearduino led module by lenp17, cc-by-nc-sa

Dazu kommt, dass die Arduino-Boards seit Generationen einen Designfehler mitschleppen, der aus Abwaertskompatibilitaetsgruenden beibehalten wird (sic!): Auf einer Seite haben zwei der Anschlussheader einen nicht standardkonformen Abstand, was zur Folge hat, dass man bei Lochrasteraufbauten Dinge verbiegen (oder seinen Arduino umbauen) muss. So etwas nervt tierisch, vor allem, wenn man bedenkt, dass das alles ganz anders gehen koennte.

Selbstbau auf Steckbrett

Die simpelste Variante, sich einen Arduino-kompatiblen Aufbau zusammenzustecken, bedarf naemlich nur einer kleinen Handvoll Bauteile fuer knapp 10 EUR, von denen die Haelfte fuer den Spannungsregler noetig ist. Noch einmal knapp 12 EUR gehen fuer einen Adapter mit dem FTDI-Chip drauf, der fuer die Signalwandlung von USB auf Serielle Schnittstelle zustaendig ist — den man aber frueher oder spaeter ohnehin einfach haben will. Mit diesem lassen sich naemlich auch die integrierteren „offiziellen“ Arduino-Varianten ohne eingebauten USB-Port programmieren, wie der oben abgebildete Arduino Pro Mini oder seine Klone. Mit dem simplen Steckbrettaufbau laesst sich prima basteln und experimentieren (Sets dafuer gibt’s natuerlich auch bei umtriebigen Haendlern zu kaufen), und das fertige Produkt kann spaeter 1:1 auf Lochraster oder z.B. mittels Fritzing auf „richtige“ Platine uebertragen werden.

Die einzigen zwei Nachteile der Steckbrett-Variante sind, dass ein „Overhead“ mit Quarz und Kondensatoren (bzw. einem Resonator) und dem Reset-Button samt Pull-Up-Widerstand „mitgeschleppt“ bzw. jedes Mal haendisch aufgebaut werden muss, und dass man wissen muss, welcher physikalische µC-Pin mit welchem Arduino-Pinout korrespondiert. Fuer letzteres kann man sich einfach einen Aufkleber fuer den Controller-Ruecken drucken (oder kaufen) — fuer ersteres gibt es gleich mehrere Loesungen.

Arduino-based remote
arduino-based remote by cibomahto
, cc-by-sa

Die Bare-Bones-Varianten

Die simpelste und spassigste mir bekannte Loesung, Reset, Takt und Status-LEDs fuer ein Steckbrett zu optimieren, ist das Ardweeny, das „huckepack“ auf den Controllerruecken gesetzt wird — Pinout-Bezeichnungen gleich inklusive.

Andersherum, mit sehr kompakten Boards, auf denen der AVR-Controller sitzt, gibt es gleich mehrere: DorkBoard, Boarduino und das BareBonesBoard/BBB (Foto oben). Letzteres hat dann zwei Weiterentwicklungen hervorgebracht, die ich momentan von allen Arduino-Clones am interessantesten finde: Einmal das ReallyBareBonesBoard/RBBB, das ueber JeeLabs auch in Europa mit 14 EUR noch recht erschwinglich zu haben ist. Bei dieser Variante kann man (je nach Geschmack) die Platine gegebenenfalls noch um den Hohlstecker oder gar die gesamte Spannungsregelung „kuerzen“, falls man diese nicht braucht. JeeLabs hat sich dann auch dieser Variante noch einmal angenommen und die kaugummiriegelgrossen JeeNodes daraus weiterentwickelt, die von Haus aus mit einem RFM12-Funkmodul fuer drahtlose Kommunikation daherkommen.

Was ich von den JeeNodes halten soll, weiss ich noch nicht so ganz: Die Erweiterungsmoeglichkeiten sind wirklich durchdacht, beispielsweise Adapter mit Inverswandlern, mittels dessem man die Nodes mit nur einer AA-Zelle betreiben kann (das Blog ist uebrigens riesig und sehr lesenswert!), andererseits bringen die JeeNodes wieder ihr eigenes Port-System mit sich, das man zwar nicht mitspielen muss, aber eben doch wieder eine eigene Welt definiert. Gut gefallen mir die RFM12-Module, die spottbillig sind und fuer die meisten Anwendungen den viel teureren ZigBee-Modems kaum etwas nachstehen.

Und was soll ich jetzt kaufen?

Tja, die Qual der Wahl. Lipoly.de verkauft gerade Restbestaende der DFRduino Duemilanove, also Klone der letzten Arduino-Generation, fuer 15 Euro — das ist meines Erachtens ein No-Brainer, wenn man einfach nur unkompliziert einsteigen will. Und falls man sich irgendwann zum Steckbrett noch einen FTDI-Adapter kauft, kommt’s letztlich auf den eigenen Geschmack und die eigenen Anforderungen an, ob es nun ein reiner Steckbrett-Aufbau wird, ein RBBB, JeeNode… oder ob man doch einen Original-Arduino Mega haben moechte, um seinen Roomba fernzusteuern, wie das aktuell in der Medieninformatik der Uni Ulm passiert 🙂

Anmekung: Wer vor dem Henne-Ei-Problem steht, wie der Arduino-Bootloader auf den ATmega kommen soll, kann ihn sich gerne von mir flashen und an der Uni oder im frrm hinterlegen lassen.

Dieser Text steht unter einer cc-by-nc-sa-Lizenz