Hallo,
ich beschäftige mich jetzt seit längerem mit dem PIGPIO-Modul [Link] von Joachim und wollte über meine bisherigen Erfahrungen mit dem Modul, den Eigenschaften/Eigenheiten der Sensoren und über sonstige mechanische/thermale Punkte des Raspberry und der Sensoren berichten. Aber vorher noch einen herzlichen Dank an Joachim für die Bereitstellung von diesem klasse Modul, weil damit die Möglichkeiten von Raspberry mit IP Symcon extrem erweitert werden können.
Zu den Sensoren:
Luftgütesensor iAQ:
Der iAQ eignet sich sehr gut zur Erfassung von CO2 und VOC, hat aber mit ~50 €/Stück (mit Shipping aus USA, Digi-Key bei 2 Stück) einen stolzen Preis. Die Lieferung aus USA erfolgte prompt innerhalb von drei Tagen. Man muss dem iAQ aber etwas Startzeit zugestehen. Stabile Werte habe ich nach dem ersten Start erst nach einem Tag erhalten. Wenn er schon in Betrieb war, geht es deutlich kürzer. Er erzeugt auch etwas Wärme. Dies sollte man bei der Positionierung neben anderen Sensoren berücksichtigen. Dazu später mehr. Der Sensor ist sehr schnell, betritt eine Person den Raum oder ein Anhauchen aus der Ferne lassen die Werte sprunghaft ansteigen, das Öffnen eines Fensters lassen sie sofort sinken. Der Graph zeigt das Einschwingen und den anschließenden Betrieb in einer dynamischen Umgebung von zwei iAQs dicht nebeneinander.
Ultraschallentfernungsmesser HC SR04:
Mit dem HC SR04 kann man von wenigen Zentimetern sicher bis zu 2 Metern die Entfernung ermitteln. Dies klappt meistens ganz gut, aber manchmal gibt es extreme Ausreiser [Bild]. Das kann daran liegen, dass der Zeitunterschied konzeptbedingt zwischen dem Senden und dem Empfangen des Signals ermittelt wird. Leider ist Debian/Rasbian nur ein Multitasking- und kein Echtzeitbetriebssystem. Hat das OS zum Zeitpunkt des Empfangs gerade etwas anderes zu tun, entstehen unter Umständen solche massiven Fehler. In den Foren wird beschrieben, dass der Einsatz von C statt Python eine gewisse Verbesserung bringen könnte. @Joachim, wie machst du das in deinem Modul? Letztendlich hilft bei statischen Messungen (z.B. Zisterne oder Öltank) wohl nur ein statistisches Fehlereliminierungsverfahren wir der Median. Meine bisherigen Erfahrungen könnt ihr in den Diagrammen sehen. Da im Öltank sicher Dämpfe entstehen, die der Elektronik schaden könnte, wollte ich als Alternative den DYP-ME007Y einsetzen (siehe drittes Bild). Leider lieferte er bei meinen Tests nur zwischen 30 – 80 cm zuverlässige Werte. Darunter und darüber wird er sehr ungenau. Das Teil ist wohl als Abstandsmelder für Autos auf die 30-80 cm optimiert.
Temperatur/Feuchtigkeit/Luftdruck BME280:
Damit liefert der BME280 bereits alle wichtigen Daten für eine kleine Wetterstation. Die Genauigkeit/Dynamik scheint verglichen mit einem i.d.R. sehr genauen 18B20 ähnlich gut zu sein. Die Werte kommen in einer feinen Granularität (bedeutet nicht zwingend Genauigkeit) und haben deshalb kaum Stufen. Damit lassen sich sehr gut Tendenzen erkennen. Dies gilt für alle drei Messtypen. drapple berichtete im Forum [link] von Ungenauigkeiten bei Temperaturen nahe 0 Grad. Dies konnte ich nicht bestätigen, nur der zum Vergleich mitlaufende 18B20 machte zum Messende Probleme und lieferte über 5 Stunden nur den Wert 0,0 °(siehe Graph, der rote Graph kommt von einem etwas entfernten AVR225-1-Wire, Differenz geht also in Ordnung). Der etwas günstigere BMP280 (ohne Feuchtemessung) konnte mit Joachims Modul ebenfalls eingesetzt werden.
1-Wire:
Temperaturmessungen können z.B. mit dem Dallas 18B20 auch mit dem GPIO Modul gemacht werden. Damit könnte ich dann irgend wann meine AVR225s und meine Python-Scripte auf den PIs ersetzen. Die letzten Tage erfasste ich mit dem Modul auch sauber über 1-Wire und verglich sie mit anderen Sensoren in der gleichen Umgebung. Dabei gab es bisher keine Auffälligkeiten (siehe Temperaturgraphen). Welcher der Sensoren nun der absolut genaueste ist, kann man kaum feststellen. Der gerne genannte Versuch den Sensor in zirkulierendem Eiswasser zu kalibrieren hat bei mir nicht geklappt, da sich bei Wiederholungsmessungen immer Schwankungen von 0,2-0,6 Grad ergeben haben. Den oben im Vergleich mit dem BME280 gezeigten Ausfall muss ich noch näher untersuchen, bzw. Joachim Bescheid geben. Im Filesystem /sys/devices/w1_bus_master1/devID werden die Werte richtig aktualisiert aber in IPS blieben die Werte über 5 Stunden bei 0,0° trotz minütiger Aktualisierung. Ohne weiteres Zutun kamen die Werte dann wieder an. [UPDATE 21:56] Joachim hat den Fehler gefunden und in seinem Modul bereits behoben
Lichtstärkesensor BH1750:
Beim BH1750 bin ich mir noch nicht ganz schlüssig. Die Messdynamik von 1-100000 Lux klingt zwar erst mal vielversprechend, aber im Vergleich zu einem eQ3-Aussenbewegungsmelder (der hat ja eigentlich andere Aufgaben) scheint die Empfindlichkeit bei Dämmerung doch eingeschränkt zu sein (siehe Grafik, eQ3=gelb, BH1750=lila). Es scheint noch eine SW technische Möglichkeit zu geben, den BH1750 auf 0,11 Lux zu bringen. Ich habe die Infos heute in Joachims Thread gepostet.
Sonstige Erfahrungen:
Probleme bereitet mir immer noch der Start von PIGPIOD auf Raspberry 3. Ich habe alle Möglichkeiten ausprobiert und am zuverlässigsten ist bisher noch der Weg über crontab mit @reboot /usr/local/bin/pigpiod. Aber das klappt auch nicht immer. Auf den 2er Raspberry hatte ich bisher noch kein Problem damit. Scheint etwas mit dem Timing zu tun haben. Zur Not muss ich über crontab zyklisch überprüfen, ob PIGPIOD läuft und wenn nicht, diesen nachstarten. Elegant ist das aber nicht.
Ein weiteres Problem, welches ich nicht beheben konnte, war der gemeinsame Betrieb von iAQ, BME280 und BH1750 am I2C-Bus. Obwohl alle drei mit i2cdetect -y 1 und den IDs 5A, 76 und 23 zu sehen waren, habe ich vom BH1750 keine Werte erhalten. BME280 und BH1750 ohne iAQ laufen problemlos.
Gehäuse / Sensorpositionierung / thermale Aspekte und Spannungsversorgung:
Beim Gehäuse sollte man auf ausreichend Zirkulation achten, damit der Raspberry nicht zu heiß wird. Dies ist nicht unbedingt zum Schutz der Elektronik erforderlich (der PI soll 85° leicht vertragen), sondern um nahe liegende Sensoren nicht zu beeinflussen. Ich habe dazu das PI-Gehäuse mit etlichen Lüftungslöchern unten und seitlich versehen. Man möchte ja gerne einen kompakten Sensor mit kurzen Leitungen aufbauen. Leider werden dabei die Temperaturmessungen verfälscht. In meinem Aufbau sind das ca. 3,5 Grad nach oben gegenüber einem ca. 15 cm entfernten und frei aufgebautem BME280.
Der iAQ trägt mit seinem Messprinzip zusätzlich zu Verfälschung bei, wenn man ihn direkt neben dem BME280 positioniert. Ich werde hier wohl nochmal mein Konzept überdenken und die Sensoren leicht abgesetzt vom Raspberry platzieren. Widerspricht dann halt wieder der Kompaktheit und man hat wieder zusätzliche Kabel sowie das Befestigungsproblem der Sensoren. Auf dem Thermalfoto meines Aufbaus sollte das Problem zu erkennen sein.
Noch ein Wort zur Kühlung des Raspberry PI. Kleine Zusatzkühler können die Temperatur schon um 2-5 Grad senken. Vor allem die kleinere GPU wird gegenüber der CPU heißer. Ihr solltet aber unbedingt darauf achten, dass man euch statt eines Wärmeleitpads kein beidseitig klebendes Isolierband andreht. Damit wird die Sache nur schlimmer, die Kühler bleiben kalt und CPU/GPU werden deutlich heisser als vorher. Da wird der letzte Mist verkauft. Ist mit sogar mit meinen Raspberry 1 passiert, wie in der vergleichenden Thermoaufnahme zu einem Raspberry 2. Leider sieht man es den Wärmeleitpads nicht an.
Bei der Stromversorgung des Raspberry hatte ich auch so meine Erfahrungen. Wenn über HDMI gearbeitet wird, kann man im rechten oberen Eck ja an dem dargestellten kleinen farbigen Quadrat oder gelben Blitz erkennen, dass der PI zu wenig Energie bekommt. Als IP Symcon Server wird auf den PI wohl nur über die IPS Konsole, http oder ssh zugegriffen und man kriegt das „bestenfalls“ über unerklärbare Abstürze mit. Dies ist mir erst gestern wieder passiert, als ich schnell eine kleine Verlängerung vom Netzteil (sollten schon 2,5 A sein) zum PI brauchte und das gerade greifbare 1 Meter lange und unter 1 mm schön dünne USB-Kabel genommen habe. Der PI ist immer beim Booten abgestürzt. Dann ein 3 m langes aber deutlich dickeres Kabel genommen und es lief.
Gruss
Bernd