In this article, I’m sharing a simple but genuinely useful DIY project that combines several maker skills — from basic soldering and Arduino programming to a bit of 3D printing and assembly. It can be a perfect build for DIY beginners who want to learn how electronics and micro controllers come together in a real, working device.

When you’re away from home, one of the easiest ways to deter potential intruders is to make your house look occupied. A TV simulator is a small electronic device that mimics the light flicker and color changes of a real television — casting dynamic reflections on the walls and windows at night. From the outside, it looks just like someone is watching a late-night show or movie — even though no one’s home.
It’s a simple, low-power, and surprisingly effective home security trick.
While commercial TV simulators exist, they’re often bulky, overpriced, or rely on static, unrealistic light patterns.
So I decided to build my own version — compact, customizable, and powered by a single ATtiny micro controller driving an addressable LED strip.
It’s small enough to hide on a shelf, easy to power from USB, and the firmware is fully programmable — making it a great project for experimentation and learning.
💡How It Works
The device uses a short strip of addressable SK6812 RGBW LEDs (or RGB WS2812B, WS2813, etc) controlled by a small ATtiny45 (or Attiny85) micro controller.
The firmware runs a set of randomized “TV-like” animation scenes, smoothly shifting between warm indoor tones, action-scene blues, news ticker flickers, and even sports field greens.
Just plug it into a 5 V USB power supply in a room visible from outside, and it will automatically create a convincing TV light effect. It consumes less than 1W, stays cool, and runs silently.
The simulator can be left on a timer, or connected to a smart plug and automated via Home Assistant.
🔹 Components Used
Below is the complete list of components I used for this build, along with AliExpress affiliate links for your reference. All of these parts were already available in my small DIY “lab,” so I didn’t need to purchase anything specifically for this project. Feel free to substitute components with whatever you already have on hand. This project is very flexible — as long as you can power an LED strip and program an ATtiny, you’re good to go.
- 🧠 ATtiny45 / ATtiny85
Description: 8-bit AVR microcontroller — like a tiny Arduino. ATtiny45 has 4 KB flash, ATtiny85 has 8 KB.
Notes: Use ATtiny85 if you want longer LED strips or more animation scenes.
Links: ATtiny 45 (Link1, Link2), ATtiny 85 (Link1, Link2) - 🧩 8-pin DIP Socket
Description: Socket for inserting/removing the ATtiny microcontroller.
Notes: Makes it easy to remove or re-flash the chip without desoldering. Important: Align the notch with the IC orientation mark.
Links: Link1, Link2 - 💡 SK6812 RGBW LED strip
Description: Individually addressable LEDs with Red, Green, Blue, and White channels.
Notes: A short segment of 12–16 LEDs is enough. You can also use WS2812B / WS2813 (RGB only) — they should work with the same code using the standardNEO_GRBmode instead ofNEO_GRBW
Links: Link1, Link2 - 🔌 5 V Power Source and USB-C to USB-A cable
Description: USB adapter or any stable 5 V supply (200 mA+).
Notes: You can any use a USB-A -> USB-C cable with the +5 V and GND connected. - ⚙️ 330–470 Ω resistor
Description: In series with the data line.
Notes: Protects the first LED.
Links: Link1, Link2 - ⚙️ 220-1000 µF electrolytic capacitor (≥6.3 V)
Description: Across +5 V and GND near the strip.
Notes: Smooths power-on voltage dips and prevents reset flicker.
Links: Link1, Link2 - 🧷 Prototyping board / wires
Description: For soldering or breadboarding connections. I used a piece of 2X8CM Prototype Board.
Notes: PB0 → DIN, VCC → 5 V, GND → GND.
Links: Link1, Link2 - 🔘 KCD1 rocker switch (21×15 mm)
Description: Standard ON/OFF switch for AC/DC devices.
Notes: Mounts flush in the 3D case; connects to the 5 V line from USB-C.
Links: Link1, Link2 - ⚡ USB-C female connector module (5V only)
Description: Allows powering the device from any USB-C charger or power bank.
Notes: Simple 2-pin version (VBUS + GND) is enough; no data lines needed.
Links: Link1, Link2 - 🪛 U-shaped aluminum LED profile (optional)
Description: Standard 17×7 (or 17×8) mm profile with a frosted plastic cover.
Notes: Helps diffuse light evenly, acts as a heat sink, and gives a polished look. The 3D-printed case is designed to hold this profile snugly.
Links: Link1, Link2 - 🖨️ 3D-printed case (optional)
Description: Optional enclosure to protect the electronics.
Notes: STL model provided below. - 🔩 2× M3 bolts + 2× M3 nuts (optional)
Description: For securing the 3D-printed case lid.
Notes: Common M3×8–10 mm bolts.
Links: Link1, Link2
🔧 Firmware and Programming the ATtiny
All firmware and source code are available on GitHub:
👉 https://github.com/Stepyon/ATTiny-TV-Simulator
I created this firmware with the help of ChatGPT, and it made the whole process surprisingly easy. Even if you’ve never programmed an ATtiny before, you can simply describe what you want — for example, “add a new scene animation” or “make the LEDs brighter in this scene” — and ChatGPT can generate or modify the code for you.
This approach turns firmware development into a creative, iterative process rather than a technical barrier. You can focus on what you want your device to do, and let AI handle the how — a perfect way to learn and experiment with embedded programming.
To upload the firmware, I used the Arduino IDE with ATTinyCore by Spence Konde — this makes programming ATtiny chips as easy as a regular Arduino board.
- In Arduino IDE, open:
File → Preferences → Additional Boards Manager URLs
and add this line:http://drazzy.com/package_drazzy.com_index.json - Go to Tools → Board → Boards Manager, search for ATTinyCore, and install it.
- Select Tools → Board → ATTinyCore →
ATtiny25/45/85 (No bootloader) - Then set these options under the Tools menu:
Chip: ATtiny45Clock: 8 MHz (internal)millis()/micros(): DisabledLTO: Enabled - Select your programmer and upload the sketch.
💻 My Programmer Setup
For flashing the chip, I use the Tiny AVR Programmer (affiliate link) — a compact and reliable USB ISP programmer designed for ATtiny microcontrollers. It works perfectly with ATtiny25/45/85 series, and even with the smaller ATtiny13A, which I’ve also used in other LED and automation projects. If you don’t already own a programmer, this one is a great long-term investment — it covers most common ATtiny chips you’ll ever use in DIY electronics. This programmer connects directly to the ATtiny chip and lets you flash firmware straight from the Arduino IDE. Since the micro controller is mounted in an 8-pin socket, you can easily remove it and reprogram it whenever needed — no desoldering or extra headers required.
🖨️ 3D Printing the Case

