[ Home ] [ zurück ] [ Seitenende ] [ Teil 4 ]

 

 

 

micro:bit-Programmieren, Teil 5

 

1.      Einleitung

 

Wir benutzen heutzutage, d.h. im Zeitalter von Windows 7 und 10, USB-Geräte wie z.B. die Maus, die Tastatur, den USB-Speicherstick, den USB-Drucker und die externe USB-Festplatte wie selbstverständlich, als hätte es nie etwas anderes gegeben. Nicht zuletzt auch deswegen, weil wir unsere Smartphones mittels eines USB-Kabels und eines kleinen USB-2.0-Micro-B-Steckers, der in das Gerät gesteckt wird, aufladen. Wenn wir aber wissen wollen, was vor USB war, dann müssen wir zunächst klären, was USB bedeutet und was USB eigentlich ist.

 

>> Der Universal Serial Bus (USB) [ˌjuːnɪˈvɜːsl ˈsɪɹiəl bʌs] ist ein serielles Bussystem zur Verbindung eines Computers mit externen Geräten. Mit USB ausgestattete Geräte oder Speichermedien, wie etwa USB-Speichersticks, können im laufenden Betrieb miteinander verbunden (Hot Plugging) und angeschlossene Geräte sowie deren Eigenschaften automatisch erkannt werden. Vor der Einführung von USB gab es eine Vielzahl verschiedener Schnittstellentypen mit unterschiedlichsten Steckern zum Anschluss von Zubehör und Peripheriegeräten an Heim- und Personal Computer. Fast alle diese Schnittstellenvarianten wurden durch USB ersetzt, was für die Anwender Vereinfachungen mit sich brachte, die jedoch durch die Vielzahl an unterschiedlichen USB-Steckern und -Buchsen wieder teilweise relativiert wurden. USB wurde 1996 mit einer maximalen Datenrate von 12 Mbit/s als USB 1.0 eingeführt. Im Jahr 2000 ist Version USB 2.0 spezifiziert worden, mit 480 Mbit/s die heute noch meistverbreitete Version. Bei dem 2014 eingeführten Standard USB 3.1 Gen 2 beträgt die maximale Brutto-Datentransferrate für SuperSpeed+ 10 Gbit/s.[1] 2017 wurde USB 3.2 mit einer Übertragungsrate von bis zu 20 GBit/s spezifiziert.[2][3] << (Quelle: Wikipedia)

 

Bei Windows 98 gab es noch keine voll umfänglich funktionierende USB-Unterstützung. Die kam erst mit Windows 98 SE („Second Edition“, Zweite Ausgabe), das ab dem 10. Juni 1999 als deutsche Version verfügbar war. Das ist jetzt 20 Jahre her, wobei USB 2.0 inzwischen unter Windows XP, Windows 7 und 10 zuverlässig funktioniert. Nicht verschwiegen werden soll aber, dass bei der neueren Notebooks und Desktop-PCs unter Windows 10 inzwischen USB 3.0 auf dem Vormarsch ist.

 

Vor den USB-Zeiten, d.h. vor mehr als 20 Jahren, gab es Mäuse und Tastaturen, die über zwei runde, etwa 8 mm große „PS/2-Stecker“, die grün- und violettfarbig eingefärbt waren, damit man sie besser unterscheiden konnte, betrieben wurden. Dabei handelte es sich ebenfalls wie bei USB um eine serielle Schnittstelle:

 

>> An Notebooks und einigen kompakten Industrie-PC-Hauptplatinen war dagegen nur eine PS/2-Buchse vorhanden, die fast immer für Maus und Tastatur geeignet ist und – außer bei sehr alten Modellen – auch für beides gleichzeitig mit einem speziellen Y-Kabel genutzt werden kann. Maus und Tastatur unterscheiden sich in ihrem Verhalten beim Einschalten und beim Reset, sodass das Notebook zwischen beiden unterscheiden kann, wenn sie direkt angeschlossen sind. Um sie gleichzeitig an eine PS/2-Buchse anschließen zu können, werden die beiden ansonsten ungenutzten Pins in der Buchse als zusätzliche Takt- und Datenleitungen benutzt. Das Y-Kabel verbindet +5 V und GND des Steckers (Notebook) mit beiden Kupplungen, und je ein Paar aus Takt- und Datenleitungen mit je einer Kupplung. Es werden also nicht einfach alle Kontakte parallel geschaltet, sonst würden sich Maus und Tastatur gegenseitig blockieren.

Einige Hersteller haben die freien Pins auch für andere Zwecke benutzt, beispielsweise um eine Maus für den kombinierten Betrieb an PS/2 und RS-232 auszulegen oder um mit einer zusätzlichen Taste auf der Tastatur den PC einzuschalten. Das kann bei bestimmten Kombinationen von Computern und Mäusen beziehungsweise Tastaturen zu Problemen führen.

Bei den meisten aktuellen PC-Systemen haben die Hersteller die PS/2-Schnittstelle zugunsten des hot-plug-fähigen USB ganz aufgegeben. Für alte Betriebssysteme emuliert das BIOS aber weiterhin mehr oder weniger gut die PS/2-Schnittstelle, auch wenn Maus und Tastatur tatsächlich über USB angeschlossen sind. << (Quelle: Wikipedia)

Ab 1987 verfügten als erstes die sogenannten „IBM PS/2“-Destop-PCs über die bunten PS/2-Anschlüsse für den Anschluss der Tastatur (violett) und Maus (grün), das sich aber auch verschiedenen Gründen nicht auf dem PC-Markt der „Industriestandard kompatiblen“-PCs durchsetzen konnte:

 

