At bygge dit gør-det-selv Arduino-termometer er en sjov og praktisk måde at udvide dine fiflefærdigheder på, men hvor skal du starte? Slut dig til os, mens vi dykker ned i ledningerne og kodningen, der skal bruges til at forvandle en Arduino, en DS18B20 temperatursonde, og en OLED-skærm til et præcist digitalt termometer, der kan fungere godt i rum, akvarier og endda udendørs.

Hvad skal du bruge for at lave et DIY Arduino digitalt termometer?

Alle disse komponenter kan findes på websteder som eBay og Amazon.

Et Arduino-bræt

Du kan bruge næsten enhver Arduino med en 5V-udgang til dette projekt. Vi bruger en Arduino Pro Micro, så vores færdige termometer er kompakt, men du kan bruge et større bræt som en Arduino Uno, hvis du gerne vil undgå lodning til dette projekt.

DS18B20 temperatursonde

DS18B20 temperatursensorer kan findes som små selvstændige sensorer, PCB'er med sensorer påsat, eller som vandtætte sonder på lange ledninger. Vi valgte det sidste, da det gør os i stand til at bruge vores termometer inde i et akvarium, men du kan vælge enhver variant af DS18B20 temperatursensoren. I modsætning til andre typer temperatursensorer giver DS18B20s et direkte-til-digitalt signal til din Arduino i stedet for de analoge signaler, der kommer fra muligheder som LM35 temperatursensorer.

instagram viewer

En OLED/LCD-skærm

Det display, du vælger til dit termometer, vil have stor indflydelse på det færdige produkt. Vi valgte en 1,3-tommer I2C-kompatibel monokrom hvid OLED-skærm til vores termometer, men du kan vælge, hvad du vil, så længe det understøtter I2C.

Yderligere små dele

  • 4,7K (kiloohm) modstand
  • 28 til 22 AWG silikone/PVC isoleret ledning
  • Et brødbræt (valgfrit for dem, der ikke ønsker at lodde)

Tilslutning af dit gør-det-selv-termometer

Ledningerne til dette projekt er langt enklere, end du måske forestiller dig. Ved at bruge kredsløbsdiagrammet ovenfor kan du lave dit eget DIY digitalt termometer med en lille indsats, men vi har også opdelt diagrammet nedenfor for at gøre det nemmere at følge.

Tilslutning af DS18B20 temperatursonde

Korrekt ledning af din DS18B20 temperatursonde er afgørende for dette projekt, og du skal sikre dig, at du bruger den 4,7K modstand, vi nævnte tidligere, ellers vil din sonde ikke fungere korrekt. Sonden kommer med tre ledninger: Jord (normalt sort), VCC (normalt rød) og Data.

  • VCC forbindes til en 5V pin på din Arduino
  • Jord forbindes til en GND-pin på din Arduino
  • Data kan oprette forbindelse til enhver digital pin på din Arduino (vi valgte digital pin 15)
  • Data- og VCC-ledningerne skal også forbindes med hinanden med en 4,7K modstand

Tilslutning af I2C OLED-skærm

Da vi bruger en I2C-forbindelse mellem vores OLED-skærm og vores Arduino, skal vi kun forbinde fire ledninger, før vi kan begynde at bruge vores skærm: VCC, Ground, SDA og SCL. Næsten alle moderne Arduino har SDA- og SCL-ben indbygget, hvilket giver mulighed for at forbinde op til 128 unikke I2C-komponenter til et enkelt kort.

Vores Arduino Pro Micro har SDA på digital pin 2 og SCL på digital pin 3, men du skal muligvis kigge efter et pinout diagram over det specifikke board, du har valgt, før du starter.

  • VCC forbindes til en 5V pin på din Arduino
  • Jord forbindes til en GND-pin på din Arduino
  • SDA forbindes til SDA-stiften på din Arduino
  • SCL forbindes til SCL-stiften på din Arduino

Test af dit kredsløb

