Home > Technologie > Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

0
Advertisement

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

In diesem Instructable werde ich beschreiben, wie man einen beleuchteten Weihnachtsbaum Ornament, die über WiFi gesteuert werden kann bauen. Verwenden Sie Ihren Lieblingsbrowser (Computer oder Smartphone), um Ihre Weihnachtsbaumverzierung anzuschließen. Und wählen Sie die Farben, Geschwindigkeit und Muster.

Die Weihnachtsbaumverzierung hat einen eigenen Webserver. Und alle Code läuft auf einem eingebauten Wemos / ESP8266 Board. Alles andere erfordert eine 5 Volt (USB) Stromquelle und eine WiFi-Verbindung.

Dieses Instructable enthält verschiedene Schritte. Es beginnt mit drei Codebeispielen. Das erste Beispiel ist eine einfache Arduino-Skizze, in Autodesk Circuits, mit einem NeoPixel-Ring. Dieses Beispiel ist die Basis dieses Builds. Der nächste Schritt ist ein einfacher Webserver mit einem Wemos-Board. Das dritte Codebeispiel erläutert, wie Funktionen in bestimmten Zeitintervallen ausgeführt werden.
Nach diesen Coding-Beispielen ist es an der Zeit, das Design zu erstellen. Dies basiert auf einem regelmäßigen Ikosaeder. Dies ist eine völlig symmetrische Geometrie mit 20 Seiten. Das Design wurde in Fusion 360 erstellt und dann mit einem 3D-Drucker gedruckt.
Nach der Montage folgt der endgültige Code. Dies ist eine Kombination der drei Beispiele vom Anfang des Instructable.

Dieses Instructable ist über die Schaffung eines Christmas Tree Ornament. Aber das Web-Interface ist nicht auf Weihnachtsschmuck beschränkt. Es kann für viele andere Projekte verwendet werden. In der Tat kann alles, was von einem Arduino gesteuert werden kann über WiFi gesteuert werden.

Schritt 1: Benötigte Materialien

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Benötigte Materialien:

  • Wemos D1 Mini Pro ($ 5) oder Wemos D1 Mini ($ 3)
  • WS2812b LED 30 / Meter IP30 Streifen (mit 30 Leds $ 3 für 1 Meter)
  • Mikro-USB-Kabel (lokaler Speicher, ungefähr $ 2)
  • Steckdraht
  • Transparenter Kleber (Hobbyladen)
  • Glitzerstaubpulver (Hobbyladen)
  • USB-Netzteil (zB Ikea Koppla) oder andere 5 Volt Netzteile.

Die Gesamtkosten betragen ca. $ 10 für eine Weihnachtsverzierung.

Verwenden Sie eine anständige USB-Stromversorgung. Die LEDs verwenden maximal 60 MilliAmpere. 20 LEDs bei voller Leistung benötigen 1,2 Ampere (6 Watt). Ich bin mit einem Ikea Koppla USB - Stromversorgung. Es hat 3 Häfen und kann 3.2 Ampere bei 5 Volt liefern.

Schritt 2: Autodesk-Schaltung: NeoPixel-Ringbeispiel

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Gebäude etwas mit einem Arduino und WS2812 LEDs ist wirklich einfach. Es könnte einschüchternd aussehen, wenn Sie noch nie mit einem Arduino gearbeitet haben. Einige Programmier-und / oder Elektronik-Erfahrung macht es einfacher. Aber es ist nicht wirklich so schwer.

Und es ist nicht notwendig, ein Arduino kaufen, wenn Sie dies ausprobieren möchten. Es gibt Webseiten, wo man ein Arduino simulieren kann. Einer von ihnen ist Autodesk Circuits . Ich habe ein Arduino Beispiel mit einem NeoPixel Ring. Diese Pixel Ring Beispiel ist die Basis dieser Weihnachtsverzierung.

Der Code sieht einfach aus. Aber es zeigt viele der Möglichkeiten der Codierung eines Arduino:

Es verwendet eine externe Bibliothek (Adafruit NeoPixel). Also muss ich mir keine Sorgen um das Ändern der LEDs Farben machen. Ich benutze nur die Bibliotheksfunktionen.

