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