Het bouwen van je DIY Arduino-thermometer is een leuke en praktische manier om je knutselvaardigheden uit te breiden, maar waar moet je beginnen? Ga met ons mee terwijl we ons verdiepen in de bedrading en codering die nodig is om een ​​Arduino, een DS18B20-temperatuursonde, te veranderen, en een OLED-display in een nauwkeurige digitale thermometer die goed kan werken in kamers, aquaria en zelfs buitenshuis.

Wat heb je nodig om een ​​DIY Arduino digitale thermometer te maken?

Al deze componenten zijn te vinden op websites zoals eBay en Amazon.

Een Arduino-bord

U kunt voor dit project vrijwel elke Arduino met een 5V-uitgang gebruiken. We gebruiken een Arduino Pro Micro zodat onze voltooide thermometer compact is, maar je kunt een groter bord gebruiken zoals een Arduino Uno als je solderen voor dit project wilt vermijden.

DS18B20 Temperatuursonde

DS18B20-temperatuursensoren zijn te vinden als kleine stand-alone sensoren, PCB's met sensoren eraan, of als waterdichte sondes op lange draden. We kozen voor het laatste, omdat dit ons in staat stelt om onze thermometer in een aquarium te gebruiken, maar je kunt elke variant van de DS18B20-temperatuursensor kiezen. In tegenstelling tot andere soorten temperatuursensoren, leveren de DS18B20's een direct-naar-digitaal signaal naar je Arduino, in plaats van de analoge signalen die afkomstig zijn van opties zoals LM35-temperatuursensoren.

instagram viewer

Een OLED/LCD-scherm

Het display dat u kiest voor uw thermometer heeft een grote impact op het eindproduct. We hebben een 1,3-inch I2C-compatibel monochroom wit OLED-scherm gekozen voor onze thermometer, maar je kunt kiezen wat je wilt, zolang het maar I2C ondersteunt.

Extra kleine onderdelen

  • 4,7K (kilohm) weerstand
  • 28 tot 22 AWG siliconen/PVC geïsoleerde draad
  • Een breadboard (optioneel voor degenen die niet willen solderen)

Uw doe-het-zelf-thermometer bedraden

De bedrading voor dit project is veel eenvoudiger dan je zou denken. Met behulp van het bovenstaande schakelschema kunt u met weinig moeite uw eigen digitale thermometer maken, maar we hebben het onderstaande diagram ook opgesplitst om het gemakkelijker te volgen te maken.

Bedrading van de DS18B20 temperatuursonde

Het correct bedraden van uw DS18B20-temperatuursonde is van vitaal belang voor dit project en u moet ervoor zorgen dat u de eerder genoemde 4,7K-weerstand gebruikt, anders zal uw sonde niet goed werken. De sonde wordt geleverd met drie draden: aarde (meestal zwart), VCC (meestal rood) en gegevens.

  • VCC maakt verbinding met een 5V-pin op uw Arduino
  • Ground maakt verbinding met een GND-pin op uw Arduino
  • Gegevens kunnen verbinding maken met elke digitale pin op je Arduino (we hebben digitale pin 15 gekozen)
  • De data- en VCC-draden moeten ook op elkaar worden aangesloten met een weerstand van 4,7 K

Bedrading van het I2C OLED-scherm

Omdat we een I2C-verbinding gebruiken tussen ons OLED-display en onze Arduino, hoeven we slechts vier draden aan te sluiten voordat we ons display kunnen gaan gebruiken: VCC, Ground, SDA en SCL. Zowat elke moderne Arduino heeft ingebouwde SDA- en SCL-pinnen, die de mogelijkheid bieden om tot 128 unieke I2C-componenten op een enkel bord aan te sluiten.

Onze Arduino Pro Micro heeft SDA op digitale pin 2 en SCL op digitale pin 3, maar het kan zijn dat je moet zoeken naar een pinout-diagram van het specifieke bord dat je hebt gekozen voordat je begint.

  • VCC maakt verbinding met een 5V-pin op uw Arduino
  • Ground maakt verbinding met een GND-pin op uw Arduino
  • SDA maakt verbinding met de SDA-pin op uw Arduino
  • SCL maakt verbinding met de SCL-pin op uw Arduino

Uw circuit testen

