ESP8266: Schritt für Schritt zur Sensor-Node

  • Hallo zusammen,
    bei mir liegen seit längerem einige ESP8266-Module in verschiedenen Ausführungen ( ESP-01, ESP-12, ESP-12E ) rum. Diese versuche ich derzeit als Remote-Sensor-Nodes einzusetzen und dachte mir, das könnte einige Benutzer hier ebenfalls interessieren. Deshalb habe ich mich entschlossen, die Realisierung in allen Schritten hier zu veröffentlichen.


    Vorarbeiten:
    Die Programmierung der ESPs erfolgt zunächst ausschliesslich in der Arduino-IDE mit der entsprechenden Erweiterung für die ESP8266 Module. Um die ESP-Boards in die IDE zu integrieren folgt ihr am besten -> dieser Anleitung <-.
    Ich kann zwar derzeit nicht sagen, inwieweit sie noch zum Einsatz kommen, es kann aber nicht schaden, wenn ihr Euch zusätzlich noch den -> ESP8266-Esplorer <- sowie die -> nodemcu-Firmware <- installiert.
    Softwareseitig wäre das zunächst mal alles.
    Was jetzt noch benötigt wird ist irgendein Aufbau zum Flashen und Testen der ESPs.
    Da ich im ersten Schritt ( dazu komme ich später noch ) erst mal die ESP-01 Module einsetzen will, reicht hier etwas ganz Einfaches.
    In diesem Zusammenhang möchte ich ein bisschen Werbung für zwei unserer Foren-Nutzer mache: Neueinsteiger und joh.raspi.
    In -> Neueinsteigers Projekt-Liste <- findet ihr z.B. einen Programmer für die ESPs, den ich Euch wärmstens empfehlen kann. Ausserdem haben er und auch -> joh.raspi <- kleine Boards direkt zur Verwendung der ESPs in einem Projekt anfertigen lassen. Nehmt da einfach mal Kontakt auf ... ich finde, das lohnt sich wirklich.


    Es reicht natürlich auch ein Breadboard. Da aber die ESPs nur schwierig bis gar nicht auf einem Breadboard steckbar sind und die Anschlüsse mit Strippen verbunden werden müssten, habe ich mir für den Anfang einen kleinen Adapter aus einer 3er Streifen-Raster-Platine gebastelt. Dazu habe ich einfach eine 8 pol. Steckbuchse aufgelötet und die Anschlüsse auf eine Steckerleiste gelegt.
    Noch einem PL2303 USB-Adapter und evtl. einen Levelshifter dazu und fertig ist das Programmiergerät. Zum Flashen einfach vor dem Einschalten des ESP GPIO0 mit GND verbinden. Dadurch bootet der ESP im UPLOAD-Modus und ihr könnt Euren sketch hochladen. Danach ESP ausschalten, GPIO0 abstecken, das Modul wieder einschalten und Euer sketch sollte laufen.
    Achtung! Auch wenn der PL2303 mit 3V3 Pegeln arbeitet ... wenn ihr den USB-Adapter in Euren PC steckt kann an den stromführendenen zwei Leitungen ( meist rot und schwarz ) eine Spannung von 5V anliegen. Also erst messen, dann stecken, denn die ESPs sind nicht 5V tolerant. Lieber einen Levelshifter verwenden ... dann seid ihr auf alle Fälle auf der sicheren Seite.
    Weitere, ausführliche Informationen zu den ESPs findet ihr über -> diese Linksammlung <- hier im Forum.


    Wie geht's jetzt weiter?
    Nun, in einem ersten Schritt würde ich Euch empfehlen zuerst mal alles so zu verbinden und einzurichten, dass ihr dem ESP-Modul eine Reaktion entlockt. Dazu reicht es, das Modul mit 3V3 zu versorgen, den CH_PD-Pin auf HIGH (3V3) zu legen und die Rx und Tx Anschlüsse des Moduls mit Tx und Rx des PL2303-Adapters zu verbinden.
    Achtung! Nicht vergessen: Rx und Tx kreuzen und GND des PL2303 mit GND des ESPs zu verbinden!
    Eine einfache Skizze einer Adapterplatine findet ihr im Anhang (ESP_SensorNode-ESP01_Steckplatine.jpg).
    Über o.g. Linkliste, hier im Forum und auch in der Arduino-IDE findet ihr genügend Beispiele, um Euch mit den ESPs in Verbindung mit der Arduino IDE vertraut zu machen.
    Achtung! Ich habe -> mindestens eine Anleitung <- gefunden, bei der der GPIO0 über einen Pulldown-Widerstand auf GND geschaltet war. Das ist keine so clevere Idee, weil der ESP, wie weiter oben schon erwähnt, in den UPLOAD-Modus geht, wenn der GPIO0 beim booten auf GND liegt.


    Schliesslich vielleicht noch zwei Anmerkungen in eigener Sache: das ist aktuell alles in Arbeit. Es kann also durchaus mal eine Weile dauern, bis hier wieder was Neues hinzukommt. Ausserdem möchte ich noch darauf hinweisen, dass ich die Realisierung unter Ubuntu durchführe. Ich habe auch keinen Windows-Rechner mehr im Betrieb. Sollten in diesem Zusammenhang Probleme auftauchen kann ich dahingehend vermutlich leider nichts Produktives beitragen. Aber es wäre nett, wenn jemand von den Interessierten die Fallstricke unter Windows und deren Umgehung aufzeigen könnte.


    Weiteres Vorgehen:
    Ich werde hier, in diesem Beitrag, nach und nach den Funktions-Umfang der einzelnen Realisierungs-Stufen definieren und deren Durchführung dokumentieren. Sourcen und Schaltpläne findet ihr auch -> hier in meinem Repository <- auf github.
    Evtl. anfallende Schaltpläne, sketches und andere Programm-Sourcen werden ebenfalls hier, in diesem Beitrag, nach und nach hinzugefügt, ergänzt oder geändert, so dass ihr mit diesen Informationen immer auf dem aktuellsten Stand seid, egal wie weit das Ganze fortgeschritten ist.
    Die folgende Auflistung wird ebenfalls in nächster Zeit nach und nach erweitert.


    Definition der Realisierungs-Schritte:
    [hr]
    [an=Schritt_1]

    Schritt 1


    [/an]

    betroffene Hardware: ESP8266-01


    unterstützter Sensor: DS18B20


    geplante Funktionalität: Sensorwerte ermitteln und auf "eigener Wegseite" ausgeben


    Status: erledigt


    Beschreibung


    Das ESP-Modul startet im Client-Modus und verbindet sich mit einem existierenden WLAN. Anschliessend wird ein Webserver gestartet. Im 5-Sekunden-Takt wird nun auf einer ESP-internen "Webseite" die Temperatur eingetragen und diese bei Aufruf der Server-URL ausgegeben.
    Im Schaltbild ist der DS18B20 als wasserdichte Version mit vier Anschlüssen dargestellt. Mir ist bisher noch keiner mit vier Anschlüssen untergekommen wobei der vierte lt. Bauteile-Bibliothek für die Abschirmung vorgesehen ist und ich ihn deshalb im Anschlussplan einfach ignoriert habe.
    Achtung bei den Kabelfarben dieser vorgefertigten Sensoren. Die sind nicht immer gleich oder verlässlich. Immer vor dem Anschliessen vergewissern, welche Farbe zu welchem Anschluss gehört. Ich hab' hier z.B. welche, bei denen ist grün = GND und das Datensignal = gelb.
    Ansonsten habe ich versucht die Darstellung so verständlich wie möglich zu erstellen:
    Datenpin Sensor --> GPIO2 des ESP
    Datenpin Sensor --> pullup 4k7 auf 3V3
    GND Sensor --> GND ESP
    Vcc Sensor --> 3V3


    Das mit den 3V3 hab' ich extra noch verifiziert ... der Sensor tut da klaglos seinen Dienst.
    Trotzdem würde ich dazu raten, dass ihr Euch für spätere Erweiterungen der Schaltung z.B. -> so eine Breadboard-Spannungsversorgung <- zulegt, die sowohl 5V als auch 3V3 zur Verfügung stellt.
    [hr]
    [an=Schritt_2]

    Schritt 2


    [/an]

    betroffene Hardware: ESP8266-01


    unterstützter Sensor: DS18B20


    geplante Funktionalität: Webserver-Funktionalität erweitern


    Status: erledigt


    Beschreibung


    Einige Einstellungen, die derzeit als Konstanten fest im Programm definiert sind, sollen als Variable über Formulare des Webservers konfiguriert werden können. Diese Variablen sollen zudem im EEPROM des ESP hinterlegt werden, so dass sie bei jedem Neustart/Reset ausgelesen und damit verfügbar sind.
    Dazu wird ein virtuelles Formular "/admin" ausgegeben, das, wie allgemein üblich, mittels eines submit-Buttons abgesendet wird.
    Einstellbar werden zunächst die SSID sowie das Passwort zum Verbinden mit dem WLAN sein.
    Ausserdem soll eine 404-Meldung ausgegeben werden, wenn eine unbekannte URL ( also weder / noch /admin ) aufgerufen wird.


    Ich habe jetzt die ESP8266WebServer-Klasse für den WWW-Server genommen. Die ist mir einfach sympathischer, weil man ganz einfach Handler für jede "virtuelle Seite" definieren kann ...
    Ein weiterer Vorteil ist, dass automatisch eine 404-Rückmeldung für alle "Seiten", für die kein Handler definiert ist, zurückgeliefert wird.
    Der Server kann nun unter der URI http://IP.DES.ESP.MODUL bzw. http://IP.DES.ESP.MODUL/ aufgerufen werden und gibt dann die aktuelle Temperatur des Sensors aus.
    Ich habe da jetzt (noch) keine Abfrage auf Lesefehler des Sensors ( Werte 85.0 bzw. -127.0 ) eingebaut. Die 85.0 kommt z.B. beim ersten Lesen des Sensors. Es dürfte aber für Euch kein Problem sein, diese Fehlwerte zu unterdrücken.
    Eine weitere gültige Server-URI ist http://IP.DES.ESP.MODUL/admin. Hier wird ein Formular mit zwei Eingabefeldern ( SSID und PASSWORD ) ausgegeben, das mit dem Submit-Button abgesendet werden kann.
    Die Felder sind mit dem Inhalt der Variablen ssid und password vorbelegt und werden nach dem Absenden im EEPROM gespeichert.
    Dazu sind ein paar Funktionen zum Handling des EEPROM dazugekommen.
    Im Handler für die Admin-Seite werden die Eingaben ins EEPROM übertragen. Eine wichtige Funktion ist eeValidate(). Damit wird an die erste Stelle des EEPROM ein "magisches" Byte geschrieben das als Kennzeichen für einen gültigen Inhalt des EEPROM steht.
    Wird beim Aufruf von setup() dieses magische Byte erkannt ( isValid() ), dann werden die ssid und das password aus dem EEPROM gelesen.
    Achtung! Im Moment werden diese Werte in die Variablen n_ssid und n_password eingelesen. Um die "echten" Variablen zu versorgen, einfach diese austauschen.
    [hr]
    [an=Schritt_3]

    Schritt 3


    [/an]

    betroffene Hardware: ESP8266-01


    unterstützter Sensor: DHT22


    geplante Funktionalität: Anbindung an ein Datenhaltungs-System


    Status: erledigt


    Beschreibung


    Der ESP kann nun eine WEB-API, und zwar die von EMONCMS, bedienen. Dazu wird ein weiterer Handler für "virtuelle Seiten" aktiviert. Die zugehörige Server-URI ist http://IP.DES.ESP.MODUL/emoncms.
    Ausserdem können die Parameter für das EMONCMS jetzt über die /admin-Seite eingegeben werden. Diese werden mit den anderen Einstellungen ebenfalls im EEPROM gespeichert und bei einem restart des Modul aus dem EEPROM gelesen. Die Logik mit dem "magischen Byte" aus Schritt 2 hat sich nicht geändert.
    Achtung! Derzeit werden die Variablen, die den Zugriff auf das EMONCMS ermöglichen, aus dem EEPROM in Zwischenvariablen gelesen (siehe auch Schritt 2). Wie auch im vorigen Schritt beschrieben müssen zum Aktivieren der echten Variablen die mit einem führenden "n_" versehenen Zwischenwerte gegen die Originale ausgetauscht werden.
    Um die API-Funktionalität anschliessend zu aktivieren müssen die Werte emoncmsReadApiKey, emoncmsWriteApiKey, usw. bis zu emoncmsUrl und emoncmsFeedFmt mit den eigenen, passenden Werten belegt werden.
    EMONCMS liefert einen String im JSON-Format als Status der Operation zurück. Dieser wird mit einem Parser gelesen und ausgewertet. Es erfolgt allerdings keine Aktion aufgrund des Rückgabe-Wertes. Es ist aber kein Problem da etwas einzubauen.


    Als weiteres Feature ist die Unterstützung eines DHT22-Sensors dazugekommen.
    Der Sensor wird statt des DS18B20 an GPIO2 angeschlossen und, wie vorher der DS18B20, zyklisch in einstellbaren Intervallen ausgelesen.
    Ich habe wieder eine einfache Anschluss-Skizze in den Anhang gepackt.
    [hr]
    [an=Schritt_4]

    Schritt 4


    [/an]

    betroffene Hardware: ESP8266-01


    unterstützte Sensoren: DHT22/DS18B20


    geplante Funktionalität: Überarbeiten


    Status: erledigt


    Beschreibung


    Der Source-Code ist jetzt übersichtlicher, ausführlich dokumentiert und komplett per #define-Macros konfigurierbar.
    Es werden jetzt alle Variablen für die es sinnvoll erscheint ins EEPROM gespeichert und beim Start ausgelesen. Lediglich die SSID und das Passwort werden nach wie vor in temporäre Variablen geschrieben damit man mehr Freiheiten beim Herumspielen hat.
    Eine CRC32-Funktionalität ist ebenfalls dazu gekommen. Die wird später für die Verifizierung u.a. der EEPROM-Daten verwendet.
    Ausserdem sind Vorbereitungen zur Anbindung an SHC durchgeführt worden. Die Daten werden ebenfalls im EEPROM gespeichert.
    Hinzu gekommen ist eine "virtuelle" Tabelle, in der die IDs, Feeder-Ids und Namen von derzeit max. 10 DS18B20 Sensoren abgespeichert werden können.
    Diese Tabelle kann bei Bedarf durch einen #define in der Größe verändert werden. Diese Tabelle liegt wiederum im EEPROM.
    [hr]
    [an=Schritt_5]

    Schritt 5


    [/an]

    betroffene Hardware: ESP8266-01


    unterstützte Sensoren: DHT22/DS18B20


    geplante Funktionalität: Überarbeiten und um BMP085/BMP180 erweitern


    Status: erledigt


    Beschreibung


    Ich habe jetzt die Basis-Funktionalität zur Unterstützung von BMP085/BMP180 Sensoren implementiert und getestet. Das funktioniert mit beiden Typen von Sensoren.
    Diese Sensoren verwenden I2C zur Kommunikation. Am ESP-01 haben wir nur GPIO00 und GPIO02. Diese können dazu verwendet werden. Das ändert nichts an der speziellen Funktionalität von GPIO00, der zum Flashen auf GND gelegt werden muss.
    Es ist nur zu beachten, dass die Wire-Library mit GPIO00 als SDA- und GPIO02 als SCL-Pin oder vice versa) vor der ersten Verwendung initialisiert wird.
    Desweiteren ist mal die Grundlage für die Verwaltung der DS18B20-Sensoren dazugekommen. Es wird eine Formular-Seite erzeugt, in der es möglich ist, den Sensoren Namen und IDs zu geben.
    Es werden allerdings noch keine Daten abgespeichert. Hier fehlt mir im Moment ein Stück Logik und zwar das Zusammenspiel von vorhandenen und im EEPROM gespeicherten Sensoren. Das muss im nächsten Stück noch gelöst werden.
    Eine "Helper-Klasse" Logger dient jetzt zur Ausgabe von Fehlern und/oder Hinweisen. Sie erhält als Argument beim Initialisieren ein Stream-Objekt das zur Ausgabe verwendet wird. Der Aufruf versteht die rudimentären C-Formatangaben ( printf-ähnlich wie %d, %l, %c, %s ) und verarbeitet, im Gegensatz zu den print()-Aufrufen der Arduino-IDE, auch mehrere Argumente. Das Ganze ist in einem eigenen ZIP-File (SimpleLog.zip) und muss in Eurem sketchbook-Folder unter libraries entpackt werden.
    [hr]
    [an=Schritt_6]

    Schritt 6


    [/an]

    betroffene Hardware: ESP8266-01


    unterstützte Sensoren: DHT22/DS18B20/BMP085/BMP180


    geplante Funktionalität: Listen-Erweiterung/Handling HTML-Seiten


    Status: in Vorbereitung


    Beschreibung


    DS18B20 Formular redesignen
    Zusammenhang physisch vorhandene und im EEPROM gespeicherte DS Sensoren sowie der Eingabemaske mit Logik füllen.
    Zusätzliche interne Variablen für Lese-Intervalle, eine statische IP, eine Node-Id und einen Node-Namen statt Konstanten
    Admin-Eingabemaske um obige Felder erweitern
    Zusätzliche Felder im EEPROM ablegen und daraus lesen
    Pushbullet Benachrichtungen versenden
    [hr]



    History:
    09.02.2016 Erste Version veröffentlicht
    10.02.2016 Version aus Schritt 2 fertig (ESP8266_SensorNode_DS18B20_EE.zip).
    12.02.2016 Version aus Schritt 3 fertig (ESP8266_SensorNode-Step3.zip).
    27.02.2016 Version aus -> [al=Schritt_4]Schritt 4[/al] <- fertig (ESP8266_SensorNode-Step4.zip).
    03.03.2016 Version aus -> [al=Schritt_5]Schritt 5[/al] <- fertig. Auf -> Github <- und hier aktualisiert (ESP8266_SensorNode-Step5.zip).
    [hr]


    Fragen oder Probleme entweder als neues Thema in diesem Subforum, oder, falls es konkret mit diesem Beitrag zu tun hat, natürlich hier als Kommentar veröffentlichen.


    Über die weiteren Schritte werde ich Euch demnächst hier informieren. Bis dahin erst mal viel Erfolg und Spass beim Ausprobieren. Ich hoffe, dass dieser Thread für den einen oder anderen hilfreich ist,
    -ds-

  • Oh prima! Basteileien mit dem ESP8266 finde ich immer interessant!
    Wer sich selber eine Lösung zur Programmierung auf dem Breadboard aufbauen möchte oder einfach nur den ESP8266-01 auf ein Breadboard setzen möchte, der kann sich bezüglich eines passenden Adapters gerne bei mir melden. Ein paar der Platinen habe ich noch über. http://www.forum-raspberrypi.d…adboard-adapter?pid=19791

  • Find ich super :thumbs1: und werd dich unterstützen soweit es mir möglich ist. :)
    Ich werd die Tage auch noch einen einfachen (NodeMCU) Temperatur Logger vorstellen. Um mal kurz das imho wichtigste zu spoilern:
    Hardware besteht aus einem ESP(-01), DS18B20 und einem MCP1702. Der Stromverbrauch im Standby(DeepSleep) beträgt 37µA. Ist also auch für den Batteriebetrieb geeignet. Wie lang das aber schlussendlich hält hängt hauptsächlich vom Log-Interval ab.

    DON'T PANIC!

  • Ich wünschte sie würden mal ein 01er Modul rausbringen bei dem sich das über eine Lötbrücke erledigen lässt.
    Dass nur die wenigsten am Modul rumlöten wollen ist mir klar, deshalb die 01 in Klammer. Mit einem 12(E)/07er (und eigentlich auch jedem anderen) funktioniert das ja genau so. :)


    DHT22 hab ich auch schon getestet. Hat mir der Lib von Adafruit auf anhieb funktioniert.

    DON'T PANIC!

    Edited once, last by joh.raspi ().

  • Servus Zen,


    ... mit dem DHT22... ich brauche die Feuchtemessung...
    .... und ohne Resetbrücke :angel:
    ...


    hm ... soll ich mal einen DHT22 als nächstes einbauen? Hab' eh gerade wieder einen Schritt abgeschlossen.
    Und das mit der Resetbrücke ??? Bezieht sich wohl eher auf joh's post, oder?


    cheers,
    -ds-


  • hm ... soll ich mal einen DHT22 als nächstes einbauen? Hab' eh gerade wieder einen Schritt abgeschlossen.
    Und das mit der Resetbrücke ??? Bezieht sich wohl eher auf joh's post, oder?


    Einen ESP8266-01 mit DHT22 + StepDown hab ich hier liegen/laufen, soweit ok.
    Mein Problem ist, dass er eigendlich nur alle 15min eine Messung machen soll und dann "pennen" kann, sonst frisst er mir die Akkus innerhalb von 3-4 Tagen leer (ich schrub schon in dem anderen Thread ausführlich drüber, hast du sicherlich gelesen :) )


    Diese "Resetb(k)rücke" 'Drahtverbindung direkt vom Chip an die Resetleitung' ist abartig, letztlich läuft es beim -12 ja genau so... aber eben durch eine Pin-Brücke...


    Mich interessiert eigendlich eher die SW-Lösung:
    Abschaltung der wesentlichen Stromverbaucher, meinetwegen auch ab in den SleepMode meiner Wahl und nach x'tausend millisec wacht er wieder auf und macht weiter (nicht Reset!).
    (ja, man kann States in den EEPROM retten... ich weiss... :wallbash: ) :lol:


    Hab da bisher nix brauchbares gefunden, stfw über Stunden... irgendwie werde ich den Eindruck nicht los, dass das nicht vorgesehen ist... obwohl die State-Diagramme des ESP etwas anderes erzählen.
    :s :s :s


    :helpnew:


    das Zen
    Automatisch zusammengefügt:[hr]
    jetz mach ich dir deinen schönen Thread mit meinem Gelaber kaputt *sry*

  • Ja hey,


    jetz mach ich dir deinen schönen Thread mit meinem Gelaber kaputt *sry*


    das ist schon ok ... dazu ist er ja u.a. da, um auch mal ein paar Anregungen "einzukippen".
    Ich werd' sicherlich einen (Tief-)Schlaf-Modus auch mal einbauen ... aber im Moment ist das "Grobe" wohl erst mal wichtiger :)
    Ich denke mal joh oder Neueinsteiger haben da bestimmt den einen oder anderen Trick auf Lager.


    Also, wenn Du (oder jemand anderes) noch eine Idee/einen Wunsch für dieses "Projekt" hat ... immer her damit ;)
    Allerdings wird der ESP-01 wohl demnächst gegen einen ESP-12 oder ESP-12E ausgetauscht. Mit den beiden einzigen I/Os ist halt ziemlich schnell Ende Gelände ...


    Ach ja: hast Du schon mal über einen Software-Reset ( Web-Server mit Submit-Button und z.B. einem Input für eine Zeitverzögerung ) nachgedacht?


    cheers,
    -ds-


  • Allerdings wird der ESP-01 wohl demnächst gegen einen ESP-12 oder ESP-12E ausgetauscht. Mit den beiden einzigen I/Os ist halt ziemlich schnell Ende Gelände ...


    Suche seit gestern einen preiswerten und schnelle Anbieter... hab derzeit Watterott oder ExpTech in Visier, um mir mal "auf die Schnelle 1-2 -12'er zum "fuddeln" zu holen... , China wäre dann die etwas umfangreichere Bestellung, wobei sooo viel preiswerter sind die dann auch nicht...



    Ach ja: hast Du schon mal über einen Software-Reset ( Web-Server mit Submit-Button und z.B. einem Input für eine Zeitverzögerung ) nachgedacht?


    Also meine aktuelle "Hardware"-Aktion ist eine schmale Lochrasterplatte, die in eine ehemalige Fieberthermometerhülle reinpasst (sieh auch Bild).
    Man (ich) könnte den PRG-Taster als Submit-Taster verwenden... hm, muss ich mal drüber meditieren... :angel:


    Wichtig find ich, dass die RX/TX/GRD-Leitungen anschliesbar sind (bei mir im Bild die links so schräg liegenden Stifte - schräg, sonst passen die nicht mit ins Gehäuse)
    (derzeit auch der 3,3V Anschluss, weil der USB-Adapter noch den Dremel sehen muss (zu breit))


    Und: die beiden Reset/PRG-Taster braucht es auch, da der ESP hier nicht gesteckt sondern verlötet ist... die Programmierung also "in vitro" passieren muss...


    LG, das Zen


  • Allerdings wird der ESP-01 wohl demnächst gegen einen ESP-12 oder ESP-12E ausgetauscht. Mit den beiden einzigen I/Os ist halt ziemlich schnell Ende Gelände ...


    Geht eigenltich. :) Ich hab hier ein kleines ESP-01 Multi Sensor Setup am laufen dass aus einem DS18B20, DHT22, BMP085 und einem BH1750 besteht. Hängt alles zusammen am GPIO0 und GPIO2.
    SDA vom BMP und BH hängen man GPIO2
    SCL von beiden am GPIO0
    Der DS hängt zusätzlich am GPIO0 und er DHT am GPIO2.


    Bis auf eine (nicht weiter wichtige) Kleinigkeit funktionert das ganze Setup tadellos:
    Wenn der DHT direkt nach dem BMP oder BH(also nach einer I2C kommunikation) abgefragt wird heißt es so gut wie immer: "DHT timed out". Wenn ich dann einen Augenblick später nochmal versuche klappt es dann zuverlässig.
    Es ist aber wirklich nur wenn er nach dem BMP oder BH abgefragt wird. Wenn ich ihn als aller erstes abfrage klappt alles bestens. :)


    Zuerst wollte ich den DHT und DS jeweils an RXD und TXD hängen was auch geklappt hätte, allerdings lässt sich das Board dann mit angesteckten Sensoren nicht mehr über UART programmieren da der DS und DHT dazwischen funken.


    Das einzige Problem beim ESP-01 ist aus meiner Sicht die DeepSleep Geschichte.


    Edit: Wobei mehr Pins natürlich immer gut sind. :) Auch speziell der ADC Pin dürfte für diverse Sensoren(und messung der Batteriespannung) interssant sein.

    DON'T PANIC!

    Edited once, last by joh.raspi ().

  • Hi joh,


    ... Geht eigenltich. :) ...


    na das ist ja mal wieder so eine typische Aktion a'la joh.raspi :lol:
    Junge, Junge Du alter Fummler :thumbs1:


    Aber, mal was anderes, vermutlich genau so verrücktes:
    ich such' und tüftle schon eine ganze Weile an einer Möglichkeit, dass der ESP sich selbst neu programmiert - so eine Art autoupdate der Software. Wär' schon ein geniales Feature, wie ich finde. Allerdings sind da halt die Stolpersteine wie booten in den UPLOAD-Modus usw.
    Hat da evtl. schon jemand eine Info gefunden, wie oder ob das realisierbar ist?
    Macht Euch aber jetzt keinen Stress und fangt an zu suchen. Das steht gaaaaaanz weit hinten auf meiner Ideen-Liste. Und wenn ich es streichen muss ist das auch nicht weiter schlimm.


    Schönen Abend noch,
    -ds-

  • Zentris


    Ich habe mir das Bild noch mal näher angeschaut. Sollten die gemessenen Werte nicht stimmen, könnte es daran liegen, dass der Sensor zu nahe am ESP montiert ist. Ich habe dieses Phänomen reproduzierbar getestet. Die gemessene Temperatur war umso geringer, je näher der Sensor (AM2301) am ESP montiert war. Ab etwa 10cm Entfernung konnte ich keine Unterschiede mehr feststellen.

  • ich such' und tüftle schon eine ganze Weile an einer Möglichkeit, dass der ESP sich selbst neu programmiert - so eine Art autoupdate der Software. Wär' schon ein geniales Feature, wie ich finde. Allerdings sind da halt die Stolpersteine wie booten in den UPLOAD-Modus usw.
    Hat da evtl. schon jemand eine Info gefunden, wie oder ob das realisierbar ist?


    Ich weiß nicht, ob das hier etwas wäre:
    https://github.com/esp8266/Ard…ta_updates/ota_updates.md


    Ich hab's bei mir mit dem Wemos D1mini getestet und funktioniert recht gut.

    Anfragen ausserhalb des Forums (Mail o.ä.) werden ignoriert!

  • Hi joh und Zen,
    ich hab' jetzt den DHT22 mal eingebaut. Da hattet ihr recht ... das klappt oob :thumbs1:
    Ist alles als Anhang des -> Eingangs-Post <-.


    Wenn ich das jetzt ein wenig gerade gerückt habe will ich mich mal an MQTT versuchen.
    Wenn ich den Funstellen im Netz Glauben schenke, sollte das auch kein grösseres Problem darstellen.
    Habt jemand vielleicht schon mal was damit gemacht?
    Gibt's da evtl. was "Kleines" als Gegenstück für den Raspi?
    Sonst nehm' ich wieder EMONCMS ...


    cheers,
    -ds-

  • Hey supi. :)
    Ich schau das ich das ganze jetzt heute auch mal teste. Muss mir aber zuerst noch EMONCMS installieren und ein bischen damit spielen. :)


    Wie "klein" das ist kann ich nicht beurteilen aber was ich so gesehen hab verwenden die meisten "Mosquitto".
    Hab mich selber damit(mqtt) aber noch nicht weiter beschäftigt.

    DON'T PANIC!

    Edited once, last by joh.raspi ().