Raspberry Pi: TSL2561 digitale helderheid/licht sensor

Met behulp van een TSL2561 digitale helderheid/licht sensor kun je lichtsterkte meten. In tegenstelling tot de meeste standaard lichtsterkte sensoren meet de TSL2561 zowel infrarood als zichtbare lichtsterkte. De sensor kan de lichtsterkte tussen 0,1 en 40.000+ lux meten, hiervoor wordt gebruik gemaakt van twee fotodiodes.

De TSL2561 is van de I2C interface van de Raspberry Pi vrij eenvoudig aan te sluiten op de Raspberry Pi. De sensor kan een handig hulpmiddel zijn om dynamisch de verlichting aan te passen.

Met behulp een Python script lezen we de volledige spectrum, infrarood en totale zichtbaarheid waardes gemeten door de sensor uit. De waardes worden in lux weergegeven.

Componenten voor dit project

TSL2561 Light Intensity Sensor Module (link)
• Dupont verbindingkabels male/male (link)

Raspberry Pi Zero, Raspberry Pi 2, Raspberry Pi 3
Raspbian Jessie (2016-05-27 kernel 4.4.13)

Aansluitschema Raspberry Pi

Er zijn verschillende TSL2561 modules op de markt beschikbaar, voor het aansluiten op de I2C interface van de Raspberry Pi gebruiken we alleen de pinnen: VCC(VIN), GND, SCL en SDA.

tsl2561 raspberry pi

TSL2561 module Raspberry Pi pin Functie
VCC 1 3V3v
GND 6 Ground
SCL 5 SCL0 I2C
SDA 3 SDA0 I2C

I2C Activeren

De TSL2561 module maakt gebruik van het I2C protocol om te kunnen communiceren met de Raspberry Pi. Het mooie van I2C is dat meerdere apparaten/modules kunnen communiceren via de GPIO pinnen die worden gebruikt voor I2C.

Standaard is de I2C functionaliteit op de Raspberry Pi uitgeschakeld. Je kunt deze activeren met behulp van raspi-config.

sudo raspi-config

Selecteer de optie ‘Advanced Options’ ▸ ‘I2C’ en kies ‘YES’ om de I2C interface te activeren.

Controleren werking I2C

Nadat de module is aangesloten op de I2C bus kun je controleren of deze ook daadwerkelijk wordt gedetecteerd. Dit kun je doen met de I2C tools, heb je deze niet geïnstalleerd dan kun je dit doen met behulp van:

sudo apt-get install i2c-tools

Controleer hierna of de module zichtbaar is:

sudo i2cdetect -y 1

TSL2561 module heeft als ID #039. Mocht de module niet zichtbaar zijn controleer dan of kabels goed zijn aangesloten.

Voorbeeld script

tsl2561 lux raspberry pi

Met behulp van het onderstaande script kun je de lichtwaarden gemeten door de sensor uitlezen. Het script maakt gebruik van de smbus, om hiervan gebruik te kunnen maken dien smbus ondersteuning voor Python te installeren:

sudo apt-get install python-smbus
# TSL2561
import smbus
import time

# Get I2C bus
bus = smbus.SMBus(1)

# TSL2561 address, 0x39(57)
# Select control register, 0x00(00) with command register, 0x80(128)
#		0x03(03)	Power ON mode
bus.write_byte_data(0x39, 0x00 | 0x80, 0x03)
# TSL2561 address, 0x39(57)
# Select timing register, 0x01(01) with command register, 0x80(128)
#		0x02(02)	Nominal integration time = 402ms
bus.write_byte_data(0x39, 0x01 | 0x80, 0x02)

time.sleep(0.5)

# Read data back from 0x0C(12) with command register, 0x80(128), 2 bytes
# ch0 LSB, ch0 MSB
data = bus.read_i2c_block_data(0x39, 0x0C | 0x80, 2)

# Read data back from 0x0E(14) with command register, 0x80(128), 2 bytes
# ch1 LSB, ch1 MSB
data1 = bus.read_i2c_block_data(0x39, 0x0E | 0x80, 2)

# Convert the data
ch0 = data[1] * 256 + data[0]
ch1 = data1[1] * 256 + data1[0]

# Output data to screen
print "Full Spectrum(IR + Visible) :%d lux" %ch0
print "Infrared Value :%d lux" %ch1
print "Visible Value :%d lux" %(ch0 - ch1)

Het bovenstaande script kun je downloaden met:

wget https://raspberrytips.nl/files/tsl2561.py

Voer hierna het script uit:

python tsl2561.py

Het script zal de waarde van het volledige spectrum, infrarood en de zichtbaarheid weergeven in lux.

1 gedachte over “Raspberry Pi: TSL2561 digitale helderheid/licht sensor”

  1. Voor school ben ik bezig met de lux sensor ik vroeg mij alleen af hoe ik een led aan kan laten gaan als er een waarde van onder de bijvoorbeeld 400 lux wordt gelezen

    Beantwoorden

Plaats een reactie