- konwersja z magistrali I²C na 8 kanałów 1-Wire,
- napięcie zasilania: 3,0...5,0 V,
- zasilanie poszczególnych kanałów wyprowadzone na niezależne piny złączy goldpin,
- wbudowane rezystory podciągające na szynie I²C,
- złącze I²C zgodne ze standardem Grove.
Mostek oparty jest na układzie DS2482-800 firmy Analog Devices (dawniej Maxim, a jeszcze dawniej – Dallas). Budowę układu pokazano na rysunku 1 – w jego strukturze znajduje się kontroler master 1-Wire (współpracujący z magistralą I²C) oraz osiem kanałów interfejsów 1-Wire.
Schemat mostka zaprezentowano na rysunku 2. Ze względu na złożoną budowę U1, jego implementacja wymaga jedynie zewnętrznego odsprzęgania zasilania oraz elementów zabezpieczających linie 1-Wire. Układ pracuje poprawnie w zakresie napięć zasilających 3...5 V. Magistrala I²C oraz zasilanie z systemu SBC doprowadzone są do złącza I²C, rezystory R1,2 podciągają obie linie magistrali, wymuszając stan wysoki w czasie braku transmisji. Kanały 1-Wire wyprowadzono, poprzez włączone szeregowo drabinki rezystorowe RP1 i RP2, na złącza I03, I047. Układy TVS1,2, zabezpieczają magistralę przed skutkami przepięć. Dla ułatwienia użytkowania na złącza V03, V47, GND03, GND47 wyprowadzono także zasilanie i masę tak, aby do podłączenia komponentów 1-Wire można było zastosować typowe przewody z wtykami NSR-03. Układ U1 ma możliwość adresacji za pomocą zwór A0...2. Domyślnie wszystkie zwory połączone są z masą, co ustawia adres bazowy na wartość 0x18.
Moduł został zmontowany na miniaturowej, dwustronnej płytce drukowanej, mechanicznie zgodnej z Grove. Rozmieszczenie elementów pokazano na rysunkach 3a i 3b, a gotowy układ widać na fotografii tytułowej.
Montaż jest typowy, a sam układ nie wymaga uruchamiania. Szybkiego sprawdzenia przed użyciem we własnej aplikacji można wykonać za pomocą Raspberry Pi. Po podłączeniu modułu do magistrali I²C i zasileniu napięciem 3,3 V, używając pakietu i2c-tools, poleceniem i2cdetect –y 1 sprawdzamy obecność układu na magistrali. Mostek powinien zostać odnaleziony pod ustawionym domyślnie adresem 0x18, jak na rysunku 4.
Jeżeli układ jest widoczny, można przejść do instalacji pakietu OWFS (One Wire File System, https://www.owfs.org/), który zmapuje urządzenia 1-Wire na system plików, analogicznie jak podczas mapowania dysków. Za pomocą OWFS, z poziomu systemu operacyjnego, mamy dostęp praktycznie do wszystkich parametrów, jakie udostępniają układy 1-Wire. Przed instalacją OWFS warto zaktualizować system:
sudo apt-get update
sudo apt-get install owfs python-ow ow-shell
zaś po instalacji konieczna jest edycja pliku:
poprzez „zakomentowanie” linii:
oraz dodanie następującego wpisu:
pod sekcją:
# USB device: DS9490
#server: usb = all
Dodatkowo trzeba usunąć znak komentarza z linii:
mountpoint = /mnt/1wire
allow_other
zaś po zapisaniu zmian utworzyć katalog, w którym montowane będą urządzenia 1-Wire:
Następnie restartujemy Raspberry Pi:
a po uruchomieniu aktywujemy serwer:
i montujemy urządzenia 1-Wire:
Uwaga! Czasem urządzenia montowane są dwukrotnie. Aby usunąć ten problem, edytujemy plik:
zastępując wpis:
linią zmodyfikowaną w następujący sposób:
Po restarcie możemy sprawdzić urządzenia zamontowane w katalogu /mnt/1wire, a w przypadku mostka DS2482-800 – w podkatalogu bus.0 (rysunek 5).
W podkatalogach bus0...7 możemy sprawdzić podłączone do poszczególnych kanałów DS2482-800 układy 1-Wire. W podkatalogach zaznaczonych na zielono, o nazwie identycznej z unikalnym numerem seryjnym ID układu, zapisane są udostępniane parametry. Przykładowo: dla DS18B20 o ID 287CD3FA0100002A, z pliku temperature12, możemy odczytać zmierzoną temperaturę, co pokazano na rysunku 6.
Jeżeli wszystko działa poprawnie, można zastosować moduł we własnej aplikacji.
Adam Tatuś, EP
- R1, R2: 10 kΩ (SMD 0603, 5%)
- RP1, RP2: drabinka 33 Ω 5% (CRA06S08)
- C1: 0,1 μF (SMD 0603, 10 V, X7R)
- C2: 10 μF (SMD 0603, 10 V, X7R)
- TVS1, TVS2: ESD204 (USON10)
- U1: DS2482S-800+ (SO16)
- I03, I47, G03, G47, V03, V47: złącze SIP4, 2,54 mm
- I2CA: złącze Grove kątowe (110990037)