>> Das neue System bot eine Menge Vorteile, war aber z. B. nicht kompatibel zu alten Erweiterungskarten oder Disketten und äußerst teuer. Als Betriebssysteme konnten PC-DOS, das neue OS/2 oder gar das Unix-Derivat AIX gewählt werden. IBM ließ sich den Microchannel sowie weite Teile des Systems patentieren und verlangte hohe Lizenzzahlungen von Herstellern, die selbst ein PS/2-kompatibles System anbieten wollten, um zu verhindern, dass die eigenen Rechner von Nachbauten vom Markt verdrängt würden, wie es beim PC geschehen war.

Die Konkurrenz unter Führung von Compaq rebellierte; dieses Unternehmen hatte bereits ein System auf Basis des Intel 386 im Angebot, das jedoch mit den alten ISA-Steckplätzen versehen war. Das PS/2 konnten sich wegen nur mäßigen Erfolgs nicht durchsetzen. Die nötige Geschwindigkeit für den IO-Bereich wurde bei den PC-Nachbauten durch neue, offene Schnittstellen (EISAVESA Local Bus und später PCI) nachgerüstet. Der Microchannel verschwand 1995 mit den letzten PS/2 vollständig vom Markt.

Der überschätzte Erfolg hatte Konsequenzen, IBM hatte seine Marktmacht im PC-Bereich verloren, fortan galt bedingungslose Abwärtskompatibilität auch auf Hardware-Ebene als oberstes Gebot im PC-Bereich. Nach den PS/2 Modellen brachte IBM die Reihe PS/ValuePoint auf den Markt – diese Rechner waren u. a. mit AT-Bus deutlich kompatibler zu den ursprünglichen IBM-PC Modellen. Letztendlich gab IBM 2005 das Segment aber an Lenovo ab. << (Quelle: Wikipedia)

 

Vor der nur kurz andauernden Zeit der „IBM PS/2“-Desktop-PCs gab es neben den „IBM-PCs“ aus Kostengründen hauptsäch nur „Industriestandard kompatible PCs“ von diversen Anbietern wie z.B. Commodore, Compaq, Vobis, ESCOM, Osborne oder Zenith, die es allesamt schon lange nicht mehr gibt.

 

So verfügten die aus den 80er Jahren stammenden Personal Computer (PCs) alle über eine Schnittstellen-Einsteckkarte für die parallele „Centronics“-Druckerschnittstelle sowie die serielle „RS232“-Schnittstelle für den Anschluss einer Maus, eines seriellen Druckers oder eines analogen Modems mit 9-poligem „Sub-D“-Stecker, um mit diesem ins Internet gehen zu können.

 

>> Serielle Schnittstellen im weiteren Sinn sind sehr weit verbreitet und existieren in sehr vielen Ausprägungen und Varianten. Es gehören dazu neben Punkt-zu-Punkt Verbindungen wie RS-232 und RS-422 auch Netzwerk- und Busschnittstellen, wie z. B. EthernetCAN-Bus oder RS-485. Datenraten, mögliche Übertragungsdistanzen und andere Eigenschaften unterscheiden sich z. T. beträchtlich, so existiert für fast jeden Anwendungsbereich eine passende Schnittstellendefiniton. Siehe dazu die Auflistung weiter unten.

Serielle Schnittstellen unterscheiden sich nicht nur durch den verwendeten Steckverbinder und die elektrischen Übertragungsparameter, sie benutzen auch unterschiedliche Methoden zur Übertragungssteuerung, Datenflusskontrolle und zur Synchronisation (siehe dazu Kommunikationsprotokoll). Sie können in eine Richtung ("simplex") oder in beide Richtungen ("duplex") arbeiten, Letzteres entweder abwechselnd ("halb-duplex") oder gleichzeitig ("voll-duplex") (siehe dazu Duplex (Nachrichtentechnik)). << (Quelle: Wikipedia)

 

Siehe auch „RS232-Schnittstelle“ von W&T, „Die RS232-/V.24-Schnittstelle“ von ADONTEC sowie „Serielle Schnittstelle, Rolf Keller, c't 1983, Heft 12, S.82ff“

 

Sehr interessant, aufschlussreich und mit praktischer „Python“-Programmierung für den „Calliope mini“-/“micro:bit“-Rechner ist auch das Tutorial „Kommunikation in Rechnernetzen“ mit dem Kapitel „4. Sender und Empfänger“ von „Das elektronische Schulbuch“.

2.      Von USB auf mbed umschalten und Daten austauschen

 

Wie bereits weiter oben in der Einleitung erwähnt, lassen sich z.B. dem Smartphone oder Tablet-PC mittels des USB-Kabels und eines kleinen USB-2.0-Micro-B-Steckers, der am anderen Kabelende in das Gerät gesteckt wird, aufladen. Aber nicht nur das!

 

Über und mit dem USB-Kabel lassen sich beim Smartphone auch Daten z.B. in Form von Dateien (Fotos, Audios, Videos, Textdateien usw.) auf den heimischen Desktop-PC übertragen.

 

Zu diesem Zweck muss man bei seinem Smartphone die App „Einstellungen“ (Zahnradsymbol) wie folgt aufrufen:

 

  

 

