In diesem Artikel gehen wir dem Gehirn unserer Roboter auf der Spur. Häufig erwähnen wir in unseren Artikeln den Begriff „Mikrocontroller“ oder auch „Mikroprozessor“, ohne diesen weiter zu erläutern. Dabei gibt es einen Unterschied zwischen den beiden Begriffen, den wir in diesem Artikel erklären.
Außerdem wollen wir euch in diesem und folgenden Artikeln zeigen, wie ihr Mikrocontroller programmieren könnt. Dafür listen wir geeignete Mikrocontroller-Plattformen auf, welche einen guten Einstieg in die Materie vermitteln.

Worum handelt es sich?

Wer sich generell für Technik interessiert, hat wahrscheinlich schon von einigen Mikrocontroller-Plattformen gehört. Solche Plattformen erfreuen sich bei Bastler*innen und Technikfaszinierten immer größerer Beliebtheit. Mit ihnen sind technische Spielereien und private Lösungen schnell realisiert. Aber auch wenn die berühmten Vertreter eher den Hobbybereich abdecken, sind Mikrocontroller als solche nicht als Spielzeug abzustempeln!

In der Industrie spricht man in diesem Zusammenhang gerne von „eingebetteten Systemen“ oder wie es auf Englisch heißt „embedded systems“. Diese Systeme verstecken sich auch in allerlei Gerätschaften des Alltags: in Digitaluhren, in Haushaltsgeräten mit Knöpfen und Display, aber auch zuhauf in Autos und sogar in SIM- und EC-Karten.
Und im Zuge des „Internet of Things“ (IoT) werden zukünftig wohl auch Geräte, welche bisher ohne Computerchips funktionierten, mit solchen aufgerüstet werden. Die Auseinandersetzung mit Mikrocontrollern und deren Programmierung ist also relevanter denn je.

Von Mikrocontrollern und Mikroprozessoren

Ein Mikrocontroller ist nach außen hin nur einer dieser schwarzen Plastikchips mit vielen Metall-Beinchen rund herum. Vielleicht habt ihr solche Chips schon einmal beim Aufschrauben defekter Geräte o.ä. gesehen. Aber Achtung –  nicht jeder schwarze Chip mit Metall-Beinen ist gleich ein Mikrocontroller. Optisch unterscheiden sich viele kleinere Mikrocontroller aber auch nur durch ihren Aufdruck von anderen integrierten Schaltungen.

Jeder Mikrocontroller beinhaltet nun einen oder mehrere Mikroprozessoren. Diese sorgen für die Rechenleistung. Viel mehr können sie allerdings nicht. Damit man die Leistung der Prozessoren auch nutzen kann, müssen sie mit der sogenannten Peripherie verbunden werden, also allen Teilen, die mit dieser Rechenleistung arbeiten. Das ist ähnlich wie bei einem Desktop-PC. Der Prozessor, bzw. die CPU darin kann allein relativ wenig. Erst die Peripherie aus Mainboard, Arbeitsspeicher, Massenspeicher, Grafikarten,  Internetcontroller und ähnlichem macht die Rechenleistung nutzbar. Der Mikrocontroller beinhaltet die Peripherie, zusammen mit den Mikroprozessoren. Er ist also die übergeordnete Einheit, genauso wie ein Desktop-PC. 

Unterschiede zwischen Mikrocontrollern und Desktop-PCs

Da auf Mikrocontrollern alles auf ein sehr kleines Gehäusemaß von beispielsweise 1cm² miniaturisiert ist, schrumpft mit den Abmessungen natürlich auch die Rechenleistung. Während ein PC mit einer starken allgemeinen Rechenleistung Basis für jederlei Anwendungen sein kann, sind eingebettete Systeme meist speziell für einen Einsatzzweck ausgelegt, welchen sie dann aber auch zuverlässig ausführen.
Falls es beim Design des Systems aber nicht schon vorgesehen wurde, sind spätere Erweiterungen oder Änderung des Anwendungszwecks kaum möglich. Dafür sind diese Systeme klein, in der Masse günstig, verbrauchen viel weniger Energie als ein PC und benötigen i.d.R. nur passive oder gar keine Kühlung.
Außerdem sind Mikrocontroller darauf ausgelegt, Hardware wie Motoren oder Sensoren direkt anzusprechen. Ein PC benötigt dafür weitere spezielle Erweiterungskarten, auf denen sich wiederum Mikrocontroller befinden, die zwischen PC und Hardware vermittelt.