Der Code definiert die RGB-Werte von 12 Farben in 3 Arrays. Dies sind die 12 Farben, die von der Web-Schnittstelle für die Steuerung der LED-Streifen verwendet.

Es gibt auch eine selbst definierte Funktion. Die setColor-Funktion kann von überall im Programm aufgerufen werden.

  #include <Adafruit_NeoPixel.h> #define NUM_PIXELS 16 int D2 = 8;  Adafruit_NeoPixelpixel (NUM_PIXELS, D2, NEO_GRB | NEO_KHZ800);  Const int numColors = 12;  Int R [numColors] = {255,255,227,255,255,128,075,000,127,000,127,255};  Int G [numColors] = {194,165,066,000,000,000,000,000,255,255,255,255};  Int B [numColors] = {000,000,052,000,255,128,130,255,212,000,000,000};  Void setColor (int R, int G, int B) {für (int i = 0; i <NUM_PIXELS; i ++) {pixels.setPixelColor (i, R, G, B);  } Pixels.show ();  } Void setup () {pixels.begin ();  Pixels.show ();  } Void loop () {für (int j = 0; j <numColors; j ++) {setColor (R [j], G [j], B [j]);  Verzögerung (1000);  Aufrechtzuerhalten.

Dieser Code enthält ein Array mit 12 Farben (nummeriert von 0 bis 11). Ich habe 12 Farben gewählt, da der endgültige Code eine Schaltfläche für jede Farbe enthält:

Farbe: gelb (FFC200)
Farbe 1: orange (FFA500)
Farbe 2: vermillion (E34234)
Farbe 3: rot (FF0000)
Farbe 4: Magenta (FF00FF)
Farbe 5: lila (800080)
Farbe 6: Indigo (4B0082)
Farbe 7: blau (0000FF)
Farbe 8: Aquamarin (7FFFD4)
Farbe 9: grün (00FF00)
Farbe 10: chartreuse (7FFF00)
Farbe 11: gelb (FFFF00)

Sie können die Farben ändern, wenn Sie möchten, indem Sie die RGB-Werte ändern. Weitere Farben - Codes finden Sie unter Wikipedia .

_______________________________________

Für alle, die noch nie mit einem Arduino gearbeitet haben, kann ich die Instructable Arduino Klasse empfehlen:

"Diese Klasse stellt euch die Arduino-Welt vor, ihr werdet die Grundlagen erlernen, euer erstes Projekt entwickeln und vieles mehr. Jede Lektion baut auf euren Fertigkeiten auf und bringt neue Erkenntnisse und Techniken auf den Weg.

Und die meisten dieser Klassen können mit Autodesk Schaltungen hergestellt werden.

Schritt 3: Hallo Welt

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Nach der Programmierung eines arduino mit ws2812 LEDs, ist es Zeit, einen einfachen Webserver zu erstellen. Dazu ist eine Wemos-Karte (mit ESP8266) mit einem WiFi-Adapter erforderlich. Die Wemos können über ein USB-Kabel mit Ihrem Computer verbunden werden. Es gibt keine Notwendigkeit für zusätzliche USB zu seriellen Adapter. Dies ist der Vorteil eines Wemos über einem ESP8266-12.

Die Wemos können mit der Arduino Software programmiert werden. Aber es erfordert das Hinzufügen zusätzlicher Boards mit dem Boards Manager. Dies wird in der beschriebenen Wemos Dokumentation .

Nach diesen Schritten ist es möglich, ein Wemos-Board in der Programmierumgebung von Arduino auszuwählen. Wählen Sie die Wemos-Karte (+ entsprechenden COM-Port) und kopieren Sie den folgenden Code:

  #include <ESP8266WiFi.h> #include <WiFiClient.h> #include <ESP8266WebServer.h> #include <ESP8266mDNS.h> MDNSResponder mdns;  // Netzwerk-Berechtigungen const char * ssid = "ssid";  Const char * Kennwort = "Kennwort";  String webPage = "<h1> Hallo Welt </ h1>";  ESP8266WebServer-Server (80);  Void setup () {Serial.begin (115200);  Verzögerung (500);  WiFi.begin (ssid, Kennwort);  Während (WiFi.status ()! = WL_CONNECTED) {Verzögerung (500);  Serial.println (".");  } Serial.print ("IP address:");  Serial.println (WiFi.localIP ());  Server.on ("/", [] () {server.send (200, "text / html", webPage);});  Server.begin ();  Serial.println ("HTTP-Server gestartet");  } Void Schleife () {server.handleClient ();  Aufrechtzuerhalten.