(Zum Vergrößern bitte auf eines der Bilder klicken!)

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Nachdem für das Smartphone die Einstellung „Dateien übertragen“ ausgewählt wurde, wird das „Android“-Dateisystem des Smartphones automatisch in das „Windows“-Dateisystem eingebunden und steht sofort im „Windows“-Dateimanager „Explorer“ wie folgt zur Verfügung:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Das Besondere daran ist nun, dass auf dem „Windows“-PC wider Erwarten kein USB-Laufwerk nebst Laufwerksbuchstaben wie z.B. F:\ (oder ähnlich) angelegt wird!

 

Demzufolge lässt sich nach dem Daten- bzw. Dateitransfer auch kein USB-Laufwerk abmelden!

 

Trotzdem sollte man die Datenverbindung nach dem Daten- bzw. Dateitransfer vorsorglich „dismounten“, d.h. abmelden, indem man auf dem Smartphone(!) wieder die Einstellung „Dieses Gerät aufladen“ auswählt, sodass das „Android“-Dateisystem des Smartphones nicht mehr im „Windows“-Dateimanager „Explorer“ angezeigt wird! -

 

Wenn man nun anstelle des (Android-) Smartphones den kleinen „micro:bit“-Rechner mittels des USB-Kabel an den Windows-PC anschließt, dann wird dieser über die USB-Stromversorgung des Windows-PCs nicht nur mit Strom versorgt, sondern auch noch das auf dem „micro:bit“-Rechner zuletzt genutzte und gespeicherte Programm gestartet!

 

Außerdem wird der „micro:bit“-Rechner und dessen (Flash-) Speicher als externes Laufwerk wie z.B. E:\ in das „Windows“-Dateisystem des „Windows“-PC wie folgt eingebunden:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Obwohl der kleine „micro:bit“-Rechner und dessen (Flash-) Speicher als externes Laufwerk wie z.B. E:\ in das „Windows“-Dateisystem des „Windows“-PC eingebunden wurde,

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

lässt er sich später nicht gleich, d.h. nicht sofort aus dem „Windows“-Dateisystem „dismounten“, d.h. abmelden. Aber nach einer gewissen Weile klappt es dann aber doch!

 

Der Grund dafür dürfte der sein, dass es sich bei dem engl. „USB Device“, d.h. USB-Gerät, um ein engl. „embedded“ Gerät, d.h. eingebettetes Gerät, handelt, das über sein eigenes, kleines Betriebssystem namens „mbed OS“ verfügt:

 

>> Mbed OS

 

ARM Mbed OS ist ein kostenloses Open-Source-Embedded-Betriebssystem, das speziell für die "Dinge" im Internet der Dinge entwickelt wurde.

 

Es enthält alle Funktionen, die Sie für die Entwicklung eines verbundenen Produkts auf der Basis eines ARM Cortex-M-Mikrocontrollers benötigen, einschließlich Sicherheit, Konnektivität, Echtzeitbetriebssystem und Treibern für Sensoren und E/A-Geräte. << (Quelle: „mbed“-Homepage)

 

Wie man im obenstehenden Bild im roten Rahmen sieht, verfügt der kleine „micro:bit“-Rechner über das „mbed OS“-Betriebssystem, wobei „OS“ für engl. „Operating System“, d.h. Betriebssystem steht. Ferner sieht man, dass „mbed OS“ über ein engl. „Virtual File System (VFS)“, d.h. ein virtuelles Dateisystem verfügt, das den „micro:bit“-Rechner als USB-Gerät in das „Windows“-Dateisystem einbindet.

 

Durch das „mbed OS“-Betriebssystem des kleinen „micro:bit“-Rechners lässt sich der USB-2.0-Micro-B-Anschluss nicht mehr nur für die Stromversorgung und den Dateitransfer verwenden, sondern ab sofort auch für die serielle Datenübertragung von und zum „Windows“-PC.

 

Damit das dann auch klappt, muss man auf dem „Windows“-Rechner zuvor aber noch die entsprechende Gerätetreiber-SoftwarembedWinSerial_16466.exe (Download mittels rechter Maustaste und dann „Ziel speichern unter …“) herunterladen und installieren! - 

 

Nach der Installation des seriellen Gerätetreibers für den USB-Anschluss am „Windows“-PC sieht man im sogenannten Gerätemanager von Windows 10 den „mbed Serial Port“ (hier mit COM6):

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

In diesem Zusammenhang stellt sich im obenstehenden Bild noch die Frage, weshalb der serielle Port „COM6“ für den Zugang über den USB-Anschluss des „Windows“-PCs ausgewählt wurde. Ganz einfach deswegen, weil es sich bei diesem um den nächsten freien Port auf dem „Windows“-PC handelte!

 

So, was jetzt auf dem „Windows“-PC noch fehlt, ist eine entsprechende Software mit der sich die über USB seriell übertragenen Daten anzeigen lassen. Diesbezüglich empfiehlt sich der allseits bekannte PuTTY bei dem es sich um einen schnellen und kleinen Telnet-Client für Windows handelt, der auch noch eine Reihe anderer Protokolle unterstützt:

 

 

 

(Zum Vergrößern bitte auf eines der Bilder klicken!)

 

Wenn man sich, wie in den obenstehenden Bildern zu sehen ist, für die höchste Übertragungsgeschwindigkeit von 115 200 Baud entscheidet, dann gilt es zu beachten, dass das USB-2.0-Micro-B-Kabel nicht länger als 2 m sein darf!

 

