TP


Blog

EWE Stromzähler mit ESP8266 auslesen

Herbst und Winter sind Bastelzeit - nun ist endlich ein neues Projekt im Betrieb, aber sicher noch nicht ganz fertig. Die Photovoltaikanlage hat mir einen "Smarten" Stromzähler beschert, der aber seine Messwerte für sich behalten hat. Das konnte so nicht bleiben! Die Dinger haben eine Infrarotschnittstelle, über die die Daten preisgegeben werden. Die muss man aber erst einmal aktivieren.

Schritt 1: PIN für den Zähler bei der EWE Netz (mein Netzbetreiber) beantragen - das geht mit einer formlosen Email, nach einigen Tagen kam ein Brief mit den PIN.

Schritt 2: In den Zähler einloggen und IR Schnittstelle aktivieren. Das ist je nach Zähler in der Anleitung zu finden.

Schritt 3: IR Leser bauen. Eine gute kurze Anleitung ist beim Volkszähler zu finden. Allerdings war bei mir mit einem ESP8266 ein anderer Pull-Up für den TEKT5400S Fototransistor nötig, mit 22kOhm hat es gut funktioniert. Die Wahl des Fototransistors ist entscheidend, siehe hier.

Schritt 4: Entscheidung, welches Interface genommen wird. Mein Zähler hat zwei - eine sogenannte D0 Schnittstelle (ein IR Blink je Wh) oder die volle SML Schnittstelle. Hier ein Beitrag, der das gut beleuchtet. Ich habe mich für die SML Schnittstelle entschieden. Da gibt es eine volle Library für den Mikrocontroller. Ich habe mich an einem existierenden Projekt zu SML via ESP8266 langgehangelt. Wichtig war die schrittweise Vorgehensweise - erstmal per Software Serial auslesen, was so gesendet wird (bei mir jede Sekunde ein Datagram). Wichtig ist dabei sauberes Timing. Es gelten die gleichen Prinzipien, wie bei der Hardware Serial Schnittstelle, aber wenn der ESP8266 gerade woanders unterwegs ist (z.B. WiFi), dann fehlen schnell mal ein paar Byte!

Leider fiel mir dabei schnell auf, dass sich mein Zähler nicht ganz an den SML Standard hält, es fehlte die Startsequenz und es geht manchmal am Standard vorbei (so nutzt mein Zähler für das TL Feld auch eine 0x54 für einen int24, wo im Standard nur 0x53 für int16 und 0x55 für int32 definiert sind). Das führte dann zu meiner Entscheidung, nicht mit den Bibliotheken und einem vollen Logger wie vom Volkszähler  zu arbeiten, sondern einfach nur die Listeneinträge für die aktuelle Wattzahl zu finden und auszulesen. Minimalistisch, schnell, aber eben nur für diesen einen Zähler geeignet.

Den Code pappe ich demnächst mal bei GitHub rein.

CNC Experimente Teil 2

Zu Ostern war der Ehrgeiz da, mal ein Ei per CNC zu bemalen, was auch gut geklappt hat. Seitdem liegt das Projekt dank vieler anderer Prioritäten darnieder. Damit nicht alles in Vergessenheit gerät, hier der Überblick. Die Basics sind ja schon hier verlinkt. Die wichtigsten Werkzeuge sind der Universal GCODE Sender und Inkscape.

Vom Ablauf her: erst eine passende Vektorgrafik in Inkscape bauen (oder importieren), dann daraus den GCODE machen (wird als .ngc Datei gespeichert). Dann diese Datei mit dem Universal GCODE Sender an den Bot schicken (bzw. an den Arduino, auf dem der CNC Shield sitzt und der GCODE spricht, wie im ersten Teil beschrieben).

Hier noch ein paar Seiten mit Hintergrund, die mir halfen, das Thema tief genug zu verstehen:

Nun liegen ein paar Linearführungen bei mir im Schrank für die nächste Iteration... mal sehen, wann die Zeit (und schlechtes Wetter) das erlauben!

CNC Experimente

