Versuche mit ESP-xx

Begonnen von fermoll, 25 Dezember 2015, 11:54:38

Vorheriges Thema - Nächstes Thema

fermoll

Wie im Strang http://forum.fhem.de/index.php/topic,45310.0.html angekündigt , möchte ich hier meine Erfahrungen mit dem ESP-8266 in seinen verschiedenen Erscheinungsformen schildern und mit AVR-Net-IO und Arduino vergleichen (s.Bild).
Zum Ausprobieren stehen mir folgende Boards zur Verfügung:
1  Locutus BreakoutBoard :
1.1  Benötigt einen FTDI -Adapter zum Flashen und Programmieren. Treiber muss installiert werden bei Windows
1.2  Verbaut ist der ESP-03 mit 512k Flash und 21k Heap
2  LoLin Breakoutboard V.3
2.1  FTDI und Spannungsversorgung ist vorhanden . Treiber für CH340 muss installiert werden.
2.2  ESP-12e mit 4 mB Flash u.31kB Heap
3  Doit V3 (Smartarduino)
3.1  FTDI und Spannungsversorgung ist vorhanden . Treiber für CP2102 muss installiert werden.
3.2  ESP-12e mit 4 mB Flash u.wahrscheinlich ~31kB Heap. Im Moment wird auf der Webseite schon der Nachfolger ESP-12f angeboten.
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

fermoll

  1  Flashen

In Anbetracht der rasanten Entwicklung des ESP8266 im letzten Jahr hinkt die Versorgung mit Software etwas nach. Da ich mich mit meinen Ausführungen überwiegend mit dem NodeMCU beschäftigen  möchte, da mit der Firmware z.B. auch dasLocutus Board versorgt werden kann,  werde ich mich darauf konzentrieren.

1.1  Verwendung fertiger bin-Files

https://github.com/nodemcu/nodemcu-firmware/releases

Für den LoLin, die anderen kommen noch, habe ich die neueste Version verwendet. Für Locutus Boards die Version 0.9.5_20150318 , da diese um 30kB kleiner war. Wenn man auf Fließkommazahlen verzichten kann, kann man die Integer-Version verwenden, was auch nochmal Flash Speicher, aber auch Heap spart.

1.2  Man kann, wenn man kann, die Firmware aber auch selbst erstellen. Es gibt aber auch eine Seite, die das erledigt. Beides  habe ich aber noch nicht ausprobiert.
http://nodemcu-build.com/index.php

2  Programmieren

2.1  Wenn man die Firmware aufspielt, wird der Chip mit einem LUA-Interpreter, Micro Python-Interpreter oder der Möglichkeit ausgestattet, über AT-Befehle mit dem Netz in Verbindung zu treten.

2.2  Für Arduino Freunde ist sicher die Möglichkeit interessant, die Arduino IDE verwenden zu können.

2.3  Um die Programmiermöglichkeiten zu verstehen ist Kolbans- Buch vom ESP m.E. unverzichtbar. Es ist noch? Freeware und wird regelmäßig an die Entwicklung angepasst.
http://neilkolban.com/tech/esp8266/
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

fhainz

#2
http://nodemcu-build.com

Hier kannst du dir eine custom firmware builden lassen. Die benötigten Module kannst du per checkbox aktivieren. Die Firmware kommt dann als Download Link per Mail.

Grüße


Edit:
Ich hätte vielleicht deinen kompletten Beitrag lesen sollten :)

fermoll

ZitatIch hätte vielleicht deinen kompletten Beitrag lesen sollten
Jau!
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

fermoll

#4
Nach der Installation der Firmware muss entschieden werden, wie die Verbindung zwischen PC und dem Chip erfolgen soll.
Es stehen für die LUA-Version zwei Möglichkeiten zur Auswahl:
1. LUA-Loader
1.1  Download:   https://github.com/GeoNomad/LuaLoader
1.2  s. Bild
2. Esplorer
2.1  Download:   http://esp8266.ru/esplorer/#download
2.2  s. Bild
3. Decoda - LUA_IDE und Debugger (keine Verbindung zur NodeMCU)
Die Verwendung ist sicher bei der Entwicklung sinnvoll.
3.1  Download:  https://github.com/unknownworlds/decoda
3.2  Bild

Für die Programmierung ist die NodeMCU-Api von großer Bedeutung, die man hier findet:
https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en
Die sollte man regelmäßig ansehen, da sie wohl immer aktualisiert wird.
Momentan version 1.4.0 2015-12-12, also vom 12. Dezember.
Mit dem Lualoader kann man ohne Programmieren eine Verbindung mit dem WLAN herstellen und testen.
PS:
Wie aus dem Bild 4 hervorgeht, stehen zur Programmierung 33 kB Heap und 3038kB Flash zur Verfügung.
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

