Modul pro měření intenzity světla obsahuje měřící senzor BH1750. Tento senzor komunikuje přes rozhraní I2C a převádí naměřenou intenzitu světla ve svém okolí na digitální výstup ve formě číselné hodnoty. Tato hodnota pak je udávána v jednotce lux a může nabývat rozsahu 1 až 65535. Z dalších údajů výrobce je zajímavé zmínit také rozsah provozních teplot -40 až +85 stupňů Celsia či běžný proudový odběr senzoru 0,12 mA. Pro napájení tohoto modulu pak můžeme použít jak 3,3 tak i 5 V z Arduino desky.

Modul pro měření intenzity světla

Pro úspěšné propojení senzoru intenzity světla s Arduino deskou je nutné zapojit celkem 5 propojovacích pinů. Propojíme VCC s 3,3 nebo 5V Arduina, GND se zemí Arduina, SCL s pinem A5, SDA s pinem A4 a ADDR se zemí Arduina. Datové piny SCL a SDA je nutné zapojit na I2C piny použité Arduino desky, kdy například u Arduino Uno desky jsou to zmíněné piny A4 a A5.

Schéma zapojení modulu pro měření intenzity světla

Pro správnou funkci uvedeného ukázkového kódu je nutné stáhnout a naimportovat knihovnu BH1750, návod jak na to je uveden zde. Ukázkový kód obsahuje na svém začátku připojení potřebných knihoven Wire a BH1750 a poté inicializaci senzoru z připojené knihovny. V podprogramu setup jako první nastavíme komunikaci po sériové lince a následně zahájíme komunikaci se senzorem BH1750. Nekonečná smyčka loop pak obsahuje vytvoření proměnné pro ukládání naměřených údajů, do které se ihned načte aktuální intenzita světla. Po načtení výsledku ho pak už jen vytiskneme po sériové lince a vyčkáme 1 vteřinu do dalšího měření.

// Měření intenzity světla BH1750

// připojení potřebných knihoven
#include <Wire.h>
#include <BH1750.h>
// inicializace senzoru BH1750 z knihovny
BH1750 luxSenzor;

void setup() {
  // komunikace po sériové lince rychlostí 9600 baud
  Serial.begin(9600);
  // zapnutí komunikace se senzorem BH1750
  luxSenzor.begin();
  // pauza před zahájením měření
  delay(200);
}

void loop() {
  // vytvoření proměnné pro uložení naměřených údajů
  // a načtení aktuální intenzity světla
  uint16_t lux = luxSenzor.readLightLevel();
  // vytištění výsledku po sériové lince
  Serial.print("Intenzita svetla: ");
  Serial.print(lux);
  Serial.println(" luxu.");
  // pauza po dobu 1 vteřiny před dalším měřením
  delay(1000);
}

Po nahrání ukázkového kódu do Arduino desky s připojeným senzorem intenzity světla dostaneme například tento výsledek:

Intenzita svetla: 42 luxu.
Intenzita svetla: 64 luxu.
Intenzita svetla: 72 luxu.
Intenzita svetla: 272 luxu.
Intenzita svetla: 901 luxu.
Intenzita svetla: 1356 luxu.
Intenzita svetla: 2417 luxu.
Intenzita svetla: 3559 luxu.
Intenzita svetla: 4574 luxu.
Intenzita svetla: 5500 luxu.
Intenzita svetla: 5776 luxu.
Intenzita svetla: 6075 luxu.

Modul se senzorem BH1750 pro měření intenzity světla je velmi jednoduchým nástrojem, který nám umožňuje snadno měřit intenzitu světla ve svém okolí. Můžeme tedy využít tento modul například v detektorech či měřičích světla a vytvořit třeba svůj vlastní stmívač osvětlení. Pokud byste ale potřebovali měřit intenzitu světla v kratších intervalech, je nutné zmínit minimální dobu mezi novými údaji ze senzoru, kterou výrobce udává v intervalu 120 až 180 milisekund.

 

Seznam použitých komponent:

http://dratek.cz/arduino/974-arduino-uno-r3-atmega328p-1424115860.html

http://dratek.cz/arduino/902-arduino-mereni-intenzity-svetla-1420672425.html

FB tw

Další podobné články