Raspberry Pi 3 Mod B / B+:    Sensor TSL 45315
 

 
Sensorplatine Watterott mit dem AMS-Sensor TSL 45315
 
Der Sensor TSL 45315 mißt Helligkeiten zwischen 3 und 220.000 Lux.
Datenblatt der Fa. AMS.pdf
 
Die vorliegende Platine der Fa. Watterott Electronik kann mit einer Spannung zwischen 3,3V bis 5V betrieben werden. Sie besitzt ein I2C- Interface. Die I2C-Adresse des Bausteins lautet 0x29. Die Beschaltung des I2C-Interface ist im obigen Bild eingezeichnet.
Herkunft des Sensors: www.watterott.com/de/TSL45315-Breakout
Anmerkungen zu Helligkeitswerten:
 
5 mW Laserpointer, grün (532 nm), 3 mm Strahldurchmesser 427.000 lx
5 mW Laserpointer, rot (635 nm), 3 mm Strahldurchmesser 105.000 lx
Heller Sonnentag 100.000 lx
Bedeckter Sommertag 20.000 lx
Im Schatten im Sommer 10.000 lx
Bedeckter Wintertag 3.500 lx
Büro-/Zimmerbeleuchtung 500 lx .. Flurbeleuchtung 100 lx
 
Vollmondnacht 0,05–0,36 lx
Sternklarer Nachthimmel (Neumond) 0,001 lx

PHYTON-Programm für den Rasbberry Pi 2/3
 
# python compiler unter: /usr/bin/python
# -*- coding: utf-8 -*-

import smbus
import time

# --------------------- # Konfiguration ------------------ #
                  # Pi-Version 1 benutzt Kanal 0
KANAL = 1         # Pi-Version 2 u. 3 benutzen Kanal 1
I2Cadr = 0x29     # I2C Adresse des TSL 45315
# -------------------------------------------------------- #

# Wahl des I2C-Kanals am Raspberry Pi
bus = smbus.SMBus(KANAL)

# Control Register, 0x00
# START: normale operation
bus.write_byte_data(I2Cadr, 0x80, 0x03)

# Konfigurations-Register, 0x01
# Faktor = 1, (00b) Integrationszeit 400 ms
# Je nach gewaehlter Integrationszeit muss der Messwert
# laut Datenblatt mit dem Faktor multipliziert werden ..
bus.write_byte_data(I2Cadr, 0x81, 0x00)

# Wartezeit in Sekunden (hier 0,5 sek)
time.sleep(0.5)

# Aus dem Konfigurations-Register 0x0A die chipID lesen.
# Der Rückgabewert kann hier nur 0x0A = TSL 45315 sein
id = bus.read_byte_data(I2Cadr, 0x8A) >> 4

# Die DATA-Register 0x04 und 0x05 lesen
# 2 Bytes beginnend mit Register 0x04 lesen
# Rückgabe: LSB first
data = bus.read_i2c_block_data(I2Cadr, 0x84, 2)

# 16-Bit-Helligkeits-MessWert in Lux
# da der Faktor hier 1 ist wird nicht mit ihm multipliziert
helligkeit = (data[1] << 8) + data[0] # (* Faktor)
# -------------------------------------------------------- #

# Ausgabe zum Bildschirm
print ("chipID: 0x0%X" % id)
print ("Helligkeit: %d lux" % helligkeit)

 

Der Start des Programms
Wird das Programm im Ordner /usr/ mit dem Namen licht.py abgelegt, kann es aus dem LXTerminal, durch ..
.. gestartet werden.
python /usr/licht.py



PHP-Programmstart
Start eines python Programms durch PHP
1. NANO Editor mit der Datei sudoers.tmp öffnen durch ..
sudo visudo
2. Rechte für www-data an python und das zu startende Programm hinzufügen

www-data ALL=(ALL) NOPASSWD: /usr/bin/python /usr/licht.py

2a. Soll das Python-Programm mit Parametern gestartet werden, so für jeden Parameter einen * anfügen (im Beispiel zwei Parameter)

www-data ALL=(ALL) NOPASSWD: /usr/bin/python /usr/licht.py * *

3. Das PHP-Script erstellen

<?php

echo "Licht-Test";

echo shell_exec("sudo python /usr/licht.py");

?>



 
Aufruf des Programms über eine PHP-Datei
Die Datei soll den Namen licht.php erhalten, und im LAN-Verzeichnis /var/www/http abgelegt worden sein. Die IP-Adresse ergibt sich aus der Zuweisung des Routers für den Raspberry Pi (siehe dort).
<?php
//Aufruf und Rückgabe der Ausgaben von Systembefehlen (hier dem Datum)
echo '<pre>';
system('date');
echo '</pre>';
// Aufruf von ausführbaren Dateien. Es werden alle Ausgaben angezeigt
// (hier des python Programms /usr/licht.py
echo '<pre>';
system("sudo python /usr/licht.py");
echo '</pre><BR>';
// PHP muß die Ausführung erlaubt werden ....
// Aufruf von ausführbaren Dateien. Es werden alle Aus-
// gaben zurückgegeben
$shell=shell_exec("sudo python /usr/licht.py");
// Aufruf von ausführbaren Dateien. Es wird nur die
// letzte Ausgabe zurückgegeben
$exec=exec("sudo python /usr/licht.py");

// Ausgabe zum Bildschirm
echo '<BR><BR>Rueckgabe shell_exec= ',$shell;
echo '<BR><BR>Rueckgabe exec= ',$exec;
?>
Der Start des Programms über das Netzwerk
192.168.x.x/licht.php