Izdelava vašega DIY termometra Arduino je zabaven in praktičen način za razširitev svojih veščin popravljanja, toda kje bi morali začeti? Pridružite se nam, ko se poglobimo v ožičenje in kodiranje, ki gre za obračanje Arduina, temperaturne sonde DS18B20, in zaslon OLED v natančen digitalni termometer, ki lahko dobro deluje v prostorih, akvarijih in celo na prostem.
Kaj potrebujete za izdelavo DIY digitalnega termometra Arduino?
Vse te komponente je mogoče najti na spletnih mestih, kot sta eBay in Amazon.
Plošča Arduino
Za ta projekt lahko uporabite skoraj kateri koli Arduino s 5V izhodom. Uporabljamo Arduino Pro Micro, tako da je naš končni termometer kompakten, vendar lahko uporabite večjo ploščo, kot je Arduino Uno, če se želite izogniti spajkanju za ta projekt.
Temperaturna sonda DS18B20
Temperaturni senzorji DS18B20 so na voljo kot majhni samostojni senzorji, PCB s priloženimi senzorji ali kot vodoodporne sonde na dolgih žicah. Izbrali smo slednjega, saj nam to omogoča uporabo termometra v rezervoarju, lahko pa izberete katero koli različico temperaturnega senzorja DS18B20. Za razliko od drugih vrst temperaturnih senzorjev, DS18B20s zagotavljajo neposreden v digitalni signal vašemu Arduinu, namesto analognih signalov, ki prihajajo iz možnosti, kot so temperaturni senzorji LM35.
OLED/LCD zaslon
Zaslon, ki ga izberete za svoj termometer, bo imel velik vpliv na končni izdelek. Za naš termometer smo izbrali 1,3-palčni monokromatski beli OLED zaslon, združljiv z I2C, vendar lahko izberete karkoli želite, če podpira I2C.
Dodatni majhni deli
- 4,7K (kiloohm) upor
- 28 do 22 AWG silikonsko/PVC izolirana žica
- Mašinska plošča (neobvezno za tiste, ki ne želijo spajkati)
Ožičenje vašega DIY termometra
Ožičenje za ta projekt je veliko preprostejše, kot si lahko predstavljate. Z zgornjim diagramom vezja lahko z malo truda ustvarite svoj digitalni termometer DIY, vendar smo tudi spodnji diagram razčlenili, da mu olajšamo sledenje.
Ožičenje temperaturne sonde DS18B20
Pravilno ožičenje temperaturne sonde DS18B20 je ključnega pomena za ta projekt, zato se morate prepričati, da uporabljate 4,7K upor, ki smo ga omenili prej, sicer vaša sonda ne bo delovala pravilno. Sonda ima tri žice: ozemljitev (običajno črna), VCC (običajno rdeča) in podatki.
- VCC se poveže na 5V pin na vašem Arduinu
- Ozemljitev se poveže z GND zatičem na vašem Arduinu
- Podatki se lahko povežejo s katerim koli digitalnim zatičem na vašem Arduinu (izbrali smo digitalni pin 15)
- Žice Data in VCC morajo biti med seboj povezane tudi z 4,7K uporom
Ožičenje I2C OLED zaslona
Ker uporabljamo I2C povezavo med našim zaslonom OLED in našim Arduinom, moramo povezati le štiri žice, preden lahko začnemo uporabljati naš zaslon: VCC, Ground, SDA in SCL. Skoraj vsak sodoben Arduino ima vgrajene zatiče SDA in SCL, ki omogočajo povezavo do 128 edinstvenih komponent I2C na eno ploščo.
Naš Arduino Pro Micro ima SDA na digitalnem pinu 2 in SCL na digitalnem pinu 3, vendar boste morda morali pred začetkom poiskati diagram zatičev za določeno ploščo, ki ste jo izbrali.
- VCC se poveže na 5V pin na vašem Arduinu
- Ozemljitev se poveže z GND zatičem na vašem Arduinu
- SDA se poveže z zatičem SDA na vašem Arduinu
- SCL se poveže z zatičem SCL na vašem Arduinu
Testiranje vašega vezja
Ključnega pomena je, da preizkusite vezje, ki ste ga izdelali, preden začnete pisati končno kodo zanj, vendar lahko uporabite primere projektov, ki so priloženi spodaj obravnavanim knjižnicam, da preizkusite vezje, ki ga imate narejeno.
Kodiranje vašega temperaturnega senzorja in OLED zaslona
Kodiranje vašega digitalnega termometra DIY je bolj zapleteno kot njegovo ožičenje, vendar je za to lažje uporabiti Arduino IDE.
Izbira pravih knjižnic
- Knjižnica zaslona OLED: Za naš zaslon uporabljamo knjižnico Adafruit_SH1106.h, saj je to knjižnica, s katero je bila zasnovana za delo. Drugi zasloni OLED lahko uporabljajo lastne knjižnice, kot je knjižnica Adafruit_SSD1306.h, in običajno lahko ugotovite, katero potrebujete, na strani izdelka, s katere ste dobili zaslon.
- Temperaturna sonda DS18B20: Za našo temperaturno sondo potrebujemo dve knjižnici. DallasTemperature.h se uporablja za zbiranje temperaturnih podatkov, OneWire.h pa za omogočanje naše enožične povezave.
Ko so te knjižnice nameščene in vključene v vaš projekt, bi morala vaša koda izgledati podobno kot spodnji delček. Upoštevajte, da smo vključili tudi kodo za nastavitev zatičev za naše komponente.
#vključi //Prikaz knjižnice
#vključi
#vključi // Knjižnica temperaturnih sond
#define OLED_RESET -1
Zaslon Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pin podatkovne žice temperaturne sonde
OneWire oneWire (ONE_WIRE_BUS); // Povej OneWireu, kateri pin uporabljamo
DallasTemperaturni senzorji (&oneWire); //OneWire sklic na temperaturo v Dallasu
Izgradnja funkcij
- postavitev praznine: Uporabljamo standard nastaviti funkcijo za inicializacijo našega zaslona in temperaturne sonde.
- praznina zanka: Naš standard zanka funkcija bo uporabljena samo za klic naše Zaslon funkcijo.
- void Display: Dodali smo a Zaslon funkcija, ki kliče našo Temp funkcijo in zagotavlja informacije na našem zaslonu.
- int Temp: Naš Temp funkcija se uporablja za odčitavanje temperature za naše Zaslon funkcijo.
Ko je končano, bi moralo izgledati kot spodnji delček.
void setup() {
}
void loop() {
}
void Display() {
}
int Temp() {
}
Kodiranje zaslona OLED
Preden lahko dodamo kodo v našo Zaslon funkcijo, moramo zagotoviti, da je plošča OLED inicializirana v našem postavitev praznine funkcijo. Najprej uporabimo a prikaz.začetek ukaz za začetek prikaza, ki mu sledi a display.clearDisplay ukaz, da se prepričate, da je zaslon čist.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Spremeni glede na vašo knjižnico prikaza
display.clearDisplay();
}
Od tu lahko dodamo kodo našemu Zaslon funkcijo. To se začne z drugim display.clearDisplay ukaz, preden razglasite novo celoštevilsko spremenljivko z vrednostjo, ki pokliče Temp funkcijo (to bomo obravnavali kasneje). Nato lahko s to spremenljivko prikažemo temperaturo na zaslonu z uporabo naslednje kode.
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Pokliče našo funkcijo Temp
display.setTextSize (3); //Nastavi velikost našega besedila
display.setTextColor (BELA); //Nastavi barvo našega besedila
display.setCursor (5, 5); //Nastavi naš položaj besedila na zaslonu
display.print (intTemp); //Natisne vrednost, ki jo zagotavlja funkcija Temp
display.drawCircle (44, 7, 3, BELA); // Nariše simbol stopnje
display.setCursor (50, 5);
display.print("C"); //Doda C, da pokaže, da je naša temperatura v Celziju
}
Kodiranje temperaturne sonde DS18B20
Tako kot naš zaslon tudi naša temperaturna sonda potrebuje kodo za nastavitev za inicializacijo komponente.
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
senzorji.begin();
}
Nato je čas za programiranje same sonde in našemu moramo dodati kodo Temp funkcijo. Najprej bomo zahtevali temperaturo od naše sonde, čemur bo sledilo snemanje rezultata kot spremenljivka float in pretvorba v celo število. Če je ta postopek uspešen, se temperatura vrne na Zaslon funkcijo.
int Temp() {
senzorji.requestTemperatures(); // Pošlji ukaz za pridobivanje temperatur
float tempC = sensors.getTempCByIndex (0); //To zahteva temperaturo v stopinjah Celzija in jo dodeli float
int intTemp = (int) tempC; //To pretvori float v celo število
if (tempC != DEVICE_DISCONNECTED_C) //Preveri, ali je naše branje delovalo
{
vrni intTemp; //Vrnemo našo temperaturno vrednost funkciji Display
}
}
Dokončanje
Na koncu moramo povedati le še naše glavno zanka funkcijo za klic naše Zaslon deluje z vsakim ciklom kode, tako da imamo projekt, ki izgleda takole.
#vključi //Prikaz knjižnice
#vključi
#vključi // Knjižnica temperaturnih sond
#define OLED_RESET -1
Zaslon Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pin podatkovne žice temperaturne sonde
OneWire oneWire (ONE_WIRE_BUS); // Povej OneWireu, kateri pin uporabljamo
DallasTemperaturni senzorji (&oneWire); //OneWire sklic na temperaturo v Dallasu
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
senzorji.begin();
}
void loop() {
Prikaz(); //Pokliče našo funkcijo prikaza
}
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Pokliče našo funkcijo Temp
display.setTextSize (3); //Nastavi velikost našega besedila
display.setTextColor (BELA); //Nastavi barvo našega besedila
display.setCursor (5, 5); //Nastavi naš položaj besedila na zaslonu
display.print (intTemp); //Natisne vrednost, ki jo zagotavlja funkcija Temp
display.drawCircle (44, 7, 3, BELA); // Nariše simbol stopnje
display.setCursor (50, 5);
display.print("C"); //Doda C, da pokaže, da je naša temperatura v Celziju
}
int Temp() {
senzorji.requestTemperatures(); // Pošlji ukaz za pridobivanje temperatur
float tempC = sensors.getTempCByIndex (0); //To zahteva temperaturo v stopinjah Celzija in jo dodeli float
int intTemp = (int) tempC; //To pretvori float v celo število
if (tempC != DEVICE_DISCONNECTED_C) //Preveri, ali je naše branje delovalo
{
vrni intTemp; //Vrnemo našo temperaturno vrednost funkciji Display
}
}
Izdelava digitalnega termometra DIY
Ta projekt mora biti zabaven in informativen, hkrati pa vam dati priložnost, da naredite praktičen predmet. To kodo smo zasnovali tako, da je čim bolj preprosta, vendar jo lahko uporabite kot osnovo za bolj zapleten projekt, ko se naučite.
Vas zanimajo projekti Arduino, vendar niste prepričani, kje začeti? Ti projekti za začetnike vas bodo naučili, kako začeti.
Preberite Naprej
- DIY
- Arduino
- Elektronika
Samuel je pisatelj o tehnologiji s sedežem v Združenem kraljestvu s strastjo za vse stvari, ki jih naredim sam. Z ustanovitvijo podjetij na področju spletnega razvoja in 3D tiskanja ter dolgoletnega pisanja, Samuel ponuja edinstven vpogled v svet tehnologije. Osredotoča se predvsem na tehnološke projekte DIY in ne ljubi nič drugega kot deljenje zabavnih in vznemirljivih idej, ki jih lahko preizkusite doma. Zunaj službe je Samuela običajno mogoče najti, da kolesari, igra računalniške videoigre ali obupno poskuša komunicirati s svojim hišnim rakom.
Naročite se na naše novice
Pridružite se našemu glasilu za tehnične nasvete, ocene, brezplačne e-knjige in ekskluzivne ponudbe!
Kliknite tukaj, da se naročite