One mood lantern with WS2812b RGB LED ring

When I cleaned up at the store the other day, I found a decorative lantern as a wooden with small glass windows in which a small candle can be placed. Since real candles are known to pose a not small fire risk, and I also wanted to control my lantern comfortably, I really replace the flickering candlelight with a WS2812 ring and simulate the candlelight and the typical candle flicker. So we install an artificial "candle" in our lantern in our blog today. This gives the lantern a realistic "flame flicker" without the risk of fire due to open fire.

Finished lantern

We need the following hardware for our project and for this part 1 of the series:
1 x AZ-Delivery Nano V 3
1 x RGB LED Ring WS2812b with 12 RGB LEDs 5V for Arduino 50 mm outer diameter
1 x 5 Volt / 1 Ampere Power Supply

The power supply of our circuit should be generously dimensioned with 1 ampere, since the RGB ring has a maximum current consumption at full control of 12 * 60mA = 720 mA Has.


We assemble the electronic part of the lantern as shown in the following circuit diagram and wire accordingly:

Schematic Mood Lantern

Basically, instead of the AZ-Delivery Nano V3, a normal microcontroller, compatible with Uno R3, can also be used, but the nano offers space advantages when installed in a lantern.

When we have finished the circuit, we now have to include the Adafruit Neopixel library so that we can easily control the LED's of the ring.

The required library can be added to our IDE in 2 ways:
1.) The library on the URL https://github.com/adafruit/Adafruit_NeoPixel Download.
Then in the IDE in the menu item Sketch -> Include Library ->Add Zip Library manually.


2.) Enter "Adafruit Neopixel" in the library manager as a search term, click on the library and then select "Install". Please select at least version 1.2.4.

Selection of the Neopixel installation in the Arduino IDE

 

If everything worked out up to this point, the following code will be uploaded to the nano:

 

#include <Adafruit_NeoPixel.H>

#define Pin        6  Which pin on the Arduino is connected to the NeoPixels?
#define NUMPIXELS 12 How many NeoPixels are attached to the Arduino? Popular NeoPixel ring size

Adafruit_NeoPixel pixels(NUMPIXELS, Pin, NEO_GRB + NEO_KHZ800);

#define DELAYVAL 500 Time (in milliseconds) to pause between pixels

Long lastTime;
Int interval;

Void Setup()
{   pixels.Begin(); INITIALIZE NeoPixels   interval = 150;   randomSeed(analogRead(0));
}