Het is van cruciaal belang dat je het circuit dat je hebt gemaakt test voordat je de definitieve code ervoor gaat schrijven, maar je kunt de voorbeeldprojecten gebruiken die bij de hieronder besproken bibliotheken worden geleverd om het circuit dat je hebt te testen gemaakt.

Uw temperatuursensor en OLED-display coderen

Het coderen van uw doe-het-zelf digitale thermometer is lastiger dan het bedraden, maar de Arduino IDE kan hiervoor worden gebruikt om het gemakkelijker te maken.

De juiste bibliotheken kiezen

  • OLED-weergavebibliotheek: We gebruiken de Adafruit_SH1106.h-bibliotheek voor onze weergave, omdat dit de bibliotheek is waarmee deze is ontworpen. Andere OLED-schermen kunnen hun eigen bibliotheken gebruiken, zoals de Adafruit_SSD1306.h bibliotheek, en je kunt meestal zien welke je nodig hebt op de productpagina waar je je beeldscherm vandaan hebt.
  • DS18B20 Temperatuursonde: We hebben twee bibliotheken nodig voor onze temperatuursonde. DallasTemperature.h wordt gebruikt om temperatuurgegevens te verzamelen en OneWire.h om onze enkeldraads verbinding mogelijk te maken.

Zodra deze bibliotheken zijn geïnstalleerd en in uw project zijn opgenomen, zou uw code er ongeveer zo uit moeten zien als het onderstaande fragment. Merk op dat we ook code hebben toegevoegd om de pinnen voor onze componenten in te stellen.

#erbij betrekken  //Bibliotheek weergeven
#erbij betrekken
#erbij betrekken //Temp probe-bibliotheek
#define OLED_RESET -1
Adafruit_SH1106-display (OLED_RESET);
#define ONE_WIRE_BUS 15 //Temp sonde data draad pin
OneWire oneWire (ONE_WIRE_BUS); //Vertel OneWire welke pin we gebruiken
DallasTemperatuursensoren (&oneWire); //OneWire-verwijzing naar Dallas Temperature

De functies bouwen

  • ongeldige setup: We gebruiken de standaard opstelling functie om zowel ons display als onze temperatuursonde te initialiseren.
  • lege lus: Onze standaard lus functie wordt alleen gebruikt om onze. aan te roepen Weergave functie.
  • ongeldige weergave: We hebben een. toegevoegd Weergave functie die onze. aanroept Temp functie en geeft informatie aan ons display.
  • int Temp: Ons Temp functie wordt gebruikt om een ​​temperatuurmeting te krijgen voor onze Weergave functie.

Eenmaal voltooid, zou dit eruit moeten zien als het onderstaande fragment.

ongeldige setup() {
}
lege lus() {
}
ongeldige weergave() {
}
int Temp() {
}

Het OLED-scherm coderen

Voordat we code kunnen toevoegen aan onze Weergave functie, moeten we ervoor zorgen dat het OLED-paneel is geïnitialiseerd in onze ongeldige setup functie. Eerst gebruiken we a toon.begin commando om het display te starten, gevolgd door a display.clearDisplay commando om ervoor te zorgen dat het scherm duidelijk is.

ongeldige setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Wijzigen op basis van uw weergavebibliotheek
display.clearDisplay();
}

Vanaf hier kunnen we code toevoegen aan onze Weergave functie. Dit begint met een ander display.clearDisplay commando, voordat een nieuwe integer-variabele wordt gedeclareerd met een waarde die de. aanroept Temp functie (we komen hier later op terug). We kunnen deze variabele dan gebruiken om de temperatuur op het display weer te geven met behulp van de volgende code.

ongeldige weergave() {
display.clearDisplay();
int intTemp = Temp(); // Roept onze Temp-functie aan
display.setTextSize (3); // Stelt onze tekstgrootte in
display.setTextColor (WIT); // Stelt onze tekstkleur in
display.setCursor (5, 5); // Stelt onze tekstpositie op het display in
display.print (intTemp); // Drukt de waarde af die wordt geleverd door de Temp-functie
display.drawCircle (44, 7, 3, WIT); // Tekent een gradensymbool
display.setCursor (50, 5);
display.print("C"); //Voegt C toe om aan te geven dat onze temperatuur in Celsius is
}

De DS18B20-temperatuursonde coderen

Net als ons display heeft onze temperatuursonde ook een setup-code nodig om het onderdeel te initialiseren.

ongeldige setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensoren.begin();
}

