Wemos D1, NodeMCU, ESP8266

  • N'abend zusammen,

    für meine nächsten Projekte habe ich die Familie um die ESP8266 Chips ins Auge gefaßt.
    Einen Wemos D1 habe ich hier auch schon liegen und basics probiert. Direkt mal eben eine LED mit dem Smartphone in 5 Minuten geschaltet. Easy :)

    Was habt ihr für Projekte damit umgesetzt?
    Ich plane meine RGB-Uhr damit (und noch mind. eine weitere Uhr) und einen ganzen Sack voll Temp-Sender für das Haus zu bauen.

  • Ich hab nen Sack voll Temp-Sender auf Wemos D1 Basis am Laufen mit ESPimatic von koffienl. Habe allerdings auch ein paar NodeMCU

    Habe mir sogar mit einem Wemos D1 eine Uhr fürs Badezimmer gebastelt. Zumindest letztes Jahr angefangen und als es um das Gehäuse ging, aufgehört bzw pausiert.
    Allerdings ist das auch keine richtige Uhr, sondern eher ein Internetzeit-Anzeiger + Temperatur & Feuchte auf einem kleinen 16x2 LCD.

    Finde das Teil aber grade nicht, sonst würde ich mal ein Foto machen (werde ich aber nachreichen)
    Brauche noch immer ein passendes Gehäuse, evtl hast du ja eine Idee :D

  • Geht auch um den Faktor 10 günstiger:
    https://www.aliexpress.com/wholesale?catI…8266+WiFi+Relay

    Btw die Beschreibung von dem 17€ Teil ist schon der Hammer. Spannungsregler wird mitgeliefert, genau wie eine Sicherung, muss aber noch selber eingelötet werden. FW ist closed Source. Hab so das Gefühl das Ding kann man sich besser selber bauen.

  • für meine nächsten Projekte habe ich die Familie um die ESP8266 Chips ins Auge gefaßt.

    Ironischerweise ist der ESP32 in allen belangen besser und kaum teurer.
    Besseres WiFi, BT, low power modes, mehr RAM (der 8266 ist bei den meisten Projekten, die die WiFi-Libs benutzen recht stark RAM-limitiert)

  • ESP32 in allen belangen besser und kaum teurer.

    Genau aus dem Grund habe ich das Thema hier gestartet. Ich habe einfach ganz offensichtlich noch zu wenig Ahnung. Zack, was dazugelernt.
    Kann mir denn noch einer das Thema NodeMCU näherbringen?
    Ich habe soweit verstanden, dass es eine besondere Firmware für diese Chip-Familie ist. Diese schein LUA-basierend zu sein. Und ich vermute, dass ich zB einen Wemos D1 damit flashen kann.
    Kann ich den auch wieder ins original zurückflashen?
    Ich frage, weil ich aktuell nur einen D1 hier habe, und den will ich jetzt nicht einfach so ins Nirvana flashen.

    Und jetzt ist halt die Frage: was bestellen?
    Ein paar kleine Arduinos sind schon auf dem Bestellschein, jetzt sollen noch ESPxx folgen. Sollte ich da direkt welche mit nodemcu ordern?
    Klar, das ist Projektabhängig. Aber letzten Endes geht es ja immer nur um Messen und schalten.
    Und falls noch jemand Ahnung von Servos und Schrittmotoren hat: brauche ich in jedem Fall ein separates Board? Ich habe ein Projekt mit einem Servo +Schrittmotor im Kopf.
    Beide müssten kaum Leistung bringen. Und auch immer nur kurz.

  • Du /kannst/ den ESP8266 in Lua programmieren, ob du das mit 96k RAM aber ernsthaft illst ist ne andcere Frage.
    ESP32 und ESP8266 können nämlich auch direkt in C mittels ArduinoIDE oder auch per eclipse und dem SDK programmiert werden.
    Für den ESP32 gibts dann noch Späße wie microPython, was halt dann mit 400k RAM auch vernünftig läuft.
    Heise hat zum 32er ein paar nette Artikel: https://www.heise.de/developer/arti…if-3506140.html
    https://www.heise.de/make/artikel/E…32-3256039.html
    https://www.heise.de/make/meldung/E…et-3625888.html
    https://www.heise.de/make/meldung/A…32-3721736.html

  • Mit dem Wemos komme ich schon ganz gut zurecht. Aber meine Projekte behandeln meist auch nur eine Sache.
    Was mich an den ESP32 reizen würde, sind die Touch-fähigen Ausgänge. Da spart man sich direkt Taster und Verkabelung und ggf Widerstand.
    Auch das eine RTC eingebaut ist. Für mein nächstes Uhrenprojekt wäre das schon praktisch. Wobei die dann die Zeit eh via NTP bekommen würde.
    Der Tempsensor ist wohl eher für Systemüberwachung.

    Wenn ich mich so durchs Netz wühle, ist der ESP32 auch noch nicht so richtig in der Arduino-Szene angekommen.
    Es gibt hier und da ein paar Versuche/Beispiele, aber so stark vertreten wie die alten sind die ja noch lange nicht.

    Wie es ausschaut, werde ich wohl diverse Chips bestellen müssen um da ein besseres Basiswissen zu bekommen.

  • Ich spiele gerade mit einem Radarsensor "RCWL-0516" herum.
    Das ist ganz klar der bessere Bewegungsmelder.
    Unglaublich, durch was der alles "durchsehen" kann.
    Ich halte und bewege ein Stück Holz davor und nichts löst aus.
    Bewege ich aber hinter dem Holz meine Hand, löst das Dingen aus.

    Vermutlich werden die meine Melder in der Treppenstufenbeleuchtung ersetzen.
    Aber erst mal weiter durchtesten. Spaßige Dinger.

  • Spaß mit OLED, Wemos, Bosch BME280 und einem lokalem Blynk-Server:

    .

    Mir fällt das Programmierung noch immer sehr schwer. Aber allen Anfängern sei gesagt:
    wenn ich das hinbekomme, dann ihr auch :)

    Code wird bei Bedarf nachgereicht.
    Aktuell probiere ich das Display nur bei Anwesenheit zu aktivieren. Dafür kommt der Microwellen-Chip RCWL-0516 zum Einsatz.
    Noch komme ich da aber nicht weiter.

  • Der Blynk Server sieht interessant aus, den ziehe ich mir bei Gelegenheit sicher irgendwo mal drauf!

    Ich werde mich demnächst mal an Pflanzen-Wässerungs-Sensoren probieren, meine Bestellung müsste in 2 Wochen ankommen

  • @MaxRink , @ClaudiaF

    Timer klingt nach etwas, dass ich benutzen sollte.
    Aktuelle Lösung läuft zwar, aber ich bekomme einen Fehler im [definition='1','0']log[/definition].
    Mein derzeitiger frickel-Code:


    So bleibt das Display für 15sek AN und geht danach auf "clear display" bis eine neue Bewegung stattfindet.
    Beim micrwellenchip reicht schon ein einatmen aus ;)

    Der Fehler legt natürlich einen Timer nahe, aber da habe ich noch nichts mit gemacht:

    C
    [172143658] Connecting to 192.168.1.39
    [172143666] Ready (ping: 3ms).
    [172144003] Trouble detected: http://docs.blynk.cc/#troubleshooting-flood-error

    ->

    __________
    Flood Error

    If your code frequently sends a lot of requests to our server, your hardware will be disconnected. Blynk App may show “Your hardware is offline”
    When Blynk.virtualWrite is in the void loop, it generates hundreds of “writes” per second
    Here is an example of what may cause flood. DON’T DO THAT:
    void loop(){ Blynk.virtualWrite(1, value); // This line sends hundreds of messages to Blynk server Blynk.run();}SOLUTION: If you need to perform actions in time intervals - use timers, for example BlynkTimer.
    __________


    Wenn ihr da einfach durchsteigt, dann bin ich für jeden Code dankbar.
    Ich vermute, dass der Großteil aus dem loop raus muss und in einzelne void gepackt werden sollte.
    + Timer

  • Hallo Don,
    wenn ich die Info bzgl. BlynkTimers richtig verstanden habe,
    dann sollte, hoffe ich zumindestens, dieser Code diese benutzen.

    Es gibt noch Optimirungspotenzial aber vlt. erstmal testen ob der Fehler nun nicht mehr auftritt.
    Was Du evtl. noch testen kannst, in der loop Funktion wird immer wieder

    display.setTextSize(1);
    display.setTextColor(WHITE);

    genauseo wie

    display.display();

    aufgerufen.

    Kann setTextSize und setTextColor nicht in die setup Funktion geschoben werden, da Du die Werte ja nie veränderst?
    Bezgl. display.display(), dies wird in der setup Funktion bereits aufgerufen, ist dies wirklich im loop nötig?

    Sollte das mit Blynk funktionieren können wir, so fern Du willst, generell übder den Code schauen.

    Gruß
    Claudia

    Edit: 2 Semikolons hinzugefügt

  • Der Code an sich funktioniert.
    Seltsam ist nur, dass ich dann in der blynk-Ausgabe mehr Nachkommastellen erhalte, als ich eingestellt habe.
    Man kann in der App über "pin.#/" die Anzahl der anzuzeigenden Stellen bestimmen.
    Mit dem aktuellem Code (oder auch dem von weiter oben) erhalte ich diese Ausgabe:


    Mit einem Code, ohne Display-Schaltung erhalte ich diese Ausgabe:


    Keine Ahnung, was da den Unterschied macht. An der App ändere ich zwischen den Versuchen nichts.
    Zum Vergleich der Code, bei dem die Begrenzung funktioniert. Für mich kein Unterschied bezüglich der Wertausgabe/Weiterleitung zu erkennen.


    Da muss ich noch herumprobieren. Soooo genau benötigt ich dann die Temp-Werte auch nicht :)
    Und um es noch zu toppen: im serial.print zeigen beide identische Ergebnisse mit 2 Kommastellen.

  • Im ersten Moment sehe ich nicht was am Code dafür verantwortlich sein könnte.
    Außerdem denke ich dass dies sowieso ein Issue der Blynk App ist, da dort ja explizit
    eine Nachkommastelle gesetzt wurde, also egal was ankommt, die App muß
    dann den Wert formatieren und wenn Sie das nicht tut, ... das böse Wort kommt ietzt ... Bug!!

    Cheers
    Claudia

  • Da die Funktion round nur den nächsten Integer rundet, wäre eine Möglichkeit
    das Du den Floatwert mit 10 multiplizierst (für eine Nachkommastelle) und dann
    wieder durch 10 dividierst. Also

    C
    float temp = 12.345;
        int _temp = (int)(temp*10);
        float rounded = (float) _temp/10;

    die float Variable rounded hätte dann den Wert 12.3.

    Cheers
    Claudia

  • Das klingt logisch :)
    Werde ich probieren. Aktuell läuft es jetzt gerade mit diesem unsauberem Code.

    Ich bin mir nicht mal mehr sicher, was ich genau gemacht habe. Ich meine im Timer oben das Schreiben auf den blynk-pin entfernt zu haben und den dann dafür nach unten in den loop gepackt zu haben.
    So werden weniger Abfragen an den Chip gestellt. Vermutlich.
    Läuft auf jeden Fall so.
    Deine Methode probiere ich morgen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!