Einrichtung 1Wire-Bus für Sensoren

Einrichtung 1Wire-Bus für Sensoren

Die Nutzung des Eindraht-Busses stellt einen erheblichen Vorteil dar, da der Verdrahtungsaufwand auf ein Minimum begrenzt wird und die Sensoren auch recht preiswert sind. Damit lassen sich zum Beispiel die bekannten DS18B20-Temperatursensoren leicht auslesen und dessen Temperaturwerte verarbeiten.

Aktivierung des 1-Wire-Busses:

Raspberry Pi ( Raspbian):

  • Loggen Sie sich lokal oder per SSH am Gerät ein
  • Öffnen Sie das Konfigurationstool mit "sudo raspi-config"
  • Navigieren Sie zum Punkt 5 "Interfacing Options" und drücken Sie die Eingabetaste
  •  Raspi-config-Start
  • Wählen Sie dann den Punkt P7 "1-Wire" aus                   
  •  Raspi-config-1-Wire
  • Im folgenden Dialog wählen SIe zum Aktivieren des Busses "Ja" bzw. "Yes" aus und drücken die Eingabetaste.
  •  Raspi-config-1Wire-enable
  • Beenden Sie das Tool mit Auswahl der Schaltfläche "Finish" und starten Ihren Raspberry neu. Danach ist die Eindraht-Schnittstelle aktiviert.

 

Banana Pi ( Armbian):

  • Loggen Sie sich lokal oder per SSH auf dem Gerät ein
  • Öffnen Sie die Konfigurationsdatei mit "sudo nano /boot/armbianEnv.txt"
  • Aktivieren Sie den Eindraht-Bus, indem Sie eine Zeile "overlays=w1-gpio" hinzufügen oder, falls die Zeile "overlays=" schon vorhanden ist, hängen Sie an diese den Eintrag "w1-gpio" einfach an.
  • Damit der Eindrahtbus auf dem richtigen GPIO-Pin liegt, muss dieser dem System noch mitgeteilt werden. Beim Banana Pi M1 ist dies der Pin PI3. Dazu fügen Sie bitte eine neue Zeile mit dem Inhalt "param_w1_pin=PI3" hinzu.
  • ArmbianEnvtxt-BananaPi
  • Speichern Sie die Datei nun mit "STRG-X" und bestätigen Sie die Sicherheitsabfrage mit "Y" bzw. "J"
  • Nach einem Neustart mit "reboot" ist der 1-Wire-Bus einsatzbereit.

 

Tinker Board:

  • Loggen Sie sich lokal oder per SSH als root auf dem Gerät ein
  • Starten Sie das Konfigurationstool, indem Sie tinker-config eingeben und drücken Sie die Enter-Taste zum Bestätigen des Begrüßungsbildschirms
  • Navigieren Sie mit den Pfeiltasten zu Punkt 5 Interfacing Options (Enter) und danach zu Punkt F8 1-Wire (Enter)
  • Bestätigen Sie die folgende Abfrage mit <Enable>
  • Verlassen SIe das Bild durch Drücken der Enter-Taste und navigieren mit der TAB-Taste bis zum Feld Finish und beenden so Programm
  • Nach einem Neustart mit reboot steht der 1-Wire-Bus zur Verfügung

 

Konfiguration in íoBroker (beispielhaft anhand eines DS18B20-Temperatursensors)

 

  • Schliessen Sie zuerst den Sensor an die RasPiLC-Platine an. Beachten Sie bitte, dass der Sensor an die Versorgungsspannung +3,3V angeschlossen wird. Ein Abschlusswiderstand von 4,7kOhm für den Bus ist bereits auf der Platine vorhanden und muss nicht extern angeschlossen werden. Bei Kabelsensoren sind im Normalfall drei Drähte vorhanden. Rot ist die Versorgungsspannung (+3,3V), Schwarz die Masseleitung (GND) und Gelb die Datenleitung (DATA).
  • Jeder Sensor besitzt eine einmalige ID, unter welcher er im System registriert ist. Das Linux-Betriebssystem registriert alle angeschlossenen Sensoren automatisch, Sie müssen nur die ID herausfinden, was aber schnell erledigt ist.
  • Loggen Sie sich dazu lokal oder per SSH auf dem Gerät ein.
  • Zeigen Sie den Inhalt des Verzeichnisses,welches die Sensoren beinhaltet an mit "ls /sys/bus/w1/devices". Die Ausgabe sollte entsprechend wie im folgenden Bild gezeigt aussehen
  • Liste-W1-devices
  • der Eintrag "w_bus_master" stellt den SBC selbst dar, der andere ist die gesuchte ID des Sensors. Diese wird in der folgenden Konfiguration benötigt.
  • Schliessen Sie den Öffnen Sie im Browser die Konfigurationsoberfläche des ioBroker mit <IP-Adresse-des-ioBroker>:8081
  • Navigieren Sie zum Reiter "Adapter"
  • Suchen Sie den Adapter "parser" und installieren Sie eine Instanz, indem Sie auf die Fläche mit den drei senkrecht angeordneten Punken und dann auf das "+" klicken 
  • Danach wechseln Sie in den Reiter Instanzen und öffnen Sie die Konfiguration des Adapters durch Klicken auf das Symbol mit dem Mutterschlüssel.
  • Erstellen Sie eine neue Regel durch Klicken auf das "+"-Symbol bei "Regel hinzufügen" und tragen die folgenden Werte ein:
  • Konfiguration-Parser-Adapter-DS18B20
  • Name: Name Ihres Sensors (kann frei gewählt werden), URL-oder Dateiname: "/sys/bus/w1/devices/<ID-des-Sensors>/w1_slave", RegEx: "t=(-?\d+)", Num: "0", Rolle: "Temperatur", Typ: "number", Einheit: "°C", Faktor: "0.001", Offset: "0", Intervall: "2000"
  • Im Bild erkennen Sie in der Spalte "URL-oder Dateiname" den Pfad zum Sensor wieder.Ersetzen Sie die ID darin bitte durch die vorher ausgelesene ID Ihres Sensors. Beachten Sie bitte, dass die DS18B20-Sensoren eine gewisse Zeit benötigen, um Daten zu liefern. Ein Abfrageintervall von weniger als 1000ms ist daher nicht sinnvoll.
  • Anschliessend klicken Sie auf "Speichern und Schliessen", um die Konfiguration zu speichernn und den Adapter neuzustarten.
  • Nun können Sie in den Reiter "Objekte" wechseln und im Eintrag "parser.0" unter dem Datenpunkt welcher den vorher vergebenen Namen Ihres Sensors trägt, den Temperaturwert sehen, welcher der Sensor liefert.
  • Damit können Sie jetzt Scripte mit Blockly etc. erstellen und Steuerungs- bzw. Regelungsaufgaben realisieren. In Verbindung mit den Digitalausgängen der RasPiLC kann so z.B. eine Lüfter-Regelung oder die Ansteuerung einer Heizung erstellt werden. Auch die Abfrage des Sensors in einer Visualisierung oder über Alexa (per Cloud-Adapter) ist damit möglich.