fermoll

#5
Was soll mit dem ESP gesteuert werden?

1. Wintergarten

1.1   Temperatur , Luftfeuchtigkeit messen

1.2  Keimkästen
(Es werden zwei benötigt, die über einer Heizung angeordnet sind  und mit Heizdrähten bei Bedarf zusätzlich beheizt werden sollen. Bei Bedarf soll auch eine zusätzliche Beleuchtung eingesetzt werden, um z.B. einen Langtag zu simulieren)

1.2.1  Temperatur in den Heizkästen prüfen
1.2.2  Heizung steuern
1.2.3  Helligkeit prüfen
1.2.4  Belichtung steuern

2. Zisterne

2.1  Wasserstand bestimmen
2.2  Wassermenge berechnen
2.3  Trinkwassereinspeisung bei leerem Tank steuern

Als erstes werde ich mich mit der Temparaturmessung mit 1-Wire beschäftigen. Es geht vor allem auch darum, wie verschiedene Sensoren am Bus abgefragt werdeb können. Das müsste meiner Recherche nach mit einem GPIO zu machen sein.
Ich werde also als erstes einen DHT22 und einen DS18S20 ausprobieren.
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

fermoll

Mittlerweile habe ich herausgefunden, dass es zwei Probleme gibt:

1. Die DHT- und die anderen 1-wire Sensoren verwenden unterschiedliche Protokolle. Deshalb sind für die parallele Verwendung auf der NodeMCU zwei GPIO's nötig, die unterschiedlich zu programmieren sind.

2.  Ich bin mir nicht sicher, ob die von mir geflashte Firmware vom 4.7.2015 die DHT Sensoren anspricht. Deshalb habe ich eine neue float.bin erstellen lassen, in der DHT enthalten ist.
http://nodemcu-build.com/index.php
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

hexenmeister

Zitat von: fermoll am 30 Dezember 2015, 16:25:41
1. Die DHT- und die anderen 1-wire Sensoren verwenden unterschiedliche Protokolle.
DHT ist kein 1wire-Device. Auch wenn intern ein DS18b20 stecken soll. Es verwendet lediglich auch nur eine Datenleitung. ;)
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

fermoll

Deshalb ist wohl ein extra GPIO für jeden DHT notwendig, da anders als bei 1-wire die Chips keine eigene Kennung haben.

Ich habe bisher mehrere Probleme festgestellt:

1.  Ich probiere die LoLin MCU an einem Acer Aspire Swiitch 10 aus, mit Windows 8.1. Dabei fubnktioniert Esplorer, aber Lualoader nicht. Letzterer lässt sich nicht auf den COM3 einstellen, auf dem der ch340 Treiber läuft. Es hat mal kurze Zeit funktioniert, als ich den FTDI Treiber entfernt hatte. Aber nach einem Windows Update geht das nicht mehr. Am Vista- Rechner funktioniert der LuaLoader ohne Probleme. Das muss wohl an Windows 8.1 liegen.

2. Ich habe den Sketch von Locutus zusammen mit dem von ihm veröffentlichen bin-File verwendet. mit einer neuen Ausgabe ist mir das bisher nicht gelungen. Da werde ich weiter testen.
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

Pf@nne

Moin,

wenn du "erstmal" nur starten willst dann nimm doch mal den Sketch aus dem ersten Beitrag.
http://forum.fhem.de/index.php/topic,46486.0.htm
Damit läuft der DS18B20 erstmal.

Der DHT22 wäre dann nur eine weitere Library und ein paar zusätzliche Zeilen.


Guten Rutsch....
FHEM auf: DS415+ (Master), Raspberry Pi 2

fermoll

#10
Hallo Pf@nne

Ich verfolge eine ähnliche Strategie wie du im Link.
Ich verwende NodeMCU's- insgesamt werden es vier sein, im Moment nur der LoLin- mit dem LUA-Interpreter. Das hat mehrere Gründe:

1. Es handelt sich um ein abgeschlossenes System. Ich brauche keinen extra FTDI. Mit dem LuaLoader kann ich auch schon Sachen ausprobieren, ohne Hardware zu installieren. Die Skripte lassen sich recht einfach austauschen.

2. Zum Testen kann ich flashs erstellen lassen, bei denen Debug eingeschaltet ist:
http://nodemcu-build.com/index.php

3. Beim Herumspielen mit Locutus DHT-Beispiel ist mir aufgefallen, dass 6k Heap verbraucht. 24k waren am Anfang vorhanden.
    Da ich Anfang der achtziger Jahre auf einem Apple II mit Pascal angefangen habe, tendiere ich zu strukturierter Programmierung, vor allem auch mit lokalen und globalen Variablen. Was mir in den letzten Tagen auch aufgefallen ist, ist die Erkenntnis dass je nach Flash unterschiedliche Heap-Größen zur Verfügung stehen. Das bedeutet für mich, dass bei der Programmierung die Speicherverwaltung eine wichtige Arbeit darstellt.
