Linux podstawy
Raspberry Pi
DevKit8000
Get the Flash Player to see this player.
DS18B20 1-wire |
Kontynuując pracę nad naszym inteligentnym domem należałoby podłączyć jakieś czujniki do stacji bazowej, które będą informowały nas o warunkach środowiskowych w pomieszczeniu. W zależności od wskazań czujników będziemy załączać klimatyzację itp. Najprostszym przykładem czujnika jest termometr DS18B20, ponieważ każdy linux ma biblioteki do obsługi tego termometru standardowo wbudowane w jądrze. Wystarczy tylko przy kompilacji jądra załączyć opcję "Driver for 1-wire Dallas network protocol". Tu pojawia się problem, ponieważ nie każdy wie jak skompilować jądro i jakie elementy wybrać, aby nasz system obsługiwał standardowe wejścia i wyjścia. Na szczęście w internecie znajdziecie gotowe jądra ze skonfigurowanym już jądrem pod czujnik Dallasa. Ja wykorzystałem artykuł http://www.raspberrypi.org/phpBB3/viewtopic.php?t=6649 oraz płytkę gotroniki na której był już termometr DS18B20.Teraz podpinamy termometr: Jak widać na obrazku linia GPIO4 jest już podciągnięta do napięcia, ale bezpieczniej jest podciągnąć go do 5V jakimś rezystorem. Ja korzystałem z DS18B20 na płytce Gotroniki, a tam jest już podpięty rezystor, więc nie wiem czy bez tego rezystora wszystko będzie działało. Można też podłączyć kilka tak jak na stornie: http://picoboard.pl/raspberry-pi-obsluga-termomertrow-ds18b20/ w taki sposób: Rezystor to 4,7k Ohm. W nowych Resbian'ach jest już załączona linia 1-wire, więc wystarczy wpisać tylko:
i mamy dostęp do dany 1-wire w pliku Można też ściągnąć skompilowane jądro z 1-wire (jeśli macie jakiś sterszy system) zalogować się do konsoli raspberry jako administrator i ściągnąć jądro obsługujące termometr w następujący sposób: Po ponownym odpaleniu konsoli powien pokazać się katalog /sys/bus/w1 jeśli go nie ma, to znaczy że nie zostały zainstalowane pakiety obsługujące 1-wire. Jeśli macie katalog "sys/bus/w1", to wystarczy wysłać "1" do pliku w1_master_search, aby wykryć adres termometru, a następnie wyświetlić wszystkie dane na ekran za pomocą cat */w1_slave tak jak to zaprezentowałem na poniższym zrzucie z ekranu lub wywołać pojedynczy czujnik za pomocą jego adresu cat 28-000002c56e9d/w1_slave. Aby sprawdzić czy termometr działa wystarczy dotknąć go palcem i wyświetlić dane z termometru. Temperatura w naszym przykładzie to t=25812, wystarczy podzielić ją przez 1000 i otrzymujemy 25,812 stopni C. Oczywiście każdy plik ma jakąś rolę konfiguracyjną, którą można znaleźć w literaturze: - w1_master_slave_count - umożliwia sprawdzenie liczby czujników zarejestrowanych w systemie i gotowych do odczytu. |