Quantcast
Channel: Arduino-Hannover
Viewing all 43 articles
Browse latest View live

HTML Kochbuch mit ESP8266 und Arduino IDE

$
0
0

Mit der Arduino IDE kann man Programme für den ESP8266 entwickeln, die über WLAN und WEB-Browser die Anwendung steuern. Die Benutzeroberfläche und die Benutzeraktionen werden mit Hilfe von HTML definiert.

Der Vorteil dieses Konzepts liegt darin, dass man mit PC, Tablet oder Smartphone die Anwendung steuern kann. Das ist unabhängig von Betriebssystem und Gerätehardware möglich. WLAN-Fähigkeit und Web-Browser sind ohnehin so gut wie immer vorhanden und reichen völlig aus.

Hier wird gezeigt wie man mit der Arduino IDE Programme für den ESP8266 schreiben kann, die die HTML-Seiten aufbauen, an den WEB-Partner senden und die empfangenen Benutzereingaben auswerten.

HTML-Editoren können hier nicht eingesetzt werden, Die HTML-Seiten müssen Element für Element selbst definiert werden.

Hier das erste Beispiel. Es sieht so aus :
 HTML_Kochbuch_Bild1

In diesem Beispielen wird nichts gesteuert. Es werden nur die Klicks auf „OK“ und „nicht OK“ gezählt. Die Besonderheit : Es wird auch ein kleines Bild dargestellt.

Das dazugehörenden Beispielprogramm mutet auf den ersten Blick ein wenig „oversized“ an, weil es viele Unterroutinen enthält, die teilweise hier nicht aufgerufen werden.

Diese Routinen werden jedoch für andere Steuerelemente benötigt. Das Programm eignet sich in der vorliegenden Form als Kopiervorlage. Es enthält die wichtigsten Unterroutinen und kann auf einfache Weise ausgebaut werden.

Coding
Der Sketch zum download:

Erläuterungen zum Programmrahmen

Im Setup wird 10 Sekunden gewarten, damit man in Ruhe den Serial-Monitor starten kann und alle Meldungen mitbekommt

Dann wird zunächst versucht sich beim lokalen WLAN anzumelden. Wenn dies fehlschlägt wird ein eigener WEB-Server gestartet.

In der Loop wird die Routine WIFI-Traffic aufgerufen, um die über WALN empfangenen Benutzereingaben zu verarbeiten und die aktuelle HTML-Seite aufzubauen und zu senden.

Die Web-Browser rufen nicht nur die HTML-Seite und die darin enthaltenen Verweise auf Grafiken usw. ab. Sie fragen z.B. auch nach einem Favoriten-Ikon. Wenn man diese Requests ignoriert, weden sie alle paar Sekunden wiederholt. Daher wird in meinem Programm auf alles was nicht bekannt ist und bedient werden kann, mit „Not found“ geantwortet. Das merkt sich der Browser und weitere Anfragen unterbleiben.

