DS18b20 na RPi - podłączenie

Domoticz cz. 4: podłączenie termometru DS18b20 do Raspberry Pi

Pomiar temperatury to jeden z pierwszych dodatków do domoticza. Zadanie jest bardzo proste i pozwala w wersji przewodowej na podłączenie kilku termometrów przez system 1-wire. 1-wire oznacza, że termometr posiada oprócz zasilania – jeden przewód fizyczny, przez który przekazuje dane, a magistrala 1-wire obsługuje weryfikację przekazywanych danych.

Termometr DS18b20
Termometr DS18b20

Co nam będzie potrzebne?

Hardware:

  • termometr o symbolu DS18B20 (Dallas) – występuje w różnych obudowach – podstawowa to chip z trzema wyprowadzeniami. Zakres mierzonych temperatur to -55 stopni Celsjusza do +125, jednak wiarygodny pomiar jest do około +95 – +100 stopni Celsjusza.
  • rezystor 4,7kOm – tzw. podciągający pin danych
  • Raspberry Pi (dowolne – A, B, B+, 2 lub 3) z pierwszego wpisu

Software:

  • domoticz zainstalowany w pierwszym kroku

Do dzieła!

Termometr potrafi współpracować w szeregu na dość długim przewodzie, będąc zasilany tylko z Raspberyy Pi, z PIN 3,3V. Oznacza to, że możemy na np: 20m umieścić 5 takich termometrów – na przykład do pomiaru nagrzewnicy, oraz rekuperatora, który posiada 2 wejścia i 2 wyjścia – pomiar pozwala określić jego skuteczność, dzięki m.in. czterem wykresom domoticz na jednej skali.

Po pierwsze należy wprowadzić zmiany w procedurze uruchamiania naszego Raspberry Pi z raspbianem w wersji Wheezy lub Jessie. Do pliku /boot/config.txt należy dopisać linię:

Uruchamiamy ponownie Pi i podłączamy termometr – między pin danych (czerwony) i +3,3V (biały) wstawiamy rezystor 4,7kOm – tak jak na pierwszym zdjęciu, tak aby podciągnąć pin z danymi i ustalić sygnał. Pin GND dostał niebieski kabel. Następnie podłączamy nasz termometr do Raspberry Pi:

Podłączenie Dallas DS18b20 do Raspberry Pi
Podłączenie Dallas DS18b20 do Raspberry Pi

Pin +3,3V do +3,3V Raspberry, Pin Data (środkowy na termometrze) do GPIO#4, a GND do masy (niebieski). Jeśli masz ich więcej (na przykład 5) – podłącz je równolegle.
Teraz na konsoli sprawdzamy czy termometr pojawił się w systemie:

W wyniku powinieneś otrzymać odczyt surowy temperatury – w przykładzie mamy 5 termometrów:

Jeśli masz jeden termometr – będzie jeden wpis. Wpis crc=xx YES – oznacza że odczyt jest poprawny.
Pozostaje dodanie obsługi 1-wire do domoticz, w zakładce: Ustawienia->Sprzęt:

Dodawanie 1-wire do Domoticz
Dodawanie 1-wire do Domoticz

Nasze termometry pojawią się od razu w Ustawienia->Urządzenia:

Termometry Dallas DS18b20 w Domoticz (1-wire)
Termometry Dallas DS18b20 w Domoticz (1-wire)