Ändern Sie die Netzwerkanmeldeinformationen vor dem Kompilieren und Hochladen des Codes.

Dies ist ein sehr einfacher Web-Server. Die Wemos verbinden sich mit dem WiFi-Netzwerk und starten einen Webserver mit nur einer Seite. Verwenden Sie den seriellen Monitor, um die IP-Adresse Ihres Webservers zu erhalten.

Schritt 4: Verdrahtung

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Dieses instructable erfordert etwas Löten. Dies wird jedoch durch die Verwendung eines WS2812b-LED-Streifens minimiert.

Löten Sie die Stiftleisten auf der Wemos-Platine. Es werden nur die D2, +5 Volt und Masse Pins verwendet. Dies bedeutet, dass die Header nur auf einer Seite der Platine gelötet werden müssen.

Löten Sie 3 Steckdosen auf dem LED-Streifen (Ground, Signal und +5 Volt).

Entfernen Sie den Kunststoff aus dem USB-Anschluss. Es gibt keinen Platz für einen solchen Steckverbinder. Fügen Sie 2 Drähte zum usb-Kabel hinzu: eins zum +5 und eins zum Massedraht. Diese werden zum direkten Einschalten der LEDs verwendet. Vergessen Sie nicht, diese Drähte zu isolieren.

Schließen Sie die +5 Volt-Kabel vom USB-Kabel und LED-Leiste an. Das gleiche gilt für die 2 Runddrähte. Verbinden Sie das Signalkabel des Led-Streifens mit dem D2-Anschluss der Wemos-Platine. Schließen Sie nun den USB-Anschluss an die Wemos-Platine an.

An der Wemos-Platine ist kein Massekabel angeschlossen. Dieser Massestift ist direkt mit dem USB-Anschluss verbunden. Die mit dem zusätzlichen Erdungskabel verbunden ist.

Schritt 5: Zeitmessungsbeispiel

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

In meinem ersten neopixel Codebeispiel Arduino ( NeoPixel Ring ), Farbänderungen sind in der Hauptschleife gemacht. Dies erfordert eine Verzögerung in der Hauptschleife, oder die Änderung der Farbe geht zu schnell. Während dieser Verzögerung wartet das Wemos-Board einfach und führt keinen anderen Code aus. Abgesehen von Hintergrundprozessen, zB mit der WiFi-Netzwerkverbindung.
Das Endprodukt wird einen Webserver ausführen, um die LEDs zu steuern. Aus diesem Grund sollte es keine Wartezeiten innerhalb des Codes, da dies eine nicht-responsive Web-Schnittstelle geben wird.

In diesem Beispiel werden die LEDs durch einen internen Timer gesteuert. Dieser osTimer wird durch die Funktion os_timer_setfn definiert und dann mit der Funktion os_timer_arm bewaffnet. Der verwendete Wert von 1000 ist in Millisekunden. Wenn Sie diesen Wert verwenden, führt der Wemos-Timer die Prozedur timerCallback jede Sekunde aus. Dieses Verfahren erhöht den Farbwert und verändert die Farben der LEDs. Und alle diese Aktionen werden außerhalb der Hauptschleife durchgeführt.

