Schlagwort-Archive: ESP8266

BitBastelei #466 – Quick’n’Dirty LED Dimmer

BitBastelei #466 - Quick'n'Dirty LED Dimmer

(915 MB) 00:15:59

2021-12-05 11:00 🛈

Wenn die Nachbarn plötzlich weihnachtsbedingt mehr LEDs als ich an ihren Häusern zur Schau stellen, dann kann ich das so nicht stehen lassen. Also raus mit der LED-Strippe und Licht an. Oder auch nicht. Einzig freie Outdoor-LED ist ein 230V-Streifen, dem ich zuletzt ein “meh” gegeben hab. Etwas wenig Isolation für meinen Geschmack. Aber was für gleichgerichtetes AC gedacht war funktioniert auch mit stromlimitiertem DC. Wenn man jetzt bloß noch eine Steuerung oder einen Dimmer hätte um das Konstrukt zeitgesteuert schalten zu können.

Inhalt

  • 00:00 Streifenplan
  • 00:44 DC-Versorgung
  • 02:04 Transistorforderung
  • 02:34 Transistorwünsche
  • 04:31 Transistorsuche
  • 08:44 Transistorketten
  • 10:04 Transistorlöterei
  • 10:58 Controllersuche
  • 12:05 Software
  • 13:38 Anschluss
  • 14:33 Ende

Code

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

#include <uri/UriBraces.h>
#include <uri/UriRegex.h>

#ifndef STASSID
#define STASSID ""
#define STAPSK  ""
#endif

#define PWMSTEPS 256
#define LED D1

const char *ssid = STASSID;
const char *password = STAPSK;

//https://gist.github.com/mathiasvr/19ce1d7b6caeab230934080ae1f1380e
const uint16_t CIE[256] = {
    0,    0,    1,    1,    2,    2,    3,    3,    4,    4,    4,    5,    5,    6,    6,    7,
    7,    8,    8,    8,    9,    9,   10,   10,   11,   11,   12,   12,   13,   13,   14,   15,
   15,   16,   17,   17,   18,   19,   19,   20,   21,   22,   22,   23,   24,   25,   26,   27,
   28,   29,   30,   31,   32,   33,   34,   35,   36,   37,   38,   39,   40,   42,   43,   44,
   45,   47,   48,   50,   51,   52,   54,   55,   57,   58,   60,   61,   63,   65,   66,   68,
   70,   71,   73,   75,   77,   79,   81,   83,   84,   86,   88,   90,   93,   95,   97,   99,
  101,  103,  106,  108,  110,  113,  115,  118,  120,  123,  125,  128,  130,  133,  136,  138,
  141,  144,  147,  149,  152,  155,  158,  161,  164,  167,  171,  174,  177,  180,  183,  187,
  190,  194,  197,  200,  204,  208,  211,  215,  218,  222,  226,  230,  234,  237,  241,  245,
  249,  254,  258,  262,  266,  270,  275,  279,  283,  288,  292,  297,  301,  306,  311,  315,
  320,  325,  330,  335,  340,  345,  350,  355,  360,  365,  370,  376,  381,  386,  392,  397,
  403,  408,  414,  420,  425,  431,  437,  443,  449,  455,  461,  467,  473,  480,  486,  492,
  499,  505,  512,  518,  525,  532,  538,  545,  552,  559,  566,  573,  580,  587,  594,  601,
  609,  616,  624,  631,  639,  646,  654,  662,  669,  677,  685,  693,  701,  709,  717,  726,
  734,  742,  751,  759,  768,  776,  785,  794,  802,  811,  820,  829,  838,  847,  857,  866,
  875,  885,  894,  903,  913,  923,  932,  942,  952,  962,  972,  982,  992, 1002, 1013, 1023,
};

bool changed = false;
uint16_t fadeTime = 100;
uint32_t delayTime = 0;
uint16_t target = 0;
uint16_t current = 0;

uint32_t systick = 0;

ESP8266WebServer server(80);

