DIY Arduino termomeetri ehitamine on lõbus ja praktiline viis oma nokitsemisoskuste laiendamiseks, kuid kust peaksite alustama? Liituge meiega, kui uurime juhtmestikku ja kodeerimist, mis läheb Arduino, DS18B20 temperatuurianduri keeramiseks, ja OLED-ekraan täpseks digitaalseks termomeetriks, mis töötab hästi ruumides, paakides ja isegi õues.
Mida on vaja DIY Arduino digitaalse termomeetri tegemiseks?
Kõiki neid komponente võib leida sellistelt veebisaitidelt nagu eBay ja Amazon.
Arduino tahvel
Selle projekti jaoks saate kasutada peaaegu iga 5 V väljundiga Arduinot. Kasutame Arduino Pro Micro, et meie valmis termomeeter oleks kompaktne, kuid kui soovite selle projekti jaoks jootmist vältida, võite kasutada suuremat tahvlit, näiteks Arduino Uno.
DS18B20 temperatuuriandur
DS18B20 temperatuuriandureid võib leida väikeste eraldiseisvate anduritena, trükkplaatidena koos anduritega või veekindlate anduritena pikkadel juhtmetel. Valisime viimase, kuna see võimaldab meil kasutada termomeetrit akvaariumis, kuid temperatuurianduri DS18B20 jaoks saate valida mis tahes variandi. Erinevalt teist tüüpi temperatuurianduritest pakuvad DS18B20-d teie Arduinole otsest digitaalset signaali, mitte analoogsignaale, mis pärinevad sellistest valikutest nagu LM35 temperatuuriandurid.
OLED/LCD ekraan
Termomeetri jaoks valitud kuval on lõpptootele suur mõju. Valisime oma termomeetri jaoks 1,3-tollise I2C-ühilduva ühevärvilise valge OLED-ekraani, kuid saate valida, mis teile meeldib, kui see toetab I2C-d.
Täiendavad väikesed osad
- 4,7K (kiloohm) takisti
- 28 kuni 22 AWG silikoon/PVC isolatsiooniga traat
- Leivalaud (valikuline neile, kes ei soovi jootmist)
DIY termomeetri juhtmestik
Selle projekti juhtmestik on palju lihtsam, kui võite ette kujutada. Kasutades ülaltoodud vooluringi, saate vähese vaevaga luua oma DIY digitaalse termomeetri, kuid oleme ka alloleva diagrammi tükeldanud, et seda oleks lihtsam jälgida.
Temperatuurianduri DS18B20 juhtmestik
Temperatuurianduri DS18B20 õige juhtmestik on selle projekti jaoks ülioluline ja peate veenduma, et kasutate varem mainitud 4,7K takistit või teie sond ei tööta korralikult. Sondiga on kaasas kolm juhet: maandus (tavaliselt must), VCC (tavaliselt punane) ja andmed.
- VCC ühendub teie Arduino 5 V pistikuga
- Maandus ühendub teie Arduino GND-pistikuga
- Andmeid saab ühendada mis tahes teie Arduino digitaalse viiguga (valisime digitaalse viigu 15)
- Andme- ja VCC-juhtmed tuleb ka omavahel ühendada 4,7K takistiga
I2C OLED-ekraani juhtmestik
Kuna kasutame oma OLED-ekraani ja Arduino vahel I2C-ühendust, peame enne ekraani kasutamist ühendama vaid neli juhet: VCC, maandus, SDA ja SCL. Peaaegu igal kaasaegsel Arduinol on sisseehitatud SDA ja SCL tihvtid, mis võimaldavad ühendada kuni 128 ainulaadset I2C komponenti ühele plaadile.
Meie Arduino Pro Micro'il on digitaalsel viiul 2 SDA ja digitaalsel viigul 3 SCL, kuid enne alustamist võib tekkida vajadus otsida valitud plaadi ühendusskeemi.
- VCC ühendub teie Arduino 5 V pistikuga
- Maandus ühendub teie Arduino GND-pistikuga
- SDA ühendub teie Arduino SDA-viiguga
- SCL ühendub teie Arduino SCL-pistikuga
Oma vooluringi testimine
On ülioluline, et testiksite loodud vooluringi enne, kui hakkate sellele lõplikku koodi kirjutama, kuid saate oma vooluringi testimiseks kasutada allpool käsitletud raamatukogudega kaasasolevaid näidisprojekte tehtud.
Teie temperatuurianduri ja OLED-ekraani kodeerimine
DIY digitaalse termomeetri kodeerimine on keerulisem kui selle ühendamine, kuid selle hõlbustamiseks saab kasutada Arduino IDE-d.
Õigete raamatukogude valimine
- OLED-ekraanide teek: Kasutame oma kuvamiseks Adafruit_SH1106.h teeki, kuna see on teeki, millega see töötati välja. Muud OLED-ekraanid võivad kasutada oma teeke, nagu Adafruit_SSD1306.h teek, ja tavaliselt saate teada, millist neist vajate, tootelehelt, kust oma kuva hankisite.
- DS18B20 temperatuuriandur: Vajame temperatuurianduri jaoks kahte raamatukogu. DallasTemperature.h'i kasutatakse temperatuuriandmete kogumiseks ja OneWire.h'i meie ühejuhtmelise ühenduse võimaldamiseks.
Kui need teegid on installitud ja teie projekti kaasatud, peaks teie kood välja nägema umbes nagu alltoodud väljalõige. Pange tähele, et oleme lisanud ka koodi meie komponentide tihvtide seadistamiseks.
#kaasa //Kuva raamatukogu
#kaasa
#kaasa //Temp probe raamatukogu
#define OLED_RESET -1
Adafruit_SH1106 ekraan (OLED_RESET);
#define ONE_WIRE_BUS 15 //Tempsondi andmejuhtme viik
OneWire oneWire (ONE_WIRE_BUS); //Öelge OneWire'ile, millist kontakti me kasutame
DallasTemperatuuriandurid (&oneWire); //OneWire'i viide Dallase temperatuurile
Funktsioonide loomine
- tühine seadistus: Kasutame standardit seadistamine funktsioon nii meie ekraani kui ka temperatuurianduri lähtestamiseks.
- tühi silmus: Meie standard silmus funktsiooni kasutatakse ainult meie helistamiseks Ekraan funktsiooni.
- tühi ekraan: Oleme lisanud a Ekraan funktsioon, mis kutsub meie Temp funktsiooni ja annab teavet meie ekraanile.
- int Temp: Meie Temp funktsiooni kasutatakse meie temperatuurinäidu saamiseks Ekraan funktsiooni.
Kui see on lõpetatud, peaks see välja nägema nagu allpool olev väljavõte.
void setup() {
}
void loop() {
}
void Display() {
}
int Temp() {
}
OLED-ekraani kodeerimine
Enne kui saame omale koodi lisada Ekraan funktsiooni, peame veenduma, et OLED-paneel on meie seadmes lähtestatud tühine seadistus funktsiooni. Esiteks kasutame a kuva.alusta kuva käivitamiseks käsk, millele järgneb a display.clearDisplay käsku, et ekraan oleks selge.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Muuda teie kuvateegi alusel
display.clearDisplay();
}
Siit saame omale koodi lisada Ekraan funktsiooni. See algab teisest display.clearDisplay enne uue täisarvulise muutuja deklareerimist väärtusega, mis kutsub esile Temp funktsiooni (me käsitleme seda hiljem). Seejärel saame seda muutujat kasutada temperatuuri kuvamiseks ekraanil, kasutades järgmist koodi.
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Kutsub meie Temp funktsiooni
display.setTextSize (3); //Määrab meie teksti suuruse
display.setTextColor (VALGE); //Määrab meie teksti värvi
display.setCursor (5, 5); //Määrab meie teksti asukoha kuval
display.print (intTemp); //Prindib välja funktsiooni Temp poolt pakutava väärtuse
display.drawCircle (44, 7, 3, VALGE); //Joonistab kraadi sümboli
display.setCursor (50, 5);
display.print("C"); //Lisab C, mis näitab, et meie temperatuur on Celsiuse kraadides
}
Temperatuurianduri DS18B20 kodeerimine
Nagu meie ekraan, vajab ka meie temperatuuriandur komponendi lähtestamiseks häälestuskoodi.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensors.begin();
}
Järgmiseks on aeg programmeerida sond ise ja me peame omale koodi lisama Temp funktsiooni. Esiteks küsime oma sondilt temperatuuri, millele järgneb tulemuse salvestamine ujuvmuutujana ja teisendamine täisarvuks. Kui see protsess õnnestub, viiakse temperatuur tagasi temperatuurini Ekraan funktsiooni.
int Temp() {
sensors.requestTemperatures(); // Saada käsk temperatuuride hankimiseks
float tempC = sensors.getTempCByIndex (0); //See küsib temperatuuri Celsiuse kraadides ja määrab selle ujukile
int intTemp = (int) tempC; //See teisendab ujuki täisarvuks
if (tempC != DEVICE_DISCONNECTED_C) //Kontrollige, kas meie lugemine töötas
{
tagasi intTemp; //Tagastab meie temperatuuri väärtuse funktsiooni Display
}
}
Lõpetamine Üles
Lõpuks peame lihtsalt ütlema oma peamise silmus funktsioon helistada meile Ekraan funktsioon iga kooditsükliga, jättes meile projekti, mis näeb välja selline.
#kaasa //Kuva raamatukogu
#kaasa
#kaasa //Temp probe raamatukogu
#define OLED_RESET -1
Adafruit_SH1106 ekraan (OLED_RESET);
#define ONE_WIRE_BUS 15 //Tempsondi andmejuhtme viik
OneWire oneWire (ONE_WIRE_BUS); //Öelge OneWire'ile, millist kontakti me kasutame
DallasTemperatuuriandurid (&oneWire); //OneWire'i viide Dallase temperatuurile
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensors.begin();
}
void loop() {
Kuva(); //Kutsub meie kuvamisfunktsiooni
}
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Kutsub meie Temp funktsiooni
display.setTextSize (3); //Määrab meie teksti suuruse
display.setTextColor (VALGE); //Määrab meie teksti värvi
display.setCursor (5, 5); //Määrab meie teksti asukoha kuval
display.print (intTemp); //Prindib välja funktsiooni Temp poolt pakutava väärtuse
display.drawCircle (44, 7, 3, VALGE); //Joonistab kraadi sümboli
display.setCursor (50, 5);
display.print("C"); //Lisab C, mis näitab, et meie temperatuur on Celsiuse kraadides
}
int Temp() {
sensors.requestTemperatures(); // Saada käsk temperatuuride hankimiseks
float tempC = sensors.getTempCByIndex (0); //See küsib temperatuuri Celsiuse kraadides ja määrab selle ujukile
int intTemp = (int) tempC; //See teisendab ujuki täisarvuks
if (tempC != DEVICE_DISCONNECTED_C) //Kontrollige, kas meie lugemine töötas
{
tagasi intTemp; //Tagastab meie temperatuuri väärtuse funktsiooni Display
}
}
DIY digitaalse termomeetri ehitamine
See projekt peaks olema lõbus ja informatiivne ning andma teile võimaluse valmistada praktiline ese. Oleme selle koodi kujundanud võimalikult lihtsaks, kuid õppimise käigus saate seda kasutada ka keerulisema projekti aluseks.
Kas olete huvitatud Arduino projektidest, kuid pole kindel, kust alustada? Need algajate projektid õpetavad teile, kuidas alustada.
Loe edasi
- DIY
- Arduino
- Elektroonika
Samuel on Ühendkuningriigis asuv tehnoloogiakirjanik, kelle kirg on kõik isetegemine. Olles alustanud ettevõtteid veebiarenduse ja 3D-printimise vallas ning töötanud aastaid kirjanikuna, pakub Samuel ainulaadset sissevaadet tehnoloogiamaailma. Keskendudes peamiselt isetegemise tehnoloogiaprojektidele, ei armasta ta muud kui lõbusate ja põnevate ideede jagamist, mida saate kodus proovida. Väljaspool tööd võib Samueli tavaliselt leida jalgrattaga sõitmas, arvutivideomänge mängimas või meeleheitlikult oma lemmiklooma krabiga suhelda.
Liituge meie uudiskirjaga
Liituge meie uudiskirjaga tehniliste näpunäidete, arvustuste, tasuta e-raamatute ja eksklusiivsete pakkumiste saamiseks!
Tellimiseks klõpsake siin