Achten Sie darauf, dass der Code innerhalb des osTimers sehr kurz sein muss. Der Code muss ausgefüllt werden, bevor der nächste Timer ausgelöst wird.

  #include <Adafruit_NeoPixel.h> #include <user_interface.h> #define NUM_PIXELS 20 Adafruit_NeoPixel Pixel (NUM_PIXELS, D2, NEO_GRB | NEO_KHZ800);  Os_timer_t osTimer;  Const int numColors = 12;  Int R [numColors] = {255,255,227,255,255,128,075,000,127,000,127,255};  Int G [numColors] = {194,165,066,000,000,000,000,000,255,255,255,255};  Int B [numColors] = {000,000,052,000,255,128,130,255,212,000,000,000};  Int vColor = 0;  // Anfang mit Farbe 0 void setColor (int R, int G, int B) {für (int i = 0; i <NUM_PIXELS; i ++) {pixels.setPixelColor (i, R, G, B);  } Pixels.show ();  } Void timerCallback (void * pArg) // Interrupt os-timer <br> {vColor ++;  Wenn (vColor> = numColors) {vColor = 0;} setColor (R [vColor], G [vColor], B [vColor]);  } Void setup () {pixels.begin ();  Pixels.setBrightness (16);  // Energieverbrauch reduzieren pixels.show ();  Os_timer_setfn (& osTimer, timerCallback, NULL);  Os_timer_arm (& osTimer, 1000, true);  } Void Schleife () {Verzögerung (1000);  // nichts zu tun }

Dieser Code führt auch eine Funktion namens setColor. Diese Funktion akzeptiert 3 Werte, mit denen die Farbe aller LEDs geändert wird.

Schritt 6: Regelmäßiger Ikosaeder

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Es gibt Christbaumschmuck in vielen verschiedenen Formen. Während ich auf der Suche nach einem Design war, stieß ich auf einige geometrische Formen. Und eine Art von Geometrie erregte meine Aufmerksamkeit: Ein regelmäßiges Polyeder . Sie sind vollständig symmetrisch. Dieses macht es perfekt für eine Weihnachtsverzierung. Es gibt nur fünf bekannte Typen:

  1. Dreieckspyramide (4 Seiten)
  2. Würfel (6 Seiten)
  3. Oktaeder (8 Seiten)
  4. Dodekaeder (12 Seiten)
  5. Ikosaeder (20 Seiten)

Ich habe für den gewählten Ikosaeder . Es hat die höchste Anzahl von Seiten. Auf jeder Seite befindet sich eine WS2812 LED mit insgesamt 20 LEDs.

Die Verwendung von WS2812 LED-Streifen begrenzt die Größe der Geometrie. Der Abstand zwischen den LEDs beträgt 1,3 Zoll (30 LEDs pro Meter). Dies entspricht der oberen Grenze für die Seiten jedes gleichseitigen Dreiecks. Nach dem Erstellen eines Papier-Prototyp, kam ich mit einer Größe von etwa 3 Zoll (75 mm). Damit haben Sie genug Platz für den Wemos Controller und 20 LEDs.

Schritt 7: Autodesk Fusion 360

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Das Zeichnen eines regelmäßigen Ikosaeders beginnt mit 3 Rechtecken auf jeder Achse. Diese müssen goldenen Rechtecke . Ein goldenes Rechteck ist ein Rechteck, dessen Seitenlängen im goldenen Verhältnis (ungefähr 1.618) liegen. Wir können die Seiten für ein goldenes Rechteck mit einer Diagonale von 75 mm (3 Zoll) berechnen. Das Pythagoras-Theorem verwendet 65 x 40 Millimeter für die Seiten.

Jede einzelne Ecke der Rechtecke ist eine Ecke von 5 Dreiecken.

Der nächste Schritt ist, 20 Dreiecke (mit einer Ebene durch 3 Punkte) zu erstellen. Und extrudieren sie nach innen. Erstellen Sie eine neue vierte Stelle mit diesen 20 Dreiecken. Jedes Dreieck wird so eingestellt, dass die LEDs hinterher platziert werden können.

Alle Fusion 360 Dateien stehen zum Download auf meinem autodesk Laufwerk zur Verfügung: Ikosaeder , Teil 1 und Teil 2 .

Schritt 8: Teile drucken

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Ich habe das Design 3 mal gedruckt. Zweimal mit dem original Up Filament (weiß) und einmal mit nicht regulärem Filament (blau).

Entfernen Sie alle Trägermaterialien. Und stellen Sie sicher, dass die LEDs in die Löcher passen. Verwenden Sie ein scharfes Messer und Sandpapier, um alle Unregelmäßigkeiten zu entfernen. Es ist beabsichtigt, den gesamten Weihnachtszierde mit Glitter zu bedecken. Daher sind eventuelle Unregelmäßigkeiten im Endprodukt sichtbar.

Schritt 9: Montage

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Ziehen Sie vor dem Kleben der LEDs eine einzige Linie für den Pfad des LED-Streifens. Diese Linie darf sich nicht kreuzen.

Beginnen Sie mit dem Kleben der LEDs, innerhalb des großen 3D gedruckten Teils. Beginnen Sie mit der letzten LED am Ende des Streifens. Ich habe eine Heißklebepistole verwendet. Biegen Sie den LED-Streifen vorsichtig während der Verarbeitung.

Ich habe zwei LED-Streifen in meiner ersten Version. Einer mit 5 LEDs und einer mit 15 LEDs. Aber es ist durchaus möglich, einen einzigen LED-Streifen von 20 LEDs zu verwenden. Das spart etwas Löten.

Verbinden Sie die +5 und Masseleitungen von der LED-Leiste mit dem USB-Kabel. Das Signalkabel wird mit dem D2-Pin der Wemos-Platine verbunden. Die Masse ist intern verbunden. Vergessen Sie nicht, die LEDs zu überprüfen, bevor Sie die Weihnachtsverzierung schließen.

Legen Sie etwas Klebstoff auf die Anschlüsse, so dass sie nicht locker. Legen Sie das Wemos-Board in das große 3D-bedruckte Teil. Machen Sie Platz für den USB-Kabeldurchsatz und kleben Sie alles zusammen.

Schritt 10: Webserver

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Diese Arduino-Skizze-Datei enthält den gesamten Code für einen Webserver mit einem Wemos-Board. Ändern Sie die Variablen "ssid" und "password", bevor Sie den Code hochladen.

Über den Code

Einige Teile des Codes erfordern eine Erklärung:

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

Alle Bibliotheken in dieser Arduino Skizze verwendet.

  #define NUM_PIXELS 20 Adafruit_NeoPixel-Pixel (NUM_PIXELS, D2, NEO_GRB | NEO_KHZ800);

Es gibt 20 LEDs. Diese LEDs sind mit Pin D2 auf der Wemos-Platine verbunden.

  Int R [13] = {255,255,227,255,255,128,075,000,127,000,127,255,000};  Int G [13] = {194,165,066,000,000,000,000,000,255,255,255,255,000};  Int B [13] = {000,000,052,000,255,128,130,255,212,000,000,000,000};

