Blue light therapy can be used to improve mood, improve sleep, treat jet lag, adjust bedtimes and boost energy. It is done by viewing it with your upper peripheral vision. I think this light book would benefit students who start school early when it's still dark. This one can fit in your backpack, is dimmable, has an adjustable timer and it doesn't cost too much to build. Using it in the morning can turn you into an early bird and using it in the evening can turn you into a night owl. You can use this while riding a bus.
AC or Li-ion battery powered
Wide range of input voltage: 8.4-24V
Wide viewing angle
Power consumption: 14W
Battery life at full brightness: 1h 30min (using two 18650 2.5Ah batteries)
Brightness range: 256 levels
Step 1: Materials
1 - hollowed out book with 8 x 6-1/4 x 1/8 of storage space
1 - clear plastic sheet larger than 8 x 6-1/4 x 1/8 with invisible tape
1 - 4 x 8 copper cladded board
1 - 3 x 1-1/4 copper cladded board
2 - 100nF capacitors
1 - 12-20V zener diode
1 - 1N4001 diode
200 - 0805 wide angle 470nm blue LEDs (120-130 degrees)
1 - IRFZ44N MOSFET
1 - AO3400 MOSFET
2 - 10M resistors
1 - 33k resistor
1 - 1k resistor
1 - 10k resistor
20 - 100R resistors
1 - on-off switch
1 - LM7805 regulator
1 - ATtiny85
1 - 8-pin DIP chip holder
1 - arduino (you only need this to program the ATTiny85)
1 - LM2577 DC-DC converter boost module
2 - 10k potentiometers
1 - DC power jack
1 - 9-24V power supply (18W or higher)
1 - 2 cell 18650 holder for protected cells (protected cells are slightly longer than unprotected ones)
2 - protected 18650 Li-ion batteries
1 - 3A slow blowing fuse (if using unprotected batteries)
4 - sets of stand-offs (1/8" think)
4 - sets of nuts and bolts (1/8" thick)
*all resistors and capacitors have 0805 packages
Step 2: Circuit
This circuit uses the ATTiny85 microcontroller as a timer and light dimmer. Q1 is the load switch for powering the entire circuit. . The IRFZ44N was used because powering on the circuit produces a brief surge current while charging the converter's capacitors. D1 keeps Q1's Vgs from exceeding the zener voltage which should be under 20V. Q2 was used to switch the LED array. R5 limits the Vds of Q2 below its Vds(max) of 30V while it is off by allowing the LEDs to continue conduct with a small current enough to drop 30V. They will be dimly lit at the lowest brightness setting. R1 and R3 are discharge resistors which make sure Q1 and Q2 are off when they should be.
The LM2577 step-up converter keeps the LED array at 30-35V and allows a wide range of supply voltages to be used which is below the output voltage. It can be adjusted to a lower voltage if the current is too high or you need less light. 2V across the 100 ohm resistors would equal 20mA per string. I had the output voltage set to 32.3V and the resistors were at 1.5V giving 15mA. The DC jack was wired to allow dual power by connecting its middle pin to the battery's ground, the outer pin to the power supply's ground, and the inner pin to the positive voltage of both power sources.
Step 3: Sketch for ATtiny85
The following sketch programs the ATtiny85 into both a PWM dimmer and a lamp timer. VR1 sets the brightness level of the LED array from 0 to 255 and VR2 sets the light timer between 0 to 60 minutes every hour which may be preferable if you work nights. Since the ATtiny reads the values of the potentiometers at the beginning of its loop, it needs to be reset by turning it off and on after adjusting them. If you want a different on/off period, change the value of periodMin.
You can learn how to program the ATtiny85 here: https://www.instructables.com/id/Program-an-ATtiny-with-Arduino/
int LEDPin = 0; // PWM input connected to digital pin 0
int brightPin = 2; // brightness potentiometer connected to analog pin 2
int timerPin = 3; // timer potentiometer connected to analog pin 3
long periodMin = 60; // sets the time period in minutes
long periodSec = periodMin*60; // calculates the time period in seconds
long period = 1000*periodSec; // calculates the time period in milliseconds
pinMode(LEDPin, OUTPUT); // sets the pin as output
int val1 = analogRead(brightPin); // read the brightness setting potentiometer
analogWrite(LEDPin, val1 / 4); // sets brightness levels of LED array from 0 to 255
int val2 = analogRead(timerPin); // reads the timer setting potentiometer
long on = (period*val2/1023); // on time in milliseconds
long off = (period-on); // off time in milliseconds
analogWrite(LEDPin, 0); // sets brightness of LED array to 0
Step 4: ExpressPCB Files
I designed the circuit boards using ExpressPCB and included a file for full page printing. Please feel free to modify the design if you have a different component package. ExpressPCB can be downloaded here:
For Linux, you can install WINE to use the program.
Step 5: Etch-resist for the Circuit Boards
Step 6: Circuit Board Etching
I used ferric chloride to etch the boards.
Step 7: Etch-resist Removed
Remove the etch-resist with acetone.
Step 8: Soldered Components
I hand soldered the SMD components in this step. Flux should be used before lining up the components which is the most tedious part of this step. A tweezer is needed to move the LEDs and a thumb tack can be used to hold the LEDs to the solder pads while soldering.
Step 9: Removed Flux Residue
Remove the flux residue with acetone.
Step 10: Wires With Strain Relief
Use hot glue to strain relief the wires.
Step 11: Holes for Attaching Circuit Boards
Use a 1/8" drill bit for the stand-offs. You will need a larger bit for the DC power jack. To flatten the hole edges, use a dremel.
Step 12: Screws for Circuit Boards and Battery Holder
Step 13: Wires With Cable Ties
Step 14: Transparent Cover for LEDs
Hot glue the clear plastic sheet to the book. You will be using invisible tape as the diffuser so we will need the plastic sheet to support it.
Step 15: Invisible Tape As a Light Diffuser
Cover the clear plastic with invisible tape.
Step 16: Division Markings for Potentiometer
Measure the voltage at the centre tap of VR2 at increments of 500mV. This would equal to 10% or 6 minutes for 1 hour. Mark the divisions on the circuit board .
Step 17: Improvements
Use an external battery holder: Using an internal battery holder keeps the light book compact but the batteries may be sensitive to overheating if you keep it closed and running. To use it externally, solder a 2.1mm plug to the holder. This also allows you to use a larger battery pack if needed.
Use a 3- to 6-cell Li-ion battery holder: With a larger supply voltage, the light book becomes more efficient and run cooler because the converter would require less current and the load MOSFET is fully turned on.
Use through hole components for the LED array: Hand soldering the LED array with SMD LEDs was not a very easy step and required the use of etchant to develop it. It was a 4 or 5 hour long step. If you use 5mm LEDs, look for wide beam angles of around 130 degrees and use a perf board instead. You may need a thicker book for a more even lighting.
Second Prize in the