void setup(void) {
  pinMode(LED, OUTPUT);
  digitalWrite(LED, HIGH);
  delay(250);
  
  Serial.begin(115200);
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.print("\n\n\nConnecting.");

  // Wait for connection
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("OK");
  Serial.print("Connected to ");
  Serial.println(ssid);
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());

  if (MDNS.begin("esp8266")) {
    Serial.println("MDNS responder started");
  }

  server.on(F("/"), []() {
    String state = "<h1>Status</h1><br>";
    state += "<b>Current</b>: "+String(current)+"<br>";
    state += "<b>Target</b>: "+String(target)+"<br>";
    state += "<b>FadeTime</b>: "+String(fadeTime)+"<br>";
    state += "<b>DelaydTime</b>: "+String(delayTime)+"<br>";
    state += "<b>Changed</b>: "+String(changed)+"<br>";
    state += "<b>Systick</b>: "+String(systick)+"<br>";
    state += "<b>Uptime</b>: "+String(millis())+"<br>";
    server.send(200, "text/html", state);
    Serial.println("Index");
  });

  server.on(UriBraces("/fadeTime/{}"), []() {
    String data = server.pathArg(0);
    fadeTime = data.toInt();
    server.send(200, "text/plain", String("FadeTime: '") + fadeTime + "'");
    Serial.println(String("FadeTime: '") + fadeTime + "'");
  });

  server.on(UriBraces("/fade/{}"), []() {
    String data = server.pathArg(0);
    target = data.toInt();
    delayTime = fadeTime * 1000 / PWMSTEPS;
    server.send(200, "text/plain", String("Fade: '") + target + "'");
    Serial.println(String("Fade: '") + target + "'");
  });

  server.on(UriBraces("/set/{}"), []() {
    String data = server.pathArg(0);
    target = data.toInt();
    current = target;
    changed = true;
    server.send(200, "text/plain", String("Set: '") + target + "'");
    Serial.println(String("Set: '") + target + "'");
  });

  server.begin();
  Serial.println("HTTP server started");
}

void loop(void) {
  server.handleClient();

  if(delayTime > 0) {
    uint32_t cmicros = micros();
    uint32_t cmp = systick;
    if(2^32 - systick >= delayTime) {
      cmp = 2^32 - systick - delayTime;
    }
  
    if(cmp >= delayTime) {
      if(target > current) current++;
      if(target < current) current--;
      if(target == current) delayTime = 0;
      changed = true;
      systick = cmicros;
    }
  }

  if(changed) {
    Serial.print("\nChanged");
    Serial.print(" - Current: ");
    Serial.print(current);
    uint16_t pwmt=PWMSTEPS-current;
    Serial.print(" - PWM: ");
    Serial.print(pwmt);
    pwmt = CIE[pwmt];
    Serial.print(" - CPWM: ");
    Serial.println(pwmt);
    analogWrite(LED, pwmt);
    changed = false;
  }
}

Transparenz

LED-Streifen, ESP und DC-DC-Wandler wurde selbst gekauft und bezahlt. Das Spenderboard wurde mir vor längerem als E-Schrott geschenkt.

BitBastelei #460 – Shelly 2.5: Smart-Switch für “in die Dose”

BitBastelei #460 - Shelly 2.5: Smart-Switch für "in die Dose"

(2 GB) 00:28:16

2021-10-24 10:00 🛈

Wenn es um “Smart-Switches”, also WLAN-Adapter für feste Installationen, geht, dann sind die Platzhirsche vermutlich Sonoff und Shelly. Das Grundmodell “Sonoff Basic” hatte ich ja schon öfter hier, ist aber unpraktisch, wenn man z.B. ein Licht weiterhin auch per Schalter schalten möchte. Ein Touch-Switch kann hier helfen, passt aber optisch oft nicht zum bestehenden Schalterprogramm. Hier möchte Shelly mit ihren Geräten ansetzen: Sie sind extrem klein, bieten bei diesem Modell 2 Ausgänge und können – ähnlich wie mein Optokoppler-Board – auch 230V-Eingänge abfragen. So lassen sich die Geräte sowohl per Schalter als auch WLAN steuern und nichts kommt sich in die Quere. Zu schön um wahr zu sein? Nunja, so ganz ohne Haken kommt das Paket natürlich nicht.

Inhalt

  • 00:00 Andere Smart-Aktoren und Sensoren
  • 01:30 Shelly 2.5 – was bekommen wir?
  • 04:59 Anschluss
  • 07:06 App-Installation
  • 07:52 Web-UI ohne App
  • 10:23 Manuelle App-Einrichtung
  • 11:08 Energiemessfunktion
  • 12:22 Eingänge
  • 14:04 Regelwirrwarr: Relais vs. Kapazitiv/Induktiv
  • 16:23 Regelwirrwarr: Gerätedosen und Nachrüstpflichten
  • 20:41 Regelwirrwarr: Hochtemperaturnetzteil
  • 24:31 Fazit (ja, mit kaputtem Ton)

