Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Jak korzystać z interfejsu 1-Wire w Raspberry Pi

ghost666 25 Lip 2018 23:00 2028 6
  • Jak korzystać z interfejsu 1-Wire w Raspberry Pi
    Minikomputer Raspberry Pi wyposażony jest w interfejs 1-Wire, który wyprowadzony jest fizycznie na pin GPIO4. Jest to cyfrowy, szeregowy interfejs do przesyłu danych o dosyć niskiej prędkości poprzez jeden kabel (jak wskazuje jego nazwa). Interfejs ten jest często wykorzystywany do podłączania układów takich jak termometr DS18B20.

    Krok 1 - uruchomienie interfejsu

    Jednakże zanim rozpoczniemy korzystanie z interfejsu obecnego na pinach GPIO, musimy go aktywować. Domyślnie jest on wyłączony, więc naszym zadaniem będzie taka zmiana w konfiguracji Raspberry, aby po restarcie system uruchomił interfejs 1-Wire. Istnieją trzy metody, aby to zrobić i wszystkie trzy omówimy poniżej.

    Metoda 1 - wykorzystanie raspi-config

    Pierwsza z metod polega na wykorzystaniu wbudowanego w Raspbiana konfiguratora minikomputera. Wystarczy, że w terminalu wpiszemy:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Uruchomi to prosty program, który pozwala na konfigurację naszego modułu Raspberry Pi. W pierwszym menu wybieramy "Interfacing Options".

    Jak korzystać z interfejsu 1-Wire w Raspberry Pi


    Następnie wybieramy opcję “1-wire” i aktywujemy przycisk “<Select>” :

    Jak korzystać z interfejsu 1-Wire w Raspberry Pi


    Potwierdzamy, że chcemy aktywować interfejs naciskając "<Yes>"

    Jak korzystać z interfejsu 1-Wire w Raspberry Pi


    Zamykamy informację o uruchomieniu interfejsu naciskając "<OK>"

    Jak korzystać z interfejsu 1-Wire w Raspberry Pi


    Następnie zgadzamy się na reset systemu w tym momencie.

    Jak korzystać z interfejsu 1-Wire w Raspberry Pi


    Po ponownym uruchomieniu się Raspberry Pi interfejs 1-Wire będzie już włączony i gotowy do wykorzystania.

    Metoda 2 - wykorzystanie okienkowego konfiguratora Raspberry Pi

    Jeśli mamy zainstalowane środowisko graficzne na naszym Raspberry Pi, to po załadowaniu się pulpitu możemy - zamiast korzystać z wywoływanego w terminalu konfiguratora otworzyć konfigurator okienkowy. Znajdziemy go klikając w Menu -> Preferences -> Raspberry Pi Configuration.

    Jak korzystać z interfejsu 1-Wire w Raspberry Pi

    Jak korzystać z interfejsu 1-Wire w Raspberry Pi


    Wystarczy wejść w zakładkę interfejsy i w tabeli, przy interfejsie 1-Wire wybrać opcję "Enabled", czyli załączony.

    Jak korzystać z interfejsu 1-Wire w Raspberry Pi


    Pozostaje tylko nacisnąć przycisk "OK" i nacisnąć "Yes" w ostatnim komunikacie o reboocie systemu. Po ponownym uruchomieniu się naszego minikomputera omawiany interfejs będzie już działał.

    Metoda 3 - manualna edycja pliku konfiguracyjnego

    Ostatnia z przedstawionych metod polega na ręcznej edycji pliku konfiguracyjnego Raspberry Pi, w którym dodamy linię odpowiedzialną za uruchomienie 1-Wire.

    Poniższy opis zakłada, że używacie najnowszego Raspbiana pobranego z oficjalnej strony. Jeśli nie lub nie jesteście pewni, można aktualizować system z pomocą dwóch komend:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Następnie, korzystając z nano. otwieramy plik konfiguracyjny:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Na samym dole pliku dopisujemy w nowej linii:

    Code:
    dtoverlay=w1-gpio


    I wychodzimy z edytora nano, zapisując plik. Teraz musimy manualnie zresetować nasz minikomputer. W tym celu w terminalu wpisujemy:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    I tyle, po ponownym uruchomieniu system powinien już widzieć podłączone do 1-Wire urządzenia.

    Krok 2 - wykrywanie podłączonych do interfejsu 1-Wire układów

    Po uruchomieniu interfejsu, domyślnie dostępny jest on na pinie siódmym naszego minikomputera (GPIO4). Jeśli podłączyliśmy tutaj jakieś układy na 1-Wire, to możemy wydrukować w terminalu ich listę - wystarczy, że wylistujemy zawartość folderu związanego z tym interfejsem:

    Kod: bash
    Zaloguj się, aby zobaczyć kod


    Teraz możemy już komunikować się z podłączonymi układami, aczkolwiek to temat na inny poradnik - komunikacja z różnymi układami przebiega w rozmaity sposób, więc nie będziemy jej tutaj opisywać.

    Źródło: Link

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    ghost666 napisał 9539 postów o ocenie 7600, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • #2
    Jufo
    Poziom 14  
    Jest troche bledne rozumowanie, gpio4 z defaultu moze sluzyc jako 1-wire, ale nie musi, mozesz zmienic gpiopin na inny by dzialal jako 1-wire...
  • #3
    nici
    Poziom 35  
    Tytuł powinien być - jak włączyć 1wire a nie korzystać.
  • #4
    shoko_gora
    Poziom 12  
    Przestrzegam was panowie przed używanie 1-Wire na Raspberry. Nie jest to sprzętowy interfejs i zabiera sporo zasobów CPU. Mieliśmy ten prolem w fimie, gdzie do szczytywanie temperatury używalismy właśnie 1-Wire, niestety system staje sie tak wolny, że nie nadążał z obsługa innych "pseudo-deterministycznych" zadań. Ta sama historia z BBB.
    I2C rozwiązał problem.
  • #5
    Użytkownik usunął konto
    Użytkownik usunął konto  
  • #6
    ghost666
    Tłumacz Redaktor
    nowyARM napisał:
    shoko_gora napisał:
    Nie jest to sprzętowy interfejs i zabiera sporo zasobów CPU.

    Zawsze byłem ciekaw jak to jest zrealizowane. Skoro pożera zasoby to amatorszczyzna oparta na delay, a na ARM przy standardowej szybkości 1-Wire, można to zrobić na przerwaniach.

    Rozwiązaniem mogą być DS2482/84 (host 1-Wire przez I2C) lub DS2480 (UART).


    Jest jeszcze mostek DS2490 / DS9490, czyli 1-Wire na USB, który chyba w przypadku Raspberry Pi byłby wygodniejszy do obsłużenia.
  • #7
    Użytkownik usunął konto
    Użytkownik usunął konto