Void SimulateFire (Bool On, Int FireSquence)
{   If (On)   {     Long nowmilli = millis();     If (nowmilli - lastTime >= interval)     {       Byte LightValue[NUMPIXELS * 3];       Byte FireColor = 60;       interval = Random(150, 200);       lastTime = nowmilli;       FireColor = 60; random (0.50);       for (Int  = 0;  < NUMPIXELS; ++)       { For each pixel...         LightValue[ * 3] = Random(240, 255); // 250         LightValue[ * 3 + 1] = Random(30, 60); // 50         LightValue[ * 3 + 2] = 0;       }       Switch some lights darker       Byte LightsOff  = Random(0, 4);       for (Int  = 0;  < LightsOff; ++)       {         Byte Selected = Random(NUMPIXELS);         LightValue[Selected * 3] = Random(50, 60);         LightValue[Selected * 3 + 1] = Random(5, 10);         LightValue[Selected * 3 + 2] = 0;       }       for (Int  = 0;  < NUMPIXELS; ++)       { For each pixel...         pixels.setPixelColor(, pixels.Color(LightValue[ * 3], LightValue[ * 3 + 1], LightValue[ * 3 + 2]));         pixels.Show();   Send the updated pixel colors to the hardware.       }     }   }   else   {     for (Int  = 0;  < NUMPIXELS; ++)     { For each pixel...       pixels.setPixelColor(, pixels.Color(0, 0, 0));       pixels.Show();   // Send the updated pixel colors to the hardware.     }   }
}

void loop()
{   SimulateFire(true, 0);
}

 

A look inside the lantern:

Lanterne construction inside

And this is how the lantern looked without electronics and diffusers:

Empty shell

 

I hope you enjoy rebuilding and as always see you next time.

For arduinoProjects for advanced

27 comments

Frank Hoerper

Frank Hoerper

Schoenes Projekt. Funktionierte auf Anhieb mit dem D1 Mini NodeMCU. Allerdings musste ich den Datenpin auf 12 setzen, da digital Pin und realer Pin nicht gleich sind.

Tobias Kuch

Tobias Kuch

Hallo Oliver,

Ja das ist korrekt.

Gruß
Tobias

Randolf Liß

Randolf Liß

HAllo , bin ganz neu und noch keine Erfahrung mit der Programmierung .

Kann man das ganze auch mit einem LED Stripe betreiben und wie würde der Code dann aussehen .

M.f.G.
Randolf

Oliver

Oliver

Hallo Tobias, vielen Dank für die schnelle Antwort. Mir würde der passende Befehl zum Ein- und Ausschalten des Ringes genügen. SimulateFire(false,0) / SimulateFire(true,0)?

Tobias Kuch

Tobias Kuch

Hallo Oliver
Dein Wunsch erfordert in nicht un aufwendiges Umschreiben des Codes und damit einen nicht unerheblichen Zeitaufwand, der hier an dieser Stelle leider nicht geleistet werden kann. Bitte stelle deine Anfrage an AZ Delivery mit der Bitte ein Extra Blog über dein Thema zu schreiben.
Viele Grüße
Tobias Kuch

Oliver Schneider

Oliver Schneider

Der Code funktioniert wunderbar auf einem Nano. Vielen Dank.
Ich würde den Ring über einen Lichtsensor bei Dunkelheit einschalten und bei einsetzender Dämmerung wieder abschalten. Wie kann ich das realisieren?

Matthias

Matthias

Ich versuche das ganze mit einem ESP32 NodeMCU, aber der Code wirft einen Memory error.
Gibt es einen Grund warum das auf einem ESP32 nicht funktionieren sollte?

Karli

Karli

Kondensator auf Power und ein 220R Wiederstand in der Steuerleitung sollte schon noch dabei sein.
MfG

Tobias

Tobias

Die Stromversorgung kann mit jedem Steckernetzteil mit 5 Volt / 1 Ampere Ausgang, oder mit dem gezeigten Spannungswandler mit jedem Netzteil 8-15 Volt / 1 Ampere Ausgang realisiert werden.

Frederick Hamm

Frederick Hamm

Womit kann man denn die Stromversorgung realisieren? Habt ihr irgendwelche Beispiele?

Rainer Sins

Rainer Sins

Zu den Fragen wo denn der Code sei:
Der Code ist bei mir mit Firefox und Chrome einwandfrei ersichtlich.
Welchen Browser verwendet ihr?
Grüße…

Tobias

Tobias

Der Code wurde noch im Artikel ergänzt. Ich habe als Diffusor auf dem Bild einfaches Papier verwendet, mit abgebildetem Ergebnis. Bei einem “professionellen” Diffusor (z.B aus einem alten LCD Monitor) erzielt man aber bestimmt noch bessere Ergebnisse.

Frank

Frank

Irgendwie kann ich keinen Code finden………….

Telemachos

Telemachos

Eine schöne Idee!
Sollte ###Code### noch durch den tatsächlichen Programmcode ersetzt werden?
Was wurde als Diffusor verwendet? Auf dem Foto erinnert es an Butterbrotpapier.
Und was ist “auf dem Speicher aufräumen”? Nie von gehört. 🤭

Jojo

Jojo

Hey,

wie genau wird die Stromversorgung hier realisiert?

Beste Grüße
Jojo

Jan

Jan

Wo finde ich den Code?

Alex

Alex

Hi,
leider ist der Code nicht ersichtlich.

Immanuel Schade

Immanuel Schade

Ja schön …. aber welcher Code? ;-)

Chr

Chr

Danke für den Beitrage, aber wo genau finde ich den Code?
/Chr.

A. Freudenstein

A. Freudenstein

Kann man den Code so veröffentlichen, dass er ladbar ist?
So kann ich mit dem Link nichts anfangen!
Axel F

masterflai

masterflai

Der Code fehlt noch.

masterflai

masterflai

Ein sehr schönes Projekt und ich musste schmunzeln, denn genau diese Laterne stand bei uns auch herum. Die wird in einem Herbstprojekt auf Vordermann gebracht. Danke für diese tolle Idee.

Jürgen

Jürgen

Guten Abend,
keine schlechte Idee, jedoch vermisse ich den Code. Oder habe ich etwas falsch gemacht??
So sieht es bei mir aus: "Wenn bis hierhin alles geklappt hat, wird der folgende Code auf den Nano hochgeladen:

###CODE###

Ein Blick in den inneren Aufbau der Laterne:"

Gruß Jürgen

Ralph Schraven

Ralph Schraven

Bitte jetzt noch den Code ;-)

Ralph Schraven

Ralph Schraven

Bitte noch den Code ;-)

Ralph

Hr. Drews

Hr. Drews

Hallo,

schöne Idee auch für andere Zwecke. Ich kann aber den Quell-Code nicht sehen / öffnen.

Werner

Werner

Sehr schöne Idee und wirklich preisgünstig aufzubauen. Wird der CODE noch nachgereicht? Bei mir war er am 26.8.19 im Blog nicht sichtbar.

Leave a comment

All comments are moderated before being published

Recommended blog posts

  1. Install ESP32 now from the board manager
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA - Over the Air - ESP programming via WLAN