Introduction: Portable Luxmeter

This project is about making portable luxmeter. It can be used in schools, where children can measure different kinds of light sources.


1. measure intensity of light in lux.

2. calculate solar irradiation from lux to watts/m2 (factor 112)

3. charging battery using USB port

Total cost is around 13 $ without case. Luxmeter take 15 mA, so it will works long time on one Li-Ion battery.

Step 1: BOM

  • For project you need this components(affiliate links, if you want to support me):

Arduino Pro Mini 5V


  • Wide 0.045 Lux to 188,000 Lux Range
    VCC = 1.7V to 3.6V ()
  • ICC = 0.65µA Operating Current
  • -40°C to +85°C Temperature Range
  • Link

OLED display

  • Diagonal Screen Size:0.96"

  • Number of Pixels:128 x 64

  • Color Depth:Monochrome (Yellow&Blue)

  • Dimension:27.8 x27.3x 4.3 mm

  • Working Voltage: 3.3~ 5V DC

  • Power: 0.06W

  • MaxViewing Angle: >160 Degree

  • Duty:1/32Brightness ( cd/m2):150 (Typ) @ 5V

  • Interface: I2C

  • Link


  • need USB to micro USB cable for charging
  • input 5V

Li-Ion battery

18650 holder

Switch jumper

Cables and header

Step 2: Circuit

You need of course 5V Arduino to power it with Li-Ion battery (4,2 V!)


Arduino - MAX44009 (same for OLED display)

A4 - SDA

A5 - SCL



TP4056 - Arduino Pro Mini

Arduino - battery

VCC - plus terminal (max 5 V for Arduino 5V)

Arduino - switch jumper

GND - first switcher

TP4056 - switch jumper

OUT - - second switcher

Battery - switch jumper

minus terminal - first and second switcher

Step 3: Code

#include <Wire.h>

#include <Adafrfuit_SSD1306.h>
#include <Adafruit_GFX.h>

#include <Fonts/FreeSerif9pt7b.h>

#include "MAX44009.h"

MAX44009 Lux(0x4A);

float lux; float watts; // OLED display TWI address #define OLED_ADDR 0x3C Adafruit_SSD1306 display(-1); // restart display with reset button on arduino void setup() { Lux.Begin(0, 188000); display.begin(SSD1306_SWITCHCAPVCC, OLED_ADDR); display.clearDisplay(); display.display(); // display a line of text display.setTextSize(1); display.setTextColor(WHITE); display.setFont(&FreeSerif9pt7b); display.setCursor(1,15); display.print("MAX44009"); display.display(); } void loop() { lux=Lux.GetLux(); // get luxs watts =Lux.GetWpm(); // get watts/m2, only for SUN source display.fillRect(1, 20, 100, 100, BLACK); // create black rectangle on values position display.setCursor(1,40); display.print(lux); display.setCursor(80,40); display.print("lux"); display.setCursor(1,60); display.print(watts); display.setCursor(80,60); display.print("W/m"); display.setCursor(115,55); display.print("2"); display.display(); delay(1000); }

Step 4: Solder

I create on prototype board socket for Arduino Pro Mini and pins for connect other things. I also build simple case from plywood. Use Plastic Zip Cable Wire for mounting display to door, also for joints.

Step 5: Charging

I mount charging module - TP4056 to luxmeter. Red light showing charging, blue light not connected usb cable (micro usb). With switch jumper, I can switch on/off charging.

Step 6: Formal Lesson Plan

1. Teacher describe what are luxs, watts and describe how to work with luxmeter.

2. Students will have task, to measure luxs:

a, choose light sources, and measure distance from source using length gauge

b, measure intensity of light source

c, write all values to table.

Step 7: Own Measurement

  1. Street lamp gives 5 - 25 lux, probably depend on height of light source.
  2. Daylight gives 80 000 - 100 000 lux, depend on angle between sensor and sun beams.
  3. Sun under cloud during sunny day 15 000 lux
  4. LCD monitor give me 78 lux (0 cm distance), 63 lux (10 cm), 50 lux (20cm)
  5. smartphone 60 lux (0 cm)
  6. inside room during sunny day retracted blinds 60 lux

For calculation Watts/m2, you need to know luminous efficacy (in lumens per watt ).

For Sun it is around 110 lumens/W (on horizontal plane), 96 lumens/W ( on direct Sun beams).

So for Sun I get direct 700 - 900 W/m2 intensity.

Lux to watt/m2 calculator

Sensors Contest

Participated in the
Sensors Contest