Zbudowanie własnego termometru Arduino to zabawny i praktyczny sposób na poszerzenie umiejętności majsterkowania, ale od czego zacząć? Dołącz do nas, gdy zagłębimy się w okablowanie i kodowanie, które przekształcają Arduino, sondę temperatury DS18B20, i wyświetlacz OLED w precyzyjny termometr cyfrowy, który może dobrze działać w pomieszczeniach, akwariach, a nawet na dworze.

Czego potrzebujesz do samodzielnego wykonania cyfrowego termometru Arduino?

Wszystkie te komponenty można znaleźć na stronach takich jak eBay i Amazon.

Płytka Arduino

Do tego projektu można użyć praktycznie dowolnego Arduino z wyjściem 5V. Używamy Arduino Pro Micro, dzięki czemu nasz gotowy termometr jest kompaktowy, ale możesz użyć większej płytki, takiej jak Arduino Uno, jeśli chcesz uniknąć lutowania w tym projekcie.

Sonda temperatury DS18B20

Czujniki temperatury DS18B20 można znaleźć jako małe wolnostojące czujniki, płytki drukowane z dołączonymi czujnikami lub jako wodoodporne sondy na długich przewodach. Wybraliśmy to drugie rozwiązanie, ponieważ pozwala nam to używać naszego termometru w akwarium, ale możesz wybrać dowolny wariant czujnika temperatury DS18B20. W przeciwieństwie do innych typów czujników temperatury, DS18B20s dostarczają do Arduino bezpośredni sygnał cyfrowy, a nie sygnały analogowe pochodzące z opcji takich jak czujniki temperatury LM35.

Ekran OLED/LCD

Wyświetlacz, który wybierzesz do swojego termometru, będzie miał duży wpływ na gotowy produkt. Do naszego termometru wybraliśmy 1,3-calowy monochromatyczny wyświetlacz OLED zgodny z I2C, ale możesz wybrać, co chcesz, o ile obsługuje I2C.

Dodatkowe małe części

  • Rezystor 4,7 K (kiloom)
  • Przewód w izolacji silikonowej/PVC od 28 do 22 AWG
  • Płytka stykowa (opcjonalnie dla tych, którzy nie chcą lutować)

Okablowanie termometru DIY

Okablowanie dla tego projektu jest znacznie prostsze, niż możesz sobie wyobrazić. Korzystając z powyższego schematu obwodu, możesz stworzyć swój własny termometr cyfrowy DIY przy niewielkim wysiłku, ale podzieliliśmy również poniższy schemat, aby był łatwiejszy do naśladowania.

Okablowanie sondy temperatury DS18B20

Prawidłowe okablowanie sondy temperatury DS18B20 ma kluczowe znaczenie dla tego projektu i musisz upewnić się, że używasz rezystora 4,7 K, o którym wspomnieliśmy wcześniej, w przeciwnym razie sonda nie będzie działać poprawnie. Sonda jest dostarczana z trzema przewodami: uziemieniem (zwykle czarnym), VCC (zwykle czerwonym) i danymi.

  • VCC łączy się z pinem 5 V w Arduino
  • Uziemienie łączy się z pinem GND w Arduino
  • Dane mogą łączyć się z dowolnym cyfrowym pinem na twoim Arduino (wybraliśmy cyfrowy pin 15)
  • Przewody Data i VCC również muszą być połączone ze sobą za pomocą rezystora 4,7 K

Okablowanie wyświetlacza OLED I2C

Ponieważ używamy połączenia I2C między naszym wyświetlaczem OLED a naszym Arduino, musimy podłączyć tylko cztery przewody, zanim zaczniemy korzystać z naszego wyświetlacza: VCC, Ground, SDA i SCL. Prawie każde nowoczesne Arduino ma wbudowane piny SDA i SCL, co zapewnia możliwość podłączenia do 128 unikalnych komponentów I2C do jednej płytki.

Nasz Arduino Pro Micro ma SDA na cyfrowym pinie 2 i SCL na cyfrowym pinie 3, ale przed rozpoczęciem może być konieczne poszukanie schematu pinów konkretnej wybranej płyty.

  • VCC łączy się z pinem 5 V w Arduino
  • Uziemienie łączy się z pinem GND w Arduino
  • SDA łączy się z pinem SDA w Arduino
  • SCL łączy się z pinem SCL w Arduino

Testowanie obwodu

Bardzo ważne jest przetestowanie wykonanego obwodu przed rozpoczęciem pisania ostatecznego kodu, ale możesz użyć przykładowych projektów, które pochodzą z bibliotek omówionych poniżej, aby przetestować posiadany obwód zrobiony.

Kodowanie czujnika temperatury i wyświetlacza OLED

Kodowanie cyfrowego termometru DIY jest trudniejsze niż okablowanie go, ale można do tego użyć Arduino IDE, aby było to łatwiejsze.

Wybór odpowiednich bibliotek

  • Biblioteka wyświetlaczy OLED: Do naszego wyświetlania używamy biblioteki Adafruit_SH1106.h, ponieważ jest to biblioteka, z którą została zaprojektowana do pracy. Inne wyświetlacze OLED mogą korzystać z własnych bibliotek, takich jak biblioteka Adafruit_SSD1306.h, i zwykle możesz dowiedzieć się, której potrzebujesz ze strony produktu, z której masz swój wyświetlacz.
  • Sonda temperatury DS18B20: Potrzebujemy dwóch bibliotek dla naszej sondy temperatury. DallasTemperature.h służy do gromadzenia danych o temperaturze, a OneWire.h do umożliwienia połączenia jednoprzewodowego.

Po zainstalowaniu tych bibliotek i uwzględnieniu ich w projekcie Twój kod powinien wyglądać podobnie do poniższego fragmentu kodu. Zwróć uwagę, że dołączyliśmy również kod do ustawiania pinów dla naszych komponentów.

#zawierać  //Wyświetl bibliotekę
#zawierać
#zawierać //Biblioteka sond temp.
#define OLED_RESET -1
Wyświetlacz Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Styk przewodu danych sondy temperatury
OneWire oneWire (ONE_WIRE_BUS); //Powiedz OneWire, którego pinu używamy
DallasCzujniki temperatury(&oneWire); //Odniesienie OneWire do temperatury w Dallas

Budowanie funkcji

  • pusta konfiguracja: Używamy standardu organizować coś funkcja inicjalizacji zarówno naszego wyświetlacza, jak i naszej sondy temperatury.
  • pusta pętla: Nasz standard pętla funkcja będzie używana tylko do wywołania naszego Wyświetlacz funkcjonować.
  • nieważny wyświetlacz: Dodaliśmy Wyświetlacz funkcja, która wywołuje nasz Temp funkcja i dostarcza informacje do naszego wyświetlacza.
  • int Temp: Nasz Temp funkcja służy do uzyskania odczytu temperatury dla naszego Wyświetlacz funkcjonować.

Po zakończeniu powinno to wyglądać jak poniższy fragment.

pusta konfiguracja () {
}
pusta pętla () {
}
nieważne wyświetlanie () {
}
int Temp() {
}

Kodowanie wyświetlacza OLED

Zanim będziemy mogli dodać kod do naszego Wyświetlacz funkcji, musimy upewnić się, że panel OLED jest zainicjowany w naszym pusta konfiguracja funkcjonować. Najpierw używamy display.begin polecenie, aby uruchomić wyświetlacz, po którym następuje a display.clearWyświetlacz polecenie, aby upewnić się, że wyświetlacz jest wyraźny.

pusta konfiguracja () {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Zmień w oparciu o twoją bibliotekę wyświetlania
display.clearDisplay();
}

Stąd możemy dodać kod do naszego Wyświetlacz funkcjonować. To zaczyna się od innego display.clearWyświetlacz polecenie, przed zadeklarowaniem nowej zmiennej całkowitej z wartością, która wywołuje Temp funkcja (omówimy to później). Możemy wtedy użyć tej zmiennej do wyświetlenia temperatury na wyświetlaczu za pomocą poniższego kodu.

nieważne wyświetlanie () {
display.clearDisplay();
int intTemp = Temp(); //Wywołuje naszą funkcję Temp
display.setTextSize (3); //Ustawia nasz rozmiar tekstu
display.setTextColor (BIAŁY); //Ustawia kolor naszego tekstu
display.setCursor (5, 5); //Ustawia naszą pozycję tekstu na wyświetlaczu
display.print (intTemp); //Wydrukowuje wartość dostarczoną przez funkcję Temp
display.drawCircle (44, 7, 3, BIAŁY); // Rysuje symbol stopnia
display.setCursor (50, 5);
display.print("C"); //Dodaje C, aby wskazać, że nasza temperatura jest w stopniach Celsjusza
}

Kodowanie sondy temperatury DS18B20

Podobnie jak nasz wyświetlacz, nasza sonda temperatury również potrzebuje kodu konfiguracyjnego, aby zainicjować komponent.

pusta konfiguracja () {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensory.początek();
}