Für meine CNC Experimente: Die Bauteile: Nema 17 Stepper (Datenblatt mit Maßen), CNC Shield v3 auf einem Arduino Uno, bestückt mit DRV8255 Treibern, der Arduino Uni spricht nach einem schnellen Upload (hier beschrieben) grbl. Für die Vermeidung eines Anfängerfehlers ("Unexpected error was detected: error 22") siehe hier. Man braucht eine Feedrate, nicht nur Koordinaten... und kann die Kommandos direkt über die serielle Schnittstelle an den Arduino tippen, was sehr hilfreich für das Verständnis ist!

Wichtig ist, die Potis der DRV8255 vor dem Einschalten des Stroms erst ganz nach rechts zu drehen (also auf 0V) und dann als erstes auf eine Spannung zu drehen, die der Hälfte des maximalen Stroms der Stepper entspricht. Für die Nema 17 habe ich 0.5V eingestellt, für einen experimentell ebenfalls angeschlossenen 28BYJ-48 0.15V.

Ein Einstieg in GCODE ist nötig. Unten auf der Seite gibt es ein paar Links zu CAM Software. Eine zweite Seite hat auch eine Liste von GCODE-Generatoren.

Auch wichtig - eine Software, die den GCODE über die Serielle Schnittstelle (aka USB) an den Arduino sendet. Hier soll Candle ganz OK sein, braucht aber das Qt-Framework. Eine andere Option ist der Universal GCODE Sender von Winder, der auf Java läuft.

Computerarchäologie

Ja, so etwas gibt es tatsächlich - zumindest hat jemand den Begriff Archäologie benutzt, als eine alte Cassette mit dem ersten Apple Basic zu rekonstruieren war. Die Seite www.pagetable.com ist ein echter Fundus - vieles zu den ersten populären Heimcomputern ist dort zu finden. Ein sehr schöner Beitrag ist über das Easteregg von Bill Gates im 8-bit Basic. Auch damals musste man sich schon vor schamlosen Kopien schützen - und dabei zählte jedes Byte Speicher!

Noch ein Stück weiter zurück geht es bei 4004.com - einer Seite über den ersten echten Mikroprozessor. Der wurde in Tischrechnern eingesetzt, es ist neben den Masken und Schematics sogar der komplette Assembler-Code erhalten. Inzwischen ist der Rechenkern 50 Jahre alt. Eine Reihe von Links führt zu vielen kleinen Schätzen der Anfänge der Mikroprozessortechnik. Der 4004 ist der Urvater der x86er Prozessoren, über die es einen schönen Artikel in der englischen Wikipedia gibt. Passend dazu auch über die ersten CGA-Grafikkarten und deren Technik. 1981 eingeführt - also fast 40 Jahre dabei und de-facto Standard für viele Jahre.

Wasserstoff als Energiespeicher

Das Thema Wasserstoff ist auch in Niedersachsen einmal mehr in aller Munde. Aktuell haben die Batterien als Speichermedium für fluktierenden regenerativen Strom aufgrund des besseren Gesamtwirkungsgrades die Nase vorn - aber für Anwendungen wie das Fliegen wird das auf absehbare Zeit nicht funktionieren. Und für "grünen" Stahl wird man Wasserstoff als Reduktionsmittel brauchen.

Heute bin ich auf ein paar interessante Seiten gestoßen, als ich einmal mehr nach kleinen Möglichkeiten zur Wasserstoffspeicherung Ausschau gehalten habe. Über ein Projekt in Thailand, das Phi Suea House Project, bin ich auf die Firma Enapter aufmerksam geworden, die tatsächlich in Münster bei einem Engagierten eine Anlage installiert haben, die überschüssigen Photovoltaikstrom als Wasserstoff speichert und über eine Brennstoffzelle wieder nutzbar macht. Die Firma sieht sich als internationales Start-up (mit YouTube Kanal) und man kann aktuell bei ihnen eine Anleihe zeichnen. Bei der Konkurrenz durch die Batterie und andere Unternehmen sicher nicht risikolos.

