87 lines
4.8 KiB
Markdown
87 lines
4.8 KiB
Markdown
# ATtiny 13 WS2812B-LED Fire-Effect Garden Lamp
|
|
This is how you can build a Garden Lamp based on an ATtiny13 and some WS2812B (Neopixel) LEDs.
|
|
The LEDs are Simulating a nice-looking Fire-Effect. This effect is generated using a random number generator.
|
|
It also features a LDR Light-Sensor to turn on the Lamp in the Darkness automatically.
|
|
In the code you can set a time after which the lamp automatically turns off, even if it is still dark.
|
|
|
|
This circuit can be used with old solar lamps like i did it with this one:
|
|
|
|
<img src="pictures/lamp.jpg" width="25%">
|
|
<img src="pictures/lamp_gif.gif" width="25%">
|
|
|
|
# Software
|
|
The software is based on several different code snippets. You can find links to them in the Sources-Tab.
|
|
There are a view different configuration options (like on-time, color, ...), which can be done in the `config.h` file. They are well described in this file.
|
|
|
|
### Features
|
|
1. Fire-Effect turns on when LDR-value gets under `on_val` as defined
|
|
2. Second state is entered after the timeout `max_on_time` is reached. The LEDs light in the color, defined as `timeout_...`.
|
|
3. If it gets light again the LEDs light in the color, defined as `day_...`. If you want it to be off, set all values to 0.
|
|
|
|
## Program the ATtiny
|
|
### 1. Upload `ArduinoISP` sketch to the Arduino
|
|
You can find it in the Examples folder of the Arduino-IDE
|
|
|
|
### 2. wiring
|
|
I use a Arduino Nano to program the ATtiny, but also a Arduino UNO will do fine. Hook up the ATtiny like it is shown in the schematic:
|
|
|
|
<img src="pictures/Program_ATtiny_Steckplatine.png" width="50%">
|
|
|
|
The capacitor is important because it prevents the Arduino from resetting itself while programming the ATtiny.
|
|
|
|
### 3. Download ATtiny13 support for the IDE
|
|
Add the URL `http://drazzy.com/package_drazzy.com_index.json` to the Additional Boards Manager URLs in the IDE Preferences. After that open the Boards-Manager, search for "DIY Attiny" and install it. Now you should find the Attiny13 and some other Attiny Boards in the Board menu.
|
|
|
|
### 4. Uploading
|
|
Open the code in the Arduino IDE and select the Attiny13 as the Board.
|
|
Select the following settings:
|
|
<br><img src="pictures/ide_settings.png" width="40%">
|
|
|
|
These settings are important:
|
|
- Processor-Speed to 9.6 Mhz
|
|
- Millis, Tone Support to "No Millis, No Tone"
|
|
- Programmer: "Arduino as ISP" (**NOT Arduino ISP**)
|
|
|
|
**After that Press `Burn Bootloader` to make sure that these Settings are applied.**
|
|
|
|
Now you can upload the code by simply pressing **Upload**.
|
|
|
|
|
|
|
|
# Hardware
|
|
## Schematic
|
|
<img src="pictures/ATtiny_WS2812_garden_lamp_Schaltplan.png" width="80%">
|
|
|
|
## PCB Layout
|
|
<img src="pictures/ATtiny_WS2812_garden_lamp_Leiterplatte.png" width="40%">
|
|
|
|
## ATtiny-Pinout
|
|
<img src="pictures/attiny-pinout.png" width="40%">
|
|
<br>(Source: https://cdn.sparkfun.com/assets/f/8/f/d/9/52713d5b757b7fc0658b4567.png)
|
|
|
|
|
|
|
|
# Sources / Useful Links
|
|
You can find more detailed information here:
|
|
- Arduino ISP: https://www.instructables.com/Updated-Guide-on-How-to-Program-an-Attiny13-or-13a/
|
|
- Light sensor: https://www.elec-cafe.com/attiny85-light-sensor-switch/
|
|
- Timer Interrupt: https://arduinodiy.wordpress.com/2015/06/22/flashing-an-led-with-attiny13/
|
|
- WS2812B Lib:
|
|
- https://blog.podkalicki.com/attiny13-controlling-leds-ws2811ws2812/
|
|
- https://github.com/lpodkalicki/blog/tree/master/avr/attiny13/034_rainbow_on_single_led_ws2812
|
|
- Random number gernerator lib:
|
|
- https://blog.podkalicki.com/attiny13-pseudo-random-numbers/
|
|
- https://github.com/lpodkalicki/blog/tree/master/avr/attiny13/009_lightweigth_prng_based_on_lfsr
|
|
- Fire Effect:
|
|
- https://codebender.cc/sketch:271084#Neopixel%20Flames.ino
|
|
- WS2812FX-Lib, "Fire-Flicker" Effect: https://github.com/kitesurfer1404/WS2812FX
|
|
|
|
<br>
|
|
|
|
### I hope you like this project!
|
|
|
|
<br>
|
|
<p xmlns:dct="http://purl.org/dc/terms/" xmlns:cc="http://creativecommons.org/ns#" class="license-text">This work by <span property="cc:attributionName">Dustin Brunner</span> is licensed under <a rel="license" href="https://creativecommons.org/licenses/by/4.0">CC BY 4.0<img style="height:15px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1" /><img style="height:15px!important;margin-left:3px;vertical-align:text-bottom;" src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1" /></a></p>
|
|
|
|
<a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons Lizenzvertrag" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />Dieses Werk von <span xmlns:cc="http://creativecommons.org/ns#" property="cc:attributionName">Dustin Brunner</span> ist lizenziert unter einer <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Namensnennung 4.0 International Lizenz</a>.
|