Files

3.7 KiB

FireFly Solar / 日輪蛍

Nichirin Hotaru
A small solar-powered Morse firefly for the outdoors.

太陽を宿し、夜にモールスを灯す蛍。
Taiyō o yadoshi, yoru ni Mōrusu o tomosu hotaru.
A firefly carrying the sun, lighting Morse in the night.

Overview

FireFly Solar is a small outdoor LED blinker inspired by the idea of an LED throwie, but powered by sunlight instead of a disposable coin cell.

During the day, the solar cell charges the energy storage.
At night, the circuit wakes up and sends a simple Morse-style light signal.

About this Project

FireFly Solar is my technology playground. It is a small garden object, but its real purpose is to learn by building something complete. With it I learn about:

  • Circuit design at the edge: in this case, as low power as possible
  • PCB design
  • Weatherproof casing
  • ATtiny programming

Possible next technology step: everything about DIY SMD design and soldering.

Project Goals

  • Build a solar-powered outdoor Morse blinker
  • Keep the hardware simple and robust
  • Improve practical low-power design skills
  • Test mechanical concepts for outdoor 3D-printed parts
  • Learn what is needed to turn a small electronics project into a possible DIY kit

Software

The firmware runs on an ATtiny85 at 1 MHz (internal clock, ATTinyCore: clock=1internal, millis=disabled). The LED itself is used as the light sensor. When it is dark, the firefly sends a short Morse text ("TGO 26") about once a minute.

Current Firmware version: v0.4 (2026-11-08)

Goal: lowest possible average current.

Changes vs v0.3:

  • No delay() / millis(); Timer0 and Timer1 are gated off in PRR.
  • The watchdog (interrupt mode) is the only timebase: Morse units (~96 ms), the sensing window and the 8 s sleeps. The CPU sleeps in power-down in between.
  • Darkness sensing: the CPU sleeps in 16 ms steps while the LED junction discharges, instead of a busy digitalRead() loop. Bright light exits after the first step. darknessThreshold is replaced by darkSteps.
  • The ADC is disabled before it is gated off in PRR; pins are set up before PRR.
  • After a power-on or external reset, no blinking for RECOVER_CYCLES (about 16 min), so the supercap can recharge.
  • DEBUG_TEST switch for bench testing: 8 s cycle, no recovery wait, short flash when the sketch decides "bright". Set it to 0 for the field.
  • Optional BOD_FUSE_ENABLED (BOD off during sleep); unused with the BOD fuse off.

Tested: compiles with ATTinyCore and runs on hardware. Current draw is not yet measured.

PCB

  • Finished: a batch of 10 is assembled, tested and working.
  • Latest adjustment: fine-tuned the resistors for the LED, and the 3.9 V Zener diode is confirmed safe avoid overcharging 4V supercap.
  • Next version: the PCB should be a little shorter. The wiring space is a bit too tight now.

Casing

Works basically as intended. Lessons for the next version:

  • Better locking of the solar modules.
  • The rope structure works, but building it is too complicated and takes a lot of nerves.
  • Using material tension to secure the modules via rope was basically a good idea.

Naming

The English project name remains:

FireFly Solar

For blog posts, documentation, and presentation, the project also uses the Japanese name:

日輪蛍 / Nichirin Hotaru

The name roughly means sun-disc firefly. It keeps the solar theme, adds a slightly mythic tone, and still fits a small piece of outdoor hardware.


Contributing

PRs and issues welcome. Keep it simple.
Photos of your build you send me go in Documentation/gallery/ with a short caption and license notice.


License

Default license: CC-BY-NC-4.0