Der Mikrocontroller

Die Schaltungen, die auf meinen Seiten zu finden sind, haben in der Regel einen Mikrocontroller als Herzstück. Falls Ihr noch nicht mit dieser Technik vertraut seid, gibt es hier entsprechende Anleitung.

Muss ich mich jetzt auch noch damit beschäftigen?

Ja! Die Dinger sind einfach vielseitig, preiswert und sparen viel diskret aufzubauende Schaltung. Wenn man einmal den Einstieg geschafft hat, kann man sich's gar nicht mehr anders vorstellen. Komplexe Logik, zeitgesteuerte Abläufe, Sensorik, Signalverarbeitung, Display, Datenspeicherung und -kommunikation etc.: alles wird mit geringem Aufwand möglich.

So sieht's praktisch aus

Von verschiedenen Herstellern werden Platinen angeboten, die den Prozessor-Chip plus die notwendige Peripherie schön kompakt drauf haben und bei denen die Anschlüsse auf Steckverbinder-Reihen bzw. Lötaugen herausgeführt sind. Mit den Steckverbindern kann man die Platine mit sogenannten Schields zusammenstecken, auf denen man die eigene Schaltung unterbringen kann.

Verzichtet man auf die Steckverbinder, dann kann man die Platine direkt auf einen Träger aufkleben (z.B. mit Schmelzkleber). Die Verbindungen zum Träger bzw. zur Außenwelt werden gelötet. Verschiedene Beispiele dieser von mir favorisierten Methode seht Ihr hier:

ProMini auf Lochrasterplatte
Auf der Lochrasterplatte als Träger kann man beliebige eigene Schaltungen unterbringen.


ProMini auf Rückseite LCD-Display
Hier klebt der Pro Mini auf der Rückseite eines LCD-Displays. Die Platine ist so platziert, dass sich kurze Verbindungen (mit Kupferlackdraht) zu den Display-Anschlüssen ergeben.

ProMini auf Sperrholz
Eine Minimalversion direkt auf einer Grundplatte aus Sperrholz mit nur einem zusätzlichen "fliegenden" Widerstand ist hier zu sehen.


Der Arduino Pro Mini

Auf den obigen Bildern ist schon zu sehen, auf welche Platine ich mich eingeschossen habe. Es ist der Ardino Pro Mini bzw. kompatible Nachbauten (Klone) von ihm. Kernstück ist, wie bei allen Arduino-Boards, der vielseitige ATmega-Prozessor. Hier die Dokumenation des Herstellers nur mal so zum reinschmöckern (das Laden dauert etwas!).

Der Pro Mini ist maximal kompakt, da er nur serielle Anschlusspins, aber keinen USB-Stecker auf der Platine hat. Der Programmier- und Komunikationsanschluss an den PC erfolgt über einen aufsteckbaren USB-Umsetzer oder gleich drahtlos über einen Bluetooth-Adapter (siehe weiter unten). Die Minimal-Austattung, und wahrscheinlich auch die großen Stückzahlen auf Grund der Beliebtheit, machen ihn sehr preiswert. Einen Klon gibt's z.B. für weniger als 2 € aus Fernost und ich habe mit diesen Billig-Exemplaren bisher keine schlechten Erfahrungen gemacht. Stiftleisten sind in der Regel beigelegt, wobei ich immer nur die stirnseitige Leiste zum Aufstecken des Komunikationsadapters einlöte.

Und vor allem: Was die Leistungen anbelangt, muss man gegenüber den großen Brummern, wie z.B. dem Arduino Uno, keine Abstriche hinnehmen. Es ist der gleiche Prozessor (ATmega 328P) verbaut und damit hat man auch gleiche Speicherausstattung, nämlich 32 kB Flash-Speicher für's Programm und 2 kB statischen RAM für Variablen. Sowohl der UNO als auch der klassische offizielle Pro Mini haben nur Pins für die ersten sechs der acht Analog-Eingänge des Prozessors. Dagegen sind bei den Pro Mini-Klonen und wohl auch bei den neueren offiziellen Pro Mini-Versionen sogar alle Analog-Pins herausgeführt.

Es sei noch der 5V-Spannungsregler erwähnt, der beim Pro Mini verhältnismäßig wenig Strom für Verbraucher zulässt, die direkt über die Prozessor-Ausgänge betrieben werden. Falls man mit seiner Anwendung da tatsächlich an Grenzen stößt, kann man einen extern Regler (z.B. LM7805) einsetzen.

Der Bootloader

Dieses kleine Programm bedient auf der Controllerseite die Schnittstelle und nimmt das hochzuladende Anwendungsprogramm entgegen. Dazu ein ganz wichtiger Hinweis: Die Klone/Nachbauten, die man preisgünstig bestellen kann, haben oft keinen (oder vielleicht auch den falschen) Bootloader drauf. Wenn man das nicht weiß, wundert man sich, dass das Hochladen einfacht nicht klappen will, obwohl offensichtlich alles richtig angeschlossen ist.

