Neben ungleichen Übertragungsraten zwischen Sender und Empfänger stellt eine falsch gesetzte Parität die zweithäufigste Fehlerursache beim Einrichten serieller Verbindungen dar. Die Paritätsprüfung lässt sich aber abstellen, sodass nach der vollständigen Übertragung eines Bytes sofort die des nächsten beginnt.
Da beim Übertragen das Timing eine entscheidende Rolle spielt, puffern die beiden Gegenstellen die Daten immer in einem Zwischenspeicher (Buffer). Dazu muss der Puffer eine ausreichende Kapazität zur Verfügung stellen. Er kann sowohl als Teil des Programms wie auch als Hardware implementiert sein; nicht selten ist beides gleichzeitig der Fall.
Das Diagramm in Abbildung 2 verdeutlicht den Aufbau einer seriellen Datenübertragung. Reale Schaltungen invertieren häufig die Signalpegel – wundern Sie sich also nicht, wenn Sie die Information in Quellen genau andersherum sehen.

Abbildung 2: Beim asynchronen seriellen Übertragen der Daten senden die Gegenstellen neben den eigentlichen Daten außerdem Bits, die Beginn und Ende eines Transfers kennzeichnen.
Bei frühen CPUs mit Taktraten im einstelligen MHz-Bereich war es ziemlich schwierig bis unmöglich, eine serielle Schnittstelle in Software zu implementieren. Daher verbauten die Rechnerhersteller einen speziell für diesen Zweck entwickelten Halbleiter in den Schnittstellen, den sogenannten UART. Das Kürzel steht für “Universal Asynchronous Receiver/Transmitter”. Ein solcher verfügt über eigene Puffer und unterschiedliche Mechanismen zum Steuern des Datenflusses.
Letztere dienen unter anderem dazu, dem Sender über zusätzliche Steuerleitungen mitzuteilen, dass er die Datenübertragung unterbrechen soll. Damit bremst der Empfänger die Übermittlung, wenn er nicht in der Lage ist, die Daten schnell genug zu verarbeiten. Alles in allem waren UARTs sehr flexibel, recht kompliziert und auch teuer. Dank höherer Taktraten kann heute meist der Chipsatz des Rechners ihre Funktionen übernehmen.
Entwicklungsumgebung
Um mehrere serielle Interfaces zu implementieren, verwenden Sie eine Bibliothek des Arduino-Projekts, die eine serielle Schnittstelle als Software-Implementation bereitstellt. Das ermöglicht es, fast jeden GPIO-Pin des ESP8266 zu einer seriellen Schnittstelle zu machen. “Fast” bedeutet in diesem Zusammenhang, dass Sie die Pins 0 bis 5 und 12 bis 15 für serielle Schnittstellen verwenden dürfen. Damit lässt sich der ESP8266 mit bis zu fünf solcher Interfaces ausstatten.
Um die Daten dann anzuzeigen, kommt ein einfacher Webserver zum Einsatz, der auf dem ESP8266 läuft. Als Entwicklungsumgebung dient die Arduino IDE, die Sie aus Teil 1 dieser Reihe bereits kennen. Dort finden Sie auch eine detaillierte Beschreibung zur Installation der IDE.
Testaufbau
Für das Projekt wurde der Testaufbau (Abbildung 3) fest auf einer Lochrasterplatine verlötet, da er in der Nähe der Elektroverteilung zum Einsatz kommt. Dort ist es sicherer, alle Bauteile fest zu verbinden.

Abbildung 3: Testaufbau auf einer Prototypen-Platine fest verlötet, da die Komponenten in der Nähe der Elektroverteilung zum Einsatz kommen.

Abbildung 4: Der Schaltplan zu unserem Testaufbau zeigt eine ganze Reihe von altbekannten Bauteilen.
Den zugehörigen Schaltplan zeigt Abbildung 4. Der Aufbau besteht aus den bekannten Bauteilen, die man benötigt, um den ESP8266 zu betreiben und Programme hochzuladen. Der TTL-Lesekopf ist über Schraubverbinder an die Platine angeschlossen, die zwei Datenleitungen des Lesekopfs hängen an den GPIOs 14 und 12 des ESP8266.
Die Spannungsversorgung basiert auf dem DC/DC-Modul OKLT1W12NC [3]. Es bietet mit 2,9 bis 14 Volt einen weiten Bereich für die Eingangsspannung. Als Spannungsquelle kommt ein USB-Netzteil oder eine im Schaltschrank möglicherweise vorhandene Spannungsquelle mit 12 Volt infrage. Das als Schaltregler ausgeführte OKLT1W12NC hat einen Wirkungsgrad von etwa 90 Prozent, die Ausgangsspannung legen Sie über einen Spannungsteiler fest.
Beim Widerstand R5 handelt es sich um ein Spindelpoti, mit dem sich die Ausgangsspannung des Wandlermoduls sehr präzise einstellen lässt. Prüfen Sie beim Zusammenbau unbedingt erst die Versorgungsspannung, bevor Sie Jumper 3 schließen: Ansonsten besteht die Gefahr, den ESP8266 dauerhaft zu beschädigen. Der Kondensator C1 stabilisiert die Betriebspannung des ESP8266, was die komplette Schaltung weniger anfällig für Störungen macht. Je nachdem, wie dicht Sie die Elektronik an den Starkstrom führenden Teilen positionieren, treten erhebliche Störungen auf.
Falls Sie eine Adapterplatine für den ESP8266 verwenden, sollten Sie vorab prüfen, welche Widerstände dort schon bestückt sind und ob Sie einen davon überbrücken müssen. Bei einigen Adapterplatinen liegt in der Zuleitung für VCC ein 10-kOhm-Widerstand – üblicherweise keine gute Idee.
Testprogramm
Das Testprogramm stellt einen Webserver bereit, der die Daten zum Verbrauch aus dem Stromzähler anzeigt. Abbildung 5 demonstriert die Ausgabe des Programms, den Quellcode dazu sehen Sie in Listing 1.