Diese sind die 12 Farben definiert (Farbe 0 bis 11), diese werden für die LEDs verwendet. Für die Tasten werden die entsprechenden HEX-Werte verwendet. Es gibt 13 Werte in diesem Array. Der letzte Wert im Array schaltet die LED aus (# 000000 = schwarz). Sie können diese Farben ändern, wenn Sie wünschen.

  String buttonColor [2] = {"weiß", "schwarz"};  Boolean ColorState [13] = {1,1,1,1,1,1,1,1,1,1,1,1,1};  // Anfangsfarben

Alle 12 Tasten haben einen "Zustand". Wenn eine Taste den Wert "True" hat, wird die entsprechende Farbe durch die LEDs angezeigt. Durch Drücken einer Taste ändert sich der Zustand dieser Taste. Dies ändert auch die Textfarbe dieser Schaltfläche (zB von schwarz [ein] zu weiß [aus]).

  Int waitTimes [16] = {50, 100, 150, 200, 250, 500, 750, 1000, 1500, 2000, ... int waitTime = 5;  // Standardwerte

Es gibt zwei Tasten, um den Timer-Wert zu ändern ("schneller" und "langsamer"). Der Standardwert für "waitTime" ist 5. Dieser Wert gibt ein Zeitintervall von 500 Millisekunden an.

  Int nextColor (int lastColor) {gefundenColor = numColors;  // nichts gefundener Rückgabewert countColors = 0;  // Anzahl der Suchvorgänge innerhalb der Schleife do {currentColor + = 1;  CountColors + = 1;  If (currentColor> numColors) {currentColor = 0;} if (ColorState [currentColor]) {gefundenColor = currentColor;}} während (currentColor! = LastColor && foundColor == numColors && countColors <numColors + 1);  Return (foundColor);  Aufrechtzuerhalten.

Diese Funktion sucht mit dem colorState-Array nach der nächsten Farbe. Es beginnt bei der Array-Position mit der Zahl lastColor. Und gibt den nächsten Indexwert im colorState-Array mit dem Wert 1 zurück.

Ein Beispiel: Das folgende Array hat die Farbe 2-7 deaktiviert (weißer Text). Das Ausführen dieser Funktion mit dem Wert 0 gibt 1 zurück. Mit dieser Funktion mit dem Wert 1 kehrt 8 zurück. Dies ist die nächste Farbe, die colorState "True" hat.

Farbe: gelb (FFC200)
Farbe 1: orange (FFA500)
Farbe 2: vermillion (E34234)
Farbe 3: rot (FF0000)
Farbe 4: Magenta (FF00FF)
Farbe 5: lila (800080)
Farbe 6: Indigo (4B0082)
Farbe 7: blau (0000FF)
Farbe 8: Aquamarin (7FFFD4)
Farbe 9: grün (00FF00)
Farbe 10: chartreuse (7FFF00)
Farbe 11: gelb (FFFF00)

Die Farben werden immer in einer festen Reihenfolge angezeigt. Wenn alle 12 Farben ausgeschaltet sind, werden alle LEDs ausgeschaltet (Wert 000000).

  // Unterbrechung os-timer void timerCallback (void * pArg) if (! ButtonSparkle) {// Sparkle Aus = Blink} else {// Sparkle}

Es gibt 2 Betriebsarten: Sparkle und Blink. Und sie haben jeweils einen anderen Codepfad innerhalb des OS-Timers.

Der Blinkmodus hat den einfachsten Code. Es wird die nächste Farbe durch Aufruf der nextColor-Funktion. Dann werden alle LED-Farben in diese Farbe geändert.

Der Scheinmodus ist sehr unterschiedlich. Es beginnt immer mit der ersten verfügbaren Farbe im ColorState-Array. Und dann wird für jede LED die nextColor-Funktion aufgerufen. Erhöhung der Start-LED-Wert, gibt einen funkelnden Effekt.

  Void showPage () {webPage + = "<p> <a href=\"socketAmb\"> <button style = \" Hintergrund: # FFC200; ... webPage + = "<a href = \" socketOra \ "> <Button style = \ "Hintergrund: # FFA500; ... webPage + =" <a href = \ "socketVer \"> <button style = \ "background: # E34234; ...

Diese Funktion zeigt / aktualisiert die Webseite. Es gibt nur eine Webseite in dieser Skizze. Die Tastenfarben sind hartcodiert. Und diese Farben entsprechen den RGB-Arrays.

  Void setup (void) {server.on ("/", [] () {showPage ();});  Server.on ("/ socketAmb", [] () {ColorState [0] =! ColorState [0]; showPage ();});  Server.on ("/ socketOra", [] () {ColorState [1] =! ColorState [1]; showPage ();});  Server.on ("/ socketVer", [] () {ColorState [2] =! ColorState [2]; showPage ();});

Der Setup-Teil enthält nach dem Starten des Wemos den ersten ausgeführten Code. Es initialisiert die Neopixel, WiFi-Verbindung, OS-Timer und den Webserver.
Wenn Sie eine Taste auf dieser Seite drücken, wird ein Code ausgeführt. Zum Beispiel: Die erste Schaltfläche auf der Webseite (Bernstein) hat einen Verweis (href) auf "socketAmb". Durch Drücken dieser Taste wird der Code im server.on-Teil für "socketAmb" ausgeführt. Dieses Code-Element ändert den Colorstate im Array für die erste Farbe (die gelb ist).

Die LED-Farben werden durch eine zeitgesteuerte Funktion geändert. Die Farben ändern sich nicht sofort.

  Void Schleife (void) {server.handleClient ();  Aufrechtzuerhalten.

Die einzige Sache in der Hauptschleife ist, sich um den Webserver zu kümmern. Die weitere Verarbeitung erfolgt über die Timer-Funktion.

Schritt 11: Keine WiFi-Version

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Der folgende Wemos-Code kann als Beispiel für eine Weihnachtsverzierung ohne WiFi verwendet werden.

Dieser Code ermöglicht es, ein Arduino anstelle eines Wemos (ESP8266) zu verwenden. Das Arduino - Code ist verfügbar unter circuits.io (WS2812 Matrix Beispiel). Der Hauptunterschied im Code ist der Portname (Port 8 anstelle von D2).

  #include <Adafruit_NeoPixel.h> #define NUM_PIXELS 20 Adafruit_NeoPixel Pixel (NUM_PIXELS, D2, NEO_GRB | NEO_KHZ800);  Int R [14] = {255,255,227,255,255,128,075,000,127,000,127,255,000,255};  Int G [14] = {194,165,066,000,000,000,000,000,255,255,255,255,000,255};  Int B [14] = {000,000,052,000,255,128,130,255,212,000,000,000,000, 255};  Int NUM_ROWS = 20;  // led 01 02 03 04 05 06 07 08 09 10 11 14 13 14 15 16 17 18 19 20 in ColorMatrix [20] = {{13, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7} , 7, 7, 7, 7, 7, 7, 7, 7}, {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 13, 8, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7}, {7,13, 8, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 13, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6, 7, 7, 13, 8, 7, 7, 7, 7, 7, 7, 7, 7, 13, 8, 7, 7}, {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 13}};  Int brightValue = 10;  Int brightMax = 16;  // Helligkeit (1..16) void setup (void) {pixels.begin ();  Void Schleife (void) {for (int j = 0; j <NUM_ROWS; j ++) {für (int i = 0; i <NUM_PIXELS; i ++) {pixels.setPixelColor ] * HellValue / HellMax, G [ColorMatrix [j] [i]] * HellValue / HellMax, B [ColorMatrix [j] [i]] * HellValue / HellMax);  } Pixels.show ();  Verzögerung (50);  Aufrechtzuerhalten.

Die Reihenfolge der LEDs hängt von der Reihenfolge des Klebens ab. Mein Ornament hat folgende Reihenfolge:

  • Obere 5 LEDs: 4, 5, 6, 7, 8 (gegen den Uhrzeigersinn).
  • Untere 5 LEDs: 11, 12, 13, 14, 15 (gegen den Uhrzeigersinn)
  • Mittlere 10 LEDs: 1, 2, 3, 10, 9, 16, 17, 18, 19, 20 (im Uhrzeigersinn)

Die Zahl im ColorMatrix entspricht einer R / G / B-Farbe (siehe das erste Beispiel für die Farben). Es gibt 20 Reihen mit 20 LED-Farben. Die Hauptschleife beginnt mit der ersten Zeile (dies ist die Zeilennummer Null im Code). Und schreibt die 20 Werte auf den LED-Streifen.Die Show-Funktion ändert die Farben.

Dann wartet der Code 50 Millisekunden, bevor er mit der nächsten Zeile in der Matrix fortfährt. In diesem Beispiel ist kein Timer vorhanden. Dies macht es möglich, diesen Code mit einem Arduino auszuführen.

Schritt 12: Dekoration

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Beleuchtete Weihnachtsbaum-Verzierung [WiFi kontrollierte]

Der letzte Schritt ist die Verzierung der Weihnachtsverzierung. Zuerst entfernen Sie überschüssigen Kleber und alle anderen Unregelmäßigkeiten.

Es ist beabsichtigt, den gesamten Weihnachtszierde mit Glitter zu bedecken. Auch die LEDs. Diese sorgen für ausreichend Licht, um sichtbar zu bleiben.

Bedecken Sie den 3D-bedruckten Teil vollständig mit Leim. Verwenden Sie transparente Leim von guter Qualität. Streuen Sie den glitzernden Staub über die ganze Verzierung. Verwenden Sie einen Kasten, um den übermäßigen Glitter zu sammeln. Dieser Glitzer kann wiederverwendet werden. Weiter, bis das ganze Ornament mit Glitter bedeckt ist.

Schritt 13: Frohe Weihnachten

In diesem letzten Schritt wünsche ich allen ein frohes Weihnachtsfest.

G o s s A d e m a e

Related Reading