Det er afgørende, at du tester det kredsløb, du har lavet, før du begynder at skrive den endelige kode til det, men du kan bruge de eksempelprojekter, der følger med bibliotekerne beskrevet nedenfor, til at teste det kredsløb, du har lavet.

Kodning af din temperatursensor og OLED-skærm

Det er sværere at kode dit DIY-termometer end at tilslutte det, men Arduino IDE kan bruges til dette for at gøre det nemmere.

Valg af de rigtige biblioteker

  • OLED-skærmbibliotek: Vi bruger Adafruit_SH1106.h-biblioteket til vores skærm, da dette er det bibliotek, det er designet til at arbejde med. Andre OLED-skærme kan bruge deres egne biblioteker, som Adafruit_SSD1306.h-biblioteket, og du kan normalt finde ud af, hvilket du har brug for, fra den produktside, du fik din skærm fra.
  • DS18B20 temperatursonde: Vi har brug for to biblioteker til vores temperatursonde. DallasTemperature.h bruges til at indsamle temperaturdata, og OneWire.h til at gøre vores single-wire forbindelse mulig.

Når disse biblioteker er blevet installeret og inkluderet i dit projekt, skal din kode ligne uddraget nedenfor. Bemærk, at vi også har inkluderet kode til at indstille stifterne til vores komponenter.

#omfatte  //Vis bibliotek
#omfatte
#omfatte //Tempoprobebibliotek
#define OLED_RESET -1
Adafruit_SH1106 skærm (OLED_RESET);
#define ONE_WIRE_BUS 15 //Tempo-probe data wire pin
OneWire oneWire (ONE_WIRE_BUS); //Fortæl OneWire, hvilken pin vi bruger
DallasTemperatursensorer(&oneWire); //OneWire reference til Dallas Temperature

Opbygning af funktioner

  • ugyldig opsætning: Vi bruger standarden Opsætning funktion til at initialisere både vores display og vores temperatursonde.
  • ugyldig løkke: Vores standard sløjfe funktion vil kun blive brugt til at kalde vores Skærm fungere.
  • ugyldig visning: Vi har tilføjet en Skærm funktion, der kalder vores Midlertidig funktion og giver information til vores display.
  • int Temp: Vores Midlertidig funktion bruges til at få en temperaturaflæsning for vores Skærm fungere.

Når det er færdigt, skulle dette se ud som uddraget nedenfor.

void setup() {
}
void loop() {
}
void Display() {
}
int Temp() {
}

Kodning af OLED-skærmen

Før vi kan tilføje kode til vores Skærm funktion, skal vi sørge for, at OLED-panelet er initialiseret i vores ugyldig opsætning fungere. Først bruger vi en display.begin kommando for at starte visningen, efterfulgt af en display.clearDisplay kommando for at sikre, at displayet er klart.

void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Skift baseret på dit skærmbibliotek
display.clearDisplay();
}

Herfra kan vi tilføje kode til vores Skærm fungere. Dette starter med en anden display.clearDisplay kommando, før du erklærer en ny heltalsvariabel med en værdi, der kalder Midlertidig funktion (vi vil dække dette senere). Vi er så i stand til at bruge denne variabel til at vise temperaturen på displayet ved hjælp af følgende kode.

void Display() {
display.clearDisplay();
int intTemp = Temp(); //Kalder vores Temp-funktion
display.setTextSize (3); //Indstiller vores tekststørrelse
display.setTextColor (HVID); //Indstiller vores tekstfarve
display.setCursor (5, 5); //Indstiller vores tekstposition på displayet
display.print (intTemp); //Udskriver værdien leveret af Temp-funktionen
display.drawCircle (44, 7, 3, HVID); //Tegner et gradsymbol
display.setCursor (50, 5);
display.print("C"); //Tilføjer C for at angive, at vores temperatur er i Celsius
}

Kodning af DS18B20 temperatursonde

Ligesom vores display har vores temperatursonde også brug for opsætningskode for at initialisere komponenten.

void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensors.begin();
}

