Temperatur-Sensor DS18S20 auslesen

  • Hallo zusammen,


    sorry, es ist zu diesem Thema schon viel geschrieben worden, da ich allerdings kompletter Neuling (Vorallem was Elektrotechnik betrifft) bin, wollte ich zur Sicherheit hier mal mein Vorhaben beschreiben und ein par Fragen loswerden.


    Mein Vorhaben:


    Mit einem Temperatur auslesen und per Webseite visualisieren.
    Was mir fehlt: Irgendwie mit einem Shell-Script an die Daten kommen, den Rest sollte ich hinkriegen. (Script automatisch zyklisch ausführen und die entsprechenden Daten wegschreiben)


    Ich hatte das ganze wie folgt geplant:
    Ich kaufe mir einen Temperatursensor [font="Trebuchet MS, Trebuchet, Arial, Helvetica, Verdana, sans-serif"]DS18S20[/font]
    http://www.pollin.de/shop/dt/N…eratursensor_DS18S20.html


    Nun würde es an das anschließen gehen:


    Ich habe gelesen, dass man den Raspberry mit 5V zerschießen kann.
    Wieso gibt es dann 5V Pins?


    Aber ok, ich würde dann diesen Sensor beim P1 Anschluss an Pin 1 (3,3 V), GPIO 2 (Pin 3) und GND (Pin 6) anschließen:
    [Blocked Image: http://www.mikrocontroller.net/articles/Datei:Raspberry_Pi_GPIO_P2.svg]


    Nun würde ich den Pin 3 mit folgendem Befehl aktivieren:


    • echo 4 > /sys/class/gpio/export


    Diesen als Input setzen:


    • echo in > /sys/class/gpio/gpio3/direction



    Kann ich dann jetzt mittels

    • cat /sys/class/gpio/gpio3/value


    Bereits die Temperatur auslesen?


    Muss ich irgendetwas anderes beachten? Ich bin wie gesagt, komplett neu also auch wenn für andere evt. selbstverständlichkeiten fehlen, wäre ich dankbar! (Wiederstände oder irgend etwas anderes)


    Ich brauch ja normalerweise keine zusätzlichen Pakete oder ähnliches oder?


    Angeschlossen hätte ich das ganze einfach mit ganz normalen Kabeln, gibt es hier etwas zu beachten?


    Hauptsächlich ist mir die Sache mit den 3,3 und 5 V überhaupt nicht klar...


    Vielen Dank schonmal im Voraus!

  • Hallo,


    Nix für ungut, aber bevor du hier postest, solltes du versuchen, die allgemein bekannte Suchmaschine anzuwerfen., die warf mir "spontan" sehr gute Seiten zu deinem Anwendungsfall aus, z.B.


    http://kopfkino.irosaurus.com/…or-an-einem-raspberry-pi/


    Auch hier im Forum wurde das Thema mehrfach und gut durchgenudelt... bitte mal suchen.


    Ich vermute aus deiner Schreibweise heraus, dass du sehr jung bist..., also:
    "Lerne durch (Zu)Sehen" war in meiner Jugend das Zauberwort... naja, war damals so...


    ... in diesem Sinne noch ein frohes und erfolgreiches Basteln :)


    Mfg,
    die Zentris
    [hr]
    PS: (die Sache mit den 3,3 / 5V)


    Die 5V ist die Einspeisespannung von deinem USB Netzteil.
    Die 3,3V ist die Spannung, die der Prozessor braucht um zu funktionieren.


    Dazu wird ein kleiner Schaltkreis an die 5V "Schiene" geschaltet, der die 3,3V aus den 5V ableitet. Auf den GPIO-Connector werden nun beide Spannungen gelegt, weil man mit den 5V mehr anfangen kann (belastbarer) als die 3,3V (hier solltest du zusätzlich nur ca. 50..80mA entnehmen, sonst kann es zu Instabilitäten kommen)


    Die GPIO-Pins sind direkt mit dem Prozessor verbunden (der ja, wie schon gesagt, mit 3,3V läuft).
    Wenn du an die Pins jetzt eine höhere Spannung als die 3,3V anlegst, werden die bei solchen integrierten Schaltungen (und was anderes ist die CPU/ der Prozessor nicht) vorhandenen "parasitäten Dioden" im Chip leitfähig und zerstören die Schaltung bzw. Teile davon. Der RasPi ist dann entweder komplett tot oder zumindest der GPIO-Pin geht nicht mehr....


    Davor kann man den Chip zwar schützen, aber diese Schutzschaltungen sind beim Raspberry _nicht_ eingebaut...


    So, ok?


    Mfg,
    die Zentris

  • Hallo, vielen dank schonmal für deine antwort.
    Ich hab mehrere Seiten bereits durchgelesen und überall steht etwas anderes, darum hab ich gedacht, ich frag mal hier nach.


    Ich habe mir das tutorial durchgelesen und dazu noch ein par fragen.


    1. Brauch ich den Widerstand? Ich hatte gedacht gelesen zu haben, dass man bei diesem Sensor keinen braucht.
    2. Wieso kann ich nur GPIO 4 benutzen?
    3. Ist es nicht möglich den Sensor über "meine" weise auszulesen? Brauch ich unbedingt das 1wire-Protokoll?
    4. Ich glaube den Steckplan versteh ich auch nicht :(

  • Ja du brauchst den pullup Wiederstand
    Ja du brauchst das onewire protokoll
    Ja du brauchst den gpio 4


    Waere es einfacher moeglich wuerden die meisten es auch einfacher machen.
    Da du ja wie du selbst sagst keinerlei Erfahrung mit elektronik hast baue doch erstmal nach anleitung.
    Auf der softwareseite hast du dann noch genug moeglichkeiten dich auszutoben (crc ueberpruefung, alarmierung im fehlerfall, etc)

  • Ok. Allerdings würden mich die Hintergründe dazu interessieren, also wieso das ganze so ist.
    Gibts irgendwo eine gute Seite auf der die Grundlegenden dinge erklärt? (Elektronik, Softwareseitig hab ich schon Erfahrung)

  • Na, zum testen, ausprobieren, mal fix was zusammenstecken sind die Kombination aus dem Cobbler, Steckbrett und den Verbindungskabeln schon mal eine solide Grundlage.
    LEDs gewinnst du aus alten Geräten :-), ebenso diverse Buchsen/Stecker/Transistoren/Dioden usw... allerdings sind die Drähte oft zu kurz, um das Zeug gut zu verwenden.


    In der Apotheke oder bei Reichelt/Pollin gibt es Widerstände zum kleinen Preis, meist brauchst du am Anfang nur bestimmte Werte (47/100/220/470/1k/2,2k/4,7k/10k Ohm mal als bescheidene Reihe, die vieles abdeckt und Zwischenwerte durch Reihen/Parallelschaltung der Einzelwerte erzeugen lässt, wenn man die braucht).
    Kondensatoren brauchst du vermutlich am Anfang kaum, wenn dann sind es bestimmte Werte, die man dann extra beschaffen muss.


    Beachte, dass die Versandkosten bei den Händlern oft so um die 5€ liegen, also u.U. signifikant über dem Wert der bestellten Ware.
    Eine gute Idee ist es, wenn das geht, sich mit Gleichgesinnten aus deiner Umgebung/Schule/Uni/Arbeit zusammen zu tun und Sammelbestellungen zu machen..


    UND: vergleiche die Preise, wenn du was bestellst: Das Steckkbrett z.B. kostet in der Apotheke deutlich zu viel...


    Und dann: Anfangen, mit was Kleinem: bring eine LED zum blinken, bring 2 LED abwechselnd zum blinken, lass die LED sich ein/ausschalten, wenn ein bestimmter GPIO Pin an Masse gelegt wird... lesen, tun und lernen :-))))


    Naja, und frag... nachdem du im Web nach Lösungen gesucht und nix gefunden hast ;)


    Mfg,
    die Zentris


    PS: Das Kit, was du da gefunden hast, enthält z.T. Dinge, die du vielleicht niemals brauchst... (den servo z.B.)... aber das kannst nur du entscheiden.. es gibt so viele Kits, hab ich gesehen, wenn, dann such dir eins, wo du Teile siehst, mit denen du was anfangen kannst :)


  • Nix für ungut, aber bevor du hier postest, solltes du versuchen, die allgemein bekannte Suchmaschine anzuwerfen., die warf mir "spontan" sehr gute Seiten zu deinem Anwendungsfall aus, z.B.


    http://kopfkino.irosaurus.com/…or-an-einem-raspberry-pi/


    Auch hier im Forum wurde das Thema mehrfach und gut durchgenudelt... bitte mal suchen.


    Aber Achtung, deren Lösung funktioniert nur gut bei Temperaturen im Plus-Bereich. Ich hatte mich auch an das ansonsten wirklich gute Tutorial gehalten, und als es jetzt kalt wurde, wurden in den Grafiken sinnlose Temperaturen dargestellt.


    Ich bin dabei, dies hier zu testen und bin bisher sehr zufrieden:


    http://www.kompf.de/weather/pionewiremini.html

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

  • Ich bin dabei, dies hier zu testen und bin bisher sehr zufrieden:


    http://www.kompf.de/weather/pionewiremini.html


    Hm, "faszinierend" :s


    Schaltungstechnisch ist es das Gleiche (was ja auch nicht wirklich verwundert).


    Also muss es in der Grafikdarstellung der http://kopfkino.irosaurus.com/tutorial-d...pberry-pi/ Lösung einen Fehler geben...


    Ich baue bei mir die Grafiken aus den Daten selber auf und habe auch bei tieferen Temperaturen (0° C) bisher noch keine Darstellungsprobleme gehabt... *toi* *toi* *toi*...


    Aber egal: Das wesentliche für ihn ist ja erstmal, wie er die Sensoren anschliessen und auslesen kann...


    Man muss erstmal anfangen, wenn man dann "Blut" geleckt hat ("es funktioniert !!!!") geht es ja erst richtig los :bravo2::thumbs1:


    Mfg,
    die Zentris

  • Es liegt an MRTG, das die benutzen. das keine negativen Temperaturen darstellen kann, leider. Das musste ich auch erst lernen.


    Und ich kann bestätigen. Ich bin noch nicht so lange dabei hier, und ich bin totaler Quereinsteiger und auch nicht mehr der Jüngste...
    Aber wenn man die ersten Erfolge hat, lässt es einem nicht mehr los. :bravo2::bravo2::bravo2:

    Viele Grüße
    DocAdams

    1x RaspberryPi 2, 1x RaspberryPi 3, 1x OpenELEC, 1x RaspberryPi 4 mit ioBroker ,

  • Hallo,


    ich wollte mich nur nochmal bei euch bedanken und kurze Rückmeldung geben.
    Ich habe heute das Paket aus China erhalten, bei dem ein par Kleinzeugs dabei ist.


    Ich habe einen Webserver installiert, kann über das Webinterface eine LED an und ausschalten.
    Außerdem läuft ein Script, welches jede Minute die Temperatur meines Raspberry, die CPU Auslastung, verfügbaren und verbrauchten RAM und die Zimmertemperatur (Temperatursensor) speichert. (Und auf der Webseite anzeigt)


    Auch ob ein Taster gedrückt oder nicht gedrückt wurde, auszulesen habe ich bereits herausgefunden. (Was sich komischerweise am schwierigsten für mich herausgestellt hat, was ich mir allerdings ziemlich einfach vorgestellt hatte)


    Eventuell werde ich jetzt dann versuchen, dass auf dem LCD-Display auszugeben....

  • Prima! Nicht aufgeben... :)


    Das Auslesen geht über die unterschiedlichsten Wege, per Commandozeile als auch aus den Script- und Hochsprachen heraus.
    Am einfachsten ist es per Kommandozeile, hier mal exemplarisch für den Pin 22 (GPIO 25):



    Du musst den Pin mit einem Widerstand von 1,8 ... 10k nach +3,3 V (_nicht_ 5V !!!!) verbinden, damit er bei offenem Taster sicher "high" erkennt.
    Der Taster schliesst den Pin nach GRD...


    have fun :)