- Wymagane materiały
- Wprowadzenie do czujnika temperatury DS18B20
- Wymagania wstępne
- Schemat obwodu
- Instalacja biblioteki Adafruit LCD na Raspberry P
- Włączanie interfejsu One-Wire w Pi
- Wyjście / praca
Raspberry Pi jest znane ze swojej mocy obliczeniowej i szerokiego zastosowania w dziedzinie IoT, automatyki domowej itp. Jednak aby każdy system elektroniczny mógł wchodzić w interakcję ze światem rzeczywistym i uzyskiwać o nim informacje, system musi wykorzystywać czujniki. Istnieje wiele rodzajów czujników wykorzystywanych w tym procesie, a wymagany czujnik jest wybierany na podstawie mierzonego parametru i jego zastosowania. W tym samouczku nauczymy się jak połączyć czujnik temperatury DS18B20 z Raspberry Pi.
DS18B20 jest szeroko stosowany czujnik temperatury, głównie w miejscach, gdzie trudne warunki pracy zaangażowane są jak przemysł chemiczny, zakładów górniczych itp Ten artykuł powie o czujniku i jak outstands inny czujnik temperatury i wreszcie interfejs go z Raspberry Pi i zobaczyć temperaturę wartość na wyświetlaczu LCD 16x2.
Wymagane materiały
- Czujnik temperatury DS18B20
- Raspberry Pi
- Wyświetlacz LCD 16 * 2
- Potnij 10k
- Rezystor podciągający 10k
- Płytka prototypowa
- Przewody łączące
Wprowadzenie do czujnika temperatury DS18B20
DS18B20 to trójzaciskowy czujnik temperatury dostępny w pakiecie TO-92 (typ tranzystorowy). Jest bardzo łatwy w obsłudze i wymaga tylko jednego zewnętrznego komponentu do rozpoczęcia pracy. Ponadto wymaga tylko jednego pinu GPIO z MCU / MPU do komunikacji z nim. Poniżej przedstawiono typowy czujnik temperatury DS18B20 wraz z nazwą pinów.
Ten czujnik jest również dostępny w wersji wodoodpornej, w której czujnik jest osłonięty cylindryczną metalową rurką. W tym samouczku będziemy używać normalnego czujnika tranzystorowego, który pokazano powyżej. DS18B20 jest czujnik programowalny 1 drutu temperatury co oznacza, że wymaga tylko kołek danych do wysyłania informacji do mikrokontrolera lub mikroprocesora płyt, takich jak malina Pi. Każdy czujnik ma unikalny adres 64-bitowy, więc możliwe jest również podłączenie wielu czujników do tego samego MCU / MPU, ponieważ każdy czujnik może być adresowany indywidualnie na tej samej magistrali danych. Specyfikację czujnika przedstawiono poniżej.
- Napięcie robocze: 3-5 V.
- Zakres pomiarowy: -55 ° C do + 125 ° C
- Dokładność: ± 0,5 ° C
- Rozdzielczość: od 9 do 12 bitów
Teraz, gdy wiemy już wystarczająco dużo o czujniku, pozwól nam połączyć go z Raspberry Pi.
Wymagania wstępne
Zakłada się, że Twoje Raspberry Pi jest już flashowane z systemem operacyjnym i jest w stanie połączyć się z Internetem. Jeśli nie, postępuj zgodnie z samouczkiem Wprowadzenie do Raspberry Pi przed kontynuowaniem. Tutaj używamy Rasbian Jessie zainstalowanego Raspberry Pi 3.
Zakłada się również, że masz dostęp do swojego pi przez okna terminala lub przez inną aplikację, za pomocą której możesz pisać i uruchamiać programy w języku Python oraz używać okna terminala.
Schemat obwodu
Jak powiedzieliśmy wcześniej w tym samouczku, połączymy czujnik DS18B20 z Pi i wyświetlimy wartość temperatury na ekranie LCD 16 * 2. Więc czujnik i wyświetlacz LCD powinny być połączone z Raspberry Pi, jak pokazano poniżej.
Postępuj zgodnie ze schematem połączeń i wykonaj odpowiednie połączenie. Zarówno wyświetlacz LCD, jak i czujnik DS18B20 działają z pomocą + 5 V, które jest dostarczane przez pin 5 V na Raspberry pi. Wyświetlacz LCD jest przystosowany do pracy w trybie 4-bitowym z Raspberry pi, piny GPIO 18, 23, 24 i 25 są używane do linii danych, a piny GPIO 7 i 8 są używane do linii sterujących. Potencjometr służy również do kontrolowania poziomu kontrastu wyświetlacza LCD. Linia danych DS18B20 jest podłączona do pinu 4 GPIO. Należy również pamiętać, że rezystor 10K musi być używany, aby wyciągnąć dane tak wysoko, jak pokazano na schemacie obwodu.
Możesz postępować zgodnie ze schematem obwodu powyżej i wykonać połączenia lub skorzystać z tabeli pinów, aby sprawdzić numery pinów GPIO.
Zbudowałem obwód na płytce stykowej, używając pojedynczych żył i przewodów męsko-żeńskich do wykonania połączeń. Jak widać, czujnik wymaga tylko jednego przewodu do połączenia, przez co zajmuje mniej miejsca i pinów. Mój sprzęt wygląda tak poniżej, kiedy wszystkie połączenia są wykonane. Teraz czas na włączenie pi i rozpoczęcie programowania.
Instalacja biblioteki Adafruit LCD na Raspberry P
Wartość temperatury zostanie wyświetlona na wyświetlaczu LCD 16 * 2. Adafruit zapewnia nam bibliotekę do łatwej obsługi tego LCD w trybie 4-bitowym, więc dodajmy go do naszego Raspberry Pi, otwierając okno terminala Pi i wykonując poniższe kroki.
Krok 1: Zainstaluj git na swoim Raspberry Pi, korzystając z poniższej linii. Git pozwala sklonować dowolne pliki projektu na Github i używać go na swoim Raspberry pi. Nasza biblioteka jest na Githubie, więc musimy zainstalować git, aby pobrać tę bibliotekę do pi.
apt-get install git
Krok 2: Poniższy wiersz prowadzi do strony GitHub, na której znajduje się biblioteka, po prostu wykonaj wiersz, aby sklonować plik projektu w katalogu domowym Pi
git clone git: //github.com/adafruit/Adafruit_Python_CharLCD
Krok 3: Użyj poniższego polecenia, aby zmienić wiersz katalogu, aby dostać się do pliku projektu, który właśnie pobraliśmy. Linia poleceń jest podana poniżej
cd Adafruit_Python_CharLCD
Krok 4: W katalogu będzie znajdował się plik o nazwie setup.py , musimy go zainstalować, aby zainstalować bibliotekę. Użyj poniższego kodu, aby zainstalować bibliotekę
sudo python setup.py install
To znaczy, że biblioteka powinna zostać pomyślnie zainstalowana. Teraz podobnie przejdźmy do instalacji biblioteki DHT, która również pochodzi z Adafruit.
Włączanie interfejsu One-Wire w Pi
Ponieważ czujnik DS18B20 komunikuje się metodą One-Wire, musimy włączyć komunikację jednoprzewodową na Pi, wykonując poniższe czynności.
Krok 1: - Otwórz wiersz poleceń i użyj poniższego polecenia, aby otworzyć plik konfiguracyjny
sudo nano /boot/config.txt
Krok 2: - W pliku konfiguracyjnym dodaj wiersz „ dtoverlay = w1-gpio ” ( ujęty na poniższym obrazku) i zapisz plik, jak pokazano poniżej
Krok 3: - Użyj Ctrl + X, aby wyjść z pliku i zapisać go, naciskając „Y”, a następnie klawisz Enter. Na koniec uruchom ponownie Pi za pomocą polecenia
sudo reboot
Krok 4: - Po ponownym uruchomieniu otwórz terminal ponownie i wprowadź następujące polecenia.
sudo modprobe w1- GPIO sudo modprobe w1-therm. cd / sys / bus / w1 / devices ls
Twoje okna terminala będą wyświetlać coś takiego
Krok 5: - Pod koniec kroku 4, kiedy wprowadzisz ls , twój pi wyświetli unikalny numer, który będzie inny dla każdego użytkownika, w zależności od czujnika, ale zawsze będzie zaczynał się od 28-. W moim przypadku numer to 28-03172337caff .
Krok 6: - Teraz możemy sprawdzić, czy czujnik działa, wprowadzając następujące polecenia
cd 28-XXXXXXXXXXXX.find ('t =') # znajdź "t =" w wierszu if trimmed_data! = -1: temp_string = lines # przycinaj strig tylko do wartości temoerature temp_c = float (temp_string) / 1000.0 # podziel wartość 1000, aby uzyskać rzeczywistą wartość zwracaną temp_c # zwróć wartość do wydrukowania na LCD
Zmienne wiersze są używane do odczytywania wierszy w pliku. Następnie te wiersze są porównywane w poszukiwaniu litery „t =”, a wartość po tej literze jest zapisywana w zmiennej temp_string . Na koniec, aby uzyskać wartość temperatury, używamy zmiennej temp_c, w której dzielimy wartość ciągu przez 1000. Na koniec zwracamy zmienną temp_c jako wynik funkcji.
Wewnątrz nieskończonej podczas pętli, mamy tylko zadzwonić wyżej zdefiniowanej funkcji celu uzyskania wartości temperatury i wyświetlać je na ekranie LCD. Czyścimy również wyświetlacz LCD co 1 sekundę, aby wyświetlić zaktualizowaną wartość.
while 1: #Infinite Loop lcd.clear () # Wyczyść ekran LCD lcd .message ('Temp =%.1f C'% get_temp ()) # Wyświetl wartość temperatury time.sleep (1) # Poczekaj 1 sekundę następnie zaktualizuj wartości
Wyjście / praca
Jak zawsze pełny kod Pythona jest podany na końcu strony, użyj go i skompiluj na swoim Raspberry Pi. Wykonaj połączenie, jak pokazano na schemacie obwodu, a przed uruchomieniem programu upewnij się, że wykonałeś powyższe kroki, aby zainstalować pliki nagłówkowe LCD i włączyć komunikację jednoprzewodową na pi. Gdy to zrobisz, po prostu uruchom program, jeśli wszystko działa zgodnie z oczekiwaniami, powinieneś być w stanie zauważyć tekst wprowadzający. Jeśli nie, wyreguluj potencjometr kontrastu, aż coś zobaczysz. Ostateczny wynik będzie wyglądał mniej więcej tak poniżej.
Mam nadzieję, że zrozumiałeś projekt i nie miałeś problemu z jego zbudowaniem. Jeśli inaczej, opisz swój problem w sekcji komentarzy lub skorzystaj z forum, aby uzyskać pomoc techniczną. To tylko projekt interfejsu, ale kiedy już to zrobisz, możesz myśleć z wyprzedzeniem, pracując nad stacją pogodową Raspberry Pi, powiadamiającym e-mailem o temperaturze i wieloma innymi.
Pełne działanie projektu jest również pokazane na poniższym filmie, na którym można zobaczyć wartość temperatury aktualizowaną w czasie rzeczywistym.