Neben Temperatur- und Feuchtigkeitssensoren gibt es einen Beleuchtungsstärkesensor als benutzerfreundlichen Sensor. Das Gerät kann in Lux gemessen werden. Dieses Mal haben wir einen digitalen Beleuchtungsstärkensensor von Adafruit TSL2561 vorbereitet. Es gibt auch einen menschlichen Sensor, der Infrarotstrahlen als optischen Sensor verwendet. Es scheint, dass Sie so etwas wie IoT tun können, wenn Sie es in Kombination verwenden.
Die Verkabelung des Steckbretts ist eine Arduino-Version auf Adafruits Website, kann jedoch unter TSL2561 Luminosity Sensor abgerufen werden.
Wenn die Verkabelung erfolgreich ist, können Sie die 0x39-Adresse überprüfen.
$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- 39 -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
Python 2
Der Treiber zum Abrufen der Daten vom I2C-Bus ist [Adafruit_I2C.py] im Python-Repository Adafruit-Raspberry-Pi-Python-Code. ](Https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code/blob/master/Adafruit_I2C/Adafruit_I2C.py) wird verwendet. Dieser Treiber funktioniert mit Python 2, das standardmäßig auf dem Raspberry Pi installiert ist.
$ cd ~/python_apps
$ git clone https://github.com/adafruit/Adafruit-Raspberry-Pi-Python-Code
$ cd Adafruit-Raspberry-Pi-Python-Code/Adafruit_I2C
Python 3
Quick2Wire wird auch in RPi-Light-Sensor verwendet. Ich werde. Ich habe Python 3 nicht auf meinem Raspberry Pi installiert, daher bereite ich eine virtuelle Umgebung vor und verwende sie beim nächsten Mal.
Das Programm zum Messen der Beleuchtungsstärke von TSL2561 ist [TSL2561.py](https: // github. com / seanbechhofer / raspberrypi / blob / master / python / TSL2561.py) wird eingeführt.
Außerdem hat Raspberry Pi Hacks tsl2561-lux.py. Die Methode -lux.py) wird veröffentlicht. Beide haben fast den gleichen Code, aber dieses Mal werde ich tsl2561-lux.py
aus dem Repository rpihacks in das Verzeichnis Adafruit_I2C
herunterladen und verwenden.
$ cd ./Adafruit_I2C
$ wget https://raw.githubusercontent.com/spotrh/rpihacks/master/tsl2561-lux.py
$ chmod +x tsl2561-lux.py
Selbst wenn Sie das Ende von "tsl2561-lux.py" auskommentieren, kann es extern als Modul aufgerufen werden.
~/python_apps/Adafruit-Raspberry-Pi-Python-Code/Adafruit_I2C/tsl2561-lux.py
...
#oLuxmeter=Luxmeter()
#print "LUX HIGH GAIN ", oLuxmeter.getLux(16)
#print "LUX LOW GAIN ", oLuxmeter.getLux(1)
#print "LUX AUTO GAIN ", oLuxmeter.getLux()
Leider enthält der Dateiname Bindestriche, sodass Python ihn nicht so importieren kann, wie er ist. Durch Unterstrich ersetzen, um eine symbolische Verknüpfung zu erstellen.
$ ln -s tsl2561-lux.py tsl2561_lux.py
Erstellen Sie "tsl2561.py" als Einstiegspunkt, um die Beleuchtungsstärke mithilfe der Luxmeter-Klasse zu messen.
~/python_apps/Adafruit-Raspberry-Pi-Python-Code/Adafruit_I2C/tsl2561.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from time import sleep
from tsl2561_lux import Luxmeter
if __name__ == "__main__":
while True:
tsl=Luxmeter()
sensor_value = tsl.getLux()
print(sensor_value)
sleep(5)
Führen Sie das Programm aus, das die Beleuchtungsstärke in Intervallen von 5 Sekunden misst. Das Gerät ist Lux. Die Daten weisen Abweichungen auf, wahrscheinlich aufgrund der sofortigen Messung.
$ chmod u+x tsl2561.py
$ ./tsl2561.py
1691.71324345
961.73944068
1274.95548759
690.479479419
14.30208
0
11.50656
388.866054431
1316.01531121
0
0
Beleuchten Sie den Sensor mit der Taschenlampen-App des iPhones, um Ihr Aussehen zu verbessern. Das nächste Mal werde ich versuchen, stabile Daten durch Messen in einem pechschwarzen Raum zu erhalten.
19088.793866
0
0
UPDATE 2015-05-25
Ich habe das Programm so geändert, dass es in MQTT veröffentlicht wird, wenn es 500 Lux überschreitet. Das Messintervall wird ebenfalls auf 3 Sekunden verkürzt.
~/meshblu/publish.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from time import sleep
from tsl2561_lux import Luxmeter
import paho.mqtt.client as mqtt
import json
def sensor():
sensor = W1ThermSensor()
celsius = sensor.get_temperature()
return celsius
def on_connect(client, userdata, rc):
print("Connected with result code " + str(rc))
def on_publish(client, userdata, mid):
print("publish: " + str(mid))
def main():
client = mqtt.Client(client_id='',clean_session=True,
protocol=mqtt.MQTTv311)
client.username_pw_set("{username}","{password}")
client.connect("{mqtt_broker_host}", 1883, 60)
client.on_connect = on_connect
client.on_publish = on_publish
tsl=Luxmeter()
while True:
sensor_value = tsl.getLux()
print(sensor_value)
if sensor_value > 500.0:
message = json.dumps(dict(trigger="on"))
client.publish("data",message)
sleep(3)
if __name__ == '__main__':
main()
Ich zog in einen dunklen Raum und testete ihn. Eine genaue Messung ist möglich, wenn die Beleuchtungsstärke stabil und dunkel ist. Es scheint 0 zu sein, wenn sich die Beleuchtungsstärke zu stark ändert. Ich brachte das iPhone-Licht langsam näher und veröffentlichte es zweimal.
$ python ./publish.py
1.42263737647
1.42263737647
1.42263737647
1.42263737647
1.42263737647
1.42263737647
1.42263737647
781.750737506
publish: 1
1212.30526902
publish: 2
2.45526898227
1.48479374557
119.459947915
287.1274
45.49168
0
0
1.45533948132
1.41892978382
1.41892978382
Recommended Posts