In dem Fall muss man den Bootloader selbst "flashen". Eine gute Anleitung findet sich hier. Man muss dafür (irgend)einen anderen Arduino haben, der auf jeden Fall den Bootlader installiert hat. D.h. für den Einstieg in die Arduino-Welt sollte man sich am besten ein offizielles Arduino-Exemplar kaufen. Das baut man dann nirgens ein, damit man es immer für solche und andere Zwecke zur Verfügung hat.

Die Entwicklungsumgebung (IDE) auf dem Host

Um das Anwendungsprogramm (ganannt "Sketch") für den Controller schreiben, übersetzen und hochladen zu können braucht es eine Entwicklungsumgebung (IDE) auf einer Hostplattform (z.B. Windows-PC). Von der offiziellen Arduino-Webseite kann man sich die IDE hier herunterladen. Es gibt auch eine online-Variante (Arduino Web Editor). Die Bedienung ist in verschiedensten Tutorials gut dokumentiert. Die Programmiersprache ist C oder Assembler. Wenn mann die Sketches aus den Anleitungen übernimmt, braucht man erst mal nicht viel Ahnung von der Programmierung des Prozessors haben.

Vergesst nicht, etwas zu spenden, wenn Ihr die Arduino-Entwicklungssoftware benutzt!

Die Verbindung vom Host zum Controller

Das Hochladen der übersezten Sketches, aber auch eine mögliche Kommunikation im Rahmen der Anwendung erfolgt über serielle Schnittstelle. Beim ProMini geht das über die schon erwähnte Stiftleiste (auf den obigen Bildern jeweils links zu sehen).

Per Kabel:

Für die Verbindung über USB-Kabel zum PC benötigt man einen "USB zu TTL-Konverter mit CP2102". Aus den zahllosen Angeboten sucht man sich einen aus, bei dem das benötigte 5-polige Flachkabel mit Steckbuchsen dabei ist. Hier mein Exemplar rechts mit der Controller-Platine dran:

USB/TTL-Kabel
Ich habe die einzelnen Steckbuchsen am Kabel auf beiden Seiten passend zu einem Stecker zusammengeklebt. Wie man sieht, ist die Zuordung der Adern nicht 1:1. Zudem bleibt auf der Konverterseite der 3.3V-Pin (im Bild unten) und auf der Mikrocontrollerseite der GRN-Pin (im Bild oben) unbelegt. Damit man nicht versehentlich um einen Pin versetzt einsteckt, kann man diese unbenutzten Pins mit einem Klecks Schmelzkleber "sperren". Die gezeigte Adernzuordnung ist für Klone in 5V-Ausführung. Vorsicht, die offizielle ProMini-Version hat eine andere Reihenfolge auf der Stiftleiste!

Und noch was: Sinnvollerweise braucht es ein USB-Verlängerungskabel, wenn der PC nicht unmittelbar auf dem Basteltisch steht.

Per Bluetooth:

Natürlich ist da eine kabellose Verbindung interessant. Der Basteltisch bzw. der Einbauort des Controllers kann sich dann ein ganzes Stück entfernt vom bequemen Schreibtisch mit dem PC befinden. Auch das geht für wenig Geld, ist aber etwas komplizierter einzurichten. Bluetooth-Schnittstelle

Hardwaretechnisch sieht das so aus:
Links sieht man einen Bluetooth-Transceiver HC-05, rechts wieder der Controller. Unter dem Suchbegriff "HC 05" findet Ihr im Netz viele Angebote für den Transceiver. Aber Vorsicht: Ihr müsst Euch die Ausführung besorgen, bei der die grüne Platine (Sender/Empfänger) Huckepack auf einer blauen (Pegelumsetzer und Stiftleiste) montiert ist (die Grüne wird teilweise auch einzeln angeboten). Auf dem Bild (drufklicken zum Vergrößern) sieht man die Pin-Zuordnung (gültig für den ProMini-Klon mit 5V). Der Pin EN am Transceiver bleibt frei (wird nur beim Programmieren dieses Bausteins beschaltet). Die Stromversorgung kommt logischerweise nicht mehr über das USB-Kabel, sondern muss explizit an den Arduino angeschlossen werden.
Die Verbindung EN -> DTR (im Bild weiß) sorgt für einen Reset und damit für ein Ansprechen des Bootloaders beim Hochladen von Sketches. Dieser Reset erfolgt aber auch, wenn man die serielle Schnittstelle im Rahmen einer Anwendung öffnet. Falls dies stört, kann man die Verbindung EN -> DTR weglassen. Natürlich ist dann kein drahtloses Hochladen von Sketches möglich.
Auch wenn im Netz kompliziertere Schaltungen zu finden sind, so funktioniert's.