Bezüglich der weiteren Vorgehensweise sei noch erklärt, dass wir den „Windows“-PC zusammen mit PuTTY als Empfänger für den Empfang seriell übertragener Daten verwenden und den kleinen „micro:bit“-Rechner als Sendestation zum Senden serieller Daten.

 

Diesbezüglich müssen wir uns nun als nächstes daran machen und für den „micro:bit“-Rechner ein kleines Programm entwerfen, das in einer Endlosschleife fortwährend Daten seriell über das USB-2.0-Micro-B-Kabel an den „Windows“-PC überträgt:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Wie man im nachfolgenden Screenshot sieht, wird die serielle Schnittstelle des „micro:bit“-Rechners beim Start des „micro:bit“-Programm microbit_teil_05_prog_01.hex initialisiert und dabei das Senden serieller Daten auf „USB_TX“ sowie das Empfangen serieller Daten auf „USB_RX“ umgeleitet.

 

Dazu muss man wissen, dass die serielle Datenübertragung beim „micro:bit“-Rechner standardmäßig über die Pins wie z.B. „Pin P0“„Pin P2“, die sich übrigens unten als sogenannte „Rundbuchsen“ für Bananenstecker befinden, erfolgt (siehe nachfolgendes Bild). Dabei werden für die serielle Datenübertragung insgesamt aber nur zwei Anschlüsse, engl. „pins“ benötigt. Und zwar jeweils ein Pin für das Senden („TX“) von seriellen Daten und ein weiterer Pin für das Empfangen („RX“) von seriellen Daten.

 

Wenn man die serielle Datenübertragung mittels der Pins „Pin P0“„Pin P2“ realisieren will, dann müsste man die beiden Geräte, d.h. den „micro:bit“-Rechner als Sender („TX“ = Transfer) und den „Windows“-PC als Empfänger („RX“ = Receive) mittels zweier Klingeldrähte miteinander verdrahten bzw. koppeln. Damit es bei der seriellen Übertragung dann aber zu keinen Störungen kommt (Übersprechen, Überlagern von Signalen usw.) müsste man die beiden Klingeldrähte miteinander verdrillen, so dass ein engl. „Twisted Pair Kabel“ entsteht.

 

Unabhängig von der Zweidraht-Übertragung gibt es bei der seriellen Datenübertragung aber noch ein drittes Verbindungskabel. Nämlich die sogenannte „Masse“ oder engl. „Ground (GND)“, die dazu dient, dass sich beide Geräte („micro:bit“-Rechner und „Windows“-PC) auf dem selben Massepotential (= Null-Spannungs-Potential) befinden.

 

>> Rx ist:

die Bezeichnung für einen Empfänger bzw. für das Empfangen einer Funksendung im Funkverkehr oder von Computer-Daten (Herunterladen); Rx steht für den englischsprachigen Begriff Receiver, wobei das x als „Kürzel“ für die Buchstaben nach dem R anzusehen ist (Gegensatz: Transmitter (Tx) = Sender) << (Quelle: Wikipedia)

 

Da wir im vorliegenden Fall die seriellen Daten aber über das USB-2.0-Micro-B-Kabel übertragen, muss das Senden und Empfangen beim „micro:bit“-Rechner auf die USB-Schnittstelle wie folgt umgeleitet werden:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Kennen Sie die Geschichte „Vom Hasen und vom Igel“ der Gebrüder Grimm? Wer war zuerst da? Der Hase oder der Igel?

 

Ähnlich verhält es sich mit den seriell übertragenen Daten. Da es sich bei der seriellen Datenübertragung über keine getaktete, d.h. synchrone Datenübertragung handelt, sondern um eine quasi chaotische, d.h. asynchrone Übertragung handelt, kann jeder Empfänger auch gleichzeitig senden und jeder Sender auch gleichzeitig empfangen, sodass es zwischen Sender und Empfänger keinerlei Absprachen „Wer sendet wann? Und wer empfängt wann?“ gibt.

 

Da wir im vorliegenden Fall die seriellen Daten aber nur in eine Richtung, quasi als Einbahnstraße, und zwar vom „micro:bit“-Rechner als Sender („TX“ = Transfer) zum „Windows“-PC als Empfänger („RX“ = Receive) versenden, müssen wir nur dafür sorgen, dass das „PuTTY“-Programm als Erstes gestartet wird und sich empfangsmäßig quasi unentwegt auf die Lauer legt und lauscht, ob eventuell Daten gesendet werden.

 

Nachdem also das „PuTTY“-Programm als Erstes gestartet wurde, startet man das „micro:bit“-Programm microbit_teil_05_prog_01.hex als zweites Programm, indem man dieses auf den „micro:bit“-Rechner überspielt, sodass sich dieses sofort automatisch startet und mit dem Senden serieller Daten beginnt:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Der kleine „micro:bit“-Rechner sendet nun also permanent serielle Daten, bis dass der Strom ausfällt oder man die Stromversorgung via USB-2.0-Micro-B-Kabel unterbricht.

 

Wenn das „PuTTY“-Programm ordnungsgemäß konfiguriert und gestartet wurde, sodass die vom „micro:bit“-Rechner gesendeten Daten auch tatsächlich empfangen und im „PuTTY“-Fenster angezeigt werden (siehe obenstehendes Bild), dann flackert die gelbe LED (= „Power On“) auf der Rückseite des „micro:bit“-Rechner ganz schnell und signalisiert auf diese Weise, dass Daten übertragen werden.

 

