Portable Luxmeter Using Arduino

Portable Luxmeter

Portable Luxmeter

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

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: BOMPortable Luxmeter (1)

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

Arduino Pro Mini 5V

MAX44009

  • 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

TP4056

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

Li-Ion battery

  • 3 – 4.2 Volts
  • Link

18650 holder

Switch jumper

Cables and header

Step 2: CircuitCircuit 3 (1)

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

Arduino – MAX44009 (same for OLED display)

A4 – SDA

A5 – SCL

VCC – VIN

GND – GND

TP4056 – Arduino Pro Mini
OUT+ – VCC

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);
}

Read more: Portable Luxmeter

Leave a Comment

Your email address will not be published. Required fields are marked *