So, bevor man damit arbeiten kann, muss der HC-05 aber noch passend programmiert (konfiguriert) werden und auf dem Host muss er dann auch noch gekoppelt werden.

Zur HC-05-Programmierung benötig man u.a. einen Arduino. Es gibt dazu viele Beiträge im Netz, die oft unnötig kompliziert sind. Für Verdrahtung und Programmier-Sketch könnt Ihr z.B. diese einfach gehaltene Anleitung nehmen. Folgende Hinweise dazu:

  • Statt "KEY" heißt der entsprechende Pin bei den meisten angebotenen HC-05-Boards "EN".
  • Zum Konfigurieren für unsere Zwecke am besten die Programmierbefehle verwenden, wie sie auf unten stehendem Bild des seriellen Monitors der IDE zu sehen sind:
    HC05-Programmierung
    Die Bedeutung der Befehle kann man hier nachlesen. Nur so viel im Einzelnen:
    • Statt "BT-Programmer" könnt Ihr natürlich jeden anderen Namen nehmen oder den AT+NAME-Befehl schlicht weglassen, womit der Default-Name "HC-05" bleibt.
    • AT+POLAR=1,0 sorgt für das richtiges Signal an EN (Reset für Bootloader).
    • Mit dem zusätzlichen Befehl: AT+PSWD=<> könnt Ihr das Password (wird beim Koppeln abgefragt) ändern. Defaultmäßig lautet es "1234".
    • Mit dem AT+UART-Befehl wird die Rate des HC-05 für seinen künftigen Schnittstellen-Einsatz konfiguriert. 57600 Baud ist die Rate des Bootloaders auf einen ProMini mit 328-Prozessor. Für andere Boards und/oder andere Prozessor-Versionen müsst Ihr in "boards.txt" nachschauen. Diese Datei ist in ...\Program Files (x86)\Arduino\hardware\arduino\avr zu finden und ist am besten mit WordPad zu öffnen.
    Das Bild zeigt zudem die richtigen Einstellungen des seriellen Monitors: "Sowohl NL, als auch CR" für das Zeilenende und 9600 Baud für die Rate.
  • Bei der oben empfohlenen Anleitung werden die Pins des Programmier-Controllers und des Tansceiver-Moduls ohne jegliche Pegelumsetzung miteinander verbunden. Da das HC-05 ein 3,3V-Modul ist, müssten vor dessen Eingänge eigentlich entsprechende Spannungsteiler (z.B. 1kΩ/2kΩ) geschaltet werden. Aber zumindest für kurzzeitige Anwendungen kann man das tatsächlich auch ohne machen. Mir ist bis dato noch kein Modul dadurch kaputt gegangen.
  • Wichtig! Die spätere Hochlade-/Kommunikations-Verbindung HC-05 <-> ProMini hat die fest eingestellte Rate des Bootloaders (siehe oben). Anwendungen müssen die Schnittstelle genau mit dieser Rate initialisieren (z.B. Serial.begin(57600); beim ProMini). Die Rate, mit der die virtuelle COM-Schnittstelle auf der Host-Seite (siehe unten) betrieben wird, ist davon übrigens völlig unabhängig.

Diese Anleitung zur Schnittstelleneinrichtung (Kopplung) auf dem Host ist für Windows 10 erarbeitet. Die Schritte sind:

  • HC-05 und ProMini wie auf obigem Bild verbinden und an die Stronversorgung anschließen.
  • Auf dem Host-PC "Einstellungen" aufrufen, am besten im Windows-Menü über das Zahnradsymbol ganz links, anschließend "Bluetooth" wählen.
  • Unter dem Menupunkt "Bluetooth-Geräte verwalten" bzw. "Bluetooth- oder anderes Gerät hinzufügen/Bluetooth" müsste dort der "BT-Programmer" (oder wie immer das Ding bei Euch heißt) als kopplungsbereites Gerät zu sehen sein. Diesen auswählen und auf "Koppeln" drücken. Als Kennung für das Gerät "1234" (bzw. Euer speziell definiertes Passwort) eingeben.
  • Bei "weitere Bluetooth-Optionen" (unten) auf den Reiter "COM-Anschlüsse" gehen". Es müssten zwei COM-Schnittstellen (eingehend und ausgehend) mit entsprechendem Namen eingerichtet worden sein. Die eingehende Schnittstelle braucht's nicht und sie kann (muss aber nicht) entfernt werden. Die Nummer der ausgehenden COM-Schnittstelle merkt Ihr Euch, denn diese ist später in der Arduino-IDE zu wählen. Die Standardeinstellungen, mit denen die Schnittstelle automatisch eingerichtet wurde, d.h. 9600 Baud etc., sind o.k. und werden ohnehin automatisch an die tatsächlichen Einstellungn des benutzten seriellen Monitors angepasst.
  • IDE starten und testen. Viel Erfolg!

Wollt Ihr einen Kommentar loswerden oder habt Ihr eine Frage? Schickt mir eine Mail