Beendet man das „PuTTY“-Programm auf dem „Windows“-PC, sodass von diesem keine Daten mehr empfangen werden, dann hört das schnelle Blinken der gelben LED (= Power On“) des „micro:bit“-Rechners auf, leuchtet diese wieder wie zuvor ununterbrochen!

 

Aber auch dann, wenn vom „Windows“-PC und dem „PuTTY“-Programm keine Daten mehr empfangen werden, bedeutet dies nicht automatisch, dass das serielle Senden von Daten auf dem „micro:bit“-Rechner beendet wird bzw. beendet wurde!

 

Mit anderen Worten: der „micro:bit“-Rechner sendet im Hintergrund weiterhin fleißig Daten nur mit dem Unterschied, dass das der Anwender nicht mehr mitbekommt!

 

Da aber das Senden von Daten mit der höchsten Übertragungsgeschwindigkeit von 115 200 Baud (= 115 200 Bits/Sekunde = 14 400 Byte/Sekunde = 14,06 Kilobyte/Sekunde) erfolgt, ist der Prozessor des kleinen „micro:bit“-Rechners so stark ausgelastet, dass er sich nicht mehr um das in das Windows-Dateisystem eingebundene USB-Laufwerk kümmern kann, sich dieses wider Erwarten nicht mehr ansprechen und benutzen lässt, sodass sich keine „micro:bit“-Programme mehr aufspielen lassen!

 

Erschwerend kommt noch hinzu, dass sich das „micro:bit“-Programm microbit_teil_05_prog_01.hex mit dem fortwährenden Senden von Daten (noch) nicht beenden lässt, sodass es unumgänglich ist, den „micro:bit“-Rechner von der Stromversorgung mittels des USB-2.0-Micro-B-Kabels abzuklemmen, wenn man das Senden von Daten beenden will!

 

Aber zum Glück lässt sich der eklatante und benutzerfeindliche Mangel umgehend beseitigen, indem man das Programm entsprechend erweitert, sodass sich das serielle Senden von Daten an den „Windows“-Rechner mittels des „micro:bit“-Tasters A starten und mittels des „micro:bit“-Tasters B auch wieder anhalten lässt (siehe „micro:bit“-Programm microbit_teil_05_prog_02.hex):

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Nach dem „gewaltsamen“ Unterbrechen der Stromzufuhr durch Abziehen des USB-2.0-Micro-B-Kabels lässt sich der „micro:bit“-Rechner wieder in Betrieb nehmen, indem man die Stromzufuhr durch Aufstecken des USB-2.0-Micro-B-Kabel wieder herstellt, sodass dann auch wieder das „micro:bit“-Laufwerk als USB-Gerät in das „Windows“-Dateisystem einbunden wird und wie gewohnt zur Verfügung steht, um „micro:bit“-Programme aufspielen zu können. -

 

Wie man sieht, ist das Programmieren eines Programms zum Senden der Zeichenkette „#this* innerhalb der Endlosschleife „dauerhaft“ mittels serieller Datenübertragung an den empfängerseitigen USB-Client „PuTTY“ wider Erwarten gar nicht so schwer.

 

Trotzdem wissen wir bereits, dass hinter der seriellen Datenübertragung noch mehr steckt. Und zwar das

 