Nach einem Abruf der HTML-Seite ohne jeden Parameter (Browsereingabe z.B. http://192.168.178.41/)?utm_source=rss&utm_medium=rss kommt dieser Request an.:

GET / HTTP/1.1

Zwischen dem Slash und dem HTTP stehen ggf. Eingabe-Parameter oder der Name einer Datei die, abgerufen wird. In meinem Beispiel wird eine Bilddatei verlinkt :

HTML-Beispiel :

<img src=„bild.gif“ alt=„mein Bild“>

Die Bilddatei wird nach dem Senden der HTML-Seite automatisch angefordert :

GET /bild1.gif HTTP/1.1

Die Bilddatei wurde zu einem Char-Array umgesetzt und in einer eigenen Code-Datei Bild1.c gespeichert.:

#include "arduino.h"
#define BILD1_LEN  1515
const unsigned char Bild1[] = {
 0x47, 0x49, 0x46, 0x38, 0x39, 0x61, 0x2B, 0x00, 0x28, 0x00, 0x70, 0x00, 0x00, 0x21, 0xF9, 0x04,
 ....
 0x5B, 0xD1, 0xFD, 0xA2, 0xC8, 0x34, 0x5F, 0x01, 0x01, 0x00, 0x3B};

Diese binären Daten werden mit write übertragen. Write ist erforderlich, weil print beim ersten Auftreten eines 0x00 die Übertragung beenden würde.

Das Senden der HTML- und Binär-Daten geschieht in Portionen. Max. 2048 Bytes dürfen auf einmal geschickt werden, danach muß eine Pause von 20 mSec eingelegt werden.

Die Buttons haben die Attribute Name und Value. Beides wird beim Anklicken gesendet. So kann identifiziert werden, welcher Button angeklickt wurde.

HTML-Beispiel :

<button style=“width:200px“ name=„ACTION“ value=„1“>OK</button>

Wenn dieser Knopf angeklickt wird, kommt folgender Request :

GET /?ACTION=1 HTTP/1.1

Ich gebe die HTML-Seite auch auf dem Serialmonitor aus. Von dort kann sie mit Cut and Paste abgegriffen und z.B. zur Syntax-Prüfung in ein entsprechendes Programm übertragen werden.

Ein gute Seite zur Syntax-Prüfung im Netz ist z.B. :

http://www.dirtymarkup.com/?utm_source=rss&utm_medium=rss

Das sieht so aus :

HTML_Kochbuch_Bild2

Wenn man seine Seite eingefügt hat, kann man mit Enter die Eingabe in mehrere Zeilen aufteilen. Das sieht dann so aus.

HTML_Kochbuch_Bild3

Hinweise auf Syntax-Fehler stehen ggf. am Anfang einer Zeile. Man kann den Fehler durch Aufteilen der Zeilen (Enter) einkreisen.

Es ist dringend angeraten, seine HTMLSeite zu überprüfen, um sicher zu gehen, dass sich kein Fehler eingeschlichen hat. Die verschiedenen WEB-Browser behandeln Fehler ganz unterschiedlich. Einige korrigieren bestimmte Fehler erfolgreich und alles sieht gut aus, einige nicht, und zeigen u.U. einen Scherbenhaufen (Browser in Voodoo-Mode) an.

Aufbau der HTML-Seite

Ich baue die HTML-Seite als Char-Array auf. Das benötigt weniger Speicher und läuft daher stabiler als der Aufbau mit Hilfe einer String-Variablen. Das Char-Array muß natürlich groß genug definiert sein. Es wird mit strcat zusammengesetzt. Eine eigenen Routine strcati dient zum Anfügen von Integerzahlen.

Die Benutzereingaben müssen in

<form> … </form>

eingebettet sein. Innerhalb dieses Blockes muß ein Button sein, der die Übertragung der Benutzereingaben dieses Blocks auslöst.

Auf einer HTML-Seite dürfen mehrere solcher Blöcke vorhanden sein, um z.B. die Eingaben zu strukurieren und unnötige Datenübertragungen zu vermeiden.

Wie oben bereits erwähnt, werden die Atrribute Name und Value beim Anklicken eines Button gesendet. Im Request kommen dann Name=Value an. Ich benutze bei allen Buttons immer den gleichen Namen „ACTION“ mit verschiedenen numerischen Werten in Value. Die Auswertung ist dann einfach. Mit der Routine Pick_Parameter_Zahl wird der Zahlenwert hinter „ACTION=“ ausgelesen. Der eingelesen Wert wird dann interpretiert. Das ist einfacher als verschiedenen Namen zu verwenden, die dann einzeln ausgelesen werden müssten,

Die verschieden Werte für ACTION habe ich als Kompilerkonstanten definiert z.B. ACTION_OK. Diese Konstanten verwende ich beim Aufbau der HTML-Seite und beim Interpretieren der Benutzereingaben. Das schafft Klarheit und Übersichtlichkeit und dokumentiert sich automatisch.

Dieses Anwendungsbeispiel

Hier werden nur die Anzahl Klicks auf „Ok“ und „Nicht OK“ gezählt. Das is denkbar einfach:

//  Variablen

int ok_count = 0;
int notok_count = 0;
int Aufruf_Zaehler = 0;

#define ACTION_OK 1
#define ACTION_NOTOK 2
int action;

// HTML Ausgabe

strcat( HTML_String, "<button style= "width:120px" name="ACTION" value="");
strcati(HTML_String, ACTION_OK);
strcat( HTML_String, "">OK</button>");

strcat( HTML_String, "   ");

strcat( HTML_String, "<button style= "width:120px" name="ACTION" value="");
strcati(HTML_String, ACTION_NOTOK);
strcat( HTML_String, "">nicht OK</button>");

strcat( HTML_String, "</form>");

strcat( HTML_String, "<BR>");

strcat( HTML_String, "<FONT SIZE=-1>");
strcat( HTML_String, "Aufrufzähler : ");
strcati(HTML_String, Aufruf_Zaehler);
strcat( HTML_String, "  Anzahl OK : ");
strcati(HTML_String, ok_count);
strcat( HTML_String, "  Anzahl NOK : ");
strcati(HTML_String, notok_count);

// Auswertung

action = Pick_Parameter_Zahl("ACTION=", HTML_String);
if ( action == ACTION_OK) ok_count++;
if ( action == ACTION_NOTOK) notok_count++;

2. Anwendungsbeispiel

Im folgenden Anwendungsbeispiel möchte ich zeigen, wie die wichtigsten Steuerelemente definiert und ausgewertet werden.

Textfelder

HTML-Beispiel :

<input type=„text“ style=“width:200px“ name=„VORNAME“ maxlength=„20“ value=„Bärbel“>

Das sieht so aus :
HTML_Kochbuch_Bild4

Der Request sieht so aus :

GET /?VORNAME=B%E4rbel&ACTION=4&NACHNAME=von+der+Waterkant HTTP/1.1

Die Felder sind durch ein & getrennt. Umlaute werden hexadezimal zurückgegeben. Dem Headezimalwert ist ein % vorangestellt. In diesem Beispiel wird der Buchstabe ä als %E4 codiert. Leerzeichen werden als + dargestellt. Die Routine Pick_Text bereitet die empfangenen Textfelder auf, dh. Hexcodes und + -Zeichen werden umgesetzt.

Auswertung :

  if ( action == ACTION_SET_NAME) {
    myIndex = Find_End("VORNAME=", HTML_String);
    if (myIndex >= 0) {
      Pick_Text(Vorname, &HTML_String[myIndex], 20);
    }
    myIndex = Find_End("NACHNAME=", HTML_String);
    if (myIndex >= 0) {
      Pick_Text(Nachname, &HTML_String[myIndex], 20);
    }
  }

Uhrzeit und Datum

HTML-Beispiel :

<input type=“time“ style=“width:100px“ name=“UHRZEIT“ value=„16:47:00“>
<input type=“date“ style=“width:100px“ name=“DATUM“ value=„2016-02-09“>

Das sieht so aus :

HTML_Kochbuch_Bild5

Der Request sieht so aus :

GET /?UHRZEIT=16%3A47%3A00&ACTION=3&DATUM=2016-02-09 HTTP/1.1

In der Uhrzeit sind die Trennzeichen : hexadezimal-codiert,. Das Datum wird in der angelsächsischen Reihenfolge Jahr, Monat Tag angegeben.

Auswertung :

if ( action == ACTION_SET_DATE_TIME) {
  myIndex = Find_End("UHRZEIT=", HTML_String);
  if (myIndex >= 0) {
    Pick_Text(tmp_string, &HTML_String[myIndex], 8);
    Uhrzeit_HH = Pick_N_Zahl(tmp_string, ':', 1);
    Uhrzeit_MM = Pick_N_Zahl(tmp_string, ':', 2);
    Uhrzeit_SS = Pick_N_Zahl(tmp_string, ':', 3);
  }
  myIndex = Find_End("DATUM=", HTML_String);
  if (myIndex >= 0) {
    Pick_Text(tmp_string, &HTML_String[myIndex], 10);
    Datum_JJJJ = Pick_N_Zahl(tmp_string, '-', 1);
    Datum_MM = Pick_N_Zahl(tmp_string, '-', 2);
    Datum_TT = Pick_N_Zahl(tmp_string, '-', 3);
  }
}


Auswahlfelder

HTML-Beispiel für Checkbox :

<input type=„checkbox“ name=„WOCHENTAG0“ id=„WT0“ value=„1“ checked>
<label for=„WT0“>Mo</label>

Man muß die Checkbox definieren und explizit ein Beschriftungslabel zuordnen. Das Attribut checked zeigt an, das diese Checkbox angekreuzt angezeigt werden soll. Im Request erhält man nur für angekreixte Checkboxen Name und Value. Über nicht angekreuzte Checkboxen wird geschwiegen. In meinem unternstehenden Beispiel habe ich alle 7 Wochentage aufgeführt und baue die angekreutenTage als Bit in ein 1-Byte-Datenfeld ein..

Auswertung :

Wochentage = 0;
for (int i = 0; i < 7; i++) {
  strcpy( tmp_string, "WOCHENTAG");
  strcati( tmp_string, i);
  strcat( tmp_string, "=");
  if (Pick_Parameter_Zahl(tmp_string, HTML_String) == 1)
    Wochentage |= 1 << i;
}

HTML-Beispiel für Radiobutton :

<input type=“radio“ name=„JAHRESZEIT“ id=“JZ0″ value=„0“ checked>
<label for=“JZ0″>Frühling</label>
<input type=“radio“ name=„JAHRESZEIT“ id=“JZ1″ value=„1“>
<label for=“JZ1″>Sommer</label>

Man muß auch hier zunächst den Radiobutton definieren und dann explizit ein Beschriftungslabel zuordnen.
Die Gruppierung der Gruppe geschieht über das Attribut Name, das bei allen Gruppenmitgliedern den gleichen Wert hat. Genau ein Radiobutton der Gruppe darf ein checked enthalten

Auswertung :

Jahreszeit = Pick_Parameter_Zahl("JAHRESZEIT=", HTML_String);

HTML-Beispiel für Combobox :

<select name=„WETTER“ style=“width:160px“>
<option selected value=„0“>Regen</option>
<option value=„1“>Wolken</option>
</select>

Zwischen select und endselect werden die Auswahloptionen aufgeführt. Die vorgewählte Option erhält das Attribut selected.

Auswertung :

Wetter = Pick_Parameter_Zahl("WETTER=", HTML_String);

Das sieht so aus :

HTML_Kochbuch_Bild6

Der Request für alles obige sieht so aus :

GET /?WOCHENTAG1=1&WOCHENTAG2=1&WOCHENTAG3=1&ACTION=5&JAHRESZEIT=2&WETTER=2 HTTP/1.1

Slider

HTML-Beispiel :

<input type=„range“ name=„VOLUME“ min=„0“ max=„30“ value=„15“>

Das sieht so aus :

HTML_Kochbuch_Bild7
Der Request sieht so aus :

GET /?VOLUME=15&ACTION=6 HTTP/1.1

Auswertung :

if ( action == ACTION_LIES_VOLUME) {
  Volume = Pick_Parameter_Zahl("VOLUME=", HTML_String);
}

Listing (ohne die oben bereits wiedergegebenen Unterroutinen)

Coding
Der Sketch zum download:

Weitere Details zu HTML findet man hier :

www.w3schools.com?utm_source=rss&utm_medium=rss Englische Seite. Kurz und bündig.

wiki.selfhtml.org Deutsche Seite. Ausführliche Beispiele.

Das war’s. Viel Spaß beim Ausprobieren.

Hubert Baumgarten

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.

Der Beitrag HTML Kochbuch mit ESP8266 und Arduino IDE erschien zuerst auf Arduino-Hannover.


Der Arduino Treffpunkt Hannover zu Gast auf der Maker Faire Ruhr

$
0
0

Am 12. und 13. März 2016 haben wir mit einem Teil des Arduino Treffpunkt Hannover einen Ausflug nach Dortmund zur Maker Faire Ruhr unternommen. Allein das Ausstellungsgelände der DASA wäre schon einen Besuch wert. Einfach mal dem Link hierzu folgen. Einzig ein verwertbares Außengelände steht hier bislang nicht zur Verfügung. Hier ist das Congress Centrum Hannover bisher unschlagbar.

Und dann wären da natürlich noch die vielen Maker aus den unterschiedlichsten Bereichen mit ihren vielen Ideen, Erfindungen und den Mitmachaktionen auch abseits der Elektronik. Unterstützt wurden die Maker noch durch zusätzliche Aktionen der DASA. Mehr als 50 Maker mit Ihren Ständen konnte ich auf 2 Etagen ausmachen. Spannend hörten sich auch die vielen Workshops und Vorträge an. Leider ist aber ein Tag bei intensiver Nutzung aller Angebote einfach viel zu knapp bemessen. Aber die nächste Maker Faire zeichnet sich ja bereits ab.

Manches Mal ist es für mich bei solchen Events nicht einfach einen Favoriten auszumachen. Dieses Mal ist es gleich eine ganze Halle! Ich hatte nämlich das Glück über die 2. Etage kommend einen völlig unerwarteten Blick direkt von oben auf die Stahlhalle mit ihrem Walzwerk zu bekommen. Ein Teil der Halle war passend von den Steampunkern belegt, ein weiterer von den R2-D2 Buildern und natürlich noch vielen weiteren Makern. Leider ist mein eigenes Foto in diesem Moment etwas verwackelt. Vielleicht kann ich aber noch das eine oder andere Foto später von den Kollegen nachreichen.

Viel Spaß nun beim Sichten der Fotos.

…nun inklusive einer Erweiterung der Galerie mit neuen Fotos. Upload vom 19.03.2016.

CIMG4222 2016-03-13.115614-k2016-03-13.125442-k-k 2016-03-13.125824-k-k 2016-03-13.142636-k 2016-03-13.154352-k IMG_20160313_114441 IMG_20160313_123449 IMG_20160313_123631 IMG_20160313_123721 IMG_20160313_123757 IMG_20160313_123853 IMG_20160313_125804 IMG_20160313_131648 IMG_20160313_144122 Slack for iOS Upload(1) IMG_6534 IMG_6535 IMG_6542 IMG_6544 IMG_6548 IMG_6551 IMG_6562 IMG_6541 IMG_6540 IMG_6539 IMG_6537 IMG_6536 IMG_6563 IMG_6567 IMG_6587 IMG_6600 Slack for iOS Upload(2) Slack for iOS Upload(7) Slack for iOS Upload(6) Slack for iOS Upload(5)  Slack for iOS Upload(3) Slack for iOS Upload(8) Slack for iOS Upload(9) Slack for iOS Upload(10) Slack for iOS Upload(11) Slack for iOS Upload

20160313_104550 20160313_104752 20160313_104825 20160313_120626 20160313_124015 20160313_124030 20160313_124507 20160313_124518 20160313_125305 20160313_12594520160313_12543420160313_125956 20160313_130024 20160313_130036 20160313_130115 20160313_130235 20160313_130246 20160313_130404 20160313_130420 20160313_130433 20160313_130549 20160313_130701 20160313_130738 20160313_130757 20160313_130806 20160313_130942 20160313_131530 20160313_131539 20160313_131604 20160313_131615 20160313_131908 20160313_140413 20160313_142319 CIMG4162 CIMG4163 CIMG4165 CIMG4166 CIMG4167 CIMG4168 CIMG4170 CIMG4171 CIMG4172 CIMG4173 CIMG4174 CIMG4175 CIMG4176 CIMG4177 CIMG4178 CIMG4179 CIMG4181 CIMG4182 CIMG4183 CIMG4184 CIMG4185 CIMG4186 CIMG4187 CIMG4188 CIMG4189 CIMG4191 CIMG4193 CIMG4194 CIMG4195 CIMG4196 CIMG4197 CIMG4198 CIMG4199 CIMG4200 CIMG4201 CIMG4203 CIMG4204 CIMG4205 CIMG4206 CIMG4207 CIMG4208 CIMG4209 CIMG4210 CIMG4212 CIMG4213 CIMG4214 CIMG4215 CIMG4216 CIMG4217 CIMG4218 CIMG4219 CIMG4220 CIMG4221

Der Beitrag Der Arduino Treffpunkt Hannover zu Gast auf der Maker Faire Ruhr erschien zuerst auf Arduino-Hannover.

Arduino Treffpunkt Hannover – Maker Faire 2016

$
0
0

Bereits zum 4. Mal in Folge war der Arduino Treffpunkt Hannover vom 27. bis 29. Mai Aussteller auf der Maker Faire in Hannover und gehört damit zu den Pionieren der Makerwelle in Deutschland. Laut Veranstalter besuchten dieses Jahr mehr als 16.000 Besucher, rund 6000 mehr gegenüber dem Vorjahr das Gelände der Stadthalle und den Stadtpark in Hannover

In 2 großen Hallen und dem wunderschönen Außengelände waren über 170 Tüftler und gewerbliche Aussteller im bunten Mix zu finden. Der Stand des Arduino Treffpunkt Hannover war dieses Jahr größer und aufwändiger als in den Vorjahren. Neben einem Stand für unsere vielen unterschiedlichen Projekte hatten wir noch einen weiteren separaten Stand für unseren Lötworkshop mit dem LED-Chaser vorbereitet. Kinder und Jugendliche konnten hier unter fachkundiger und geduldiger Anleitung in etwa 60 Minuten eine professionell vorbereitete Leiterplatte mit LEDs und einem Arduino Nano bestücken und programmieren. Der Einbau erfolgte anschließend in gelaserte Gehäuseteile. Zusammen mit drei thematischen Einzelständen, Strandbeest, Woodwalker sowie Luca mit seinem gewerblichen Verkaufsstand u. a. für kleine und große Flipdot-Anzeigen, Bausätzen und vielem mehr, hatten wir rund 50m² Standfläche belegt. Neben dem Wochenende für alle Interessierten war dieses Mal erstmalig auch der Freitagvormittag für Schüler und Lehrer reserviert worden.

Nun schaut aber selbst erst einmal in die nachfolgende Bildergalerie. Ich hoffe ihr habt dabei euren Spaß. Uns hat es auf jeden Fall riesigen Spaß gemacht. Deshalb bereiten wir gerade die nächste Maker Faire 2016, dieses Mal in Berlin vor. Sehen wir uns?

MF2016H myphotonics_2 MF2016H myphotonics_1 MF2016H Mouser_2 MF2016H Mouser_! MF2016H Loetkurs MF2016H Leinelab_1 MF2016H LEDcube_1 MF2016H LED_2 MF2016H LaserCutter MF2016H Karlo MF2016H ifixit MF2016H Handgeschmiedetes_4 MF2016H Handgeschmiedetes_3 MF2016H Handgeschmiedetes_2 MF2016H Handgeschmiedetes_1 MF2016H Hallenansicht MF2016H Hacklace_ MF2016H Hacklace MF2016H Globe MF2016H GeoSand MF2016H Geo MF2016H Gamekids MF2016H Fischertechnik MF2016H Fh_4 MF2016H Fh_3 MF2016H Fh_2 MF2016H FH_1 MF2016H Fan MF2016H Eisenbahn_2 MF2016H Eisenbahn_1 MF2016H eHaJo MF2016H eduFab MF2016H Dream_2 MF2016H Dream_1 MF2016H Bude MF2016H Briefkasten MF2016H Brick_3 MF2016H Brick_2 MF2016H Brick_1 MF2016H Bike MF2016H Aussen MF2016H 3Dprinter MF2016H 3Dprint MF2016H 3DDrucker MF2016H 3D MF2016 3D Arduino Hanover WoodWalker Arduino Hanover Audioteslaspule Arduino Hannover ZidZ Arduino Hannover Woodwalker Arduino Hannover Tesla Arduino Hannover Strandbeest Arduino HAnnover Strand_Wood_HannIO Arduino Hannover Steampunk Arduino Hannover SMS Arduino Hannover Reparatur Arduino Hannover MagicMirror Arduino Hannover Lucas Kasse Arduino Hannover LEDuhr Arduino Hannover LEDchaser Arduino Hannover klappt gerade nicht Arduino Hannover Hoher Besuch Arduino Hannover HannIO Arduino Hannover Geschicklichkeitsspiel Arduino Hannover Gaming Arduino Hannover Gameduino Arduino Hannover Fotobox Arduino Hannover Dampfradio Arduino Hannover CNC Arduino Hannover Arcade Arduino Hannover Aaedn Arduino Hanover Loetworkshop Arduino Hannover Planer

Der Beitrag Arduino Treffpunkt Hannover – Maker Faire 2016 erschien zuerst auf Arduino-Hannover.

Biotechnologie mit Arduino aus Beckedorf

$
0
0

In mehr oder weniger unregelmäßigen Abständen laden wir andere Gruppen und Vereine zwecks Informationsaustausch und Vorträgen zu unseren offenen Treffen in unser derzeitiges Domizil, dem Leinelab Hackerspace ein. Auch Vorträge, Präsentationen, Projektvorstellungen oder Projektanfragen die aus den eigenen Reihen kommen, besprechen wir an diesen Abenden. In einem dieser Vorträge hat uns Joachim B. an diesem 1. Mittwochabend im August in sehr anschaulicher und strukturierter Weise die Funktion eines sehr preiswerten USB-Steckernetzteiles nähergebracht. Weiterhin hatten wir Stephan S. von der Technik-Garage aus dem Hackerspace Beckedorf eingeladen und gebeten uns einen etwas tieferen Einblick in die Arbeit des gemeinnützigen Vereins Technik-Garage e. V. und der Biotechnologie zu geben. Beide Vorträge waren sehr beeindruckend, weshalb ich hier erstmalig über solch einen Vortrag, hier jetzt speziell zur Biotechnologie berichten möchte. Der Beitrag zum USB-Steckernetzteil wird später noch an anderer Stelle hier im Blog behandelt.

Ankerpunkt der Arbeit der Technik-Garage ist die Biotechnologie. In der Biotechnologie wird nach Verfahren zur Herstellung von Produkten gesucht, in denen neben den klassischen Ingenieurwissenschaften, Physik und Chemie auch und insbesondere biologische Anteile eingebunden sind. Zu den beispielweise chemischen Katalysatoren gesellen sich so auch biologische Katalysatoren (Enzyme und ganze Zellen) und führen so vielfach zu Vereinfachungen und besserer Wirtschaftlichkeit. Zudem ist moderne Medizin eng mit Biotechnologie verwoben. Die Herstellung künstlicher Herzklappen, 3D-Druck von Knochen und die Herstellung vieler Medikamente wären ohne Biotechnologie nicht mehr vorstellbar. Kein modernes Waschmittel verzichtet auf die biotechnisch erzeugten Enzyme. Insulin zur Therapie von Diabetes entsteht in Bakterien ebenso wie viele Geschmacks- und Aromastoffe. Biotechnik ohne beispielsweise Elektrotechnik oder Werkstoffkunde wären allerdings auch nicht vorstellbar. Deshalb wird Biotechnologie gern auch als interdisziplinäre Wissenschaft beschrieben!

Reinraumwerkbank

Reinraumwerkbank

Schuettelinkubator

Schüttelinkubator

PLA_Druck_Spritzenpumpe

PLA Druck einer Spritzenpumpe

Typische Werkzeuge sind Mikroskop, Zentrifuge, Thermocycler und vor allem die Reinraumwerkbank und der Schüttelinkubator für Kulturen von Bakterien, Pilzen und Zellen von Pflanze und Tier, damit am Ende beispielsweise ein gut verträglicher, biologischer Kunststoff entstehen kann, der als Polymilchsäurefilament (PLA) auf dem 3D-Drucker nützliche Bauteile herstellt. Hier im Bild werden Bauteile für eine Spritzenkolbenpumpe gedruckt.

Die Spritzenpumpe wiederum kann Teil einer Pipettierstation (klinische Diagnostik) oder eines Titrators (chemische Analytik)sein, wie er bereits von der Technik-Garage auf der Maker Faire 2015 in Berlin vorgestellt wurde.

 

Milchsäure wird von dem Bakterium Lactobacillus acidophilus als Produkt einer Gärung hergestellt. Sie entsteht bei der Herstellung von Jogurt und Sauerkraut. Gereinigte Milchsäure wird soweit erhitzt, dass in einer Veresterung genannten, chemischen Reaktion Wasser abgespalten wird und der Kunststoff (PLA) entsteht. Nachteilig bei PLA ist unter anderem seine Wärmeempfindlichkeit. Der Kunststoff erweicht schon bei knapp über 50°C. Werden die Milchsäurebakterien „richtig“ gehalten und gefüttert, produzieren sie neben Milchsäure auch die Polyhydroxybuttersäure (PHB), einen Speicherstoff den auch menschliches Gewebe bilden und abbauen kann, der aber thermisch stabiler ist. Das PHB lagern sie unter bestimmten Bedingungen als Speicherstoff so ein, wie Menschen Fett einlagern. Die Firma Biomer hat sich auf dessen Anwendung spezialisiert.

PHB kann in einer Vielzahl von Organismen gebildet werden. Die Technik-Garage möchte zeigen, dass dieses Produkt aus Abfällen (Melasse) der Zuckerindustrie bilden hergestellt werden kann, bevor diese in die Biogasanlagen wandern. Es soll also ein weiteres Stück intelligente Wertschöpfung in die Verwertung der Zuckerrübe eingebaut werden. Ziel der Arbeiten ist das Auffinden der optimalen Bedingungen unter denen aus Reststoff-Melasse PHB in Bakterien erzeugt werden kann, die jeder Mensch im Darm hat und deren Verwendung risikolos und gesellschaftlich akzeptiert ist.

Milchsaeurebakterien

Milchsäurebakterien

Die Milchsäurebakterien wurden bisher im Schüttelinkubator vermehrt. Deren prinzipielle Eignung und geeignete Medienzusammensetzungen wurden auf den Maker Faire 2015 in Hannover und Berlin vorgestellt. Schüttler sind für die Verarbeitung der beabsichtigten großen Mengen prinzipbedingt ungeeignet. Die nächsten Studien sind deshalb in Bioreaktoren durchzuführen, deren Bau die Technik-Garage gerade betreibt.

Zum Vortrag im Leinelab Hackerspace wurden zwei wesentliche Komponenten zum Bau und Betrieb von Bioreaktoren gezeigt

Versuchsaufbau_Vortrag

Versuchsaufbau

Bioreaktoren benötigen oft eine präzise Temperatursteuerung. Die vorgestellte Testversion des Open Temperators ist ein Umlauftemperierer, der Flüssigkeiten auf eine vorzugebende Temperatur mit Hilfe von in die CPU-Kühler eingelassenen Extruderheizpatronen erwärmt. Der zwischen den CPU-Kühlkörpern befindliche CPU-Wasserkühler nimmt seinerseits die Wärme auf und gibt sie an die ihn durchlaufende Flüssigkeit ab. Die Flüssigkeit war in diesem Fall Wasser, das mittels Aquarienpumpe durch den Kühler gepumpt wird.

Um die Temperaturen sicher im Griff zu haben, werden sowohl die Temperaturen der CPU-Kühler als auch die des Wasser über digitale Temperatursensoren DS18B20, die im OneWire-Bus geschaltet und mit einer Auflösung von 12 Bit betrieben wurden, im Arduino UNO ausgelesen. Die Leistung der Aquarienpumpe sowie der Heizpatronen steuert der Arduino über seine PWM-Ausgänge, an die TIP120 Darlington Transistoren angeschlossen sind. Zur Einstellung der Regelparameter wird ein RGB-LCD-Shield von Adafruit verwendet.

OpenNeutra

OpenNeutra

OpenNeutraArduinoStack

OpenNeutra Arduino Stack

Im Bild hinter dem Open Temperator befindet sich die Open Neutra genannte Anlage zur Regelung des Säuregrades in Flüssigkeiten.

Auch diese Regelung basiert auf einem Arduino UNO und seiner Shield-Technologie. Als Sensor dient eine handelsübliche pH-Einstabmesskette mit BNC-Ausgang, die an einen Signalaufnehmer von Atlas-Scientific angeschlossen wurde. Der Signalaufnehmer seinerseits wird mittels SoftSerial digital vom Arduino ausgelesen. Das Besondere an dem System ist seine außerordentliche Langzeitstabilität. Das Messsystem braucht nur alle paar Monate rekalibriert zu werden, was es für den Betrieb am Bioreaktor prädestiniert. Ebenso wären über weitere Signalaufnehmer für den Betrieb des Bioreaktors wichtige Parameter wie gelöster Sauerstoff, Redox-Status und Leitfähigkeit zu messen.

Als Aktoren sind in der Open Neutra kleine Schlauchpumpen verwendet, die in einstellbaren Schüben definierte Mengen Lauge oder Base pumpen können. Die Schlauchpumpen treibt ein Motorshield von Adafruit. Die Anzeige und Einstellung der zu regelnden Parameter wie pH und Hysterese übernimmt wieder ein RGB-LCD-Button-Shield von Adafruit. Hier ist die Farbfunktion des RGB-Shield besonders wichtig, weil bei Überschreiten der Regelgrenze (basisch) das Display blau und bei Unterschreiten der Regelgrenze (sauer) das Display rot aufleuchtet.

Die letzte Folie der gut einstündigen Präsentation enthielt auch einen ausdrücklichen Dank an Massimo Banzi, einen der Schöpfer des Arduino-Konzeptes, dem ich mich hier gern anschließen möchte. Noch ist kein ausgebildeter Ingenieur der Elektrotechnik Mitglied im Team der Technik-Garage, aber durch das Konzept des Arduino erschließen sich Welten der Sensor- und Aktortechnik, der Regelungstechnik und vieles mehr auch den interessierten Laien. Das offene Konzept mit frei zugänglichen Bibliotheken und vielen Beispiellösungen aus einer riesigen Community lässt schnell zu funktionierenden Lösungen kommen. Das Erfolgserlebnis ist in kürzester Zeit garantiert.

Die letzten Beiträge des Vortrages waren Videos. Die Biotechnologie verwendet unter anderem fokussierte Laser zur Bewegung von Zellen oder Teilen von Zellen und zur Manipulation von Zellen und Zellbestandteilen. Das Video erläuterte zwar, aber ließ auch Fragen zu Möglichkeiten und Grenzen elektromagnetischer Strahlung offen. Eine Biotechnik funktioniert nicht ohne Technik, bleibt fundamentfrei ohne Naturwissenschaften.

Technik-Garage e. V.

Die Technik-Garage e. V. ist ein gemeinnütziger, eingetragener Verein. Sie unterstützt Forschungs- und Entwicklungsvorhaben, die Menschen aller Altersgruppen vorantreiben wollen. Sie bietet mit ihren Makerspaces in Beckedorf und Bückeburg sowie ihren Verbindungen zu Hochschulen (z.B. über iGEM-Teams in Bielefeld und Aachen) eine wachsende Infrastruktur vielfältigster Fertigkeiten und Kompetenzen. Die Mitgliederschaft bildet mit zum Beispiel Informatikern, Milchingenieurinnen, Molekularbiologinnen, Biologinnen, Biochemikern, Biotechnologen und weiteren ein Abbild des interdisziplinären Anspruchs. Ein Teil der Mitgliederschaft befindet sich in der Ausbildung, ein anderer Teil im Beruf.

Weitere Zusammenarbeit

Sozusagen als Ergebnis der nachfolgenden Diskussion zu diesem Vortrag von Stephan, sind wir weitgehend übereingekommen, die Kooperation zwischen der Technik-Garage e. V. und dem Arduino Treffpunkt Hannover zu intensivieren. Folgende Punkte wurden dazu bereits angesprochen:

  1. Ab etwa Oktober/November wird mit einer Abordnung der Arduino Treffpunkt Hannover der Technik-Garage einen Gegenbesuch abstatten. Unser Besuch soll dann von der Technik-Garage mit einem der Machertage koordiniert werden.
  2. Durch die Kontakte der Technik-Garage zu Schulen auch in Hannover, wird überlegt Arduino Einsteigerkurse in AGs mit und an den Schulen zu organisieren. Der Arduino Treffpunkt Hannover kann hier personell mit einigen Freiwilligen aus der Gruppe initial durchaus unterstützen. Terminlich und Inhaltlich muss alles noch abgestimmt werden. Die AGs sollten mit einem Einsteigergrundkurs beginnen, mit einem Aufbaukurs beispielsweise über den LED-Chaser weiterführen um damit eine stabile Plattform für weitere Experimente zu schaffen. Abschluss kann ein dritter Kurs mit einem speziellen biologischen Projekt bilden.

Wird das Angebot angenommen, kann durchaus darüber nachgedacht werden, wie eine kontinuierliche Unterstützung aussehen könnte.

Die Technik-Garage verfügt ansonsten bereits über 26 Arduino Nanos, Breadboards mit Jumperkabeln und Spannungsregelung. Die Bestände sollen in den nächsten Wochen um weitere Hardware zu kompletten Klassensätzen zu 20 Stück ergänzt werden. LEDs für Pflanzenzellinkubatoren werden in Kürze folgen, wie auch Lötstationen, Messgeräte usw.

  1. Bei Laser-Cutter-Arbeiten kann der Arduino Treffpunkt Hannover in Einzelfällen ebenfalls unterstützen. Rainer R. hatte seine grundsätzliche Bereitschaft dazu angeboten.
  2. Stephan S. versucht über den Techniksalon die Kontakte zum Laserzentrum in Garbsen zu erweitern und einen Referenten zum Thema Laserpinzette mit anschließender Diskussion der ableitbaren Erweiterungen und Ergänzungen einzuladen. Wenn das klappt, wird das mit Sicherheit wieder ein sehr spannender Abend.

Ausdrücklichen Dank an dieser Stelle an Stephan S. von der Technik-Garage e. V. ohne dessen technische Expertise dieser Beitrag nicht möglich gewesen wäre. Ich hoffe ihr habt genauso viel Spaß beim Lesen wie ich beim Schreiben dieses Beitrages. Bei Interesse schaut gern einmal an einem Mittwochabend bei uns herein.

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.

Der Beitrag Biotechnologie mit Arduino aus Beckedorf erschien zuerst auf Arduino-Hannover.

Einführung in die ARM Cortex-M Entwicklungsplattform mbed

$
0
0

Am 17. August hatte sich der Arduino Treffpunkt Hannover wieder zu einem der regelmäßigen Treffen an einem Mittwochabend im Leinelab Hackerspace eingefunden. Dieses Mal hatten wir auch externe Gäste von anderen Gruppen aus dem Großraum Hannovers dabei, die wir zu einem mbed Einführungsvortrag von Helmut eingeladen hatten.Helmut ARM mbed Vortrag

ARM Cortex-M und die Entwicklungsplattform mbed

Die kostenlose Plattform mbed ermöglicht die schnelle Entwicklung von Projekten für 32-bit ARM basierende Entwicklerboards (MCUs). Inzwischen gibt es über 100 fertige Boards von allen gängigen MCU Herstellen mit einer Bandbreite von BBC micro:bit (M0 16KB RAM) bis zum leistungsfähigen Cortex-A9. Die ARM mbed Entwicklerseite bietet eine Webbasierte Entwicklungsumgebung mit Compiler, Bibliotheken, Versionsverwaltung sowie ein Entwicklerforum. Das zugrundeliegende “mbed” Betriebssystem ermöglicht Entwicklungen problemlos auf allen unterstützten Boards, bzw. MCUs zu portieren. Am Beispiel eines Nucleo STM32L4 Entwicklerboards (Pin-kompatibel zum Arduino) hat uns Helmut Tschemernjak einen Überblick über die mbed Entwicklerplattform sowie einen Einblick in die ARM-Cortex-M Entwicklung gegeben.

ARM?

ARM Ltd. vormals Advanced RISC Machines Ltd. davor Acorn Risc Machine ist der Name einer weltweit bekannten Aktiengesellschaft mit Sitz in Cambridge, Großbritannien. Historisch betrachtet liegt der Ursprung der Firma in ACORN (Eichel), einem Unternehmen das im weitesten Sinne mit Begriffen wie BBC Micro, ZX ARM AuswahlSpectrum, Newton PDA, Sharp Zaurus, Psion Series 5 wie auch Apple und vielen weiteren legendären Produktentwicklungen und Firmennamen in Verbindung gebracht werden kann.

ARM Ltd. entwickelt heute energieeffiziente RISC CPUs (Reduced instruction set computing) die von vielen namhaften Unternehmen in tausenden unterschiedlicher MCUs in Lizenz gefertigt werden.

mbed?

mbed OS Schichtenmbed ist zugleich Betriebssystem und Entwicklungsplattform. Unterstützt werden eine Vielzahl von ARM Cortex-M MCUs diverser Hersteller. Die mbed Online Entwicklungsumgebung ist der Arduino IDE gar nicht so unähnlich. Die Einstiegshürde liegt hier ebenfalls relativ niedrig. Nach Anmeldung auf der mbed Entwicklerseite und Anstöpseln eines der vielen unterstützten ARM Boards über USB, kann bereits mit einem der Beispielprogramme angefangen werden sich einzuarbeiten.

ARM & mbed = IoT

Meiner obigen kurzen Einleitung zur Einführung in das Thema muss ich nun gar nicht mehr so sehr viel hinzufügen, da wir Helmuts Vortrag aufgezeichnet haben. Freundlicherweise hat Helmut das Video für uns noch überarbeitet und durch Powerpointfolien ergänzt und geschnitten.

Hier nun das Youtube Video zur Einführung in die ARM Cortex-M Entwicklungsplattform mbed. Viel Spaß beim Anschauen. Nach dieser Einführung steht dem nächsten IoT Projekt auf Basis einer ARM MCU nun nichts mehr im Wege, oder?

Der Beitrag Einführung in die ARM Cortex-M Entwicklungsplattform mbed erschien zuerst auf Arduino-Hannover.

Maker Faire Berlin 2016

$
0
0

Vom 30.09. bis 02.10.2016 fand jetzt zum 2. Mal die Maker Faire in Berlin statt, dieses Mal in der Station Berlin, einem denkmalgeschützten Gebäude des ehemaligen Postgüterbahnhofs an der Luckenwalder Straße. Am 21. Oktober 2016 wurde dieser Tagungsort übrigens mit dem Location Award als beste Tagungs- und Kongresslocation 2016 ausgezeichnet. Das Gelände liegt in direkter Nachbarschaft zum Deutschen Technikmuseum.

Wie auch schon während der letzten hannoverschen Maker Faire im Mai, gab es jetzt auch in Berlin wieder einen Schülertag am Freitagvormittag, der gut angenommen worden ist

Fast schon traditionell hatte sich der Arduino Treffpunkt Hannover kurzfristig wieder für einen eigenen Stand in Berlin entschieden.

Vielleicht als kleine Belohnung für alle Mühen konnten Hubert B. und Olaf M. vom Arduino Treffpunkt Hannover dem Deutschlandfunk ein recht ausführliches Interview zu einigen Details ihrer Projekte in einer Life-Übertragung geben. In der Life-Reportage zur Maker Faire 2016 in Berlin ist das Interview nach etwa 20 Minuten zu hören.

Maker Faire Berlin - Interview Deutschlandradio

Arduino Treffpunkt Hannover –  Life – Interview mit Achim Killer vom Deutschlandfunk

Natürlich gibt es noch weitere Eindrücke von der Maker Faire in Berlin, wie immer überwältigend. Hier erst einmal einige Fotos von unserem Stand. Mit einem Eckstand direkt in Eingangsnähe waren wir dieses Mal sehr gut positioniert. Und auch das Wetter spielte bis auf wenige kürzere Regenschauer erstaunlich gut mit.

Arduino Hannover MFB2016 DSC_5102

Stewart Platttform

Stromausfall20161002_151437

Kurzzeitiger Stromausfall bei den Gameduinos

Arduino Hannover MFB2016 DSC_5092 Arduino Hannover MFB2016 DSC_5088 Arduino Hannover MFB2016 DSC_5087 Arduino Hannover MFB2016 DSC_5023 Arduino Hannover MFB2016 DSC_5022DSC_5103DSC_5089 Unsere 3 Gameduinos waren immer gut gebucht, nicht nur von den kleineren Kindern. Arduino Ärgere Dich Nicht, Magischer Spiegel, div. Steampunk Exponate, Stewart Plattform und der Woodwalker waren weitere Publikumsmagnete, um nur einige zu nennen.

Nachfolgend einige weitere Eindrücke aus den beiden Hallen und dem Aussengelände der Station Berlin.

MFB2016 DSC_5098 MFB2016 DSC_5097 MFB2016 DSC_5078 MFB2016 DSC_5041MFB2016 DSC_5065MFB2016 DSC_5036

MFB2016_DSC_5031r MFB2016_DSC_5028r

 

 

 

Und zum Abschluss noch einige Eindrücke aus der Luft, an denen unsere Standnachbarn gegenüber aktiv beteiligt waren. Vielen Dank nochmals an den DARC Berlin.

2016-10-02--13-30-49-DL7AD-9CCE 2016-10-02--11-08-02-DL7AD-9C93 2016-10-02--09-56-02-DL7AD-9C69 2016-10-01--12-33-29-DL7AD-9BBC 2016-10-01--12-37-39-DL7AD-9BBF

Der Beitrag Maker Faire Berlin 2016 erschien zuerst auf Arduino-Hannover.

OBS – Vortragsession aufzeichnen und streamen

$
0
0

Während unserer regelmäßigen Mittwochtreffen im Leinelab e. V., besprechen wir neben den üblichen Tipps und Tricks rund um den Arduino, hin und wieder auch deutlich komplexere Themen oder auch völlig andere Themengebiete. Beispielsweise steht Mittwoch ein weiterer Workshop zu EAGLE an. Daher haben wir angefangen uns auch mit Videotechnik auseinanderzusetzen und bereits die ersten Erfahrungen sammeln können. Funktioniert, bedeutet allerdings immer recht hoher Aufwand in der Nachbearbeitung.

Mitte Oktober hatte Frank S. uns seine Erfahrungen aus mehreren WordPress und 2016-10-23 (1)Barcamps vermitteln können. Basis seiner Präsentation bildet dabei die kostenlose Open Source Plattform OBS „Open BrOBSoadcaster Software“ mit der Audio- und Videospuren auf einem PC aufgezeichnet und auch in Echtzeit ins Internet gestreamt werden können. Die Freeware unterstützt neben einer Reihe bekannter Portale auch den Stream über einen eigenen Server. Neben der Software geht Frank auch auf die optionale Hardware ein.

Nachfolgend das Youtube Video und den Foliensatz zur Präsentation von Frank S. am 12. Oktober 2016.

Der Beitrag OBS – Vortragsession aufzeichnen und streamen erschien zuerst auf Arduino-Hannover.

Gravitationswellen – So klingt die dunkle Seite des Universums

$
0
0
Quelle_GEO600Gelände

Quelle: http://www.aei.mpg.de?utm_source=rss&utm_medium=rss Gelände GEO600

Am 31. Juli 2016 gab es einen Tag der Offenen Tür bei GEO600, dem deutschen erdgestützten interferometrischen Detektor für Gravitationswellen bei Sarstedt in der Nähe von Hannover. Neben geführten Besichtigungen des Detektors auf dem Gelände gab es auch die Möglichkeit die anwesenden Wissenschaftler zu interviewen. Leider war ich erst sehr spät auf dem Gelände eingetroffen und konnte nur noch bedingt einer letzten Führung folgen und noch weniger nennenswerte Gespräche führen. Da mich aber bereits diese wenigen Minuten auf dem Gelände sehr beeindruckt hatten, reifte bei mir in den folgenden Tagen eine Frage. Kann es gelingen einen Mitarbeiter des Albert-Einstein-Instituts bzw. des Max-Planck-Instituts für Gravitationsphysik  für eine Präsentation zu gewinnen? Ist es möglich jemanden ausreichend zu überzeugen beim Arduino Treffpunkt Hannover in den Räumen des Leinelab e. V. einen Vortrag über Gravitationswellen und die Forschung am GEO600 zu halten?

Dr. Benjamin Knispel

Dr. Benjamin Knispel

Bereits nach wenigen Telefonaten und Emails mit einigen Instituten hatte ich den Dr. Benjamin Knispel, Pressereferent am Albert-Einstein-Institut ermittelt. Volltreffer. Noch einige wenige weitere Telefonate und Emails und der Kontakt war hergestellt sowie ein Termin fixiert, der 19.Oktober 2016 Uhr 19:00.

Als nächste Maßnahme galt es nun auf das anstehende Event im Leinelab e. V. aufmerksam zu machen und Einladungen an verschiedene Gruppierungen und Institutionen im Großraum Hannover zu versenden. Dafür haben wir folgenden Teaser verwendet:

Gravitationswellen – So klingt die dunkle Seite des Universums

Im Jahr 1916 folgerte Albert Einstein aus seiner Allgemeinen Relativitätstheorie die Existenz von Gravitationswellen – winzige Kräuselungen der Raumzeit, die bei kosmischen Großereignissen entstehen und das Universum mit Lichtgeschwindigkeit durchlaufen. Einstein selbst dachte, dass man diese Wellen niemals direkt nachweisen könnte. Doch inzwischen hat man bereits zweimal die Signale verschmelzender Schwarzer Löcher gemessen. Diese Entdeckungen läuten ein neues Zeitalter der Astronomie ein. Forschende in Deutschland und auch in Hannover sind ganz vorne mit dabei.

Laserinterferometer – Das Mikrofon für Gravitationswellen

Der Vortrag des Dr. Benjamin Knispel im Leinelab e. V. am  19.10.16 war ein voller Erfolg!

Tagungsraum Leinelab e. V.

Tagungsraum Leinelab e. V.

Der neue Tagungs- und Schulungsraum des Leinelab e. V. im 1. Obergeschoss war zu seiner Premiere mit weit über 50 Teilnehmern komplett ausgebucht. Während des durchgängig hervorragenden Vortrages gab es m. E. keinen Themenbereich, den Benjamin Knispel nicht anschaulich darzustellen wusste. Kaum eine Frage die er nicht präzise beantworten konnte. Ausgiebige Diskussionen bereits während des Vortrages als auch insbesondere noch danach zeigten das hohe Interesse bei allen Zuhörern. Alle die zu diesem Vortrag nicht dabei sein konnten, haben definitiv etwas verpasst und sollten bei einer der weiteren Veranstaltungen versuchen einen der wenigen noch freien Plätze zu ergattern. Eine kurzfristige Möglichkeit ergibt sich u. U. in der Volkssternwarte in Hannover am 27.Oktober 2016.

Aufgrund der zu erwartenden Komplexität der Materie haben wir während des Vortrages zwei Kameras mitlaufen lassen. Wer also auch keinen der wenigen freien Plätze am 27. Oktober in der Sternwarte ergattern kann bzw. konnte, hat hier die Möglichkeit sich zumindest unseren Videomittschnitt auf Youtube anzuschauen.

Wen das Gravitationswellenvirus nun ebenfalls angesteckt hat, findet im Internet viele weitere Ergänzungen zum Thema. Einige Links sind nachfolgend dazu aufgelistet:

  • NDR-Info Interview mit Karsten Danzmann. Prof. Danzmann spricht hier über seinen Werdegang und gibt Einblicke in die Gravitationswellenforschung
  • Vernetzter Gravitationswellendetektor GEO600.
  • Gesammelte Links Leinelab e. V.
  • Artikel des Magazins Spektrum

Der Beitrag Gravitationswellen – So klingt die dunkle Seite des Universums erschien zuerst auf Arduino-Hannover.


Messung der Wassertemperatur im Naturerlebnisbad Luthe

$
0
0

 

Mein Projekt

Ich möchte hier mein aktuelles Projekt vorstellen bei dem im Naturerlebnisbad Wunstorf Luthe die Wassertemperatur des Schwimmbeckens gemessen und im Internet zur Verfügung gestellt wird.

Der Sensor

Als Temperatursensor wird ein Dallas 18B20 von Maxim eingesetzt. Er hat einen Messbereich von -55°C bis +125°C mit einer Genauigkeit von ±0.5°C. Die gemessene Temperatur stellt der Sensor über den One-Wire Bus als digitalen Wert zur Verfügung gestellt. Das macht die Temperaturmessung mit einem Microcontroller besonders einfach.

Das Wasser im Naturerlebnisbad Wunstorf Luthe ist chlorfrei. Den Dallas Temperursensor gibt in einer gekapselten Bauform. Diese ist bestens geeignet, die Temperatur im Schwimmbecken zu messen. Eine Korrosion ist nicht zu befürchten.

Die Schaltung wird mit 5V Niederspannung betrieben. Das Netzteil ist im Inneren des Verwaltungsgebäudes.  

Die Entwicklungsumgebung

Der ESP8266 wurde mit der Arduino IDE programmiert.

Auf dem ESP8266 wurde eine HTML-Oberfläche programmiert mit deren Hilfe die WLAN-Einstellung konfiguriert wird.

Der ESP arbeitet dabei als Accesspoint. Danach, im laufenden Betrieb, als Workstation.

 

Der Ablauf

Datenflussplan:


Die aktuelle Temperatur des Dallas Temperatursensor 18B20…

 

… wird von einem ESP8266-01 eingelesen und…

… alle 120 Sek. per UDP an den lokalen WLAN-Server übertragen.

 

Der WLAN-Server fügt den Temperaturwert in eine SVG-Grafikdatei ein.

 

Die SVG-Grafikdatei wird an den HTML-Server übertragen.

 

Dort wird die Grafikdatei in die Internet-Seite des Schwimmbades eingebunden.

Im Internet …

 

… erscheint die Grafik mit der Wasser-Temperatur auf der Seite des Schwimmbades

Die Internetseite

So sieht es aus:

Hubert Baumgarten

Web-Link : Naturerlebnisbad Luthe

 

Der Beitrag Messung der Wassertemperatur im Naturerlebnisbad Luthe erschien zuerst auf Arduino-Hannover.

LoRa-Funktechnik bei Arduino Hannover

$
0
0

LoRa Platine - Arduino Hannover

Mit der LoRa-Funktechnik können Sensoren über große Distanzen von 200 m bis 20 km im kostenlosen 868-MHz-Band kommunizieren. Die LoRa-Technologie zeichnet sich durch sehr geringen Energiebedarf und große Reichweite aus und ist für kleine Datenraten geeignet. Die Arduino Hannover LoRa-Gruppe verwendet verschiedene LoRa-Module für Arduino, mbed und Linux (PI), welche untereinander kommunizieren. Auf der Maker Faire Hannover 2017 werden wir ein eigenes Arduino 32-Bit LoRa-Board präsentieren, welche mit eigener Funkprotokollsoftware über Jahre hinweg batteriebetrieben kommunizieren kann. Die vorhandenen LoRa-Module namhafter Hersteller konnten uns nicht überzeugen, daher haben wir die Hard- und Software komplett eigenständig neu entwickelt und sind überzeugt, eine bahnbrechende LoRa-Funklösung mit verschiedenen Sensor-Anwendungen präsentieren zu können.

LoRa-Grundlagen

LoRa-verwendet eine spezielle Frequenzspreizung-Modulation (englisch spread spectrum). Grundsätzlich kann diese Modulation auf allen Frequenzen verwendet werden, gängig sind die kostenlosen Frequenzbereiche 433 MHz sowie 868 MHz in Europa. Wir nutzen 868 MHz, da das Band weniger belegt und besser reguliert ist und somit eine bessere Funkbasis bietet.

LoRa Konzentrator

Kommerzielle LoRa Funktechnik mit Konzentrator

Es gibt bereits ein standardisiertes LoRaWAN-Protokoll, das einen speziellen Konzentrator voraussetzt und die Daten an einen Internetserver weiterleitet. Der Konzentrator, welcher mehrere Kanäle gleichzeitig empfangen kann, bietet bei sehr großen Installationen Vorteile, allerdings unterstützt das LoRaWAN-Protokoll keine direkte Knoten-zu-Knoten-Kommunikation und ist für Hobbyisten zu teuer und kompliziert. Andere freie Softwarealternativen wie RadioHead bieten hingegen nur einen Bruchteil der möglichen Funktionen und sind nicht stromsparend.

Wir haben eine neue LoRa-Funkprotokollsoftware entwickelt, die sehr effizient schnell und sicher Nachrichten zwischen einfachen LoRa-Modulen verschicken kann. Diese Software ist gleichermaßen als Knoten (Node), oder als Station einsetzbar und unterstützt verschiedene LoRa-Chips (RFM95_SX1276, MURATA_SX1276, SX1276MB1MAS, SX1276MB1LAS).

Beispiellösungen, die von uns auf der Maker Faire Hannover 2017 gezeigt werden:

Temperatursensor (batteriebetrieben)
Ein Temperatursensor misst regelmäßig die Temperatur und schickt die Ergebnisse an eine Zentrale zur Weiterverarbeitung. Ein eigens entwickeltes LoRa Adapterboard welches universell an verschiedenen Systemen (Arduino, mbed und Raspberry PI ) verwendet werden kann. Das Board läuft natürlich mit der von uns entwickelten LoRa Funkprotokollsoftware.

LoRa Platine am STM Demoboard

Selbstentwickeltes LoRa Board am STM32L4 Demoboard

Feinstaubsensor (batteriebetrieben)
Ein Sensor misst regelmäßig die Feinstaubwerte und übermittelt die Daten per LoRa-Funktechnik an eine Station, welche diese an das Internetportal http://luftdaten.info?utm_source=rss&utm_medium=rss weiterleitet.

Feinstaubsensor mit LoRa-Datenfunk

Feinstaubsensor mit LoRa-Datenfunk

Fernbedienung (batteriebetrieben)
Per Tasten werden Meldungen zu einer Station übertragen

LoRa - Knoten zu Knoten

LoRa mit direkter Knoten zu Knoten Kommunikation

Netzwerktrace iC880A Concentrator
Der Concentrator wird als Netzwerktracer eingesetzt, um den kompletten LoRa Datenverkehr auf allen Kanälen mit unterschiedlichen Spreadingfaktoren zu protokollieren.

STM Lora Board (batteriebetrieben)
Es werden regelmäßig Temperaturdaten übertragen. Das Ganze passiert hier mit einer STM32L0 Entwicklerboard welche einen Murata Lora Chip mit STM MCU verwendet.

STM LoRa Board

LoRa-Board mit Software
Eigenentwicklung der LoRa-Gruppe des Arduino Treffpunkts Hannover

LoRa Board Prototypen der Arduino Hannover Gruppe

Hardware:

Unser Board enthält alles was das MAKER-Herz erfreut anwenderfreundlich und Arduino-kompatibel auf einer Platine = kein Frust durch lose/falsche Steckverbindungen.

  • Arduino-kompatibles Genuino Zero-Board
  • Atmel D21 MCU 32-bit ARM Cortex-M0+
  • 256 kB Flash, 32 kB RAM=> ausreichend Speicher
    für Anwendungen und LoRa Protokoll.
  • Integtrierte RTC => für sleep Funktionen und zur Datenerfassung
  • 5 Taster => keine externe Verdrahtung für einfache Eingaben nötig
  • Arduino Zero kompatible Steckerleiste
  • USB-Anschluss zur Stromversorgung & Programmierung
  • Anschlussleiste für optionalen, ansteckbaren TFT-Bildschirm, Strom abschaltbar
  • Batterieoptimiert:
    • 1,7-3,6 V Betriebsspannung
    • Batteriefach (2 AA-Batterien/-Akkus)
    • Spannungswandler erzeugt 3,3 oder 5 V aus 2x AA-Batterien
    • Stromverbrauch im Sleep Modus (ca. 8 µA)
  • LoRa-Chip 168 dB link budget (Semtech SX1276 basierend)
    • Angepasste Antenne:
    • 8,2 cm externer Draht (Groundplane-Gegenpol ist auf der Platine vorhanden)
    • u.FL Kupplung (ist bestückt, Brücke muss gesetzt werden.)
    • SMA Steckverbinder optional (reservierter Platz auf der Platine)

Entwicklungsumgebungen:

  • Standard Arduino-Entwicklungsumgebung für Mac, Windows und Linux
  • Atmel Studio 7 IDE unter Windows
  • ARM mbed (geplant)

Funkprotokollsoftware (RadioShuttle):

  • Gesicherte Nachrichtenübertragung (max. 232 Bytes Nutzdaten),
    der Empfang wird bestätigt, verlorene Daten werden automatisch wiederholt.
  • Ungesicherte Nachrichtenübertragung (benötigt weniger Zeit/Strom),
    für Anwendungen, bei denen regelmäßig Nachrichten verschickt werden
    und eine verlorene Nachricht kein Problem darstellt (z. B: Temperaturdaten).
  • Paralleles Versenden von unterschiedlichen Nachrichten an identische
    oder verschiedene Stationen (läuft alles stromsparend im Hintergrund).
  • Eindeutige 32-bit Device-ID (Gerätenummer) pro LoRa-Teilnehmer,
    eindeutige 16-bit AppID (Programmnummer zur Kommunikation).

Datensicherheit:

  • Anmeldung von Knoten an die Station erforderlich (auch abschaltbar).
    Anmeldung mit verschlüsseltem Kennwort (SHA-256 mit Zufallszahl verschlüsselt).
  • Verschlüsselte Nachrichtenübertragung (einstellbar pro Nachricht).
    AES 128-bit Verschlüsselung, AES Nachrichten benötigen min.
    16 Bytes Daten, ohne AES können auch kleinere Nachrichten verschickt werden.
    Es werden keine Kennwörter übertragen. Gesichert gegen Hacken durch Protokollieren bzw. Wiederholen von verschlüsselten AES-Nachrichten oder Anmeldungen.
  • Air Traffic Control: Die Knoten senden nur, wenn auf dem Kanal kein LoRa-Signal aktiv ist. Die Stationen erstellen einen automatischen Netzplan, welche Knoten und Stationen wann kommunizieren dürfen. (ist geplant)
  • Optimiertes Protokoll
    Nachrichtenzustellung innerhalb von 110 ms (SF7, 125 kHz, bei freiem Kanal).
    Nachrichten benötigen nur 2 x 12 Bytes (Protokoll-Overhead).
    Default LoRa-Spreadingfaktor SF7 (SF7-SF12 einstellbar).
    Default LoRa-Bandbreite 125 kHz (125/250/500 kHz einstellbar).
    Kleinere Bandbreiten bieten eine größere Reichweite.
  • Automatische Anpassung der Sendeleistung. Das spart erheblich Strom und das Funknetz ist für Nachbarstationen weniger belegt.

Betriebsmodus:

  • Betrieb als Station, feste Stromversorgung empfohlen
    (12 mA im Empfangsmodus, Senden (20 … 100 mA)
  • Betrieb als Node Online, feste Stromversorgung empfohlen
    Der Knoten ist permanent empfangsfähig
    Ansonsten die Funktionen wie „Node Offline“
    (12 mA im Empfangsmodus, Senden (20 … 100 mA).
  • Betrieb als Funksensor (Node Offline-Checking)
    Der Knoten meldet sich regelmäßig, um ggf. Daten zu empfangen
    Der Empfang von Nachrichten kann bis zu 30 Sekunden dauern
    Ansonsten die Funktionen wie „Node Offline“
    (1 µA im Ruhemodus, Batteriebetrieb über Jahre).
  • Betrieb als Funksensor (Node Offline).
    Der Knoten ist nur aktiv, wenn Ereignisse zu melden sind.
    (1 µA im Ruhemodus, Batteriebetrieb über Jahre).

Resourcen für die RadioShuttle Library:

  • Speicherbedarf (Stand 07/2017)
    100 kB Flash for RadioShuttle Library mit MD5 & AES.
    5 kB RAM für Node-Offline-/Checking-/Online-Betrieb.
    10 kB RAM für Station-Basic-Betrieb (RAM ist abhängig vom Anzahl der Knoten).
    1 MB RAM für Station-Server-Betrieb (Raspberry PI, 10.000 LoRa-Knoten).
  • Genaue Timer mit Auflösung von of 0,5 ms und Interrupt.
  • Unterstützte LoRa- und MCU-Boards
    LoRa: RFM95_SX1276, MURATA_SX1276, SX1276MB1MAS, SX1276MB1LAS
    STM Discovery kit for LoRaWAN (STMicroelectronics B-L072Z-LRWAN1)
    Arduino Zero, Arduino M0 (Atmel ATSAMD21 MCU 32-bit )
    mbed STM32L0, STM32L4
    Linux Raspberry PI/Orange PI (ist geplant)

Allgemeines zur LoRa Reichweiten:

Es gibt viele Faktoren welche die Reichweite beeinflussen: Antenne, Wände, Stahlbetondecken, Funk-Reflexionen, andere Sender auf identischen Frequenzen und Vieles mehr. Daher sprechen wir in diesem Dokument von 200 m bis 20 km Reichweite, welche im Vergleich zu anderen Funktechniken mit LoRa auf jeden Fall um ein Vielfaches besser ist.

868 MHz Standardmodulationen (ohne LoRa) welche die in Deutschland erlaubten 14 dBm Sendeleistung verwenden, kommen im Freien ca. 50 Meter weit und in Gebäuden gerade mal durch eine Wand. Praktisch gibt es mit der 868 MHz Standardmodulation schon innerhalb einer Wohnung Empfangsprobleme.

Mit der 868 MHz LoRa-Modulation – ebenfalls 14 dBm Sendeleistung – haben wir Tests durchgeführt, in denen der Empfang sogar über 9 Stockwerke in einem großen Gebäudekomplex funktionierte. Auch bei weiteren Tests in einem großen Konferenzraum mit 5000 Smartphones und vielen weiteren Funk-Übertragungstechniken lief die LoRa-Funktechnik einwandfrei. Ein wesentlicher Vorteil von LoRa ist dabei, dass die LoRa-Modulation auch auf standardbelegten 868 MHz Funkkanälen überlagernd funktioniert.

LoRa läuft auch über 9 Stockwerke übertragunssicher

Die Kommunikation zwischen zwei benachbarte Orte mit mehreren Kilometern Distanz und vielen Gebäuden dazwischen stellte für die LoRa-Datenkommunikation keinerlei Problem dar. Bei komplett freier Sicht sind mit LoRa sogar Reichweiten von über 20 km möglich.

Auch wenn man durch Richtantennen die zulässige Sendeleistung von 14 dBm nicht überschreiten darf, erzielt man mit ihnen einen guten Empfangsgewinn.

Viele weitere Details zur LoRa Funktechnik kann man auf Helmuts und Rainers Webpage erfahren. Dort wird auch das aktuelle LongRa Board und die Radioshuttle Software vorgestellt. Weiterhin ist Helmuts Vortrag zu empfehlen, den er im Mai 2017 bei Arduino Hannover gehalten hat. Ihr könnt den Vortrag auf YouTube anschauen und die Vortragsunterlagen als PDF herunter laden.

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.

ESP32 mit Batteriebetrieb

$
0
0

Der ESP32-Chip erfreut sich immer größerer Beliebtheit im Arduino-Umfeld. Als 32-bit-Prozessor ist er auch der leistungsfähigste Arduino mit sehr gutem Support durch den chinesischen Hersteller Espressif, der auch die gesamte Unterstützung für Arduino auf GitHub veröffentlich hat. Zusätzlich kann der ESP32 natürlich per WiFi und Bluetooth kommunizieren, mit unserem „ECO Power“-Board sogar auch über LoRa-Funktechnik und erzielt dabei Reichweiten von 200 m bis 20 km. Dieser Artikel beschreibt unsere Erfahrung mit dem ESP32 im Batterie- und Akkubetrieb.


So einfach bekommt man ein ESP32-WROOM-Modul zum Laufen: Erst per Adapter das Modul programmieren, danach das Modul verbinden und schon läuft der Batteriebetrieb.

Stromverbrauch des ESP32-WROOM-Moduls

Einige ermittelte Stromverbrauchswerte des ESP32-Chips:

ESP32-Modus Verbrauch
Deepsleep 7 µA
Lightsleep 1 mA
Normal (240 MHz) 50 mA
Reduzierter Takt (3 MHz) 3,8 mA
WiFi-Betrieb 80-180 mA

Diese Werte haben wir mit dem ESP32-WROOM-Modul gemessen, erreichen diese aber auch mit unserem „ECO Power“-Board bei Batteriebetrieb. Allerdings kommen die meisten ESP32-Boards nicht an diesen geringen Stromverbrauch heran. In der Regel brauchen ESP32-Boards trotz Deepsleep-Modus immer noch um die 20 mA, also mehr als das 2000-fache! Wesentliche Faktoren für den Stromverbrauch sind die auf dem Board zusätzlich vorhandenen Schaltungen, die Implementierung der USB-Stromversorgung sowie die Implementierung des Batterie- bzw. des Akkubetriebs. Mit regulären ESP32-Boards lässt sich der Stromverbrauch nicht weiter senken, also muss etwas eigenes entwickelt werden. Dies haben wir mit dem „ECO Power“-Board getan.

Vergleich zu anderen 32-bit-MCUs im Stromsparmodus

Diese Werte haben wir in der Praxis erreicht, was zeigt, dass der sehr leistungsfähige ESP32 äußerst stromsparend ist – natürlich mit Kompromissen, aber immerhin mit einer Standard-Arduino-Umgebung.

Wahl der richtigen Batterien bzw. Akkus

Der ESP32 läuft grundsätzlich mit ca. 2,55 bis 3,6 V, wie es beim ESP32-WROOM-Modul der Fall ist. Externe Erweiterungen wie beispielsweise ein Bildschirm oder andere Komponenten benötigen oft mindestens 3,3 V. Möchte man den ESP32 mit langer Batterie- bzw. Akkulaufzeit betrieben, gibt es einiges zu beachten. Um nicht in diese Fallen zu laufen, hier eine Übersicht.

1. ESP32-Betrieb über eine Powerbank

Das ist so ziemlich die schlechteste Variante. So eine Powerbank nutzt intern einen 3,7 V Lithium-Akku, transformiert diese Spannung dann mit Verlust auf 5 V, ein angeschlossener ESP32 nutzt dann einen LDO (Spannungsregler), der die 5 V auf 3,3 V herunterregelt. Hinsichtlich der Energieeffizienz ist dies eine Katastrophe; mehrfaches Umwandeln verbraucht permanent erheblich Strom (also ständig, auch wenn der ESP32 nur 7 µA anfordert). Zusätzlich schalten einige Powerbanks automatisch ab, da diese glauben, es sei aufgrund der geringen Stromaufnahme des ESP32 kein Verbraucher mehr angeschlossen.

2. ESP32-Betrieb über einen NiMH-Akku oder reguläre Batterien (2 x 1,5 V)

Ein direkter Betrieb über zwei NiMH-Akkus funktioniert nicht, da ein Akku nur ca. 1,2 V bringt, also 2,4 V bei zwei Batterien. Das ist zu wenig für die erforderlichen 2,55 V, welche der ESP32 mindestens benötigt. Drei NiMH-Akkus in Reihe geschaltet sind auch keine Option, da die maximale Spannung von 3,6 V für den ESP32 bei vollen Akkus überschritten wird.

Mit regulären Batterien (außer Lithium) funktioniert dies auch nicht lange, da die Mindestspannung des ESP32 von 2,55 Volt nach einer gewissen Betriebsdauer unterschritten wird und die Batterie aber noch bei 70% ihrer Gesamtkapazität ist. Zusätzlich benötigt der ESP32 bei WiFi kurzfristig auch schnell mal 400-mA-Impulse – da bricht die Batteriespannung von regulären Batterien zusammen und der ESP32 läuft in den Reset.

3. ESP32-Betrieb über Lithium-Batterien

Egal ob zwei 1,5-V-Lithium-Batterien in Reihe oder eine CRV123-3-V-Lithium-Batterie, mit Lithium-Batterien funktioniert alles hervorragend. Diese halten nämlich ziemlich konstant eine Spannung von 3 V, bei unter 2,7 V sind dann auch über 90% der Kapazität einer Lithium-Batterie verbraucht, bei 2,55 V ist sie dann praktisch leer. Auch den kurzfristigen großen Strombedarf bei WiFi-Betrieb liefern Lithium-Batterien ohne Probleme. So ist beispielsweise mit einer Varta CRV123 (3 V, 1700 mAh) sogar ein Standby-Betrieb von über 5 Jahren möglich, natürlich abhängig davon, wie oft der ESP32 aufwacht und etwas tun muss, bzw. wie lange und wie häufig WiFi oder Bluetooth verwendet wird.

Da Lithium-Batterien eine sehr geringe Selbstentladung haben und auch bei -20 Grad Kälte auch noch gut funktionieren, sind diese zu bevorzugen.

4. ESP32-Betrieb über LiFePO4-Akkus

Moderne LiFePO4-Akkus funktionieren ebenfalls hervorragend, liefern allerdings bei gleicher Baugröße ca. 70% weniger Energie als eine Lithium-Batterie. Dafür können LiFePO4-Akkus aber wieder aufgeladen werden bzw. mit einem geladenen Akku ausgetauscht werden. LiFePO4-Akkus liefern auch unproblematisch hohe Leistungen für den WiFi-Betrieb, haben dabei aber nicht den Nachteil wie LiPo-Akkus, welche sich bei falscher Nutzung oder Qualitätsmängeln entflammen können.

Für den kurzfristigen Betrieb, also Wochen und Monate, sind LiFePO4-Akkus gut geeignet. Es ist jedoch dringend zu beachten, dass ein spezielles Ladegerät benötigt wird, welches für LiFePO4-3-V-Akkus geeignet ist.

5. ESP32-Betrieb über LiPo- oder Lithium-Akkus

LiPo- oder Lithium-Akkus funktionieren natürlich, da diese genügend Leistung für den ESP32 liefern. Allerdings ist die Spannung, je nach Ladezustand, mit 3,7 bis 4,2 V viel zu groß für den ESP32. Daher muss diese heruntergeregelt werden. Das bringt den Nachteil mit sich, dass ein Großteil der Energie permanent zum Herunterregeln der Spannung auf 3,3 V verbraucht wird. Einfache LDO-Regler benötigen für den Standby ca. 2000 mal mehr Strom als der ESP32 im Deepsleep-Modus, und das durchgängig jede Sekunde, 24 Stunden pro Tag, 365 Tage. Selbst bessere Regler benötigen immer noch viel Strom.

Selbstverständlich funktionieren LiPo-Akkus für den Betrieb von einem Tag bzw. wenigen Tagen, aber über Wochen und Jahre ist dies so gut wie unmöglich.

Zusammenfassung

Beim Batterie-/Akkubetrieb mit einer Standbydauer von Wochen und Jahren ist die Lithium-Batterie die erste Wahl.

Stromvergleich ESP32-Boards im Deepsleep-Modus:

Board Stromverbrauch Kommentar
ECO Power 7 µA per Lithium-Batterie oder LiFePO4-Akku
ESP32 DevKitC 11 mA per USB-Stromversorgung

Die Uhrzeit im Deepsleep-Modus beim ESP32

Im Deepsleep-Modus schaltet der ESP32 die CPU und den dazu gehörigen Quarz ab. Ein interner Oszillator sorgt dafür, dass die Uhrzeit trotzdem weiterläuft. Dieser interne Oszillator ist aber sehr ungenau und temperaturabhängig, sodass sich im permanenten Deepsleep-Modus schnell eine Abweichung von 20 % und mehr einstellt. Damit stimmt die Uhr nach wenigen Tagen überhaupt nicht mehr. Hinzu kommt, dass bei einem Batteriewechsel oder einem Reset bzw. WatchDog die Uhrzeit auf 0 zurückgesetzt wird. Für einen langfristigen Batterie- bzw. Akkubetrieb ist das schon recht problematisch; diese Einschränkung existiert praktisch bei allen ESP32-Boards.

Unser „ECO Power“-Board löst das Problem, indem zusätzlich eine hochgenaue RTC-Uhr (DS3231) verbaut ist, welche nach dem Deepsleep einfach die richtige Uhrzeit setzt. Zusätzlich werden alle DS3231-RTCs einzeln während der „ECO Power“-Produktion gegen eine Atomuhr kalibriert. Die DS3231 ist auch temperaturkompensiert (TCXO), sodass diese unabhängig vom Wetter über viele Jahre hinweg die genaue Uhrzeit liefert.

Verweise

Die Tücken der ESP32-Stromversorgung

$
0
0


Es sieht alles so supereinfach aus: man nehme einen ESP32, schließe diesen per USB-Kabel am Computer oder einem Streckennetzteil an und das Teil läuft. Es spielt dabei auch keine Rolle, ob es ein ESP8266 oder der leistungsfähigere ESP32 ist. Wenn dann die Software aufgespielt wird und eine regelmäßige WiFi-Kommunikation stattfindet, stürzen die Teile einfach regelmäßig ab.

Digital-Speicheroszilloskop

Mit einem einem Digital-Speicheroszilloskop (Rohde & Schwarz RTB2000-Serie) soll sichtbar gemacht werden, wo die Probleme liegen könnten bzw. was zu tun ist, um das Ganze stabil zu bekommen. Ein altes Analog-Oszilloskop ist hier nicht nutzbar, da eine Aufzeichnung über mehrere Sekunden notwendig ist, die später analysiert werden muss bzw. die Details mit richtigem Trigger aufgezeichnet werden müssen.

Problem: ungeeignete USB Netzteile


Ich traute meinen Augen nicht, als ich mit einem einfachen USB-Steckernetzteil die 5-V-Stromversorgung des ESP32-Moduls per Oszilloskop gemessen habe: da war ein 500 mV 2-kHz-Sägezahn auf der Leitung – unglaublich! Das ist mit jedem Oszilloskop sichtbar. Interessant war, dass die 3,3 V Betriebsspannung nach dem LDO-Regler wieder glatt war und unproblematisch aussah. Bei Belastung im WiFi-Betrieb wurde es aber schlimmer mit den 5 V und auch die 3,3 V waren nicht mehr stabil.


Die gute Nachricht ist, dass ein anderes 1-A-Steckernetzteill diese Probleme nicht aufwies. Daher empfehle ich eine kurze Überprüfung der 5-V-Betriebsspannung auch unter WiFi-Betrieb, damit solche Probleme vorab bereits ausgeschlossen werden können.

Stromverbrauch beim ESP32

So ein ESP32 benötigt mit einem einfachen Arduino-Programm etwa 50-70 mA, im WiFi-Betrieb geht der Stromverbrauch sogar bis auf etwa 80-170 mA hoch. Zumindest zeigen es die Messgeräte so an. Das ist aber ein Trugschluss; im WiFi-Betrieb werden auch mal schnell 400 mA und mehr genutzt, allerdings nur für wenige Millisekunden. Fällt die Spannung dann unter einen Wert von 2,55 Volt, stürzt der ESP32 (oder auch der ESP8266) ab. Ja, ein Spike nach unten für weniger als eine Millisekunde reicht aus, und der Absturz folgt.

Problem: USB-Kabel zum PC oder Netzteil

Ich habe schöne USB-Kabel von 1 Meter Länge, die vom PC oder Steckernetzteil zum ESP32 gehen. Auch ein gutes Labornetzteil habe ich zum Testen verwendet – immer mit ein und demselben Ergebnis: im WiFi-Betrieb bricht die 3,3-Volt-Spannungsversorgung des ESP32 zusammen. Dies führt teilweise auch wieder zum Absturz des ESP32-DevKit-Moduls.


Das Bild zeigt einen Spannungszusammenbruch beim Senden vom WiFi-Datenpaketen, hier ist deutlich zu sehen, dass die Spannung von etwa 3,3 V auf 2,8 Volt (Differenz 0,5 V) einbricht. Das sieht nicht besonders stabil aus, und es fehlt auch nicht mehr viel und der Reset kommt.


Beim WiFi-Empfang sieht es deutlich besser aus. Das ist aber auch dadurch bedingt, dass beim Empfang deutlich weniger Strom benötigt wird als beim Senden.

Lösung: kurze USB-Kabel bzw. Kabel mit größerem Leitungsquerschnitt

Mit dem identischen 5-V-Netzteil habe ich einfach mal kurze Kabel bzw. solche mit einem größeren Leitungsquerschnitt verwendet.

WiFi senden mit dicken Kabeln:

WiFi empfangen mit dicken Kabeln:

Hier sind die Probleme gelöst; der geringe Ripple stört den ESP32-Betrieb nicht und alles läuft stabil. Jetzt gibt es noch zwei Möglichkeiten, die Stromversorgung weiter zu verbessern: man nehme einen 47-µF-Tantalkondensator, der direkt am ESP32-Modul zu den Pins VDD/GND parallel geschaltet wird. Dieser ist in der Lage, die geforderten Stromspitzen schneller als der LDO-Regler bzw. andere Kondensatoren zu liefern. Zusätzlich zum Tantalkondensator gibt es dann noch die Möglichkeit, einen großen Low-ESR-Elektrolytkondensator mit einer Kapazität von 470 µF bis 2000 µF zu verwenden. Der Elko ist dann in der Lage, den Tantal nachzuladen, womit die Spannungsversorgung weiter stabilisiert wird.

Diese Maßnahmen (dicke Kabel und zusätzliche Kondensatoren) kosten nicht viel, lösen aber die Probleme!

Batteriebetrieb: kurze Leitungen und leistungsstarke Batterien

Hier noch einmal Abbildungen der gemessenen Spannung beim WiFi-Betrieb mit einer LiFePO4-Batterie, welche den ESP32 (Beispiel „ECO Power“-Board) direkt betreibt.

WiFi empfangen:

WiFi senden:

Wie auch hier zu sehen ist, sieht die Spannungsversorgung gut aus. Hier gibt es nur minimale Einbrüche und der ESP32 im WiFi-Betrieb funktioniert selbst mit einem LiFePO4-Akku oder Lithium-Batterien einwandfrei. Verantwortlich für die gute Funktion im Batteriebetrieb ist bei unserem ESP32 „ECO Power“-Board Folgendes:

  • Der LiFePO4-Akku bzw. die 3-V-Lithiumbatterie kann die geforderten Stromspitzen von über 400 mA auch schell liefern.
  • Vom Batteriefach zum ESP32-Modul werden breite und kurze Leitungen verwendet (nur wenige Zentimeter lang). Lange und dünne Leitungen (z. B. 20 cm) zu einem externen Batteriefach können schon wieder Probleme bereiten.
  • Die Stromversorgung des ESP32 wird durch schnelle MLCC-Kondensatoren unterstützt, zusätzlich wird ein Low-ESR-Elko mit einer Kapazität von 470 µF direkt am Eingang der Batteriespannung verwendet.

Zusammenfassung

Zusammengefasst lässt sich sagen, dass viele Probleme beim ESP32 oder auch beim ESP8266 mit der richtigen Stromversorgung zusammenhängen. Die Aussage „… es ist ja gelaufen, nur plötzlich geht etwas nicht mehr!“ habe ich oft gehört. Meistens lag es jedoch nicht am WiFi-Netz sondern schlichtweg an der Stromversorgung. Mit einem guten Digital-Speicheroszilloskop (hier Rohde & Schwarz RTB2000-Serie) können solche Probleme sehr gut untersucht werden:

In der Arduino-Hannover-Gruppe treffen sich regelmäßig Elektronik- und Arduino-Interessierte. Viele von uns verwenden den ESP32 oder ESP8266 für Ihre Projekte. Interessenten können bei unseren regelmäßigen Treffen teilnehmen, wir helfen gerne und tauschen Erfahrungen aus. Auch gemeinsame Messungen, wie die hier beschriebenen, können bei uns durchgeführt werden. Auf der Maker Faire 2018 in Hannover können Interessenten gerne am Stand von Arduino-Hannover vorbeikommen und über die ESP32-Stromversorgung und unsere LoRa-Funktechnik Boards diskutieren.

Wir bedanken uns bei der Firma Rohde & Schwarz GmbH & Co. KG, welche Arduino Hannover aktiv unterstützt.

Links:

Arduino Hannover Homepage
ESP32 DevKit-C Board
ECO Power Board
Rohde & Schwarz RTB2000-Serie

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.

Auszeichnungen auf der Maker Faire 2018

$
0
0

Arduino Hannover wurde auf der Maker Faire 2018 durch die Redaktion des Magazins Make: zweimal mit dem „Maker of Merit“-Award ausgezeichnet. Einmal für den jährlichen Lötworkshop für Kinder und einmal für die LoRa Funktechnik Gruppe.Diese Auszeichnungen stehen für die herausragende Zusammenarbeit des ganzen Arduino Hannover Teams. Wir sind mächtig stolz, dass dies von der Make: Redaktion erkannt und ausgezeichnet wurde.

Hier einige Impressionen von unserem Stand auf der Maker Faire 2018:

Vortrag zum Thema „LoRa-Funktechnik Grundlagen“ auf der Maker Faire 2018:

Brausteuerung mit dem ESP 32 und einem NEXTION Display

$
0
0

Mein Tagwerk war heute die ordentliche Verdrahtung des Chinesischen Bierreaktors. Es werden dann doch immer mehr Kabel als gedacht. Bis auf die Lüsterklemme, die im richtigen Leben auf einer Hutschiene stecken müsste, ist alles nun ordentlich in einem Aludruckgussgehäuse verpackt. Es werden zwei Heizungen (1800 Watt + 700 Watt) und eine Pumpe per 3x Solid-State-Relais (SSR = elektronische Relais ohne mechanische Schaltkontakte) vom ESP32 geschaltet. Der 5 Volt Schaltstrom für die SSRs kann zur Sicherheit zusätzlich per Schalter hart unterbrochen werden.

Die von Klarstein bereits verbauten Thermosicherungen – 1x reversible (125°C) und 1x irreversible (140°C) überwachen die Temperatur der Heizelemente und schalten bei Überhitzung softwareunabhängig ab. Bei Klarstein befand sich allerdings der „Computer“ mit in der Absicherungsschleife, was bei den ersten Klarsteins zu Problemen führte.

Ein DS18b20 überwacht die Temperatur des SSR Kühlkörpers. Ein PT100 ragt von unten in den Biersud und steuert den Brauvorgang hauptsächlich. Ein zweiter DS18b20 misst die Sudtemperatur am Pumpenausgang – was auch immer ich mit dem Wert später anstelle.

 

Alle hardwarenahen Prozesse meiner Brausteuerung habe ich auf dem ESP32 über die Arduino IDE programmiert. Der ESP misst die Temperaturen und schaltet die SSRs vorgabegemäß. Der ESP ist per serieller 2-Draht Leitung mit einem NEXTION Touch Display verbunden. Diese Displays haben einen eigenen Prozessor, den man in einer graphischen PC-Oberfläche sehr komfortabel programmieren kann. Die Bedienoberfläche wird dabei per Drag and Drop aus Standardelementen wie Knöpfen und Eingabemasken erzeugt. Wer schon einmal „zu Fuß“ solche Bedien-Oberflächen in C geschrieben hat, kann die Zeitersparnis schnell einschätzen. Es sieht dann alles sehr professionell aus und man ist auch schneller gewillt, ein paar extra Menüpunkte zu spendieren….

Wer mehr zum Thema Bier Brauen und Arduino wissen möchte, besucht einfach meine Homepage:

http://rainer.radow.org/brauen.php#top?utm_source=rss&utm_medium=rss

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.

PDFs zur MakerFaire 2019


FRITZ!Box mit unterbrechungsfreier Stromversorgung – einfach und sehr effektiv

$
0
0

Die unterbrechungsfreie Stromversorgung (USV) der FRITZ!Box habe ich gemäß Projekt einiger Arduino-Hannover-Teilnehmer nachgebaut. Einfach ein Netzteil (13,5 V/3 A) anstelle des FRITZ!Box-Netzteils nutzen und parallel einen 12-V-Bleiakku, der in seiner Zuleitung mit einer Feinsicherung abgesichert ist, anschließen. Das System bietet für mich verschiedene Vorteile:

  • Bei Stromausfall kann noch per DECT-Mobiltelefon telefoniert werden
  • Bei Stromausfall kann die Alarmanlage per Wähleinheit einen Notruf absetzen
  • Bei Stromausfall kann per Laptop weiterhin das Internet genutzt werden
  • Der ESP32 (Beispiel „ECO Power“-Board mit Batterie) kann weiterhin MQTT-Nachrichten per Internet absetzen. Das „ECO Power“-Board schaltet per Stromausfall automatisch auf Batteriebetrieb um (CR123-Zelle)

Technische Vorteile meiner FRITZ!Box-USV

Das Netzteil betreibt die FRITZ!Box und lädt nebenbei noch den Akku auf, was recht effektiv ist. Über den Bleiakku (12 V/12 Ah) kann die FRITZ!Box 7490 ca. 12-24 Stunden betrieben werden.

Schaltplan

Standard USV-Alternative mit 230 V bringt Nachteile

Eine energietechnisch ineffiziente Lösung per Standard 230-V-USV entfällt. Diese würde die Netzspannung zunächst auf 24 Volt wandeln, um die UPS-Akkus zu laden, parallel würde ein Inverter die 24-V-Akkuspannung auf 230-V-Netzspannung transformieren, welche dann per FRITZ!Box-Netzteil wiederum auf 12 V heruntergesetzt wird. Diese Herangehensweise ist, wie sich vermutlich jeder gut vorstellen kann, mit beträchtlichen energetischen Verlusten behaftet.

Meine USV HP T750 G2 UPS
Akku 1x 12 V/12 Ah 2x 12 V/12 Ah
Laufzeit FRITZ!Box min. 13 Stunden ca. 5 Stunden
Stromverbrauch (Akku voll) 10,9 Watt 25 Watt
Stromkosten/Jahr (29 ct/kWh) 27,69 € 63,51 €

Die Tabelle zeigt, dass meine FRITZ!Box-Lösung sehr effizient ist. Umgerechnet auf eine identische Akkuleistung ist die Laufzeit meiner USV im Vergleich zur HP-USV mehr als fünfmal so lang!

Der mechanische Aufbau meiner FRITZ!Box-USV

Ziel war es, das gesamte USV-System möglichst mobil zu halten, um es leicht abbauen und für etwaige Wartungsarbeiten auf einen Werktisch legen zu können. Hierfür habe ich einfach Filzgleiter unter den Akku geklebt. Das Netzteil habe ich mit einem Kabelbinder oben auf dem Akku befestigt. Zusätzlich wurden zwei Kanten des Netzteils per Heißklebepistole fixiert, sodass es nicht wackelt. Die Kabel zwischen Netzteil, Hohlstecker und Akku wurden zusammengelötet (alle Minus- sowie alle Plusleitungen zusammen) und dann mittels Schrumpfschlauch geschützt. Der Sicherungshalter und die Flachsteckhülsen wurden ebenfalls per Schrumpfschlauch geschützt, sodass keine stromführenden 12-V-Leitungen aus Versehen Kurzschlüsse verursachen können. Das fertige Modul habe ich dann auf einen Regalplatz an die Wand neben die FRITZ!Box gestellt, wobei ein kleiner Metallwinkel verhindert, dass der Akku vom Regel rutscht. (Die 230-V-Kabelführung ist mittlerweile mit Kabelschellen fixiert!)

Die Ladung den Bleiakkus geschieht ohne zusätzlichen Regler, da die 13,5 V vom Netzteil den Bleiakku laden und, wenn dieser voll ist, die Spannung als Erhaltungsladung des Akkus dient. Einen Schutz bei Tiefentladung habe ich bisher nicht realisiert, das lässt sich zukünftig sicherlich noch verbessern. Für meine Anwendung kann ich gut damit leben.

Bauteile

Die Bauteile für Lösung kommen zusammen auf ca. 25,- € (Akku und Kleinteile). Ein Netzteil 13,5 V/3 A kommt mit ca. 15,- € noch dazu – davon habe ich aber noch ausreichend liegen. Meine vorhandenen Netzteile liefern mit angeschlossener FRITZ!Box noch 13,6 V, was zum Aufladen sowie als Erhaltungsspannung für den Akku optimal ist.

Wichtiger Hinweis: Die Spannung des Netzteils sollte zwischen 13,6 V und 13,8 V liegen.

Teileliste (Bezugsquelle: Pollin Electronic GmbH)

Bezeichnung Artikel-Nr. Kommentar
Blei-Akkumulator 94-271198 12 V/12 Ah
Hohlstecker 94-450499 Außen 5,5 mm, innen 2,5 mm, lange Version
Sicherungshalter 94-260778 Für Feinsicherung 5×20 mm
Feinsicherung (3 A, Träge) 94-260211 5×20 mm
Sortiment Flachsteckhülsen 94-800171 Es werden nur 2 Flachstecker (6,3 mm) benötigt
Silikonlitze 1,5 mm2 (rot) 94-562007 Nur 30 cm Kabel notwendig, den Rest verwende ich anderweitig
Silikonlitze 1,5 mm2 (blau) 94-562009 Nur 30 cm Kabel notwendig, den Rest verwende ich anderweitig
Schrumpfschlauch 1 cm 440138 Ø 1 cm, wird ca. 50% kleiner
Netzteil (13,5 V/3 A) – (davon haben ich noch ausreichend auf Lager, daher keine Bestellung)

 

Teilnehmer, die zu unseren Arduino-Hannover-Treffen kommen und die FRITZ!Box-USV nachbauen, können von mir solch ein Netzteil kostenlos erhalten.

Q&A

Q: Wird ein Tiefentladeschutz benötigt?
A: Ein Tiefentladeschutz wäre schön, macht das Ganze aber aufwendiger und teurer. Bei der FRITZ!Box gehe ich davon aus, dass diese permanent durchläuft und ein Stromausfall nicht länger als 14 Stunden andauert; somit wird der Akku nicht tiefentladen. Sollte dies trotzdem einmal passieren, kann die Kapazität abnehmen bzw. der Akku über einen längeren Zeitraum Schaden nehmen. Ein neuer Akku kostet 20,- € und dieser muss sowieso ca. alle 5 Jahre ausgetauscht werden. Bei Kapazitätsverlust oder defektem Akku tausche ich diesen einfach aus.

Q: Ist ein regelmäßiger Funktionstest sinnvoll?
A: Ich persönlich werde die Lösung ca. alle 6 Monate testen, indem ich bei voll geladenem Akku den Netzstecker abziehe, sodass die FRITZ!Box per Akku läuft. Bei uns fallen eine nicht funktionierende Internetverbindung und Telefon sofort auf. Damit stelle ich fest, wie lange der Akku gelaufen ist und stecke den Netzstecker ein. Das mache ich am besten tagsüber, wenn ich zuhause bin, damit ich die Akkulaufzeit notieren und den Netzstecker zeitnah wieder einstecken kann.

Q: Was ist bei einen längeren Stromausfall zu tun?
A: Sollte der Stromausfall so lange dauern, dass der Akku schon leer ist oder abzusehen ist, dass der Strom länger ausbleibt, entnehme ich einfach die Sicherung um einer Tiefentladung vorzubeugen. Wenn der Strom wiederkommt, läuft die FRITZ!Box sofort weiter. Ich stecke dann die Sicherung wieder ein, damit der Akku geladen wird. Wie gesagt, im Notfall nehme ich einen Akkuaustausch (20,- €) in Kauf.

Q: Kann die FRITZ!Box die 13,6 V auf Dauer vertragen oder nur mit angeschlossenem Akku?
A: Die FRITZ!Box kann mit höheren Spannungen als 12 V betrieben werden, 15% mehr (13,8 V) sind überhaupt kein Problem. Die Lösung kann auch ohne Akku betrieben werden, falls dieser mal nicht verfügbar ist oder nicht funktioniert.

Aufruf: wir suchen neue Räumlichkeiten

$
0
0

Damals startete alles klassisch als Stammtisch in Bars und Restaurants, dann wurde es im Coworkingspace etwas vertrauter von der Atmosphäre, bis wir 2015 dann in’s LeineLab einzogen und eine anständige Umgebung schaffen konnten. Nun wurde dem LeineLab e.V. von dem die Räume „mietenden“ Verein drüber ein Ultimatum gesetzt, sodass das wir mit dem LeineLab ausziehen müssen. Daher brauchen wir nun neue Räumlichkeiten in Hannover um weiterhin unser Wissen weitergeben zu können.

Mit nichts gestartet haben wir in Privat- und Vereinsbesitz inzwischen diverses hochwertiges Werkzeug, 3D-Drucker, Lasercutter, Mikroskope, Messgeräte, etc. die man natürlich nicht in irgendeine Kneipe schleppen kann. Von den anfänglichen 5-10 Personen sind wir manches Treffen über 25 Leute, die sich austauschen möchten und dafür Strecken von bis weit über die niedersächsischen Landesgrenzen hinaus auf sich nehmen. Von Fünftklässlern bis Rentnern ist bei uns jede Altersklasse vertreten. Auf der MakerFaire Hannover stellen wir inzwischen den größten Messestand insgesamt, da unsere Projektvielfalt so groß geworden ist.

Nun geht es aber um die Räume, für unsere regelmäßigen Treffen. Für die zukünftige Unterkunft gibt es ein paar Wünsche unsererseits:

  • Misch-/Gewerbegebiet (Wohngebiet eher unpraktisch, da wir teilweise bis 3 Uhr nachts noch zusammen sitzen, auch noch mal den Laser starten oder ähnliches), Räumlichkeiten zum „Dreck“ machen, sollten vorhanden sein.
  • 24/7 zugänglich (wir haben bereits ein digitales Schließsystem in den aktuellen Räumlichkeiten installiert, mit dem wir den Zutritt regulieren, das entsprechend auch in neuen Räumen installiert werden kann)
  • Erreichbar (ein paar mehr Parkplätze wären gut, Fahrradstellplätze, akzeptable Anbindung an ÖPNV [wenige Fußminuten])
  • Bezahlbar (wir sind derzeit auf Mitgliedsbeiträge angewiesen und sammeln regelmäßig Geld, da es aber unser vorrangiges Ziel ist, allerlei Menschen der Technik näherzubringen, wollen wir keine kostenpflichtigen Angebote – über Selbstkostenpreis der Materialien – offerieren. Derzeitiges Gebäude ist im Besitz der Stadt Hannover, sodass nur ein Nebenkostenbeitrag gezahlt wurde)
  • Internetanbindung
  • Barrierefreiheit wäre schön (wir haben mobilitätseingeschränkte Personen bei uns, für die es bisher mäßig gut war)
  • Langfristiges Mietverhältnis (wir wollen eigentlich nicht ständig umziehen)

Und alles dennoch bei einem für die Gruppengröße ausreichenden Platz. Wir wissen selbst, wie schwer es ist, das alles unter einen Hut zu bekommen. Aber wir sind ja auch nicht untätig. Leider wurde uns das Ultimatum nun gesetzt, nachdem wir allerlei Renovierungen und Ausbauten aus Vereins- und Privatmitteln durchgeführt haben. Das ist schade, hält uns aber nicht davon ab, eine weitere Umbauaktion in Angriff zu nehmen, sodass wir neue Räumlichkeiten mit unserem geballten Know-How von Maschinenbau, Holz, Elektrik und Raumausstattung auch aktiv in die Verbesserung einbringen würden.

Also wir bieten:

  • Umbaumaßnahmen von ggf. sanierungsbedürftigen Räumlichkeiten (sofern wir sie auch nutzen)
  • Diverses Werkzeug, Maschinen und Co.
  • Technisches Know-How, Workshops, dafür ggf. nötige Ausstattung (Smart-Board, Beamer, Fernseher)
  • Sinnvolle Unterhaltung leerstehender Räumlichkeiten
  • Bei Umzug aller im LeineLab angesiedelter Gruppen auch mit dem Netzwerkwissen von Freifunk Hannover

Wir hoffen, dass wir bald in neuen Räumlichkeiten wieder mit gutem Gewissen und Sicherheit unser Wissen verbreiten können und freuen uns über jede Unterstützung.

P.S.: Arduino-Hannover ist derzeit als lose Gruppe organisiert, was nicht ausschließt, dass in Zukunft doch noch ein eigner gemeinnütziger Verein gegründet wird, wenn es die Arbeit vereinfacht. Bis dahin können Zuwendungen direkt an das LeineLab gerichtet werden. Mit der nächsten Mitgliederversammlung noch 2019 sollte auch das LeineLab den Status der Gemeinnützigkeit erlangen.

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.

Geschwindigkeit und Tücken gängiger MCUs

$
0
0

Grundsätzlich lässt sich sagen, dass die MCUs auf den Boards für Maker und Industrieanwendungen, wie Arduino, Mbed oder Pi, eine recht anständige Performance bringen, vergleichbar mit PC-Rechnern Anfang der 90er Jahre. Allerdings ist der Stromverbrauch bei diesen MCUs deutlich geringer und sie sind schon für wenige Euro erhältlich.

Dieser Artikel schaut aber auch hinter die Kulissen, da die CPU-Geschwindigkeit nur ein Aspekt ist. Denn oft gibt es auch tückische Probleme bei der Interrupt-Verarbeitung oder den begrenzten Möglichkeiten beim Stromsparen sowie große Unterschiede in der Speichergeschwindigkeit (Flash).

Wir besprechen hier ausschließlich 32-bit MCUs, da die 8-bit Atmel AVRs zu schwach sind und über zu wenig Speicher verfügen, um hier sinnvoll verglichen werden zu können.

Getestete MCUs

Es wurden gängige MCUs getestet, wobei oft mehrere MCUs einer MCU-Familie existieren, die sich durch Speichergröße oder Anschlusspins unterscheiden. Ansonsten sind diese relativ zur Taktfrequenz identisch schnell.

Da ich schon mehrere Boards mit ESP32-, D21- sowie verschiedenen STM32L4-MCUs mit LoRa-Funktechnik selbst entwickelt und produziert habe, ist da einiges an Know-How vorhanden. Selbstverständlich habe ich unsere eigenen LoRa-Boards (LongRa, Turtle, ECO Power und Eagle) ebenfalls mit identischen Ergebnissen getestet. Mehr dazu unter www.radioshuttle.de?utm_source=rss&utm_medium=rss.

Millionen von Instruktionen pro Sekunde

Zum Testen werden hier einfach verschiedene C/C++ Operationen verwendet um zu sehen, wie schnell diese durchlaufen werden. Als Beispiel wird die Addition als nur eine Instruktion gerechnet. In Wirklichkeit sind dies mehrere Einzelschritte, da erst einmal ein Wert geladen wird und danach ein zweiter. Diese beiden Werte werden addiert und das Ergebnis gespeichert.

Im Test spreche ich von Mega-Instruktionen pro Sekunde, wobei die Instruktionen in mehreren Schritten hintereinander durchgeführt werden:

  • Schritt 1: Addition (addieren von zwei Werten)
  • Schritt 2: Multiplikation (das Ergebnis von Schritt 1 wird multipliziert)
  • Schritt 3: Subtraktion (das Ergebnis von Schritt 2 wird abgezogen)
  • Schritt 4: Division (das Ergebnis von Schritt 3 wird geteilt)

Das sind in der Summe 4 Schritte, die in einem Speicherarray mit 1.000 Elementen (z. B. 1.000 Integers für den Int-Test) durchgeführt werden. Dies wird in einer Schleife 2.000 mal durchlaufen, also: 4 Schritte mal 1.000 Elemente mal 2.000 Durchläufe entspricht 8 Millionen Instruktionen, welche ich der Einfachheit halber „Mega“ nenne. In der folgenden Tabelle sind sämtliche Ergebnisse mit Megas/s und der Gesamtlaufzeit aufgeführt:

Megas/s (Int)

Megas/S (Float)

Das sind schon ganz beachtliche Ergebnisse; die Float- und Double-Geschwindigkeit beim Arduino Zero (Atmel D21 MCU) ist extrem langsam, da dieser keine FPU (Floating Point Unit) besitzt, welche Floats direkt rechnen kann und daher die Fließkommazahl in einzelnen Schritten per C-Runtime ermitteln muss. Das gleiche gilt für die Doubles und 64-bit-Integers, welche nur der Pi 3 nativ rechnen kann.

Die Anzahl der Speicherelemente wurde mit Absicht auf 1.000 begrenzt (also 1.000 mal 4 Bytes für einen Integer macht 4.000 Bytes), damit sie auch leicht in den Hauptspeicher hinein passen.

Der Raspberry Pi 3 wurde nur als Vergleich mit aufgenommen, wird aber hier nicht weiter behandelt und im Diagramm nicht dargestellt, da dieser eigentlich als Mini-Linux-Server zu einer anderen Kategorie Rechner gehört.

Das Benchmark-Programm

Der vollständige Code des Beispielprogramms „CPUBench“ für Arduino und Mbed OS ist in unserer RadioShuttle-Software enthalten. Ursprünglich hatte ich dieses Testprogramm beruflich entwickelt, um die Geschwindigkeit verschiedener Server meiner Software zu vergleichen.

Für die RadioShuttle-Boards habe ich den Benchmark-Test noch einmal komplett mit C++ Templates modernisiert, sodass verschiedene Datentypen wie Integer, Floats, 64-bit Integer usw. automatisch gemessen werden können. Da ein Durchlauf recht lange dauern kann, habe ich regelmäßig einen „.“ ausgegeben, der vorhandene Aktivität anzeigt.

Benchmark-Funktion:
template <class T>
int MegaOperations(T, float *millions, int *m_secs, CPUProgressFunc m_progresscb, int cpuId)

Aufgerufen wird sie über (in diesem Beispiel für Integer):
MegaOperations((int)1, &f, &m_secs, &BenchProgress, 0);

Zum vollständigen Programmcode „CPUBench“

Sowohl der ESP32 als auch der Raspberry Pi 3 haben mehrere CPU-Einheiten, die identische Geschwindigkeiten liefern (was ich auch getestet habe). Der ESP32 ist also doppelt so schnell, wenn die CPU-Einheiten parallel aufgerufen werden. Zum besseren Vergleich wurden die Ergebnisse mit nur einer CPU dargestellt.

Besonderheiten des RAM-Speichers

Der SRAM-Speicher ist eigentlich bei allen MCUs ähnlich aufgebaut und läuft in der Regel mit der CPU-Frequenz. Allerdings gibt es beim ESP32 wichtige Unterschiede bzw. Begrenzungen.

Hinweise zum ESP32-RAM

Der ESP32 hat eine Busfrequenz von 80 MHz, mit welcher der Speicherzugriff vermutlich läuft. Zwar läuft die CPU mit 240 MHz, Speicherzugriffe werden jedoch mit der Busfrequenz synchronisiert. Ob der ESP32 Xtensa-LX6 Prozessor noch weitere Bytes an Cache-Speicher hat, konnte ich bisher nicht ermitteln. Die Xtensa-LX6-Spezifikation hat sehr viele Optionen, was der ESP32 an CPU-Features alles mitbringt, ist aber lieder nicht dokumentiert.
Der ESP32 verfügt zusätzlich noch über einen 2 x 8 kB RTC-Memory – einen Slow sowie einen Fast RTC-Memory-Speicherbereich. Dort lassen sich Daten speichern, welche im „deepsleep“ erhalten bleiben.

Probleme mit der ESP32 PSRAM-Option


Die ESP32 PSRAM-Option, welche beim ESP32-WROVER Modul verbaut ist, bringt weitere 4 MB RAM-Speicher. Beim PSRAM gilt zu beachten, dass dieser per SPI seriell angebunden und daher um Faktoren langsamer ist als der in der MCU integrierte RAM-Speicher. Ein weiteres Problem ist, dass Interrupt-Routinen nicht auf diesen Speicher zugreifen dürfen, da in einem Interrupt keine SPI-Transaktionen ausgeführt werden dürfen. Hinzu kommt noch, dass der PSRAM-Speicher in das interne RAM vom ESP32 geladen wird (Virtual Memory Paging), was das Ganze wieder komplizierter und langsamer macht. Für eine normale Anwendung, z. B. in der Arduino-Funktion loop(), merkt man davon überhaupt nichts, sie läuft eben nur erheblich langsamer. Bei Interrupt-Funktion wie Timer und GPIO-Interrupts ist das natürlich die Pest.

Besonderheiten des Flash-Speichers

Der Flash-Speicher der MCUs ist schon genial, da dieser viel schneller als reguläre Festplatten ist und die Kapazität oft auch die der damaligen Diskettenlaufwerke übersteigt. Aber auch hier gibt es Tücken. Intern ist so ein Flash-Speicher in Blöcke aufgeteilt (ähnlich wie Sektoren bei Festplatten/Disketten). Um ein Byte im Flash-Speicher zu ändern, muss der ganze Sektor gelesen, dann gelöscht und neu beschrieben werden. Dazu kommt, dass der Flash-Speicher pro Sektor eine maximale Anzahl von Löschzyklen hat; in der Regel liegt der Wert zwischen 1.000 und 100.000 Löschzyklen pro Sektor.

Es ist also kein Problem, Programme in das Flash zu schreiben, denn so häufig wird die MCU nicht neu programmiert. Werden allerdings Variablen in den Flash-Speicher geschrieben, kann so eine MCU einen Sektor innerhalb von Minuten so oft beschreiben, dass dieser defekt ist. Das führt dann zu Problemen …

Um dieses Problem zu umgehen, habe ich eine NVProperty-Library für diese MCUs entwickelt, die Werte im Flash („Properties“) optimiert rotierend speichert und somit bis zu 256 unterschiedliche Properties über viele Jahre hinweg alle 10 Sekunden neu schreiben kann. Verweise zur NVProperty-Library befinden sich am Ende des Artikels.

Probleme mit dem ESP32 Flash-Speicher

Der ESP32 Flash-Speicher ist nicht in der MCU integriert sondern per SPI seriell angebunden. Identisch zum PSRAM gibt es hier die Begrenzungen in Interrupt-Routinen (Timer, GPIO, usw.). Diese Funktionen müssen über das Compiler-Attribut „IRAM_ATTR“ deklariert werden, damit sie im RAM abgelegt werden können. Allerdings muss auch jede Funktion, die in einer Interrupt-Routine aufgerufen wird, ebenfalls im RAM liegen. Somit liegt eine einfache strcpy()-Funktion im Flash und beim Aufruf gibt es einen Crash, es sei denn, genau diese Flash-Page wurde per Zufall vorher ins RAM kopiert. Das ist richtig grausam, da hier unwissentlich viele Fehler im Interrupt-Code schlummern.
Ich selber hatte mal einen 64-bit-Timerwert in einer Timer-Interruptfunktion bearbeiten müssen, und da die MCU nur 32-bit-Werte teilen kann, wurde intern ein Compiler-Helper aufgerufen, der die 64-bit-Division vornimmt. Dieser lag natürlich im Flash-Speicher und da war der zufällige Crash. Ich habe damals Tage gebraucht, um dieses Problem zu erkennen.

OTP-Speicher

Der OTP-Speicher (One Time Programmable) ist dann interessant, wenn man einmalige Informationen wie Kalibrierungswerte, Seriennummer, Hardware-Revision, MAC-Adressen, Public Keys usw. speichern möchte. Der OTP-Speicher kann pro Wert nur einmal geschrieben werden, überlebt dafür aber eine neue Programmierung („Flash Erase“) und bietet somit eine hervorragende Möglichkeit, um Werte permanent zu speichern.

Meine NVProperty-Library unterstützt auch den OTP-Speicher. So wird ein Wert erst im Flash-Speicher gesucht und falls er dort nicht vorhanden ist, wird im OTP nachgeschaut. Die Library kann den OTP auch mehrfach beschreiben, wobei die hinteren Daten die gültigen Daten sind.

Strom sparen per „deepsleep“

Beim „deepslepp“ für den Batteriebetrieb gibt es richtig große Unterschiede. Den Prozessor anzuhalten und abzuwarten bis der nächste Timer kommt oder eine GPIO-Pegeländerung stattfindet, ist mit Problemen behaftet. Eigentlich funktioniert das nur richtig gut beim STM32L4, weshalb dieser in unserem LoRa Turtle-Board zum Einsatz kommt und auch über 10 Jahre im Batteriebetrieb läuft. Die Unterschiede dabei sind, ob überhaupt ein Timer weiterläuft, wie lange die CPU braucht um aufzuwachen und ob die MCU an der letzten Stelle einfach weitermacht oder komplett neu starten muss. Hier eine Tabelle zu den Unterschieden:

Man sieht in der Tabelle, dass der ESP32 fast eine halbe Sekunde braucht, um nach einem „deepsleep“ zu reagieren. Zusätzlich ist das ganze RAM gelöscht (nur das RTC-Memory bleibt erhalten), da helfen die 7µA beim ESP32 auch nicht viel, wenn alles weg ist und ein Interrupt siebzigtausend mal länger dauert als beim STM. Beim D21 ist das besser, da hier nichts verloren geht. Allerdings braucht dieser leider 150 mal mehr Strom im „deepsleep“ als der STM, und die Erkennung der GPIO Rise/Fall funktioniert nicht bzw. nur auf „Change“.

Hier spielt die STM32L4-Serie in einer eigenen Liga.

Interrupt-Funktionen Timer, GPIO usw.

Interrupts, Timer und GPIOs funktionieren eigentlich bei allen beschriebenen MCUs recht gut. Nur beim „deepsleep“ gibt es wesentliche Unterschiede, die bereits im obigen Abschnitt Strom sparen per „deepsleep“ erläutert worden sind . Solange kein Batteriebetrieb benötigt wird, spielt das keine Rolle und alles funktioniert bei allen gleich gut.

Die ESP32 Interrupt-Routinen machen Probleme, wenn Funktionen nicht mit dem Attribut „IRAM_ATTR“ versehen sind. Das wurde bereits oben in den Abschnitten zum Flash- bzw. RAM-Speicher schon genauer beschrieben.

Überzeugend sind die 64-bit-Timer im ESP32, die aufgrund der Größe einfach nicht überlaufen können. Da sieht man, dass im ESP32 einfach vieles komplett neu gemacht wurde.

Bei den MCUs ist natürlich bei den Interrupts zu beachten, dass diese unterschiedliche Prioritäten haben können. Auch hier ist der STM32L4 den anderen MCUs überlegen, da er mehr Prioritäten verarbeiten kann. Bei den ARM-Prozessoren funktionieren die Interrupts alle identisch, es gibt halt nur eine unterschiedliche Anzahl von Prioritäten abhängig von der Version des ARM-Cortex.
In Interrupt-Routinen sollte man kleine Floats verwenden, da die Fließkommaregister (Floating Point Registers) nicht gesichert werden.

RTC-Uhrzeiten

Alle besprochenen MCUs haben einen eigenen Quarz und arbeiten somit im regulären Betrieb für die meisten Anwendungsfälle hinreichend genau. D21 und STML4 haben eine RTC, die auch im „deepsleep“ oder nach einem Reset sekundengenau weiter läuft. Der ESP32 verliert sein Uhrzeit im „deepsleep“ bzw. die Uhrzeit ist dann so ungenau, dass diese für eine Zeitmessung nicht mehr zu gebrauchen ist.

Der ESP32 hat allerdings bei aktivem WiFi den Vorteil, dass er sich per NTP die aktuelle Uhrzeit holen kann. Das muss aber erst erst programmiert werden (WiFi aktivieren, NTP-Update).

Zusammenfassung

Der ESP32 ist auf der einen Seite sehr leistungsfähig – um Faktoren der schnellste im Test und der einzige mit WiFi – kann aber hinsichtlich der Interrupt-Funktionen und beim Flash-Speicherzugriff auch zum Biest werden. Zusätzlich überzeugt beim ESP32 der 512 kB Hauptspeicher. Auch moderne 64-bit-Timer gibt es nur beim ESP32. Lediglich „deepsleep“ funktioniert nicht besonders gut.

Der D21 ist eine einfache Standard-MCU mit ARM-Prozessor. Er ist langsam, kann nicht besonders viel, läuft aber zuverlässig, und der eingebaute USB-Port gefällt. Die ADC-Messungen beim D21 funktionieren um Längen besser als beim ESP32.

Der STM32L4 ist eine moderne Cortex-M4-MCU mit Floating-Point-Unterstützung: USB funktioniert einwandfrei, Programmierung über USB-OTG wird unterstützt, ADC und alle GPIO-Modes funktionieren ebenfalls einwandfrei, er verfügt über einen Low-Power-Timer und der „deepsleep“ Modus ist unschlagbar. Mit 80 MHz ist diese MCU natürlich langsamer als der ESP32, und obwohl sie mit 64 kB RAM schon einen ordentlichen Speicher hat, bietet der ESP32 ein Vielfaches.

Ich hoffe, der Artikel bringt einiges Licht in das Dunkel der verschiedenen MCUs. Ich bin von den 32-bit-MCUs begeistert, da es hier vielfache Möglichkeiten für Projekte und Industrieanwendungen gibt. Eigentlich schon sensationell, was da alles so möglich ist!

Wenn es nach Covid-19 mit den Arduino-Hannover-Treffen wieder weiter geht, könnt Ihr gerne vorbei kommen und wir diskutieren über die MCUs und Eure Projekte.

Bis demnächst!

Links

IC-Ersatz für FP2800, Flipdottreiber

$
0
0

Vor einiger Zeit hat sich in Hannover eine Flipdot-Gemeinde gebildet. Durch die Ablösung der Brose-Flipdot-Anzeigen in den Hannoverschen Stadtbahnen bekam das Flipdot-Wesen einen Aufschwung und ich eine Flipdot-Anzeige.
Ein herrliches Gerät. Leider zeigte eines der vier verbauten Flipdot-Panels einen Fehler, der auf ein defektes IC FP2800 zurückzuführen war. Nach dem Tausch des ICs wanderte der Fehler mit dem defekten IC. Ein sicheres Indiz für die Ursache des Fehlers.
Das FP2800 ist praktisch nicht mehr am Markt erhältlich. Unsichere Quellen bieten zu horrenden Preisen Altteile an.
So entstand der Plan, das defekte IC herauszunehmen und in den 40-poligen Sockel ein Nachbau des ICs zu stecken.

Im Internet gab es keine passende Lösung. In einem Blog wurde eine Nachbaulösung skizziert, die wegen zu hohen Aufwandes verworfen wurde.
Daraufhin wurde ein Schaltbild mit 10 handelsüblichen ICs (16 und 14 polig) erstellt und eine passende Leiterplatte entwickelt, um die geplante Funktion prüfen zu können. Nach dem gelungenen „Proof of Concept“ wurde die Leiterplatte makergerecht umgestaltet. (Definition: Ein Maker kann bedrahtete Teile im 2,54 mm Raster verarbeiten).

Details zur Schaltung, zur Funktion und zum Aufbau des IC-Nachbaus sind in einem Datenblatt dokumentiert. (Datenblatt FP2800-JB-1.1)
Wenn Interesse oder Bedarf am Nachbau besteht, könnten Bausätze erstellt und bereitgestellt werden.

Wallbox für E-Autos – Hintergründe und Bauanleitung

$
0
0

Eines vorweg: obwohl es sich hinsichtlich der anstehenden Kosten und des Aufwands kaum lohnt, eine Wallbox, also eine Ladestation für E-Autos, selbst zu bauen, bin ich dieses Projekt dennoch angegangen. Auf dem Weg zur eigenen Wallbox konnte ich immerhin jede Menge Erfahrungen sammeln. Dieser Artikel gibt viel Hintergrundwissen zum Thema „Wallbox“ und dem ganzen Drumherum. Da die E-Mobilität zu überzeugen weiß und ihr die Zukunft gehört, muss man sich früher oder später damit auseinandersetzen.

Unabhängig von der Anschaffung eines E-Autos gibt es verschiedene Aufgaben, die umgesetzt werden müssen. Dies will ich am Beispiel eines Eigenheimbesitzers verdeutlichen.

Brauche ich überhaupt eine Wallbox?

Laden eines E-Autos

Ich gehe von einen Durchschnittsverbrauch von 20 kWh pro 100 km aus (20 kWh im Winter mit dem Tesla Model 3, beim VW ID.3 sind es eher 30% mehr).

Ein Blick in die Tabelle zeigt, dass in vielen Fällen eine einfache Schuko-Steckdose ausreichen könnte. Da diese aber nicht für einen großen Dauerstrom geeignet ist, habe ich hier mit einer Ladeleistung von nur 1,3 kW gerechnet (ist im Auto einstellbar), anstelle von maximal 3 kW, was nur mit einer zusätzlichen Leitung sowie einer speziellen Schuko-Steckdose sicher und dauerhaft funktioniert.

Alle neu zugelassenen E-Autos in Europa folgen dem CCS-Standard (Combined Charging System), welcher für DC-Schnellladen (an Autobahnen bis 250 kW) sowie AC-Laden bis 43 kW geeignet ist. Die meisten Autos können bis maximal 11 kW geladen werden. Wer heute eine Wallbox plant, sollte aber bereits die technischen Voraussetzungen (Stichwort: Kabelquerschnitt) für höhere Ladeleistungen schaffen, z. B. 22 kW oder 2x 11 kW für zwei Ladepunkte.

Die Tabelle zeigt, dass ein Ladepunkt mit 11 kW Leistung ein Auto in 8 Stunden für über 400 km Fahrstrecke aufladen kann.

Wie lade ich ein E-Auto (20/80-Regel)?

Ein guter Tipp ist, ein E-Auto regelmäßig nur bis auf 20% des Batterieladestatus zu fahren und nur bis max. 80% zu laden. Ein weiterer Tipp ist, möglichst wenig am DC-Schnelllader zu laden und bevorzugt zuhause am AC-Ladepunkt. Diese beiden Maßnahmen schonen den Akku, da dieser keinen Stress hat. Damit hält die angegebenen Kapazität vermutlich über 20 Jahre.

Natürlich kann ein E-Auto auch mal auf 0% runter gefahren werden, dann aber bitte sofort wieder laden, damit der Akku nicht über einen längeren Zeitraum bei 0% verbleibt. Vollladen auf 100% ist auch kein Problem, sofern das Fahrzeug danach auch bewegt wird, um zu verhindern, dass der Akku nicht bei 100% über Tage/Wochen stehen bleibt.

Verschiedene Themen zur Installation einer Wallbox

1. Leistung am Hausanschlusskasten prüfen

Sowohl die Leitungen als auch die Absicherung am Hausanschlusskasten muss im Vorfeld dahin gehend überprüft werden, ob eine Ladestation für E-Autos überhaupt ohne neuen Hauptanschluss möglich ist bzw. wieviel Reserve vorhanden ist.

Ein Elektriker wird die Leistung am Hausanschlusskasten vor Ort in wenigen Minuten prüfen können. Dazu muss natürlich noch berechnet werden, welche größeren Verbraucher sonst noch am Hausanschluss hängen um zu sehen, wieviel Reserve für den E-Auto-Ladepunkt vorhanden ist. Auch ein kostenloser Anruf beim Netzbetreiber kann Aufschluss darüber geben, welche Anschlussgröße damals ins Haus gelegt wurde.

2. Kabel zum Ladepunkt verlegen

Es muss ein Kabel vom Strom-Hauptverteiler zum Ladepunkt (Garage, Carport bzw. Hofeinfahrt) gelegt werden. Bei uns war es ein Erdkabel vom Keller über den Hof zur Garage. Innerhalb des Gebäudes reicht auch eine NYM-Mantelleitung. Im Regelfall wird kein Starkstromkabel vom Zählerschrank zum Ladepunkt vorhanden sein. Solch ein Kabel kannst Du aber selbst verlegen bzw. die Verlegung vorbereiten, indem Du Bohrungen vornimmst und einen 70 cm tiefen Graben ausschachtest. Bei einem 10 mm² Erdkabel (ø 2 cm) muss das Bohrloch mit einem 32 mm Bohrer gebohrt werden, sonst passt das Kabel nicht durch die Außenwand. Auch ist eine Abdichtung der Bohrlöcher von außen sicherzustellen, damit die Wand auch langfristig keine Feuchtigkeit zieht.

Empfehlung für die Kabelstärke:

Bitte fangt hier nicht an zu überlegen, ob ein 1,5 oder 2,5 mm² Kabel ausreicht – das tut es definitiv nicht! Zum Laden wird ein Dauerstrom benötigt, und ein zu dünnes Kabel erwärmt sich deutlich, was zu einem Leitungsverlust führt.

Meine Tipps:

  1. Nehmt ein 10 mm² Kabel, dann ist auch noch Reserve für die Zukunft vorhanden
  2. Legt gleich ein zweites Kabel mit rein. Somit fallen bei einer zukünftigen Erweiterung keine Erdarbeiten mehr an
  3. Gleich ein Ethernet-Erdkabel mit zum Ladepunkt legen

E-Autos bekommen umfangreiche Software-Updates per WLAN, da ist ein Ethernet-Erdkabel mit WLAN-Access-Point sinnvoll. Es gibt auch Wallboxes mit Ladekarte, die benötigen auch Ethernet. Oder einfach mal YouTube oder Netflix per WLAN im Auto genießen, da alle E-Autos über eine Standheizung verfügen, ist das sogar ein Rückzugsort.

3. Kabel im Strom-Hauptverteiler installieren

Diese Aufgabe muss ein Elektriker erledigen. Hier kann es allerdings gleich mehrere Probleme geben.

  1. Verteilerschrank ist nicht auf dem neusten Stand
    Der Elektriker kann den Hals nicht voll kriegen und sagt, der Verteilerschrank entspricht nicht den neuesten Richtlinien und Normen (VDE). Wenn er erst mal anfängt und sagt, es müsse alles modernisiert werden, dann ist das blöd. Am besten zum nächsten Elektriker gehen und einfach nur sagen, dass Ihr lediglich eine CEE32 (22 kW) oder CEE16 (11 kW) Steckdose am Carport haben möchtet. Sagt nichts von einer Wallbox, sonst wird er noch gieriger!
  2. Sicherung & FI Schalter
    Es wird ein 3-fach B32 (22 kW) oder B16 (11 kW) Sicherungsautomat benötigt (ca. 30,- €). Zusätzlich wird ein Fehlerstromschutzschalter (Typ-A FI) benötigt (ebenfalls ca. 30,- €). Jetzt kommt es: sollte die Wallbox keinen DC-Fehlerschutz haben, wird ein FI-Typ-B Fehlerstromschutzschalter mit Gleichstromerkennung benötigt. Und solch ein Modul kostet auch locker mal 500,- € beim Elektriker (er verbaut nichts Günstiges/Unbekanntes). Ein Typ-B FI ist aber bereitsfür ca. 200,- € zu bekommen. Unten habe ich Links, mit dem Elektriker klären, ob sie auch diesen verbauen können.

4. Wallbox installieren

Eine fertige Wallbox kann einfach durch den Elektriker installiert werden. In der Wallbox ist es dann noch möglich, die maximale Ladeleistung zu begrenzen. Die Installation der Wallbox am bereits verlegten Kabel dauert keine 15 Minuten. Wallbox anbohren, Kabel anschließen, Ladeleistung per DIP-Schalter einstellen, fertig.

Wichtig: Prüfen, ob die Wallbox einen DC-Fehlerschutz hat, ansonsten muss im Hauptverteiler ein Typ-B FI rein (siehe §3)!

Meine Tipps:

  1. Alternativ eine CEE16- oder CEE32-Steckdose setzen und die Wallbox per Kabel dort anstecken. Das hat den Vorteil, dass auch mobile Wallboxes genutzt werden können. Außerdem kann so eine CEE-Drehstromsteckdose auch mal für eine größere Kreissäge oder Gartenhäcksler genutzt werden.
  2. Wetterschutz im Außenbereich
    Auch wenn fast alle Wallboxes für den Aussenbetrieb gedacht sind, kann es nicht schaden, eine Art „Vogelhausdach“ aus Holz mit Teerpappe als Wetterschutz von oben zu bauen.
  3. Schlüsselschalter im Außenbereich
    Damit keine Unbefugten die Wallbox benutzen können, kann ein einfacher Schlüsselschalter (12 V) installiert werden. In der Wallbox gibt es ein dünnes CP-Steuerkabel (Control Pilot). Das ist eine Steuerleitung, welche per Typ-2-Kabel zum Auto geht (+12 V/-12 V). Ganz einfach einen externen Schlüsselschalter mit Kabelschleife in die Wallbox führen. Wenn das CP-Signal unterbrochen ist, schaltet die Wallbox den Strom nicht frei.

5. Stromanbieter prüfen und ggf. wechseln (Ökostrom bevorzugen)

Damit ein E-Auto auch ökologisch fährt, empfehle ich – sofern nicht ohnehin schon geschehen – den Wechsel zu einem Stromanbieter mit Ökostrom. Somit produziert das E-Auto beim Fahren (inkl. Klimaanlage oder Heizung) keinen zusätzlichen CO2-Ausstoß. Natürlich hat die Produktion von E-Autos schon einen CO2-Rucksack, aber auch die Produktion von Windparks hat bereits einen CO2-Rucksack. Ich finde es konsequent, auf Ökostrom umzusteigen. Bei uns war der Ökostrom-Anbieter sogar 20% billiger als die Stadtwerke, über die wir vorher unseren Strom bezogen haben.

Wir sind auf den „Hourly“-Tarif von aWATTar umgestiegen, aber auch der „Yearly“-Tarif von aWATTar liegt bei unter 0,26 € pro kWh für Ökostrom. Mehr unter www.awattar.de?utm_source=rss&utm_medium=rss.

Meine Tipps:

  1. Der „Hourly“-Tarif von aWATTar hat nachts immer den günstigsten Strom, daher lade ich bevorzugt nachts zwischen 1:00 und 5:00 Uhr.
  2. Wenn mehrere E-Auto-Ladestationen in einem Mehrfamilienhaus oder Betriebsgelände betrieben werden sollen, empfiehlt sich ein komplett neuer Stromanschluss bzw. ein weiterer Zähler. Dafür gibt es das sogenannte „netzdienliches Laden“ (§14a EnWG auch unter Wärmepumpenstrom bekannt), bei dem der Strom dann nur ca. 0,21 € kostet; allerdings kann der Netzanbieter bei Engpässen den Strom stundenweise abstellen. Das netzdienliche Laden ist trotzdem hochinteressant, da hier noch einmal 20% bei den Stromkosten eingespart werden.

Wallbox selbst bauen

Wie eingangs schon erwähnt, lohnt sich der Selbstbau einer Wallbox kaum, da die Einzelteile recht teuer sind. Es gibt Wallboxes (z. B. „Heidelberg Wallbox Home Eco“) schon ab 400,- €, die Tesla Wallbox ab 500,- €. Allein der Typ-2-Stecker mit Kabel kostet schon über 200,- €.

Funktion einer Wallbox

Die Funktion einer Wallbox ist es, sicherzustellen, dass nichts passieren kann. Selbst wenn ich den Typ-2-Stecker in einen Eimer Wasser lege, passiert überhaupt nichts (würde ich aber trotzdem nicht empfehlen). Die Wallbox schaltet erst frei, wenn der Typ-2-Stecker sicher im Auto steckt und dem zu ladenden Fahrzeug per CP-Signal (+12 V/-12 V PWM-Signal) mitteilt: „Ich kann Ladestrom zur Verfügung stellen“. Das Auto sagt dann dem CP-Signal per Lastwiderstand: „Bitte Ladestrom aktivieren“. Jetzt schaltet die Wallbox per Schütz den Strom frei (solange das Auto per CP-Lastwiderstand signalisiert: „Bitte Ladestrom aktivieren“). Wenn die Ladung beendet ist, nimmt das Auto den Lastwiderstand vom CP-Signal, und die Wallbox schaltet sich aus. Somit kann später der Typ-2-Stecker stromlos vom E-Auto entfernt werden. Eine Wallbox ist nicht sonderlich intelligent.

Hinweis: Der Typ-2-Stecker ist nach dem Einstecken im Auto blockiert, damit während der Ladung nicht jemand den Stecker unter Last abziehen kann. Es muss erst per Bedienung im Auto „Ladestecker freigeben“ gewählt werden. Auch beim Laden mit eigenem Typ-2-Kabel an einer fremden AC-Ladesäule ist die Verriegelung des Steckers nicht schlecht, damit das teure Ladekabel keinem Diebstahl zum Opfer fällt.

Typ-2-Stecker

Die Leitungen am Typ-2-Stecker

Hinweis: Ich empfehle Euch, ein fertiges Kabel mit Typ-2-Stecker („Mennekes-Stecker“) zu kaufen. Das Verlöten der dicken Kabel ist sehr schwierig. Überdies fehlte mir zum Einpressen das Spezialwerkzeug.

Der Ladecontroller

Ein Ladecontroller in der Wallbox liefert das CP-Signal und schaltet den Strom per Schütz frei. Ursprünglich wollte ich den Ladecontroller mit einem Arduino ESP32-Board auch selbst bauen, um dann PayPal zur Ladung sowie andere Funktionen zur Verfügung stellen zu können. In der ersten Ausbaustufe habe ich einen fertigen EVSE-Ladecontroller genommen.

Typ-B FI und Schütz

Am Eingang wäre an der Wallbox ein Typ-B FI danach ginge es dann auf das Schütz (4 Schließer L1, L2, L3 + N). Wenn in der Hauptverteilung der Typ-B FI bereits vorhanden ist, kann es direkt zum Schütz gehen. Der Ausgang vom Schütz (L1, L2, Ll3 + N) geht dann auf das Typ-2-Kabel, zusätzlich geht PE auf das Typ-2-Kabel. Das Schütz wird vom Ladekontroller gesteuert.

Stromzähler (optional)

In meiner Wallbox habe ich einen Drehstromzähler am Eingang eingebaut, damit wir am Jahresende einfach sehen können, wieviel der Stromrechnung gehört zum Auto. Wenn mal ein fremder Tankt, kann er uns so auch mitteilen, wieviel kWh er entnommen hat. Außerdem kann ich überprüfen, was geht Brutto an Strom ins Auto.
Der Stromzähler hat einen S0-Ausgang, welchen ich später an ein Arduino ESP32-Board anschließen möchte, um den Stromverbrauch weiterverarbeiten zu können.

E-Auto – Funktion beim Laden

Jetzt sollte klar sein: das Auto bekommt Wechselstrom (1 Phase) oder Drehstrom per Typ-2-Stecker von der Wallbox. Da die Autobatterie natürlich mit Gleichstrom geladen werden muss, wandelt das Auto den Strom in Gleichstrom um und steuert die Ladeleistung bis die Batterie voll ist. Das Auto fordert also Strom an und bekommt per Schütz alles freigeschaltet. Allerdings muss es selbst darauf achten, nur die erlaubte Leistung zu entnehmen.

Photovoltaik (PV): Überschussladen

Ich selbst habe leider keine PV-Anlage, die Wallbox lässt sich aber recht einfach so umbauen, dass der eigene Solarstrom „getankt“ werden kann. Hierfür würde ich mit Hilfe eines zweiten Relais L2 und L3 zu trennen, angenommen die PV-Anlage sitzt auf L1. Dem Ladecontroller müsste man dann mitteilen (funktioniert über Widerstände), wieviel Ladestrom maximal erlaubt ist. Dieser teilt dann per PWM-Signal über das CP-Signal mit, wieviel das E-Auto laden darf (z. B. 10% für 6 A/1,3 kW). Wenn nicht genügend Solarstrom vorhanden ist, kann das CP-Signal einfach so lange getrennt werden, bis wieder Solarstrom verfügbar ist. Notwendig ist es dabei, von der Solaranlage mitgeteilt zu bekommen, wieviel Strom produziert wird. Natürlich sollte man nicht man bei jeder Wolke das Laden unterbrechen; einfach den Ladevorgang unterbrechen, wenn 3 Minuten nichts mehr kommt bzw. erst dann laden, wenn der Solarstrom 3 Minuten stabil gekommen ist.

Meine Wallbox

Ich habe mich dazu entschlossen, meine Wallbox per CEE32-Stecker an die Stromversorgung anzuschließen. Somit bin ich flexibel und kann die ganze Wallbox auch mal ins Auto packen und mitnehmen. Außerdem ist eine CEE32-Steckdose auch für andere Zwecke zu gebrauchen.

Die Blockschaltbilder sollten ausreichen, um erfahrenden Makern zu helfen, die Lösung nachzubauen. Auf jeden Fall sollte vor Inbetriebnahme nochmal einen Elektriker draufschauen, handelt es sich immerhin um 22 kW Starkstrom mit 400 Volt, also absolut lebensgefährlich!

PS: Die zusätzliche Steckdose sowie das vorbereitete 5-V-Netzteil für mein „ECO Power“-Board (Arduino ESP32-kompatibel) ist im Blockschaltbild nicht vorhanden.

Und das E-Auto lädt

Die Ladeanzeige im Auto

Bei Tesla kann im Auto eingestellt werden, wann die geplante Abfahrtzeit ist. Hier habe ich inzwischen 5:00 Uhr morgens eingetragen, da der Strom („Hourly“-Tarif von aWATTar) in der Nacht bis morgens um 5:00 Uhr im Durchschnitt deutlich günstiger ist als tagsüber oder abends. Der Tesla startet die Ladung dann automatisch, sodass das Fahrzeug um 5:00 Uhr morgens geladen ist (bei uns auf 80%).

Tipp: Wenn bei Eurem E-Auto keine Ladezeit eingestellt werden kann, gibt es die Möglichkeit, per Zeitschaltuhr mit Relais die CP-Signalleitung nur zur gewünschten Zeit durchzuschalten. Kann auch bei einer beliebigen Wallbox leicht nachgerüstet werden (ähnlich wie beim Schlüsselschalter unter „Wallbox installieren“).

Zusammenfassung

Die Erdarbeiten waren umfangreich: Die Pflasterung musste aufgenommen werden uvm. Diese Arbeiten hat ein Garten- und Landschaftsbaubetrieb übernommen. Die Verlegung der Kabel, Leitungsdurchführung, Kabelkanäle, Abzweigdose in der Garage, CEE32-Buchse usw. habe ich komplett selbst gemacht. Der Anschluss in der Hauptverteilung war aus Platzgründen nicht einfach; hat ein Elektriker nach meinen Vorgaben gemacht.
Am schnellsten ging der Zusammenbau der eigenen Wallbox, das habe ich in 6 Stunden geschafft. Allerdings musste ich mir vorher sehr viel neues Wissen aneignen.
Ich bin mit der Lösung sehr zufrieden. Als nächster Schritt käme in eigener Arduino ESP32-Ladecontroller, was jedoch aktuell noch nicht erforderlich ist.
PS: Über das Laden per DC (mit noch mehr Leistung) habe ich mir auch schon Gedanken gemacht, aktuell ist der Bedarf jedoch noch nicht da. Der Stromanschluss bringt die dafür nötigen Voraussetzungen (Leistung) auch nicht mit. Die Technik einer DC-Ladestation wäre wohl eine größere Herausforderung.

Zukünftig – man darf noch Träumen

Super wäre es, wenn man den DC-Strom aus der Batterie wieder ins Netz speisen könnte, damit bei Stromengpässen 20-30% meiner Ladung wieder ins Netz fließen und bei Überkapazität im Netz das E-Auto wieder auf 80% voll geladen werden kann. Das wäre richtig netzdienlich. Aktuell kommt man bei Tesla nicht an den DC-Strom ran. Es würde mich aber nicht wundern, wenn Tesla seine Ladesteuerung verbessert, um so etwas ermöglichen, veröffentlicht das Unternehmen doch regelmäßig Hard- und Software-Updates mit vielen Verbesserungen.

Arduino Treffpunkt Hannover

Anregungen und Diskussionen zur Wallbox gerne unten im Kommentar oder persönlich bei unserem regelmäßigen Arduino-Treffpunkt in Hannover. Hiermit bedanke ich mich bei unseren Teilnehmern, welche mit Rat und Tat geholfen haben.

Weitere technische Details zur Typ-2-Signalisierung

https://www.goingelectric.de/wiki/Typ2-Signalisierung-und-Steckercodierung/?utm_source=rss&utm_medium=rss
https://de.wikipedia.org/wiki/IEC_62196_Typ_2?utm_source=rss&utm_medium=rss

Links

ABB S203-B32 Leitungsschutzschalter

https://www.elektroversand-schmidt.de/In-der-Verteilung/Leitungsschutzschalter/ABB/B-Charakteristik-3-polig/ABB-S203-B32-Leitungsschutzschalter-32A-3-polig.html?utm_source=rss&utm_medium=rss

Typ-B FI-Schalter

https://www.ebay.de/itm/Fi-TYP-B-Fi-Schutzschalter-RCD-E-Auto-Wallbox-63A-Allstromsensitiv-Typ-A-EV/233680358436?utm_source=rss&utm_medium=rss
https://www.aliexpress.com/item/33020060308.html?utm_source=rss&utm_medium=rss

ABB FI-Schutzschalter F204A-40/0.03, 40 A – 30 mA

https://www.elektroversand-schmidt.de/In-der-Verteilung/FI-Schalter/ABB-FI-Schutzschalter/ABB-FI-Schutzschalter-F204A-40-0-03-40A-30mA-4polig.html?utm_source=rss&utm_medium=rss

EATON Z-SCH230/40-40 – Installationsschütz, 230 VAC, 4S, 40 A

https://datasheet.eaton.com/datasheet.php?model=248852&locale=de_DE&utm_source=rss&utm_medium=rss

Installationsschütz 32 A / 4 Schließer

https://www.evse-wifi.de/produkt/installationsschuetz-32a-4-schliesser-22kw-2te/?utm_source=rss&utm_medium=rss

Heidelberg Wallbox

https://wallbox.heidelberg.com?utm_source=rss&utm_medium=rss

EVSE-Ladecontroller

https://www.evse-wifi.de/produkt/evse-din-ladecontroller/?utm_source=rss&utm_medium=rss

Stromzähler

https://www.ebay.de/itm/NEU-Wechselstromzähler-Digitaler-Stromzähler-GEEICHT-5-100-A-Für-DIN-Hutschiene/373279795455?utm_source=rss&utm_medium=rss

Verteilerkasten

https://www.ebay.de/itm/Sicherungskasten-Feuchtraumverteiler-Verteilerkasten-UP-Aufputz-IP65-1000V/253847874917?utm_source=rss&utm_medium=rss

Crimpzange mit Aderendhülsen

https://www.amazon.de/-/en/gp/product/B073TZ5BBG/ref=ppx_yo_dt_b_search_asin_title?utm_source=rss&utm_medium=rss

*Info: In diesem Beitrag verweisen orangefarbende Links auf Affiliates.
Viewing all 43 articles
Browse latest View live