To wszystko – pozostaje dodać je do używanych czujników, tak aby pojawiły się w zakładce Temperatura.




  • Wojciech Paweł Przybyła

    Łukasz, szczerze mówiąc „wrzutnia” i dwie wyrzutnie nie podobają mi się.
    Proponuję Ci na zewnątrz Czerpnia i Wyrzutnia a w domku nawiew i wywiew 🙂
    Z pozdrowieniami.
    WP

    • Łukasz C. Jokiel

      To jest świetny pomysł! Zmieniam!

  • Veikko Raasuke

    Hi! I can add this hardware, but it doesn’t create a device. What could cause that?
    I am able to read sensor data from the cli.

    • Łukasz C. Jokiel

      Assuming you can see the devices in the /sys – did you add the 1-wire device to the Domoticz?

      • Veikko Raasuke

        Hi! I added 1w to the Domoticz under Setup > Hardware.
        After that if I go to Setup > Devices in Domotics, I can’t see any temperature sensors there.
        Is it neccessary to install owfs or it should work without it?

        • Łukasz C. Jokiel

          If the devices are visible in the /sys tree – they should right after adding 1-wire. Anything in the Domoticz log or system log?

          • Veikko Raasuke

            I got this to work. Actually I don’t need owfs I tryed to install it all the different ways for two days. ACtually only thing what I should do was to clear the OWFS Path under Hardware. After that Dmooticz detects itself 1-wire bus.

          • Łukasz C. Jokiel

            That’s great!

  • Maciej Nasiadka

    Cześć.
    Jak umieścić temperaturę na stronie www?

    • Łukasz C. Jokiel

      Domoticz prezentuje temperaturę na swojej stronie WWW -> pod adresem http://adres_ip_raspberry:8080/ w zakładce Temperatura

      • Maciej Nasiadka

        Chodziło mi bardziej osobno, bez domoticza. Ale już niestety nie jest mi to już potrzebne.

        • Łukasz C. Jokiel

          Po prostu poszukaj innego przykładu 🙂

  • Pawel Kopacz

    Witam. Raspberry 3, Raspbian Jessie. Jak podłącze trzy termometry ds18b20 to pokazuje mi je w Domoticzu prawidłowo, jak próbuje dodać jeszcze jeden to już nie wykrywa program żadnego.
    Odczyt z poziomu konsoli jest prawidłowy wykrywa mi cztery ds’y i ich temperatury.
    Zauważyłem w logach Domoticza, że przy trzech czujnikach co chwilę mam odczyt, jak dodam jeszcze jeden to tak jakby zawieszał się Domoticz i żadne logi już z czujników nie napływają.
    Co to może być?
    Ds’y podmienione, wgrany na nowo Raspbian i Domoticz.
    Proszę o pomoc, dwa dni już nad tym siedzę 🙂

    • Łukasz C. Jokiel

      Tzw. dziwna sytuacja 🙂 Jeśli na 100% zawsze są prawidłowe odczyty z konsoli i nie ma w logach systemowych błędu – to domoticz musi je także poprawnie widzieć. U siebie mam na jednej linii 1-wire 5xDS – cztery na 1,5 metra i kolejny na 8 metrach, rezystor przy samej RPi, wszystko na skrętce CAT5.
      Stawiałbym jednak na kabelki.

      • Pawel Kopacz

        Panie Łukaszu ostatnio mam wiele „dziwnych” przypadków z Raspberry:) Wrzucam zrzuty ekranu, zauważyłem coś dziwnego, w konsoli jak wpiszę polecenie ” cat /sys/bus/w1/devices/28-*/w1_slave”
        to dwa czujniki mają taką samą temperaturę i crc. https://uploads.disquscdn.com/images/a943ac09c5c015db713bd3052de717e6ad8dac2eca00f03e6476d851a67a0701.jpg https://uploads.disquscdn.com/images/9814f38577774ddb1bc80c7083d8ded9808da08ff486117346bbb5b4973536c8.jpg

        To chyba coś nie tak?

        Zrzuty ekranu są wykonane, gdy do Raspberry miałem podłączone 4 ds’y, a Domoticz nie wykrywał mi ich.

        Na próbę podłączyłem na krótko nowe czujniki, sytuacja taka sama 3 ok, cztery mi nie wykrywa.

        Zmiana GPIO też nie pomaga.

        • Łukasz C. Jokiel

          No cóż – może być tez i uszkodzony sam termometr, ale to zależy od podłączenia. Jeśli ma ten sam adres to albo jeden albo drugi 🙂 Wymienić, ale najpierw sprawdzić jeszcze raz kabelki.

          PS: „Łukaszu”, po co się panować 😉

          • Pawel Kopacz

            🙂 No to mam zajęcie na dzisiejszą noc. Zainstaluje wszystko od nowa i wymienię wszystkie Ds’y, zobaczymy co wtedy będzie się działo.

          • Pawel Kopacz

            Sprawa załatwiona, wgrana starsza, stabilna wersja Domoticza i wszystko działa tak jak należy 🙂
            Pozdrawiam

          • Łukasz C. Jokiel

            Świetnie!

  • Michał

    Witaj,
    mam podobny problem jak kolega niżej i też ciężko idzie. W zasadzie moje pierwsze tremsty z raspem, więc spisuję linijka w linijkę…
    Mam podłączonego raspa, do niego dwa ds’y, oba widoczne poprawnie po wywołaniu: cat /sys/bus/w1/devices/28-*/w1_slave
    niestety jak dodam w SPRZĘT czujnik, to nijak nic nie widać w urządzeniach… może jakaś podpowiedź?
    W logu mam powtarzający się wpis:
    2017-01-16 18:21:51.456 Using 1-Wire support (OWFS)…
    2017-01-16 18:21:51.557 1-Wire: Switch thread terminating
    2017-01-16 18:21:52.457 1-Wire: Sensor thread terminating
    2017-01-16 18:21:52.468 Using 1-Wire support (OWFS)…
    2017-01-16 18:21:52.568 1-Wire: Switch thread terminating
    2017-01-16 18:21:53.468 1-Wire: Sensor thread terminating
    2017-01-16 18:21:53.479 Using 1-Wire support (OWFS)…

    • Łukasz C. Jokiel

      Jeśli zaznaczyłeś cokolwiek przy dodawaniu 1-wire w Hardware – usuń i zrób na nowo – nic nie podawaj. Raspberry Pi ma własne 1-wire, i jeśli prawidłowo włączyłeś 1-eire zrobiłeś co trzeba GPIO-4 – będzie działać. OWFS – w przypadku jak chcesz tego: http://owfs.org/

      • Michał

        Nic nie zaznaczam, to co jest domyślnie, jak wywalę ścieżkę do owfs patch to też nic się nie pojawia w urządzeniach;/

        https://uploads.disquscdn.com/images/435e115a2ea28f2bebdc5cf4e473f53c3a69af953c01efb4e2e800062ba6169f.jpg

        • Łukasz C. Jokiel

          W ścieżce pusto, a w częstotliwościach 0 i 0. 1-wire masz włączone, więc powinno zadziałać z kopa. Zainstaluj sobie mc – prawie jak Norton Commender – skopiuj katalog domoticz w bezpieczne miejsce i zainstaluj go jeszcze raz na świeżo.

          • Michał

            pomogła aktualizacja jak niżej, nie robiłem tego wcześniej, może i to oczywiste… tak czy inaczej po tej operacji od razu się czujniki pojawiły.
            Dzięki za odpowiedź i Twój czas:)

            sudo apt-get update

            sudo apt-get upgrade

            sudo reboot

            sudo rpi-update

            sudo reboot

          • Łukasz C. Jokiel

            Pięknie!
            No problem, nie można cały czas tylko odśnieżać i odśnieżać 😀
            BMP – no problem bo to i2c, włączyć i po sprawie. Dasz radę.
            DHT to trzeba programem z adafruit czytać – trochę nieeleganckie – zostaw na koniec, też dasz radę.

  • ArekP

    Witam,
    odgrzewam temat, bo mam ten sam problem co kolega poniżej.
    Tzn.konkretnie: Mam jeden termometr DS , w konsoli widoczny, poprawnie wyświetla odczyty i CRC, w Domoticzu, po dodaniu do Hardware, w logu pojawiają się wpisy :

    2017-05-09 12:00:33.443 Using 1-Wire support (kernel W1 module)…
    2017-05-09 12:00:33.443 1Wire: Added Device: 28-000008a7f8e5

    czyli niby wszystko ok, a w zakładce Device pusto 🙁

    Instalowałem na wersji stabilnej, potem zaktualizowałem do najnowszej beta, ale nic nie pomogło.
    Oczywiście wykasowałem wpis path OWFS . Dodawałem i usuwałem kilkakrotnie … i d..a
    Czy koniecznie trzeba zaistalować Domoticza od nowa?

    • Łukasz C. Jokiel

      Spróbuj podobnie – skopiuj katalog domoticz w bezpieczne miejsce, zrób upgrade jak Michał i zainstaluj stable domoticz na nowo. Jeśli jednak po aktualizacji domoticz NIE uruchomi się, to wróć do wersji działającej w ten sposób: sudo rpi-update 52241088c1da59a359110d39c1875cda56496764

      • ArekP

        Dzięki, popróbuję z rana i dam znać jak poszło 🙂

      • ArekP

        Zrobiłem rano update, upgrade i rpi-update . Sprawdziłem i to samo: w konsoli ds jest,
        w domoticzu tylko w logu i hardware.
        Skopiowałem katalog ./domoticz, zrobiłem downgrade do wersji stabilnej, czyli skasowałem katalog Domoticz, zapisałem wcześniej bazę, ściągnąłem wersję: https://releases.domoticz.com/releases/release/domoticz_linux_armv7l.tgz, itd w/g Wiki.

        Po instalacji i reboocie pokazał się pusty domoticz. Wgrałem moją stara bazę i po reboocie wszystkie urządzenia pokazały się, ale system się zawiesił po chwili i w końcu zastosowałem Twoją ostatnią komendę rpi-update z numerkami i wszystko wróciło do normy.
        Jednak termometru jak nie było, tak nie ma 🙁

    • Łukasz C. Jokiel

      Zacząłbym od nowej karty, nowej instalacji domoticza – być może coś w Twojej bazie jest uszkodzone.

      • ArekP

        Łukasz, temperatura na zewnątrz u mnie to 6,5 stopnia 😉 Właśnie pokazał mi się termometr. Przyczyna kłopotów banalna. W zakładce Setup:Sprzęt/Urządzenia: Akceptuj nowe urządzenia, nie miałem ptaszka… Dzięki za pomoc i sorry za trucie …

        • Łukasz C. Jokiel

          Świetnie, że udało się rozwiązać – mamy kolejny debug do kolekcji ^^