Portable Luxmeter




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 https://www.rapidtables.com/calc/light/lux-to-watt-calculator.html

Sensors Contest

Participated in the
Sensors Contest

Be the First to Share


    • Rice & Grains Challenge

      Rice & Grains Challenge
    • CNC and 3D Printing Contest

      CNC and 3D Printing Contest
    • Puzzles Challenge

      Puzzles Challenge



    2 years ago on Step 2

    Witam podczas kompilacji w arduino pojawił się błąd czy może Pan pomoc w usunięciu błędu


    3 years ago

    Buenos días Estimado Michal
    Este equipo mide intensidad y radiación.
    En las clases de laboratorio con los estudiantes necesitamos medir además la longitud de onda.
    Cómo incorporar la medición de la longitud de onda a este dispositivo?

    Michal Choma
    Michal Choma

    Reply 3 years ago

    ehm, you mean something like this?
    This equipment measures intensity and radiation.
    In laboratory classes with students we need to measure the wavelength.
    How to incorporate the wavelength measurement to this device?
    Then answer is: It is very hard to measure wavelength of light source. You mean measure spectrum of light? Like sun, or LED? I can only measure IR, FULL spectrum, in relative units. I think, the good project will be, add UV, IR and VISIBLE light detectors. It should works. Also I find sensor, which can measure what wavelengths can object absorb. https://learn.sparkfun.com/tutorials/spectral-triad-as7265x-hookup-guide/all?fbclid=IwAR3OEzOqO4sdi3-5gBWBg4oV7H761-nKQLnkcEq9njSDPbKJA5uswfLhmeM#hardware-overview


    3 years ago

    Very neat :)

    Michal Choma
    Michal Choma

    Reply 3 years ago

    Thanks, I will try next to add more sensors and use TFT bigger display with SD card logging.