Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
Ein Nanopi Neo Air steuert das Licht mehrerer Lampen und erkennt die Anwesenheit von Bluetoothgeräten. Bei Anwesenheit bestimmter Blutetoothgeräte und Dunkelheit werden die Lampen auf 15% gedimmt eingeschalten. Beim Auslösen eines Bewegungsmelders werden die Lampen im entsprechenden Umfeld auf 100% hochgeschalten. Zusätzlich ist ein Doppelwippschalter über EnOcean eingebunden, welcher eine der Lampen schalten kann. Wird über den EnOcean-Taster eine Lampe eingeschalten so übersschreibt dies die Voreinstellungen der Lampe nach Bluetoothanwesenheit, Helligkeit und Bewegungsmeldungen.
EnOcean
Verwendung mit EnOcean Pi 868 und Doppelwippschalter.
Tastenbezeichnung:
1 | 3 ---+--- 2 | 4
Taste 1 | Licht 1+2 an 100% |
Taste 2 | Licht 1+2 aus |
Taste 3 | Licht Terasse an 100%, 70%, 50% |
Taste 4 | Licht Terasse aus |
Tasten 2+4 | Licht 1+2 auf 100% und nach 2 Minuten ausschalten |
Tasten 1+3 | Shutdown/Poweroff |
Bluetooth
in Armbian-config bluetooth enabled wget https://bootlin.com/pub/mirror/devmem2.c gcc -o devmem2 devmem2.c
param_uart3_rtscts=1
sudo ln -s /lib/firmware /etc/firmware
libbluetooth-dev installieren
Aufgerufen in /etc/rc.local:
#!/bin/sh /etc/scripte/devmem2/devmem2 0x1f00060 b 1 echo 205 > /sys/class/gpio/export echo out > /sys/class/gpio/gpio205/direction echo 0 > /sys/class/gpio/gpio205/value echo 1 > /sys/class/gpio/gpio205/value sleep 0.2 echo -en "" > /dev/ttyS3 sleep 1 /usr/bin/hciattach /dev/ttyS3 bcm43xx 1500000
enocean.service
/etc/systemd/system/enocean.service [Unit] Description=Enocean After=manage_pwm.service network.target bluetooth.service [Service] Type=simple ExecStartPre=/bin/sleep 20 ExecStart=/home/USER/enocean/read_enocean_bluetooth > /tmp/enocean.log 2>&1 & [Install] WantedBy=multi-user.target
gcc read_enocean_bluetooth_le.c -lbluetooth -pthread -o read_enocean_bluetooth -pedantic
Der enocean.service scannt nach bekannten Bluetoothgeräten, erkennt Eingaben über den Taster sowie Aktionen an den Bewegungsmeldern (indem er /tmp/gpio/gpio/(A/B)/X ausliest) und steuert dementsprechend das Licht und/oder sonstige Reaktionen. Zur Steuerung des Lichts werden die Prozentwerte, mit denen die Lampe X leuchten soll nach /tmp/gpio/pwm/X geschrieben.
manage_pwm.service
gcc manage_pwm.c -pthread -o manage_pwm -pedantic
Der Dienst manage_pwm kümmert sich um das Auslesen der GPIO des MCP23017 und das Steuern der PWM des PCA9685.
Dazu liest er die Prozentwerte unter /tmp/gpio/pwm/x aus, steuert entsprechend PWM x des PCA9685 und liest die Zustände an den Ports des MCP23017 und schreibt diese nach /tmp/gpio/gpio/Port/Pin.
MCP23017
Der MCP23017 ist für das Auslesen des Helligkeitssensors und der PIR-Bewegungsmelder zuständig. Es können bis zu 16 Geräte angeschlossen und gesteuert werden. /tmp/gpio/gpio/A/0
Port/Pin | Verwendung | Port/Pin | Verwendung |
---|---|---|---|
B0 | helligkeit | A7 | PIR/Bewegung |
B1 | A6 | PIR/Bewegung innen | |
B2 | A5 | ||
B3 | A4 | ||
B4 | A3 | ||
B5 | A2 | ||
B6 | A1 | ||
B7 | A0 |
PCA9685
Über den PCA9685 werden die angeschlossenen Lampen geschalten und gedimmt.
/tmp/gpio/pwm/0
PWM | Verwendung |
---|---|
0 | licht1 |
1 | licht2 |
2 | licht innen |
Bewegungsmelder
Mini IR AM312
- Betriebsspannung ab 3.3 V
- keine Einstellmöglichkeiten
HC-SR501 PIR Infrarot-Modul
- Betriebsspannung 5V-20V, aber auch mit 3,3V verwendbar. Stromversorgung dann über den meist vorhandenen Pin
- Empfindlichkeit (wenn PIR nach unten zeigt links)
gegen Uhrzeigersinn zunehmende Empfindlichkeit (3-7m)
- Schaltdauer (wenn PIR nach unten zeigt rechts)
im Uhrzeigersinn zunehmende Zeitspanne (3s bis 5min)
TTL 3.3 V
Spannungsversorgung
Mean Well HDR-60-12 Hutschienen-Netzteil (DIN-Rail) 12 V/DC 4.5 A 54 W
Lampen:
12V, 0,4A, 2,5 W
I2C_0 3 SDA 5 SCL
I2C_1 8 PCM0_SYNC SCK 9 PCM0_CLK SDA