The enclosure consists of two parts — the base and the lid.
Both are designed to be compact and easy to print on any 3D printer, without the need for supports.
You can print the parts in PLA, PETG, ABS, or ASA — whichever material you’re most comfortable with.
Print each part separately, using your preferred slicer settings and layer height.
The design is forgiving and doesn’t require fine tolerances, so even beginner-friendly PLA prints will work perfectly.
The case models are available on TinkerCAD here: 🔗 TinkerCAD Model Link
Once printed, you can proceed with the electronic assembly steps below.
🛠️ Assembling the TV Simulator
Once you’ve gathered all components, it’s time to assemble the TV simulator.
The build is simple and takes about 30–40 minutes if you already have a soldering iron ready.

1️⃣ Preparing the Base Board
- Start with a piece of prototype board (perfboard) 20×80 mm.
Cut it down to 20×30 mm — this is the size the 3D-printed case is designed to hold snugly. - Place the 8-pin IC socket for the ATtiny45 roughly in the center of the board.
- Arrange the resistor, capacitor, and wires to the USB-C socket and switch so that the wiring remains neat and short.
(PB0 → LED data line through 330–470 Ω resistor, VCC → 5 V, GND → ground.).
I used connectors wherever possible — for example, a JST PH 2.0 connector for the USB-C socket and a JST SM 3-pin (male + female) pair to connect the LED strip to the PCB. This makes assembly and future disassembly much easier, but it’s completely optional — you can also solder the wires directly if you prefer.
2️⃣ Preparing the LED Module

- Cut a 16-LED segment from your SK6812 strip (60 LEDs/m).
This gives you a perfect ~26.6 cm long light section — plenty for a natural, flickering glow. - Cut a piece of aluminum LED profile slightly longer than the LED strip (around 1–2 cm extra).
This extra length helps the profile slot securely into the 3D-printed case. - Slide the LED strip into the profile, LEDs facing the frosted diffuser cover.
- Close the top end with a plastic cap, and leave the bottom open — this is where the wires exit into the case opening.
3️⃣ Installing Components into the Case
- Insert the USB-C socket and the rocker switch into their designated cutouts in the 3D-printed case.
They should fit tightly — you can secure the USB socket with nut provided. - Pass the LED strip’s wires through the bottom slot and connect them to the board:
- +5 V → VCC
- GND → GND
- DIN → PB0 (via 330 Ω resistor)
- Insert the assembled PCB into its mounting slot inside the case.
- The LED profile slides into the top opening — it should fit snugly, aligning with the inner channel designed for it.
4️⃣ Securing the Case
- Place the M3 nuts into their hex recesses in the case bottom.
Optionally, add a drop of glue to hold them in place while assembling. - Position the lid and secure it with two M3 bolts from the bottom.
- The result is a modular build — easy to open later if you want to reprogram the ATtiny or modify the LED strip.
🏠 Using the TV Simulator
Once assembled, the TV simulator is completely automatic — just plug it into any 5 V USB power source, and it starts running its random light patterns right away.
However, you can make it much smarter with a simple addition.
💡 Powering and Automation
Because the device runs on standard 5 V USB power, you can plug it into:
- A USB wall adapter or phone charger
- A USB port on your router or TV
- Or a smart plug that you can control remotely
By using a Wi-Fi or Zigbee smart plug (or any Home Assistant–compatible switch), you can easily automate when the simulator turns on or off. For example, you can create a Home Assistant automation that turns it on automatically when:
- Nobody is home (based on presence detection)
- It’s after sunset
- Or the security mode is active
This way, your home will appear occupied in the evenings even while you’re away — without wasting power during the day.
🔧 Now It’s Your Turn
I’ve shared my own experience and design choices here, but you don’t need to follow every step exactly. The beauty of DIY is that there’s always room to adapt, reuse, and experiment.
I built this project mostly using components I already had on hand — but you can easily substitute parts or upgrade them. For example, you might choose an ATtiny85 instead of the ATtiny45. It costs less than a dollar more, yet offers twice the flash memory, allowing you to add more animation scenes or drive a longer LED strip.
Don’t have all the same components? No problem — use what you already have in your parts box. The idea is to learn, build, and have fun, not to chase perfection. Even small changes — a different power connector, switch type, or LED count — can make your version unique.
That’s the real charm of DIY electronics: every project becomes a little bit your own.


Leave a Reply