Dernæst er det tid til at programmere selve sonden, og vi skal tilføje kode til vores Midlertidig fungere. Først vil vi anmode om temperaturen fra vores sonde, efterfulgt af at registrere resultatet som en flydende variabel og konvertere den til et heltal. Hvis denne proces lykkes, returneres temperaturen til Skærm fungere.

int Temp() {
sensors.requestTemperatures(); // Send kommandoen for at få temperaturer
float tempC = sensors.getTempCbyIndex (0); //Dette anmoder om temperaturen i Celsius og tildeler den til en flyder
int intTemp = (int) tempC; //Dette konverterer float til et heltal
if (tempC != DEVICE_DISCONNECTED_C) //Tjek om vores læsning virkede
{
returnere intTemp; //Tilbagefør vores temperaturværdi til Display-funktionen
}
}

Afslutter

Til sidst skal vi bare fortælle vores vigtigste sløjfe funktion til at kalde vores Skærm funktion med hver cyklus af koden, hvilket efterlader os med et projekt, der ser sådan ud.

#omfatte  //Vis bibliotek
#omfatte
#omfatte //Tempoprobebibliotek
#define OLED_RESET -1
Adafruit_SH1106 skærm (OLED_RESET);
#define ONE_WIRE_BUS 15 //Tempo-probe data wire pin
OneWire oneWire (ONE_WIRE_BUS); //Fortæl OneWire, hvilken pin vi bruger
DallasTemperatursensorer(&oneWire); //OneWire reference til Dallas Temperature
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensors.begin();
}
void loop() {
Skærm(); //Kalder vores displayfunktion
}
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Kalder vores Temp-funktion
display.setTextSize (3); //Indstiller vores tekststørrelse
display.setTextColor (HVID); //Indstiller vores tekstfarve
display.setCursor (5, 5); //Indstiller vores tekstposition på displayet
display.print (intTemp); //Udskriver værdien leveret af Temp-funktionen
display.drawCircle (44, 7, 3, HVID); //Tegner et gradsymbol
display.setCursor (50, 5);
display.print("C"); //Tilføjer C for at angive, at vores temperatur er i Celsius
}
int Temp() {
sensors.requestTemperatures(); // Send kommandoen for at få temperaturer
float tempC = sensors.getTempCbyIndex (0); //Dette anmoder om temperaturen i Celsius og tildeler den til en flyder
int intTemp = (int) tempC; //Dette konverterer float til et heltal
if (tempC != DEVICE_DISCONNECTED_C) //Tjek om vores læsning virkede
{
returnere intTemp; //Tilbagefør vores temperaturværdi til Display-funktionen
}
}

Opbygning af et DIY digitalt termometer

Dette projekt skal være sjovt og informativt, samtidig med at det giver dig chancen for at lave en praktisk genstand. Vi har designet denne kode til at være så enkel som muligt, men du kan bruge den som grundlag for et mere kompliceret projekt, efterhånden som du lærer.

15 fantastiske Arduino-projekter for begyndere

Interesseret i Arduino-projekter, men ikke sikker på, hvor du skal begynde? Disse begynderprojekter vil lære dig, hvordan du kommer i gang.

Læs Næste

DelTweetE-mail
Relaterede emner
  • gør det selv
  • Arduino
  • Elektronik
Om forfatteren
Samuel L. Garbett (35 artikler udgivet)

Samuel er en britisk-baseret teknologiskribent med en passion for alt, hvad der gør-det-selv. Efter at have startet virksomheder inden for webudvikling og 3D-print, sammen med arbejdet som forfatter i mange år, tilbyder Samuel et unikt indblik i teknologiens verden. Han fokuserer hovedsageligt på DIY tech-projekter og elsker intet mere end at dele sjove og spændende ideer, som du kan prøve derhjemme. Uden for arbejdet kan Samuel normalt findes cyklende, spille pc-videospil eller desperat forsøge at kommunikere med sin kæledyrskrabbe.

Mere fra Samuel L. Garbett

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!

Klik her for at abonnere