Links zum Thema

Fehler und Ergänzungen

  • 07:52 Über die App konnte ich das Gerät nicht einrichten. Es wurde nicht gefunden.
  • 13:22 Für Personen mit kaputtem Sarkasmusdetektor: Niemals Grün/Gelb für irgendetwas außer Schutzleiter nutzen.
  • 17:22 Schraublöcher. Nicht Schrauben.
  • 20:01 Je nach Verlegung und Länge.
  • 20:11 Je nach Interpretation. Einige sagen, dass eine Lampe nie ?10A kommen kann und das daher passt. Andere haben schon vom Heimwerker*innen nachgerüstete Steckdosen und IR-Heizstrahler hinter leicht angekokelten Lichtschaltern gefunden und sind da etwas vorsichtiger.
  • 21:09 Wohlgemerkt: Das Wärmebild ist im Leerlauf, ohne Last und außerhalb der Dose mit besserer Kühlung
  • 22:17 H07V-U müsste das sein. Einige Varianten sind auch bis 90°C zugelassen.

Transparenz

Das Gerät wurde selbst gekauft und bezahlt. * Ich bin Teilnehmer beim amazon.de Partnerprogramm. Durch Nutzung von Amazon-Links im Video oder auf meiner Webseite erkennt Amazon, dass Ihr über meine Seite zu ihnen gefunden habt. Ich werde prozentual an hierüber erzielten Umsätzen beteiligt, die Preise ändern sich hierdurch für Käufer*innen nicht.

BitBastelei #455 – LiFePO4: Die besseren Lithium-Akkus?

BitBastelei #455 - LiFePO4: Die besseren Lithium-Akkus?

(2 GB) 00:28:48

2021-09-19 10:00 🛈

Wenn man von Lithium-Akkus spricht, meint man oft LCO-Zellen – Lithium-Cobaltdioxid. Es gibt aber auch andere Zellchemien wie LiFePO4/LEP/LFP, welche ganz eigene Vor- und Nachteile haben. Welche Unterschiede das sind und wie sich LiFePO4 als Bastlernutzen lässt schauen wir in diesem Video.

Inhalt

  • 00:00 LCO vs. LFP: Unterschiede
  • 08:08 14500 und Alkaline-Ersatz
  • 10:51 LFP Schutz, Ladeboards
  • 20:27 TP5000: Ladestrom anpassen und Zuleitung
  • 22:44 Fertiger Aufbau mit ESP8266-Direktversorgung
  • 26:44 Fazit

Links zum Thema

Transparenz

Die gezeigten Geräte wurden selbst gekauft und bezahlt.

BitBastelei #429 – Noch mehr ESP-Programmer?

BitBastelei #429 - Noch mehr ESP-Programmer?

(1 GB) 00:12:31

2021-03-21 11:00 🛈

Vor einiger Zeit hatte ich einen ESP01-Seriell-Adapter als Programmer mit automatischem Reset umgebaut. In den Kommentaren gab es in der Folge dutzende Hinweise, dass es diese ja auch fertig gäbe. Also fein, schauen wir auch mal auf einen Fertigen. Und wenn wir schon dabei sind: ESP12 würde ich auch gerne programmieren.

BitBastelei #409 – WS2812B/Neopixel mit WLED einfach steuern

BitBastelei #409 - WS2812B/Neopixel mit WLED einfach steuern

(1 GB) 00:24:17

2020-11-01 11:00 🛈

WS2812B, auch bekannt als Neopixel, hatten wir ja schon öfter gesehen. Mit passender Library lässt sich jede LED einzeln über Arduino ansteuern. Aber was, wenn man keine eigene Software schreiben will? Hier kommt WLED in’s Spiel: Mit dieser Software lässt sich ein passender LED-Streifen per ESP32 oder ESP8266 mit einem WLAN verbinden und z.B. über ein Webinterface, Apps für Android und iOS oder auch HomeAssistant ohne eigene Programmierung steuern.

Inhalt

  • 00:00 LED-Rezept
  • 01:55 Streifen vorbereiten & anschließen
  • 08:45 Überblick: WLED
  • 11:00 Installation mit ESP Home Flasher
  • 13:43 Ersteinrichtung vom WLED
  • 16:23 LED-Einrichtung im Webinterface
  • 17:49 LED-Steuerung per Browser
  • 21:03 WLED mit HomeAssistant
  • 22:37 Smartphone App

BitBastelei #404 – WiFi-Cloud Sicherungsautomat

BitBastelei #404 - WiFi-Cloud Sicherungsautomat

(2 GB) 00:34:54

2020-09-27 10:00 🛈

Wenn die Sicherung rausfliegt, dann ist das meist sehr nervig. Zum Kasten rennen, richtigen Automaten suchen und wieder einschalten. Könnte man das doch bloß per App mittels Cloud und WLAN erledigen. Klingt fragwürdig? Nun, nicht fragwürdig genug für einen Chinesischen Hersteller. Also werfen wir heute auf einen Sicherungsautomaten mit integriertem WLAN.

Inhalt

  • 00:00 WiFi Sicherungsautomat
  • 02:55 Unboxing
  • 08:45 Inbetriebnahme & Nutzung
  • 16:42 Innenleben
  • 30:38 Fazit

Links zum Thema:

BitBastelei #392 – Stromabschaltung? Quick’n’Dirty Temperaturmonitoring

BitBastelei #392 - Stromabschaltung? Quick'n'Dirty Temperaturmonitoring

(380 MB) 00:26:19

2020-07-05 10:00 🛈

Stromabschaltungen sind ein Garant für viele Defekte. Unschön, wenn mir eine längere Abschaltung nur 2 Tage vorher zufällig zu Ohren kommt. Also: Alle Systeme abschalten. Aber was ist mit Kühlschränken und Tiefkühltruhen? Einige bekomme ich per Solar versorgt, andere eher nicht. Also improvisieren wir auf die Schnelle mal einen Temperaturlogger um im Nachgang zu sehen, ob der Inhalt zu warm geworden ist.

BitBastelei #391 – 230V-Steuerung mit ESP8266 überwachen

BitBastelei #391 - 230V-Steuerung mit ESP8266 überwachen

(1 GB) 00:23:46

2020-06-28 10:00 🛈

Alte Geräte mögen zwar robust sein, allerdings sind grade einfache Steuerungen oft direkt mit Netzspannung ausgeführt. Eher ungünstig, wenn man das Gerät nachträglich für “IoT” tauglich machen, also z.B. mit WLAN ausstatten will. Schauen wir mal, wie man so eine 230V-Steuerung abgreifen und den Zustand (Strom an/Strom aus) per WLAN auslesen können.

Achtung: Netzspannung ist Lebensgefährlich. Arbeiten an 230V sollten nicht ohne entsprechende Vorkenntnisse oder Aufsicht erfolgen.

Hinweis: In der Schaltung ist kein “Bleeder-Resistor” verbaut. Der Kondensator kann daher auch nach dem Ausschalten/Abklemmen noch lange Zeit gefährliche Stromschläge austeilen.

BitBastelei #386 – ESP01-Programmer: Boot/Reset Transistor Mod

BitBastelei #386 - ESP01-Programmer: Boot/Reset Transistor Mod

(2 GB) 00:31:56

2020-05-24 10:00 🛈

Um ESPs zu programmieren benötigt man einen USB-UART-Adapter und muss einige Pins beim Einschalten passend gegen VCC und/oder GND verbinden. Um das für ESP01-Module zu vereinfachen hatte ich mir vor einiger Zeit einen “ESP Programmer” gekauft, auf welchen man das Modul einfach Einstecken kann. Nur leider nicht Programmieren, denn für das korrekte halten der Pins gibt es keine Ansteuerelektronik – man muss die Pins selbst mit Pinzette o.Ä. richtig ziehen. Das geht auch besser, also ergänzen wir mal eine automatische Programmierfunktion.

BitBastelei #383 – Kapazitiver Bodenfeuchtesensor

BitBastelei #383 - Kapazitiver Bodenfeuchtesensor

(1 GB) 00:23:39

2020-05-03 10:00 🛈

Achso, hm, Gießen soll man die Pflanzen? Und dann auch noch selbst dran denken? Das gibt doch keinen. Also muss wohl irgendetwas her, dass mich daran erinnert den grünen Balkonbewohnern ab und an auch etwas frisches Nass zu beschaffen. Mit einem Bodefeuchtesensor sollte das Problem schnell erledigt sein.

Video von Andreas Spiess