Ich werde mich also in den nächsten Wochen wieder intensiv mit Programmierung auseinendersetzen, mit LUA und C (++) und anderen.

4. Eine andere Baustelle ist die Anbindung der NodeMCU an das Netzwerk. Über dieses Problem steht sehr viel in Neill Kobans Buch.
http://neilkolban.com/tech/esp8266/

Ich werde also viel zu lesen haben.

Der Vorteil dieses Systems auch aus pädagogischen Gründen ist, dass man konkrete Aufgaben ohne großen apparativen Aufwand abarbeiten kann. Das wäre sicher was für den Informatik Unterricht
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

fermoll

Hier ist noch ein Link zur LUA-Dokumentation auf Deutsch: http://lua.coders-online.net/Content/Show/1 und das Lua 5.0 Reference Manual: www.lua.org/ftp/refman-5.0.pdf
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

Pf@nne

Moin fermoll,

frohes neues.....

ich würde gerne bei der Entwicklung mit Arduino und C++ bleiben.
Mit Lua würde ich nur wieder eine neue Baustelle aufmachen.....

Aber es schadet ja überhaupt nichts wenn der ESP826 in verschiedene Richtungen "auseinandergenommen" wird.

Momentan nutze ich einen selbstgeschriebenen Sketch, würde mittelfristig aber auch gerne ESPEasy nutzen.
FHEM auf: DS415+ (Master), Raspberry Pi 2

fermoll

Ich habe im letzten Beitrag schon angedeutet, dass ich das Ganze auch unter pädagogischen Gesichtspunkten sehe. Ich habe zwei Enkelkinder, die schon oder sicher bald Informatik in der Schule haben (werden). Da bietet es sich an, an einem konkreten Projekt Erfahrung zu sammeln. Zum anderen soll LUA Pascal ähnlich sein. Das war die Sprache, die  bei meiner Ausbildung zur Lehrbefähigung Informatik in den achtziger Jahren verwendet wurde. Zum anderen ist LUA auch den C - Sprachen sehr ähnlich.
Vor allem aber ist die direkte Anwendung des Interpreters zum Ausprobieren interessant, vor allem im Zusammenhang mit dem Debugger, der in der Firmware eingeschaltet werden kann. Im Umgang damit muss ich aber noch Erfahrung sammeln.

Nebenbei bemerkt habe ich den LoLin jetzt auch auf meinem Aspire Switch 10 mit Win 8.1 zum Laufen gebracht. Es musste im Gerätemanager der COM-Port auf den des LuaLoader umgestellt werden. LoLin läuft jetzt mit LuaLoader und Esplorer.
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB

fermoll

Leider bin ich im Moment mit meinen Recherchen etwas eingeschränkt, da ich eine Kur mache und keinen Zugang zu einem Netzwerk außer Internet habe. Auch steht die Gesundheit etwas im Vordergrund. Im Moment kämpfe ich mich durch Neill Kolbans Buch. Das ist vor allen Dingen  für C(++) oder Arduino Programmierer eine unerschöpfliche Quelle. Er scheint auch viel Ahnung von WiFi zu haben.
Vor allem hat mich jedoch beeindruckt, was er zu RAM-Speicher - Heap beim ESP schreibt. Es scheint wohl besonders wichtig zu sein,  beim Programmieren auf die richtige Verwaltung Wert zu legen. Das erinnert mich an meine ersten Schritte auf dem Apple II in den achtziger Jahren.
Dann habe ich noch eine interessante Seite gefunden - bei der Fa. habe ich drei NodeMCU geordert.
https://smartarduino.gitbooks.io/development-of-nodemcu/content/section_3_program_debug.html
Den Decoda habe ich installiert und oh Wunder, wenn ich ein Lua File im Lualoader aufrufe, wird das in dem Programm geladen. Wie man damit umgeht, muss ich allerdings noch herausfinden . Wie und warum die Zusammenarbeit zwischen den Programmen erfolgt, weiß ich allerdings nicht
FHEM auf Synology Ds 1621+ in Docker, . 2x Max!Cube, Debmatic auf RPI 3  mit HM-MOD-RPI-PCB , CUNO mit 35cm Antene, 2x HM-LC-Bl1PBU-FM, HC-LC-Bl1-FM
22 HT u. HT+, Fensterkontakte, S300TH, EM 100-GZ(S).
Diverse Wemos mit ESPEasy. 2. RPI3+, 1 RPI 4 8GB