Vervolgens is het tijd om de sonde zelf te programmeren, en we moeten code toevoegen aan onze Temp functie. Eerst zullen we de temperatuur van onze sonde opvragen, gevolgd door het resultaat als een vlottervariabele op te nemen en om te zetten in een geheel getal. Als dit proces succesvol is, wordt de temperatuur teruggebracht naar de Weergave functie.

int Temp() {
sensoren.requestTemperatures(); // Stuur het commando om temperaturen te krijgen
float tempC = sensoren.getTempCByIndex (0); // Dit vraagt ​​de temperatuur in Celsius op en wijst deze toe aan een float
int intTemp = (int) tempC; //Dit converteert de float naar een geheel getal
if (tempC != DEVICE_DISCONNECTED_C) //Controleer of onze lezing werkte
{
retourneer intTemp; // Breng onze temperatuurwaarde terug naar de weergavefunctie
}
}

Afronden

Ten slotte hoeven we alleen onze belangrijkste te vertellen lus functie om onze. te bellen Weergave functie met elke cyclus van de code, waardoor we een project hebben dat er zo uitziet.

#erbij betrekken  //Bibliotheek weergeven
#erbij betrekken
#erbij betrekken //Temp probe-bibliotheek
#define OLED_RESET -1
Adafruit_SH1106-display (OLED_RESET);
#define ONE_WIRE_BUS 15 //Temp sonde data draad pin
OneWire oneWire (ONE_WIRE_BUS); //Vertel OneWire welke pin we gebruiken
DallasTemperatuursensoren (&oneWire); //OneWire-verwijzing naar Dallas Temperature
ongeldige setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensoren.begin();
}
lege lus() {
Weergave(); // Roept onze weergavefunctie op
}
ongeldige weergave() {
display.clearDisplay();
int intTemp = Temp(); // Roept onze Temp-functie aan
display.setTextSize (3); // Stelt onze tekstgrootte in
display.setTextColor (WIT); // Stelt onze tekstkleur in
display.setCursor (5, 5); // Stelt onze tekstpositie op het display in
display.print (intTemp); // Drukt de waarde af die wordt geleverd door de Temp-functie
display.drawCircle (44, 7, 3, WIT); // Tekent een gradensymbool
display.setCursor (50, 5);
display.print("C"); //Voegt C toe om aan te geven dat onze temperatuur in Celsius is
}
int Temp() {
sensoren.requestTemperatures(); // Stuur het commando om temperaturen te krijgen
float tempC = sensoren.getTempCByIndex (0); // Dit vraagt ​​de temperatuur in Celsius op en wijst deze toe aan een float
int intTemp = (int) tempC; //Dit converteert de float naar een geheel getal
if (tempC != DEVICE_DISCONNECTED_C) //Controleer of onze lezing werkte
{
retourneer intTemp; // Breng onze temperatuurwaarde terug naar de weergavefunctie
}
}

Een doe-het-zelf digitale thermometer bouwen

Dit project moet leuk en informatief zijn, terwijl je ook de kans krijgt om een ​​praktisch item te maken. We hebben deze code zo eenvoudig mogelijk ontworpen, maar je kunt hem tijdens het leren gebruiken als basis voor een ingewikkelder project.

15 geweldige Arduino-projecten voor beginners

Geïnteresseerd in Arduino-projecten, maar niet zeker waar te beginnen? Deze beginnersprojecten leren je hoe je aan de slag kunt gaan.

Lees volgende

DelenTweetenE-mail
Gerelateerde onderwerpen
  • doe-het-zelf
  • Arduino
  • Elektronica
Over de auteur
Samuël L. Garbett (35 artikelen gepubliceerd)

Samuel is een in het Verenigd Koninkrijk gevestigde technologieschrijver met een passie voor alles wat met doe-het-zelf te maken heeft. Met het starten van bedrijven op het gebied van webontwikkeling en 3D-printen, en vele jaren als schrijver werken, biedt Samuel een uniek inzicht in de wereld van technologie. Hij richt zich voornamelijk op doe-het-zelf-technische projecten en doet niets liever dan leuke en opwindende ideeën delen die je thuis kunt uitproberen. Buiten het werk is Samuel meestal te vinden op fietsen, pc-videogames spelen of wanhopig proberen te communiceren met zijn krab.

Meer van Samuel L. Garbett

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren