Att bygga din DIY Arduino-termometer är ett roligt och praktiskt sätt att utöka dina mixtrandekunskaper, men var ska du börja? Följ med oss när vi fördjupar oss i kabeldragningen och kodningen som används för att förvandla en Arduino, en DS18B20 temperatursond, och en OLED-skärm till en exakt digital termometer som kan fungera bra i rum, akvarier och till och med utomhus.
Vad behöver du för att göra en DIY Arduino digital termometer?
Alla dessa komponenter kan hittas på webbplatser som eBay och Amazon.
En Arduino-bräda
Du kan använda nästan vilken Arduino som helst med en 5V-utgång för detta projekt. Vi använder en Arduino Pro Micro så att vår färdiga termometer är kompakt, men du kan använda ett större kort som en Arduino Uno om du vill undvika lödning för detta projekt.
DS18B20 temperatursond
DS18B20 temperatursensorer kan hittas som små fristående sensorer, PCB med sensorer monterade eller som vattentäta sonder på långa ledningar. Vi valde det senare, eftersom det gör att vi kan använda vår termometer i ett akvarium, men du kan välja vilken variant som helst av temperatursensorn DS18B20. Till skillnad från andra typer av temperatursensorer ger DS18B20s en direkt-till-digital signal till din Arduino, snarare än de analoga signalerna som kommer från alternativ som LM35 temperatursensorer.
En OLED/LCD-skärm
Displayen du väljer för din termometer kommer att ha stor inverkan på den färdiga produkten. Vi valde en 1,3-tums I2C-kompatibel monokrom vit OLED-skärm för vår termometer, men du kan välja vad du vill så länge den stöder I2C.
Ytterligare smådelar
- 4,7K (kiloohm) motstånd
- 28 till 22 AWG silikon/PVC isolerad tråd
- En brödbräda (valfritt för de som inte vill löda)
Anslut din DIY-termometer
Ledningarna för detta projekt är mycket enklare än du kan föreställa dig. Med hjälp av kretsschemat ovan kan du skapa din egen DIY digital termometer med liten ansträngning, men vi har också brutit upp diagrammet nedan för att göra det lättare att följa.
Anslut DS18B20-temperatursonden
Att koppla din DS18B20-temperatursond korrekt är avgörande för detta projekt, och du måste se till att du använder 4,7K-motståndet som vi nämnde tidigare, annars kommer din sond inte att fungera korrekt. Sonden kommer med tre ledningar: Jord (vanligtvis svart), VCC (vanligtvis röd) och Data.
- VCC ansluts till ett 5V-stift på din Arduino
- Jord ansluts till ett GND-stift på din Arduino
- Data kan anslutas till vilken digital pin som helst på din Arduino (vi valde digital pin 15)
- Data- och VCC-kablarna måste också anslutas till varandra med ett 4,7K-motstånd
Anslut I2C OLED-skärmen
Eftersom vi använder en I2C-anslutning mellan vår OLED-skärm och vår Arduino behöver vi bara ansluta fyra ledningar innan vi kan börja använda vår skärm: VCC, Ground, SDA och SCL. Nästan alla moderna Arduino har SDA- och SCL-stift inbyggda, vilket ger möjlighet att ansluta upp till 128 unika I2C-komponenter till ett enda kort.
Vår Arduino Pro Micro har SDA på digital pin 2 och SCL på digital pin 3, men du kan behöva leta efter ett pinout-diagram för det specifika kortet du har valt innan du börjar.
- VCC ansluts till ett 5V-stift på din Arduino
- Jord ansluts till ett GND-stift på din Arduino
- SDA ansluts till SDA-stiftet på din Arduino
- SCL ansluts till SCL-stiftet på din Arduino
Testar din krets
Det är avgörande att du testar kretsen du har gjort innan du börjar skriva den slutliga koden för den, men du kan använda exempelprojekten som följer med biblioteken som diskuteras nedan för att testa kretsen du har gjord.
Koda din temperatursensor och OLED-skärm
Det är svårare att koda din DIY digital termometer än att koppla upp den, men Arduino IDE kan användas för detta för att göra det enklare.
Att välja rätt bibliotek
- OLED-skärmbibliotek: Vi använder Adafruit_SH1106.h-biblioteket för vår skärm, eftersom detta är biblioteket som det designades för att fungera med. Andra OLED-skärmar kan använda sina egna bibliotek, som Adafruit_SSD1306.h-biblioteket, och du kan vanligtvis ta reda på vilket du behöver från produktsidan du fick din skärm från.
- DS18B20 temperatursond: Vi behöver två bibliotek för vår temperatursond. DallasTemperature.h används för att samla in temperaturdata och OneWire.h för att göra vår enkeltrådsanslutning möjlig.
När dessa bibliotek har installerats och inkluderats i ditt projekt bör din kod se ut ungefär som utdraget nedan. Observera att vi även har inkluderat kod för att ställa in stiften för våra komponenter.
#omfatta //Visa bibliotek
#omfatta
#omfatta //Temporisk sondbibliotek
#define OLED_RESET -1
Adafruit_SH1106 display (OLED_RESET);
#define ONE_WIRE_BUS 15 //Tap för datatråd för temperatursond
OneWire oneWire (ONE_WIRE_BUS); //Berätta för OneWire vilken pin vi använder
DallasTemperatursensorer(&oneWire); //OneWire referens till Dallas Temperature
Bygga funktioner
- ogiltig installation: Vi använder standarden uppstart funktion för att initiera både vår display och vår temperatursond.
- tom slinga: Vår standard slinga funktionen kommer endast att användas för att anropa vår Visa fungera.
- tom display: Vi har lagt till en Visa funktion som anropar vår Temp funktion och ger information till vår display.
- int Temp: Vårt Temp funktionen används för att få en temperaturavläsning för vår Visa fungera.
När det är klart bör detta se ut som utdraget nedan.
void setup() {
}
void loop() {
}
void Display() {
}
int Temp() {
}
Kodar OLED-skärmen
Innan vi kan lägga till kod till vår Visa funktion måste vi se till att OLED-panelen är initierad i vår ogiltig installation fungera. Först använder vi en display.begin kommando för att få igång displayen, följt av en display.clearDisplay kommandot för att se till att skärmen är ren.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Ändra baserat på ditt visningsbibliotek
display.clearDisplay();
}
Härifrån kan vi lägga till kod till vår Visa fungera. Detta börjar med en annan display.clearDisplay kommando, innan du deklarerar en ny heltalsvariabel med ett värde som anropar Temp funktion (vi kommer att ta upp detta senare). Vi kan sedan använda denna variabel för att visa temperaturen på displayen med hjälp av följande kod.
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Anropar vår Temp-funktion
display.setTextSize (3); //Ställer in vår textstorlek
display.setTextColor (VIT); //Ställer in vår textfärg
display.setCursor (5, 5); //Ställer in vår textposition på displayen
display.print (intTemp); //Skriver ut värdet som tillhandahålls av Temp-funktionen
display.drawCircle (44, 7, 3, WHITE); //Recknar en gradsymbol
display.setCursor (50, 5);
display.print("C"); //Lägger till C för att indikera att vår temperatur är i Celsius
}
Kodar DS18B20-temperatursonden
Liksom vår display behöver vår temperatursond också inställningskod för att initiera komponenten.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensors.begin();
}
Därefter är det dags att programmera själva sonden, och vi måste lägga till kod till vår Temp fungera. Först kommer vi att begära temperaturen från vår sond, följt av att registrera resultatet som en flytvariabel och omvandla den till ett heltal. Om denna process lyckas, återgår temperaturen till Visa fungera.
int Temp() {
sensors.requestTemperatures(); // Skicka kommandot för att få temperaturer
float tempC = sensors.getTempCbyIndex (0); //Detta begär tempen i Celsius och tilldelar den till en float
int intTemp = (int) tempC; //Detta konverterar float till ett heltal
if (tempC != DEVICE_DISCONNECTED_C) //Kontrollera om vår läsning fungerade
{
returnera intTemp; //Återställ vårt temperaturvärde till Display-funktionen
}
}
Avslutar
Till sist behöver vi bara berätta för vår huvudsakliga slinga funktion för att ringa vår Visa funktion med varje cykel av koden, vilket ger oss ett projekt som ser ut så här.
#omfatta //Visa bibliotek
#omfatta
#omfatta //Temporisk sondbibliotek
#define OLED_RESET -1
Adafruit_SH1106 display (OLED_RESET);
#define ONE_WIRE_BUS 15 //Tap för datatråd för temperatursond
OneWire oneWire (ONE_WIRE_BUS); //Berätta för OneWire vilken pin vi använder
DallasTemperatursensorer(&oneWire); //OneWire referens till Dallas Temperature
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensors.begin();
}
void loop() {
Visa(); //Anropar vår displayfunktion
}
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Anropar vår Temp-funktion
display.setTextSize (3); //Ställer in vår textstorlek
display.setTextColor (VIT); //Ställer in vår textfärg
display.setCursor (5, 5); //Ställer in vår textposition på displayen
display.print (intTemp); //Skriver ut värdet som tillhandahålls av Temp-funktionen
display.drawCircle (44, 7, 3, WHITE); //Recknar en gradsymbol
display.setCursor (50, 5);
display.print("C"); //Lägger till C för att indikera att vår temperatur är i Celsius
}
int Temp() {
sensors.requestTemperatures(); // Skicka kommandot för att få temperaturer
float tempC = sensors.getTempCbyIndex (0); //Detta begär tempen i Celsius och tilldelar den till en float
int intTemp = (int) tempC; //Detta konverterar float till ett heltal
if (tempC != DEVICE_DISCONNECTED_C) //Kontrollera om vår läsning fungerade
{
returnera intTemp; //Återställ vårt temperaturvärde till Display-funktionen
}
}
Bygga en DIY digital termometer
Det här projektet ska vara roligt och informativt, samtidigt som det ger dig chansen att göra ett praktiskt föremål. Vi har designat den här koden för att vara så enkel som möjligt, men du kan använda den som grunden för ett mer komplicerat projekt när du lär dig.
Intresserad av Arduino-projekt men inte säker på var du ska börja? Dessa nybörjarprojekt lär dig hur du kommer igång.
Läs Nästa
- DIY
- Arduino
- Elektronik

Samuel är en brittisk baserad teknikskribent med en passion för allt som är DIY. Efter att ha startat företag inom områdena webbutveckling och 3D-printing, tillsammans med att arbeta som författare i många år, erbjuder Samuel en unik inblick i teknikens värld. Han fokuserar främst på DIY-tekniska projekt, han älskar inget mer än att dela roliga och spännande idéer som du kan prova hemma. Utanför jobbet kan man vanligtvis hitta Samuel när han cyklar, spelar datorspel eller försöker desperat kommunicera med sin krabba.
Prenumerera på vårt nyhetsbrev
Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!
Klicka här för att prenumerera