Auch bezüglich des Benutzererlebnisses darf keine Bedienung mit Bildschirm, Maus und Tastatur erwartet werden. Eingebettete Systeme haben in der Regel keine oder wenige Ein- und Ausgabemöglichkeiten. Viele digitale Regelsysteme, wie beispielsweise ein modernes, aber einfaches Thermostat, haben einfach nur einen Drehregler zum Festlegen der Temperatur – sonst nichts. Der Trend geht allerdings hin zum Touchscreen, weshalb die aktuell leistungsstärksten Mikrocontroller schon kleine Touchscreens selbständig bedienen können.

Mikrocontroller-Plattformen

Die Mikroprozessoren kommen zum Großteil von ARM limited und sind auf Mikrocontrollern der Hersteller NXP, STM, Texas Instruments und Microchip, uvm. verbaut. Generell bieten die Mikrocontrollerhersteller auch Entwicklungsplatinen, welche aber für den professionellen und industriellen Einsatz in eingebetteten Systemen gedacht sind.
Speziell für die Lehre angepasste Mikrocontroller-Plattformen, haben häufig auch einen ARM-Mikroprozessor verbaut, bieten aber durch die verschlankte Programmierumgebung einen anfängerfreundlichen Start in die Materie.

Die BBC hat sich in Kooperation mit einigen IT-Firmen und der britischen Regierung das Unmögliche vorgenommen: Die Entwicklung einer kindgerechten Mikrocontroller-Plattform zum praxisnahen Programmieren im Schuleinsatz. Das fertige Produkt ist der micro:bit, welchen wir euch in einem folgenden Artikel genauer vorstellen werden.

Nach dem Vorbild des micro:bits hat der Deutsche Bundestag den Calliope Mini gefördert. Diesen haben wir euch bereits in diesem Artikel vorgestellt.

Einen interessanten Fokus auf das Löten bzw. den Zusammenbau legt der B∙O∙B∙3. Dazu bietet er eine Programmierung in C/C++. Ein Testbericht zum B∙O∙B∙3 ist in Arbeit.

Ein wenig professioneller und für fortgeschrittene Bastler*innen zu empfehlen, ist die Arduino Plattform, welche durch die vorhandene Software-Bibliothek viele Funktionen einfach programmieren lässt.

Allgemeines Programmieren von Mikrocontrollern

Mikrocontroller führen genauso wie „große“ Computer Programme aus. Daher muss für jeden Controller und Einsatzzweck ein spezifisches Programm geschrieben werden. Aber statt der textuellen Ausgabe eines ersten „Hello World“ wird beim Mikrocontroller als erstes eine LED zum Blinken gebracht.
Es folgen Tasteneingaben, das Auslesen von Sensoren und Kommunikation mit angeschlossenen Geräten. In kommerziellen Systemen wird häufig in der Programmiersprache C programmiert. Für Anwendungen, bei denen die Controller nicht an ihrer Leistungsgrenze betrieben werden, also zumeist im Hobbybereich und in der Lehre, stellen die Anbieter von Mikrocontroller-Plattformen oftmals auch Lösungen zur Verwendung anderer Programmiersprachen bereit. Wer also aus Gründen des Komforts oder der Didaktik vermeiden möchte, in C zu programmieren, ist hier ebenfalls bedient.

Auch ich durfte im klassischen Informatikunterricht Programmierkonzepte in Programmen kennenlernen, welche hauptsächlich Tastatureingaben verarbeitet haben. Die praktische Relevanz war zu dem Zeitpunkt für mich kaum erkennbar und als vollwertige „Programme“ wurden diese nie von mir wahrgenommen. Was daran lag, dass sie nicht mit einem Doppelklick auf ein Desktop-Symbol ausführbar waren. Stattdessen konnten sie nur innerhalb der kompliziert eingerichteten Programmier-Umgebungen im Computerraum der Schule gestartet werden.

Speziell für die Lehre angepasste Mikrocontroller-Plattformen, wie eben der micro:bit, sollen den Informatikunterricht nun interessanter gestalten. Zum einen gewinnen die Projekte mehr an Praxisbezug, zum anderen ist die Software auf den Boards bereits vollwertig lauffähig, und teilweise sogar zu Hause sinnvoll einsetzbar. Auch ich habe erst durch den Umgang mit Mikrocontrollern im Studium meine Affinität zur Softwareentwicklung entdeckt.

Calliope Mini, micro:bit und Co. können also als Motivationshilfe und Demonstrationsobjekt fungieren. Darüber hinaus vermitteln sie aber auch einen Einblick, wie die Elektronik in alltäglichen Geräten prinzipiell aufbaut ist und zeigt auf, dass sich das Programmieren nicht nur auf PC-Anwendungen und Websites begrenzt. Grundsätzlich ist es also eine gute Idee, solche Mikrocontroller-Plattformen kinder- und schulfreundlich zu machen.

Autoren: Dustin Piontek, Felix Krawczyk