1 Einführung in die Entwicklungs- und Schaltungsumgebung
Das Internet der Dinge erfährt derzeit einen beachtlichen Hype. Die Hardware wird durch Raspberry Pi, Arduino und vergleichbare Systeme geprägt. Dabei handelt es sich um vollständige Einplatinenrechner zu günstigen Preisen. Maßgeblich für deren Erfolg ist die enge Verbindung zwischen Hard- und Software. An den Schnittstellen kann man allerlei „Gerätschaften“ anschließen, zum Beispiel zur Hausautomation. Eine Steuerung über das Internet ist angedacht. Dieser Ansatz ist jedoch nicht neu. Mithilfe der Mikrocontrollertechnik ist es schon seit Jahren möglich, Systeme mit einer gewissen Eigenintelligenz auszustatten.
Auch im Bereich der Mikrocontrollertechnik hat sich vieles getan. Während man früher absolut hardwarenah mit „kryptischen“ Assemblerbefehlen entwickelt hat, sind die heutigen Plattformen so leistungsfähig, dass eine Programmentwicklung in Hochsprachen (C, Basic, Pascal) erfolgt. Mit anderen Worten: Die Umsetzung der Ideen in Software findet in integrierten Entwicklungsumgebungen (IDEs) statt, deren Bedienung und Funktionsumfang denen von Visual Studio, Eclipse und Co. gleichen. Der Unterschied in der Projektentwicklung besteht darin, dass auch eine Konzeption der Hardware und deren letztendliche Herstellung zum Aufgabengebiet gehört, d. h. man muss den Lötkolben in die Hand nehmen. Damit verlassen wir den Bereich, wo man ausschließlich mit Softwareentwicklung zum Ziel kommt. Aber eigentlich ist dieses auch schon beim Raspberry Pi oder Arduino der Standard. An diese Einplatinenrechner im Miniformat (Checkkartengröße) können an den Schnittstellen vielfältige Hardwareerweiterungen angeschlossen werden, zum Beispiel zur Steuerung der unterschiedlichsten Akteure zur Heim- und Hausautomation, wie eine automatisierte Heizungssteuerung. Diese Hardwareerweiterungen gibt es teilweise als fertige Endprodukte, tatsächliche Innovationen und individuelle Lösungen sind jedoch eigenständig zu konzipieren und umzusetzen. Im Internet und diversen Fachzeitschriften ist ein regelrechter Wettbewerb ausgebrochen, welche Aufgaben mit diesen Minicomputern und deren Hardwareerweiterungen alle zu bewerkstelligen sind. Kreative Ansätze und Lösungen sind in jeder Hinsicht gefragt.
Dieser shortcut wird sich mit der Verwendung, Konzeption und Programmentwicklung von Mikrocontrollersystemen auseinandersetzen. Wir wagen als Softwareentwickler einen weiten Blick über den Tellerrand und schauen sozusagen zu den Wurzeln der Computertechnologie, deren Ursprünge zweifelsohne in der angewandten Elektronik liegen. Begleiten Sie uns spielerisch auf eine interessante Reise mit einer Vielzahl neuer Ein- und Ausblicke. Dazu haben wir ein bekanntes und etabliertes Ökosystem von Mikrocontrollern der Firma Microchip ausgewählt. Der Einstieg – sowohl in die Hardware, als auch in die Softwareentwicklung – ist recht unkompliziert, technisches Verständnis vorausgesetzt. Es stehen vielfältige Möglichkeiten der Unterstützung, wie Schaltungsentwürfe und Softwarebibliotheken, bereit.
Erste Entscheidung: Welche Familie?
Es geht darum, für welche Mikrocontrollerfamilie man sich entscheidet. Ein späterer Wechsel ist natürlich auch noch möglich, verursacht aber einiges an Aufwand. Auswahlkriterien sind [1]:
- Verfügbarkeit: Während einige Mikrocontroller über viele Bezugsquellen, u. a. auch als Einzelstücke zu beziehen sind, gibt es andere nur in großen Stückzahlen.
- Bauform: Ist der gewünschte Controller auch in der richtigen Bauform, z. B. nicht nur als SMD (Surface-mounted Device; diese haben im Gegensatz zu Bauelementen der Durchsteckmontage keine Drahtanschlüsse, sondern werden mittels lötfähiger Anschlussflächen direkt auf eine Leiterplatte gelötet) erhältlich?
- Preis: Je nach Ausrichtung des Projekts ein Entscheidungskriterium.
- Dokumentation: Ist eine gute Dokumentation verfügbar? Kann ggf. auch auf Anwendungsbeispiele und Fachbücher zurückgegriffen werden? Sind Beispielapplikationen erhältlich?
- Programmiergerät/Entwicklungsboard: Ist ein Programmiergerät ggf. in Kombination mit einem Entwicklungsboard zu beziehen. Ist der Preis dafür akzeptabel?
- Allgemeine Unterstützung und Verwendung in der Community: Welche Mikrocontroller werden von anderen für ähnliche Anwendungszwecke verwendet? Ein wichtiger Punkt, denn Anregungen und Hilfestellung findet man oft im Internet (Foren), und damit ist es hilfreich, Bausteine einzusetzen, welche sich einer allgemeinen Verwendung erfreuen.
- Technische Daten: Die meisten Mikrocontrollerfamilien dürften die technischen Anforderungen (Taktfrequenz, Speicher, I/O-Ports …) übererfüllen. Ebenfalls verfügen die meisten Familien über eine Vielzahl von Typen unterschiedlicher Leistungsklassen.
- Programmierung/Entwicklungswerkzeuge: Ist eine Programmierung in der gewünschten Sprache (Pascal, C, Basic …) möglich? Stehen (kostenfreie) Compiler und integrierte Entwicklungsumgebungen (IDEs) zur Verfügung?
Eine Liste von Typen von Mikrocontrollern unterschiedlichster Hersteller kann unter [2] eingesehen werden. Hier einige Namen: Altera, Analog Devices, Atmel, Microchip Technology und Texas Instruments. Wir haben uns für den Einsatz der PIC-Mikrocontroller entschieden. Diese sind weit verbreitet, es gibt eine sehr umfangreiche Typauswahl, und es stehen hoch leistungsfähige Exemplare, als auch sehr einfache Typen zur Auswahl. Für Einstiegsprojekte können somit nur wenig integrierte Bausteine herangezogen werden. Nimmt die Komplexität der Aufgabenstellung zu, kann problemlos auf leistungsfähigere Typen umgestiegen werden. Die Funktionsweise in Beschaltung und Programmierung bleibt dabei identisch. Preislich sind die meisten PICs auch für erste Experimente akzeptabel. Es gibt eine gute Unterstützung im Internet, sowohl durch die Community als auch durch den Hersteller [3].
PIC-Mikrocontroller im Überblick
Die Abkürzung PIC steht für Programmable Integrated Circuit. In diesem Sinne ein Chip in Form eines Mikrocontrollers, der noch über keine Peripherie verfügt, diese muss an den Schnittstellen angeschlossen werden. Mikrocontroller gibt es schon seit langer Zeit, zugehörig zu verschiedenen Typen und unterschiedlichster Leistungsstärke. Es handelt sich also um integrierte Schaltkreise, an denen ein Mindestmaß an Bauteilen anzuschließen ist (z. B. Anzeigen, Statusleuchten, Sensoren) und deren Funktionsweise mithilfe von Software programmiert wird. In modernen elektronischen Geräten (von der Digitaluhr bis zum Radio, über die Kaffee- bis zur Waschmaschine) sind diese nicht mehr verzichtbar. Die Intelligenz steckt in der Software (auch als Firmware bezeichnet). Dieses reduziert den Hardwareaufwand, denn die notwendige Logik muss nicht mehr über elektronische Bauteile aufwändig nachgebildet werden. Verbindungen zum PC können unter anderem über standardisierte Schnittstellen – wie USB – realisiert werden. Diese können zum Einschreiben (neuer) Firmware oder zur erweiterten Zusammenarbeit genutzt werden.
Ein PIC ist ein Vertreter der Ein-Chip-Mikrocontroller. Hier ist – gegenüber einem richtigen Personal Computer – alles in einem Baustein integriert. Die Leistungsfähigkeit ist daher natürlich eingeschränkt, aber damit sollen ja auch keine Videos dekodiert oder angezeigt werden. Vielmehr geht es zum Beispiel darum, kleinere Steuerungsprobleme zu lösen, Sensordaten auszuwerten, diese aufzubereiten für die Übertragung zum PC oder die Werte auf einem stromsparenden LCD-Panel anzuzeigen. Die Vorteile liegen klar auf der Hand: klein, preiswert (wenige Euro) und flexibel einsetzbar. Für diejenigen Leser, die noch keinerlei Bezug zum Thema haben, sind Investitionen in Wissen unumgänglich. Neben dem Studium von Fachbüchern sind die Webseiten von [3] ausdrücklich zu empfehlen. Auch eine gewisse Affinität zur Elektronik, zur Entwicklung von Schaltungen und etwas handwerkliches Geschick sind notwendig. Dennoch muss man kein Elektronikstudium absolviert haben, um sinnvoll einzusteigen. Das Interessante ist, dass viele Zusammenhänge klarer werden und das Thema Internet of Things dadurch noch mehr Möglichkeiten erfährt.
Abbildung 1.1: PIC-Mikrocontroller: Vom kleinen 12 F 629 bis zum leistungsfähigen 40-poligen IC
Abbildung 1.1 zeigt ein Foto mit einigen Exemplaren von PIC-Mikrocontrollern. Zwingend notwendig ist es, eine Stromversorgung bereitzustellen und die notwendige Hardware zur Steuerung an den Ein- und Ausgängen anzuschließen. In der Grundbeschaltung sind tatsächlich nur wenige Bauelemente notwendig. Für den Einstieg ist es wichtig, sich ein erstes – nicht allzu kompliziertes und nicht unbedingt ernstes – Projekt zu überlegen. In diesem shortcut dient als Übungsbeispiel der Bau einer modernen Designuhr mit großen LED-Anzeigen (10 cm). Sie ist ein echter Hingucker, zeigt die aktuelle Zeit und das Datum im Wechsel und kennt die Schaltjahre. Erweiterungsoptionen bestehen dergleichen viele, zum Beispiel Weckfunktion, Schnittstelle zum PC, Funksteuerung für immer aktuelle Zeit, Temperaturanzeige, eine andere designtechnische Gestaltung etc. Zugegebenermaßen ein Hobbyprojekt, an dem man aber viel über das Thema Mikrocontrollerprogrammierung lernen kann. Nebenher eine spannende und zugleich für Entspannung sorgende Freizeitbeschäftigung. Der Softwareentwickler, welcher vielleicht zum ersten Mal den Lötkolben „schwingt“, erhält nunmehr ganz andere Einblicke in die Welt der Elektronik aus...