·        eingebettete, engl. „embedded“, Betriebssystem, engl. „OS“ (= Operating System“ namens mbed OS, des „micro:bit“-Rechners,

 

·        zu der es übrigens auch eine online sowie offline Entwickler-/Programmier-Umgebung zum Programmieren des „micro:bit“-Rechners gibt und nicht zu vergessen

 

·        die im „micro:bit“-Rechner als auch im „Windows“-PC verbaute „Universal Asynchronous Receiver Transmitter“ Hardware UART für die serielle bzw. emulierte „RS232“- sowie „USB 2.0/3.0“-Schnittstelle nebst USB-Buchsen.

 

Ferner wissen wir, dass praktisch zu jeder Hardware auch eine entsprechende Schnittstelle nebst ´(Software-) Treibern als auch ggf. ein entsprechendes, eingebettetes (kleines) Betriebssystem gibt.

 

Diesbezüglich kann es auch sein, dass wir uns zusätzlich noch

 

·        mit pySerial beschäftigen müssen, das einerseits zwar im MicroPython für AMR Cortex Prozessoren wie z.B. des „micro:bit“-Rechners implementiert ist, andererseits aber nicht in der Programmierumgebung „MS Visual Code“ von Microsoft, sodass „micro:bit“-Programme mit „MicroPython“ nicht so ohne Weiteres programmieren lassen.

 

Da wir später auch noch die Datenübertragung mittels serieller Schnittstelle und Python programmieren wollen, schauen wir mal nach, ob wir und was wir diesbezüglich von der Programmierung einer seriellen Datenübertragung unter „JavaScript“ lernen können:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Den „JavaScript“-Sourcecode (= Programmkode) kann man sich hier im Browser auch direkt anschauen: Programm microbit_teil_05_prog_02.js (siehe im obenstehendes Bild).

 

Wenn man das im obenstehenden Bild angezeigte „JavaScript“-Programm nach MicroPython übersetzt, dann fällt sofort auf, dass die serielle Datenübertragung des „micro:bit“-Rechners nicht auf den „USB-2.0-Micro-B-Kabel“-Anschluß des „Windows“-PC umgeleitet werden muss:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Der im obenstehenden Bild gezeigte „MicroPython“-Sourcecode des Programms microbit_teil_05_prog_02.py lässt sich übrigens auch direkt im Browser anschauen bzw mittels rechter Maustaste und dann „Ziel speichern unter …“ herunterladen und installieren!

 

Werfen wir bei dieser Gelegenheit zwecks besseren Verständnisses noch einen Blick auf die Hardware des „micro:bit“-Rechners:

 

>> Ziel- und Schnittstellen-MCUs

 

Eine der coolsten Funktionen von micro:bit ist die Art und Weise, wie es sich als USB-Laufwerk darstellt, wenn es über USB angeschlossen ist, und über diese Schnittstelle programmiert werden kann, ohne dass Treiber installiert werden müssen. Unabhängig davon, welchen Code Sie auf Ihrem micro:bit ausführen oder wie Sie es schaffen, das Gerät zum Absturz zu bringen, können Sie über die USB-Verbindung immer ein neues Programm erstellen.

 

Dies wird ermöglicht, indem auf dem micro:bit ein separater 'Interface-Chip' oder 'Interface-MCU' [= Microcontroller Unit] für USB-Verbindungen, Programmierung und Debugging vorhanden ist. Auf dem micro:bit ist dieser Chip eine Freescale KL26Z . Der Chip, auf dem der Entwicklercode ausgeführt wird und an den alle Peripheriegeräte angeschlossen sind (nRF51822), wird als "Ziel-MCU" bezeichnet. Weitere Informationen zur Verbindung dieser beiden Geräte finden Sie auf der Hardware- Seite und im Schaltplan.

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Die Ziel- und Schnittstellen-MCUs sind über zwei Schnittstellen verbunden:

 

·        Serial Wire Debug (SWD) zur Programmierung der Ziel-MCU

 

·        UART zum Senden von Nachrichten zwischen den beiden Geräten. In der Praxis

wird der UART von der Ziel-MCU über USB direkt zum PC übertragen!

 

<< (Quelle: DAPLink und die USB-Schnittstelle, microbit.org)

 

Jetzt wissen wir, dass wenn wir auf dem „micro:bit“-Rechner in MicroPython die „Universal Asynchronous Receiver Transmitter“ Hardware UART für die serielle Datenübertragung benutzen, diese stets direkt ohne Umleitung hin zum „Windows“-PC erfolgt!

 

Wer lesen kann, will früher oder später auch schreiben können. Schließlich dient Lesen und Schreiben der Kommunikation, gibt es z.B. bei Tageszeitungen die sogenannten Leserbriefe. Leserbriefe sind dabei der Rückkanal, wenn auch extrem dünn angesiedelt und größtenteils auch durch den Redakteur gesteuert, der entscheidet, welcher Leserbrief veröffentlicht wird und welcher nicht. Einen (Rechts-) Anspruch auf das Veröffentlichen des eigenen Leserbriefes gibt es also nicht. Anders verhält es sich beim Datenaustausch über die serielle „UART“-Schnittstelle. Dort ist es nämlich mittels Programmierung möglich, einen sogenannten Rückruf auszusenden bzw. zu veranlassen. Und das ist gut so, erfolgt doch der serielle Datenaustausch asynchron, d.h. ohne Taktung, quasi auf Zuruf, wobei sich aber der Empfänger die Ohren zuhalten kann, wenn er nichts hören, d.h. nichts empfangen will. Umgekehrt kann der Empfänger nicht verhindern, eben wegen der asynchronen Übertragung, dass der Sender massiv und dauerhaft an die Tür anklopft bzw. an diese lautstark trommelt, um Gehör zu finden. Dazu aber später mehr.

 

Wie man im nachfolgenden Bild sieht, ist es nicht schwer, aus dem Sendeprogramm (siehe Bild 15) ein entsprechendes Empfangsprogramm zu programmieren:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

In JavaScript sieht dann das Programm microbit_teil_05_prog_03.js (Download mittels rechter Maustaste und „Ziel speichern unter …“) wie folgt aus:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

In MicroPython sieht dann das im obenstehenden Bild gezeigte Programm microbit_teil_05_prog_03.py (Download mittels rechter Maustaste und „Ziel speichern unter …“):

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Im Zusammenhang mit dem „JavaScript“- und „MicroPython“-Programm (siehe obenstehendes Bild) stellt sich nun die Frage, wie sich dieses testen lässt, d.h. wie sich an dieses serielle Daten z.B. in Form eines Textstrings senden lassen. Ganz einfach mit dem „PuTTY“-ähnlichen, dafür aber auch sendefähigen(!) Programm „RealTerm, das man sich übrigens von Google Translate wie folgt [ übersetzen ] lassen kann. Weitere, ausführliche Infos zum „RealTerm“-Programm finden sich [ hier ]. -

 

Um später einen Textstring seriell an das „JavaScript“- oder „MicroPython“-Programm senden zu können, muss man zunächst die serielle Schnittstelle richtig konfigurieren.

 

Im vorliegenden Fall läuft dabei die serielle Kommunikation über den Port „COM6“, da es sich bei diesem um den nächsten freien, seriellen Port auf dem „Windows“-PC handelt.

 

Nach der Konfiguration des Ports „COM6“ muss man diesen mittels Mausklick auf die Schaltfläche „Open“ aktivieren, d.h. öffnen:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Erst nachdem die serielle Schnittstelle „COM6“ richtig konfiguriert und geöffnet wurde, lässt sich der Textstring „Test!“ an den „micro:bit“-Rechner seriell wie folgt übertragen:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Das in MicroPython programmierte Programm microbit_teil_05_prog_03.py hat aber noch einen Schönheitsfehler. Und zwar den, dass auch leere Daten in Form des Textstrings „None“ in der Laufschrift auf dem „micro:bit“-Rechner angezeigt werden, was auf Dauer natürlich stört. Aber gut zu wissen, dass leere Daten auch Daten sind, ebenso wie die Zahl Null, die auch eine Zahl ist, obwohl wir an der Hand „null Finger“ zum dezimalen Zählen haben.

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Wie man aber im obenstehenden Bild sieht, lässt sich die Anzeige des Textstrings „None“ auf einfache Weise, nämlich durch eine entsprechende „if“-Abfrage (siehe roter Kasten) unterbinden (siehe Programm microbit_teil_05_prog_04.py, Download mittels rechter Maustaste und „Ziel speichern unter …“).

 

Python „Serials“ unter Windows 10 installieren

 

Wie wir bereits weiter oben gesehen haben, verfügt der „micro:bit“-Rechner über alles, was man zur Programmierung der „Universal Asynchronous Receiver Transmitter“ Hardware UART, d.h. für die serielle bzw. emulierte „RS232“- sowie „USB 2.0/3.0“-Schnittstelle nebst USB-Buchse braucht.

 

Microsoft Windows als multimediales, netzwerkfähiges, „multithread“- und „multiuser“-fähiges Betriebssystem selbst ist aber leider noch nicht für das „IoT“, das engl. „Internet of Things (and Services)“ ausgelegt. So z.B. gibt es die serielle Schnittstelle in Form von USB-Anschlüssen hauptsächlich nur für den Anschluss von USB-Geräten wie z.B. USB-Maus, USB-Tastatur, USB-Drucker oder externe USB-Festplatte, weniger jedoch für die Kommunikation und Datenübertragung über die seriellen Ports. Der Grund dafür ist der, dass der Anwender seine „Plug and play“-fähigen Geräte einfach nur anstöpseln, gleichzeitig aber von dem ganzen Drumherum, d.h. der hard- und softwaremäßigen Implementierung in das Windows-Betriebssystem, nichts wissen will.

 

Wenn es also darum geht, dass wir später „Python“-Programme unter Windows programmieren, dann müssen wir zunächst die derzeit aktuelle Version „Python 3.7.4 aus dem Internet herunterladen und installieren.

 

Kennen Sie den Unterschied zwischen der Installation eines „Windows“-Programms für einen bestimmten (oder alle) Benutzer und einer sogenannten Systeminstallation?

 

Die Installation eines „Windows“-Programms für eine sogenannte Systeminstallation führt u.a. dazu, dass das Programm dem „Windows“-Betriebssystem als Ganzes installiert wird. Und zwar mit entsprechenden Einträgen der Installation in die sogenannte „Windows“-Registry-Datenbank. Und zwar vollkommen unabhängig vom gerade aktiven, am „Windows“-System angemeldeten Benutzer!

 

Demzufolge werden bei der Systeminstallation auch entsprechende System-Verzeichnispfade eingetragen, wohin z.B. das entsprechende Programm installiert wurde,

 

         C:\Programme

 

         C:\ProgramData

 

         C:\Program Files

 

         C:\Programme (x86)

 

wo es sich vom „Windows“-Betriebssystem finden und aufrufen lässt.

 

Dabei gilt es unbedingt zu beachten, dass man die „Spaces“, d.h. die Leerzeichen im Verzeichnispfad möglichst durch entsprechende, äquivalente Steuerzeichen „%20“

 

         C:\Program%20Files

 

         C:\Programme%20(x86)

 

ersetzt!

 

Es verhält sich nämlich nicht zwangsläufig so, dass ein in Java, C/C++ oder Python entwickeltes Programm, das es ja auch für andere Betriebssysteme wie z.B. Linux, MacOS oder iOS von Apple gibt, auch mit den Leerzeichen unter dem „Windows“-Betriebs- und Dateisystem zurecht kommt, da es lange (Windows-) Verzeichnis- oder auch Dateinamen mit Leerzeichen z.B. unter Linux nicht gibt!

 

Da bei der Installation u.a. auch den Datei-Erweiterungsnamen *.py für „Python“-Quellkode-Programme, *.js für „JavaScript“-Quellkode-Programme usw. die entsprechenden Programme selbst zugewiesen werden, sodass das sich z.B. ein „Python“-Programm direkt im Microsoft „MS Visual Code“-Programm aufrufen lässt, ohne dass man den MS Programmier-Editor explizit zuvor gestartet haben muss; er startet sich nämlich dabei wie von selbst und zwar zusammen mit dem aufgerufenen „Python“-Programm!

 

Die sogenannte Systeminstallation erkennen Sie also immer daran, dass diese in eines der obenstehenden Programm-Verzeichnisse installiert wird, während eine Benutzer definierte Installation z.B. in den Verzeichnispfad

 

         C:\Benutzer\Benutzername\AppData\Roaming\Python\Python37

 

oder englisch

 

         C:\Users\Benutzername\AppData\Roaming\Python\Python37

 

installiert wird.

 

Während es sich früher meistens so verhielt, dass „Windows“-Programme zwangsläufig als System-Programme installiert wurden, verhält es sich inzwischen so, dass diese neuerdings als Benutzer definierte Installationen in den Verzeichnispfad

 

         C:\...\AppData\Roaming\..

 

installiert werden! Meistens dann mit der unangenehmen Folge, dass die installierten Programme selbst nicht mehr „wissen“ wohin sie installiert wurden, weil der Installations-Verzeichnispfad nicht automatisch als System-Verzeichnispfad in die Windows-Registry aufgenommen wird.

 

Besonders ärgerlich wird es dann, wenn man später, d.h. nachträglich das Zusatz-Programm pySerial installieren will.

 

Wurde dieses z.B. im Verzeichnispfad

 

         C:\Programme\pyserial-3.4

 

installiert, während das Konsole-Programm „Python in den Verzeichnispfad

 

         C:\Programme\Python37

 

installiert bzw. abgespeichert wurde, dann findet Python später nicht das pySerial, hat man zunächst keine Chance, dieses nachträglich in Python zu integrieren!

 

Wenn man das „pySerial“-Programm erfolgreich installieren will und zwar so, dass es vom „Python“-Hauptprogramm auch gefunden und sich von diesem als integraler Bestandteil nutzen lässt, dann muss man pySerial tunlichst als ein Unterverzeichnis von Python wie folgt installieren:

 

         C:\Programme\Python37\pyserial-3.4

 

Dabei spielt die Installations-Reihenfolge eine wichtige Rolle:

 

1.     das „Python“-Hauptprogramm und dann

 

2.     das „pySerial“-Programm!

 

In diesem Zusammenhang muss man wissen, dass ein (Haupt-) Programm im Prinzip praktisch alle Unterverzeichnisse als Bestandteil eines Hauptverzeichnisses nach einem (Unter-) Programm vorwärts durchsuchen und dieses finden kann.

 

Umgekehrt gibt es die Rückwärtssuche, die vom Hauptverzeichnis C:\Programme\Python37 des (Haupt-) Programms aus startet und dann später beim Wurzelverzeichnis C:\ ankommt und dabei auch das Unterprogramm im Verzeichnis C:\Programme\pyserial-3.4 findet, nicht, da sie zu aufwendig zu programmieren wäre.

 

Das kostenlose Programmier-Editor-Programm „Visual Studio Code“ von Microsoft gibt es, wie man im nachfolgenden Bild sieht, in zwei Setup-Versionen. Und zwar als

 

         Benutzer-Installationsprogramm, engl. „User Installer“ und als

 

         System-Installationsprogramm, engl. „System Installer“:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Wenn Sie sich für das System-Installationsprogramm entscheiden, machen Sie nichts falsch, sind Sie auf der sicheren Seite, gibt es praktisch keine Probleme, wenn Sie später weitere Zusatzprogramme installieren und ins Hauptprogramm integrieren wollen. Vorausgesetzt natürlich, dass Sie das Zusatzprogramm in ein Unterverzeichnis des Hauptprogramms installieren (siehe oben)!

 

Was aber macht man als Anwender, wenn es ein zu installierendes Programm und dessen Setup nicht als System-Installationsprogramm gibt bzw. man darüber im Unklaren gelassen wird, ob es sich bei dem Setup-Programm tatsächlich um eine Systeminstallation handelt oder nicht?

 

Wenn man als Anwender wissen will, was beim Setup nebst Installation so alles vonstatten geht, dann sollte man vorab einen Blick in die Benutzer definierte Installation werfen:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Wenn man zusätzlich zum „Python for Windows“-Programm (siehe obenstehendes Bild) dann auch noch das „pySerial“-Programm in den Verzeichnispfad

 

         C:\Programme\Python37\pyserial-3.4

 

installiert, dann sollte man die „pySerial“-Installation noch wie überprüfen, indem man im „Python for Windows“-Programm den (Python-) Import der „Serial“-Funktion wie folgt abfragt:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Textstring „Hello World!“ an den „micro:bit“-Rechner senden

 

So, nachdem alles klappt, d.h. die Programme „Python for Windows“ und „pySerial“ ordnungsgemäß funktionieren, können wir uns daran machen und das kleine „Python“-Programm microbit_teil_05_prog_05.py, Download mittels rechter Maustaste und „Ziel speichern unter …“) wie folgt erstellen:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Die Anzeige des Textstrings „Hello World!“ erfolgt auf dem kleinen 5x5 LED-Pixel großen Display des „micro:bit“-Rechners in Form der entsprechenden Laufschrift mit dem „Python“- Programm microbit_teil_05_prog_04.py, Download mittels rechter Maustaste und „Ziel speichern unter …“), das natürlich zuvor auf den „micro:bit“-Rechner aufgespielt und nach der Laufschriftanzeige „Start …“ mittels Tastendruck auf den „Taster A“ gestartet werden muss:

 

 

(Zum Vergrößern bitte auf das Bild klicken!)

 

Nachdem das serielle „micro:bit“-Anzeigeprogramm aufgespielt und mittels Tastendruck auf den „Taster A“ (siehe obenstehendes Bild) gestartet wurde, lauscht der kleine Rechner am seriellen „USB-2.0-Micro-B-Kabel“-Anschluß geduldig auf eine eingehende Nachricht, die dann auch tatsächlich eintrifft!

 

Und zwar gesendet vom obenstehenden „Python“-Programm microbit_teil_05_prog_05.py, Download mittels rechter Maustaste und „Ziel speichern unter …“).

 

Die auf dem [ Video ] zu hörenden Nebengeräusche stammen nicht vom „micro:bit“-Rechner, sondern von der benachbarten Baustelle ;-)

 

 

 

[ Home ] [ zurück ] [ Seitenanfang ] [ Teil 4 ]