Pierwsze kroki z Raspberry Pi: obsługa magistrali 1-Wire

Aplikacja konsolowa realizująca odczyt czujników DS18B20

Finalnym efektem poznawania obsługi magistrali 1-Wire w systemie Linux na przykładzie zestawu Raspberry Pi oraz czujników DS18B20, będzie przygotowanie prostej aplikacji konsolowej realizującej skanowanie i odczyt temperatury z wszystkich dołączonych do systemu czujników. Należy pamiętać, że magistrala 1-Wire nie posiada systemów automatycznej detekcji dołączenia i odłączenia czujników stąd przed każdą próbą odczytu, jednym z zadań aplikacji będzie usunięcie numerów czujników z pliku w1_master_slaves , a następne ponowne, jednokrotne przeskanowanie magistrali (poprzez zapis wartości ‘1’ do pliku w1_master_search ). Taki tok postępowania pozwala upewnić się, że odczyt temperatury będzie odbywał się ze wszystkich aktualnie podłączonych do systemu czujników.

Kod aplikacji, napisany z wykorzystaniem skryptu powłoki, został przedstawiony na poniższym listingu:

Na początku działania skryptu do zmiennej LICZBA_CZUJNIKOW pobieramy za pomocą polecenia cat na pliku w1_master_slave_count liczbę aktualnie zarejestrowanych czujników. Następnie za pomocą pętli do..while z pliku w1_master_slaves odczytujemy numery ID kolejnych zarejestrowanych czujników, które posłużą nam do ich wyrejestrowania za pomocą pliku w1_master_remove . Po zakończeniu działania pętli, jednokrotnie skanujemy magistralę przy wykorzystaniu pliku w1_master_search . Po ponownym odczytaniu liczby aktualnie zarejestrowanych czujników w kolejnej pętli do..while odczytujemy i odpowiednio formatujemy (dzieląc przez 1000) wartość temperatury dla poszczególnych sensorów.

Aby uruchomić powyższy przykład tworzymy nowy plik (np. o nazwie pomiar) , zapisujemy w nim kod przedstawiony na powyższym listingu, a następnie ustawiamy atrybut wykonywania skryptu:

Ostatnim etapem jest uruchomienie skryptu (skrypty powłoki nie wymagają procesu kompilacji):

Wynik działania:

Przedstawiony kod może zostać znacznie uproszczony, jednak zamysłem autora jest pełne przedstawienie sposobu konfiguracji magistrali 1-Wire poprzez dostarczone interfejsy jądra systemu Linux.

 

BIBLIOGRAFIA:

[1] “Linux. Podstawy i aplikacje dla systemów embedded” Skalski Ł., Wydawnictwo BTC, Legionowo 2012, ISBN: 978-83-60233-85-6.

[2] “1-Wire® Software Resource Guide Device Description ” Maxim Integrated, 2008.

O autorze