LED Lampen im Zimmer werden über den One Wire Bus verbunden. Über einen zentralen Controller können die Lampen gesteuert werden.
-
Lampen an- und ausschalten.
-
RGB Lampen Farbwahl.
-
Auslesen der aktuellen Temperatur
-
Raspberry Pi Webserver mit Einstellungen
ssh muss auf dem Raspberry Pi aktiviert werden:
systemctl enable ssh
systemctl start ssh
Dann kann sich am PC via ssh eingeloggt werden:
ssh pi@<raspi-ip>
Pro-Tipp: VSCode Plugin Remote-SSH
Die Kommunikationen zwischen dem Master (Raspberry Pi) und den Slaves (Arduinos) erfolgt mit One Wire. Der Raspberry Pi kann sich auf verschiedene Arten mit einem One Wire Bus verbinden. Zum Beispiel mit einem USB One Wire Master Gerät. In diesem Projekt werden jedoch die GPIO Pins verwendet.
Übersicht
sudo raspi-config
Interfaces -> 1-Wire -> Enable
Anleitung mit Bildern
Liste von 1Wire Geräten, die mit dem Raspberry Pi Kernel funktionieren
Die Kommunikation findet über den Pfad /sys/bus/w1/devices
statt.
In den Unterordnern sind die angeschlossenen Geräte aufgelistet. In den Dateien können die Werte im Terminal mit cat <Dateiname>
angezeigt werden.
- Sensoren erzeugen die Datei
w1_slave
. Darin stehen die Sensorwerte. - Der 8-Channel Schalter DS2408 erzeugt die Datei
output
. Darin stehen in 8 Bit die aktuellen Schalterstellungen. Diese können einzeln geändert werden, indem man sie mit einem Byte überschreibt. Dafür können ASCII-Zeichen verwendet werden.
nginx und php-fpm stellen die Webseite bereit.
Installieren: sudo apt install nginx
nginx Dienst starten: sudo systemctl start nginx
NGINX Einstellungen: /etc/nginx/sites-enabled/...
Standard Website Verzeichnis: /var/www/html
Php installieren: sudo apt install php-fpm
Php in nginx aktivieren:
In Konfigurationsdatei /etc/nginx/sites-enabled/…
ändern:
- In der Zeile mit dem Inhalt
index index.html index.htm;
hinzufügen:index.php
- Bei location einkommentieren: Sontiges einkommentieren, nur das mit php-fpm.
Wenn der Webserver eingerichtet ist, können die Website-Dateien in das Webserver-Verzeichnis kopiert werden. Die Website-Daten befinden sich im Git im Ordner Axela/webserver
. Das Standard-Verzeichnis bei nginx ist /var/www/html
.
Um einen Arduino als One Wire Slave Gerät zu benutzen wird die Bibliothek OneWireHub verwendet.
-
Die Bibliothek OneWireHub Arduino IDE installieren (Tools -> Manage Libraries... -> Suchfeld: OneWireHub).
-
Im OneWireHub-Bibliotheks-Ordner (
Dokumente/Arduino/libraries/OneWireHub/src
) die DateiOneWireHub_config.h
bearbeiten. Damit der Arduino vom Raspberry Pi als One Wire Slave erkannt wird die VariableONEWIRE_TIME_MSG_HIGH_TIMEOUT
auf38000_us
gesetzt.
constexpr timeOW_t ONEWIRE_TIME_MSG_HIGH_TIMEOUT = { 38000_us };
-
Das gewünschte Gerät aus dem Axela Projekt Ordner
Axela/devices
auswählen und das zugehörige Skript auf den Arduino laden.
Prinzipiell funktioniert das System. Die Steuerung der LEDs ist manchmal ein bisschen laggy. One Wire Bus scheint eine sehr gute Lösung für vorgefertigte One Wire Sensoren zu sein. Aktuatoren funktionieren jedoch nicht so gut. Im Nachhinein würden wir ein anderes Bussystem wählen.