Leider kostet so ein Elektrolyseur bei Enapter aktuell 9000 EUR - und da ist dann die Brennstoffzelle und der Speicher noch nicht mit dabei. Wie ich hier berechnet habe, darf die ganze Speicherkonstruktion aber nur gute 3000 EUR kosten, um aktuell wirtschaftlich zu sein. Im Moment ist das also noch etwas für Modellprojekte - werde ich aber auf jeden Fall weiter beobachten!

EEPROMs

Mein Sohn ist aktiv am Bauen seines Ben Eater Nachbaus. Da wollte ich unter die Arme greifen und habe den EEPROM Programmer nachgebaut - wie es im Video beschrieben ist... dann kamen diverse Probleme auf, die ich nach und nach erledigen konnte.

Wichtig ist es, nicht direkt die LEDs ans EEPROM zu hängen - der Stromfluss wäre zu hoch!

Je nach Geschwindigkeit des EEPROMs muss auf das "Schreiben fertig" Signal gewartet werden. Manche EEPROMs haben auch einen Schreibschutz, der erst aufgehoben werden muss.

Floating Inputs / outputs sind ebenfalls ein Thema. Pull-up/down Widerstände können helfen. Wenn die Adresse sich ändert, ist undefiniert, was an den Datenleitungen anliegt. Wichtig auch, wirklich alle Adressleitungen des EEPROMs anzusprechen - nicht einfach die hohen Bits offen lassen!

Eine Gesamtschau gibt es hier. Noch besser die gesammelten Erfahrungen beim 8-Bit Nachbau. Auf die Spitze getrieben - mit 6 GPIO Pins kann man auch einen EEPROM Programmer bauen.

Spezieller Tip zum Schluss: Billige China-Nachbauten funktionieren auch mal nicht. Hatte eine Lieferung 28C16 Chips, bei denen die Datenpins immer "high Z" waren, egal, was anlag - Elektroschrott. Die 28C64, bei Reichelt erstanden, waren zuverlässig.

Folding@Home

Dank den Kindern und Corona bin ich wieder auf eine alte Sache aufmerksam geworden: Folding@Home, ein Projekt, welches die Faltung von Proteinen untersucht. Man kann hier Rechenzeit auf dem eigenen Recher zur Verfügung stellen. Aktuell gibt es viele Projekte zu den verschiedenen Hüllproteinen des SARS-CoV2 und Interaktionen mit möglichen Medikamenten. Für Linux gibt es Kommandozeilenoptionen. Wenn man im Team faltet, kann man Punkte zusammen gewinnen. Für die Ehre... und vielleicht die Medikamentenentwicklung.

Bei Linux Systemen muss für die Nutzung der Grafikkarte in der Regel noch OpenCL installiert werden. Eine Möglichkeit ist ROCm, die bei mir leider nicht geklappt hat, trotz einiger Lektüre. Vielleicht installiere ich doch noch die proprietären AMD Treiber - noch bin ich nicht soweit!

ESP8266, ein paar neue Links

Seit einiger Zeit baue ich mit ESP8266 kleinere Projekte. Die Basics stehen in einem früheren Post, hier kommen ein paar neue Aspekte hinzu. Eine wichtige Sache ist die FAQ zu "warum crasht mein ESP". Hier ist auch das Konzept des Watchdog interessant und unbedingt lesenswert.

Welche Pins sind eigentlich für welchen Zweck die besten? Bei den verschiedenen Versionen der Entwicklungsboards haben da verschiedene Pins, die hier einmal gut dargestellt sind. Insbesondere der Wemos D1 Mini hat ein paar Spezialitäten. Wie er seine eigene Versorgungsspannung misst, steht hier.

Mit Bewegungmeldern kann man auch sehr schöne Sachen machen. Für den populären HC-SR501 kann man die Basics hier und hier gut nachlesen.

Ein schönes Projekt, welches den ESP8266 per Taster aus dem Tiefschlaf weckt, ist dieser Notruftaster. Dort ist auch die Konfiguration über ein Webinterface realisiert. Falls man einmal nicht alles hart per Code "verdrahten" möchte.

Sehr interessanter tiefer Einblick auf Kickstarter - MicroPython.

1 2 3 4 >