Następnie czas na zaprogramowanie samej sondy i musimy dodać kod do naszego Temp funkcjonować. Najpierw zażądamy temperatury z naszej sondy, a następnie zapiszemy wynik jako zmienną zmiennoprzecinkową i przekonwertujemy go na liczbę całkowitą. Jeśli ten proces się powiedzie, temperatura zostanie przywrócona do Wyświetlacz funkcjonować.

int Temp() {
sensory.żądanieTemperatury(); // Wyślij polecenie, aby uzyskać temperatury
float tempC = sensors.getTempCByIndex (0); //To żąda temperatury w stopniach Celsjusza i przypisuje ją do pływaka
int intTemp = (int) tempC; //To konwertuje liczbę zmiennoprzecinkową na liczbę całkowitą
if (tempC != DEVICE_DISCONNECTED_C) //Sprawdź, czy nasz odczyt zadziałał
{
return intTemp; //Przywróć naszą wartość temperatury do funkcji wyświetlania
}
}

Kończąc

Na koniec musimy tylko powiedzieć nasze główne pętla funkcja do wywołania naszego Wyświetlacz funkcji z każdym cyklem kodu, pozostawiając nam projekt, który wygląda tak.

#zawierać  //Wyświetl bibliotekę
#zawierać
#zawierać //Biblioteka sond temp.
#define OLED_RESET -1
Wyświetlacz Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Styk przewodu danych sondy temperatury
OneWire oneWire (ONE_WIRE_BUS); //Powiedz OneWire, którego pinu używamy
DallasCzujniki temperatury(&oneWire); //Odniesienie OneWire do temperatury w Dallas
pusta konfiguracja () {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensory.początek();
}
pusta pętla () {
Wyświetlacz(); //Wywołuje naszą funkcję wyświetlania
}
nieważne wyświetlanie () {
display.clearDisplay();
int intTemp = Temp(); //Wywołuje naszą funkcję Temp
display.setTextSize (3); //Ustawia nasz rozmiar tekstu
display.setTextColor (BIAŁY); //Ustawia kolor naszego tekstu
display.setCursor (5, 5); //Ustawia naszą pozycję tekstu na wyświetlaczu
display.print (intTemp); //Wydrukowuje wartość dostarczoną przez funkcję Temp
display.drawCircle (44, 7, 3, BIAŁY); // Rysuje symbol stopnia
display.setCursor (50, 5);
display.print("C"); //Dodaje C, aby wskazać, że nasza temperatura jest w stopniach Celsjusza
}
int Temp() {
sensory.żądanieTemperatury(); // Wyślij polecenie, aby uzyskać temperatury
float tempC = sensors.getTempCByIndex (0); //To żąda temperatury w stopniach Celsjusza i przypisuje ją do pływaka
int intTemp = (int) tempC; //To konwertuje liczbę zmiennoprzecinkową na liczbę całkowitą
if (tempC != DEVICE_DISCONNECTED_C) //Sprawdź, czy nasz odczyt zadziałał
{
return intTemp; //Przywróć naszą wartość temperatury do funkcji wyświetlania
}
}

Budowanie cyfrowego termometru DIY

Ten projekt powinien być zabawny i pouczający, a jednocześnie dawać szansę na zrobienie praktycznego przedmiotu. Zaprojektowaliśmy ten kod tak, aby był jak najprostszy, ale możesz go używać jako podstawy do bardziej skomplikowanego projektu, gdy się uczysz.

15 wspaniałych projektów Arduino dla początkujących

Interesują Cię projekty Arduino, ale nie wiesz, od czego zacząć? Te projekty dla początkujących nauczą Cię, jak zacząć.

Czytaj dalej

DzielićĆwierkaćE-mail
Powiązane tematy
  • majsterkowanie
  • Arduino
  • Elektronika
O autorze
Samuel L. Garbett (35 opublikowanych artykułów)

Samuel jest pisarzem technologicznym z Wielkiej Brytanii z pasją do wszystkiego, co DIY. Rozpoczynając działalność w dziedzinie tworzenia stron internetowych i druku 3D, a także pracując przez wiele lat jako pisarz, Samuel oferuje wyjątkowy wgląd w świat technologii. Koncentrując się głównie na projektach DIY technologicznych, uwielbia dzielić się zabawnymi i ekscytującymi pomysłami, które możesz wypróbować w domu. Poza pracą Samuela można zwykle spotkać na rowerze, grając w gry komputerowe lub desperacko próbując komunikować się ze swoim krabem.

Więcej od Samuela L. Garbett

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować