„Pasidaryk pats“ Arduino termometro kūrimas yra įdomus ir praktiškas būdas išplėsti savo meistriškumo įgūdžius, bet nuo ko pradėti? Prisijunkite prie mūsų, kai gilinamės į laidus ir kodavimą, kuris naudojamas sukant Arduino, DS18B20 temperatūros zondą, ir OLED ekraną į tikslų skaitmeninį termometrą, kuris gali gerai veikti kambariuose, žuvų rezervuaruose ir net lauke.

Ko reikia norint pasidaryti „pasidaryk pats“ „Arduino“ skaitmeninį termometrą?

Visus šiuos komponentus galima rasti tokiose svetainėse kaip „eBay“ ir „Amazon“.

Arduino lenta

Šiam projektui galite naudoti beveik bet kurį „Arduino“ su 5 V išėjimu. Naudojame Arduino Pro Micro, kad mūsų gatavas termometras būtų kompaktiškas, tačiau galite naudoti didesnę plokštę, pvz., Arduino Uno, jei nenorite lituoti šio projekto.

DS18B20 temperatūros zondas

DS18B20 temperatūros jutiklius galima rasti kaip mažus atskirus jutiklius, PCB su prijungtais jutikliais arba kaip vandeniui atsparius zondus ant ilgų laidų. Pasirinkome pastarąjį, nes taip galime naudoti termometrą rezervuare, tačiau galite pasirinkti bet kurį DS18B20 temperatūros jutiklio variantą. Skirtingai nuo kitų tipų temperatūros jutiklių, DS18B20s teikia tiesioginį skaitmeninį signalą į jūsų Arduino, o ne analoginius signalus, gaunamus iš tokių parinkčių kaip LM35 temperatūros jutikliai.

instagram viewer

OLED/LCD ekranas

Ekranas, kurį pasirinksite termometrui, turės didelę įtaką galutiniam produktui. Savo termometrui pasirinkome su I2C suderinamą 1,3 colio nespalvotą baltą OLED ekraną, bet galite pasirinkti bet ką, jei jis palaiko I2C.

Papildomos smulkios dalys

  • 4,7K (kiloohm) rezistorius
  • 28–22 AWG silikono/PVC izoliuotas laidas
  • duonos lenta (neprivaloma tiems, kurie nenori lituoti)

„Pasidaryk pats“ termometro prijungimas

Šio projekto laidai yra daug paprastesni, nei galite įsivaizduoti. Naudodami aukščiau pateiktą grandinės schemą, be pastangų galite susikurti savo skaitmeninį termometrą „pasidaryk pats“, bet mes taip pat išskaidėme toliau pateiktą diagramą, kad būtų lengviau ją sekti.

Temperatūros zondo DS18B20 laidai

Šiam projektui labai svarbu tinkamai prijungti DS18B20 temperatūros zondą, todėl turite įsitikinti, kad naudojate anksčiau paminėtą 4,7K rezistorių, kitaip jūsų zondas neveiks tinkamai. Zonde yra trys laidai: įžeminimas (dažniausiai juodas), VCC (dažniausiai raudonas) ir duomenys.

  • VCC jungiasi prie 5 V kaiščio jūsų „Arduino“.
  • Įžeminimas jungiasi prie jūsų Arduino GND kaiščio
  • Duomenys gali būti prijungti prie bet kurio jūsų Arduino skaitmeninio kaiščio (mes pasirinkome 15 skaitmeninį kaištį)
  • Duomenų ir VCC laidai taip pat turi būti sujungti vienas su kitu naudojant 4,7K rezistorių

I2C OLED ekrano prijungimas

Kadangi mes naudojame I2C ryšį tarp OLED ekrano ir Arduino, turime prijungti tik keturis laidus, kad galėtume pradėti naudoti savo ekraną: VCC, Ground, SDA ir SCL. Beveik kiekviename šiuolaikiniame „Arduino“ yra įmontuoti SDA ir SCL kaiščiai, suteikiantys galimybę prie vienos plokštės prijungti iki 128 unikalių I2C komponentų.

Mūsų „Arduino Pro Micro“ turi SDA ant 2 skaitmeninio kaiščio, o SCL – prie 3 skaitmeninio kaiščio, tačiau prieš pradedant gali tekti ieškoti konkrečios plokštės, kurią pasirinkote, įvedimo diagramos.

  • VCC jungiasi prie 5 V kaiščio jūsų „Arduino“.
  • Įžeminimas jungiasi prie jūsų Arduino GND kaiščio
  • SDA jungiasi prie jūsų Arduino SDA kaiščio
  • SCL prisijungia prie jūsų Arduino SCL kaiščio

Jūsų grandinės išbandymas

Prieš pradėdami rašyti galutinį kodą, labai svarbu išbandyti sukurtą grandinę, tačiau Galite naudoti pavyzdinius projektus, pateiktus kartu su toliau aptartomis bibliotekomis, norėdami išbandyti savo grandinę pagamintas.

Temperatūros jutiklio ir OLED ekrano kodavimas

Koduoti „pasidaryk pats“ skaitmeninį termometrą yra sudėtingiau nei prijungti, tačiau tam galima naudoti „Arduino IDE“, kad būtų lengviau.

Tinkamų bibliotekų pasirinkimas

  • OLED ekrano biblioteka: Rodymui naudojame biblioteką Adafruit_SH1106.h, nes tai yra biblioteka, su kuria ji buvo sukurta. Kiti OLED ekranai gali naudoti savo bibliotekas, pvz., Adafruit_SSD1306.h biblioteką, o kurios jums reikia, paprastai galite sužinoti produkto puslapyje, iš kurio gavote ekraną.
  • DS18B20 temperatūros zondas: Mums reikia dviejų bibliotekų mūsų temperatūros zondui. DallasTemperature.h naudojama temperatūros duomenims rinkti, o „OneWire.h“, kad būtų galima prisijungti prie vieno laido.

Kai šios bibliotekos bus įdiegtos ir įtrauktos į jūsų projektą, jūsų kodas turėtų atrodyti panašiai kaip toliau pateiktas fragmentas. Atminkite, kad mes taip pat įtraukėme kodą, skirtą mūsų komponentų kaiščiams nustatyti.

#įtraukti  //Rodyti biblioteką
#įtraukti
#įtraukti //Temp probe biblioteka
#define OLED_RESET -1
Adafruit_SH1106 ekranas (OLED_RESET);
#define ONE_WIRE_BUS 15 //Temperatūros zondo duomenų laido kaištis
OneWire oneWire (ONE_WIRE_BUS); //Pasakykite „OneWire“, kurį kaištį naudojame
Dalaso temperatūros jutikliai (&oneWire); //OneWire nuoroda į Dalaso temperatūrą

Funkcijų kūrimas

  • tuščia sąranka: Mes naudojame standartą sąranka funkcija inicijuoti ir ekraną, ir temperatūros zondą.
  • tuščia kilpa: Mūsų standartas kilpa funkcija bus naudojama tik skambinant mūsų Ekranas funkcija.
  • tuščias ekranas: Pridėjome a Ekranas funkcija, kuri iškviečia mūsų Temp funkcija ir pateikia informaciją mūsų ekranui.
  • int Temp: Mūsų Temp funkcija naudojama norint gauti mūsų temperatūros rodmenis Ekranas funkcija.

Kai baigsite, tai turėtų atrodyti taip, kaip toliau pateiktas fragmentas.

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

OLED ekrano kodavimas

Prieš pridėdami kodą prie mūsų Ekranas funkciją, turime įsitikinti, kad OLED skydelis yra inicijuotas mūsų tuščia sąranka funkcija. Pirmiausia naudojame a rodyti.pradėti komandą, kad būtų paleistas ekranas, o po to a display.clearDisplay komandą, kad įsitikintumėte, jog ekranas yra aiškus.

void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Keisti pagal savo rodymo biblioteką
display.clearDisplay();
}

Iš čia galime pridėti kodą prie mūsų Ekranas funkcija. Tai prasideda nuo kito display.clearDisplay komandą, prieš paskelbdami naują sveikąjį kintamąjį su reikšme, kuri iškviečia Temp funkcija (tai aptarsime vėliau). Tada galime naudoti šį kintamąjį, norėdami parodyti temperatūrą ekrane, naudodami šį kodą.

void Display() {
display.clearDisplay();
int intTemp = Temp(); //Iššaukia mūsų Temp funkciją
display.setTextSize (3); //Nustato mūsų teksto dydį
display.setTextColor (BALTAS); //Nustato mūsų teksto spalvą
display.setCursor (5, 5); //Nustato mūsų teksto padėtį ekrane
display.print (intTemp); //Spausdina reikšmę, kurią teikia Temp funkcija
display.drawCircle (44, 7, 3, BALTAS); //Piešia laipsnio simbolį
display.setCursor (50, 5);
display.print("C"); //Prideda C, kad parodytų, jog mūsų temperatūra yra Celsijaus laipsniais
}

DS18B20 temperatūros zondo kodavimas

Kaip ir mūsų ekrane, mūsų temperatūros zondui taip pat reikia sąrankos kodo, kad būtų galima inicijuoti komponentą.

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

Tada laikas užprogramuoti patį zondą, ir mes turime pridėti kodą prie mūsų Temp funkcija. Pirmiausia paprašysime zondo temperatūros, tada įrašysime rezultatą kaip kintamąjį ir konvertuosime jį į sveikąjį skaičių. Jei šis procesas sėkmingas, temperatūra grąžinama į Ekranas funkcija.

int Temp() {
sensors.requestTemperatures(); // Išsiųskite komandą, kad gautumėte temperatūrą
float tempC = sensors.getTempCByIndex (0); //Tai reikalauja temperatūros Celsijaus laipsniais ir priskiria ją plūduriui
int intTemp = (int) tempC; //Tai paverčia plūdę į sveikąjį skaičių
if (tempC != DEVICE_DISCONNECTED_C) //Patikrinkite, ar mūsų skaitymas veikė
{
grąžinti intTemp; //Grąžinkite mūsų temperatūros reikšmę į ekrano funkciją
}
}

Pabaiga

Galiausiai, mes tiesiog turime pasakyti savo pagrindinį kilpa funkcija paskambinti mūsų Ekranas funkcija su kiekvienu kodo ciklu, paliekant mums projektą, kuris atrodo taip.

#įtraukti  //Rodyti biblioteką
#įtraukti
#įtraukti //Temp probe biblioteka
#define OLED_RESET -1
Adafruit_SH1106 ekranas (OLED_RESET);
#define ONE_WIRE_BUS 15 //Temperatūros zondo duomenų laido kaištis
OneWire oneWire (ONE_WIRE_BUS); //Pasakykite „OneWire“, kurį kaištį naudojame
Dalaso temperatūros jutikliai (&oneWire); //OneWire nuoroda į Dalaso temperatūrą
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensoriai.begin();
}
void loop() {
Rodyti (); //Iššaukia mūsų rodymo funkciją
}
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Iššaukia mūsų Temp funkciją
display.setTextSize (3); //Nustato mūsų teksto dydį
display.setTextColor (BALTAS); //Nustato mūsų teksto spalvą
display.setCursor (5, 5); //Nustato mūsų teksto padėtį ekrane
display.print (intTemp); //Spausdina reikšmę, kurią teikia Temp funkcija
display.drawCircle (44, 7, 3, BALTAS); //Piešia laipsnio simbolį
display.setCursor (50, 5);
display.print("C"); //Prideda C, kad parodytų, jog mūsų temperatūra yra Celsijaus laipsniais
}
int Temp() {
sensors.requestTemperatures(); // Išsiųskite komandą, kad gautumėte temperatūrą
float tempC = sensors.getTempCByIndex (0); //Tai reikalauja temperatūros Celsijaus laipsniais ir priskiria ją plūduriui
int intTemp = (int) tempC; //Tai paverčia plūdę į sveikąjį skaičių
if (tempC != DEVICE_DISCONNECTED_C) //Patikrinkite, ar mūsų skaitymas veikė
{
grąžinti intTemp; //Grąžinkite mūsų temperatūros reikšmę į ekrano funkciją
}
}

„Pasidaryk pats“ skaitmeninio termometro kūrimas

Šis projektas turėtų būti įdomus ir informatyvus, taip pat suteikti galimybę pasigaminti praktinį daiktą. Šį kodą sukūrėme taip, kad jis būtų kuo paprastesnis, tačiau mokydamiesi galite jį naudoti kaip sudėtingesnio projekto pagrindą.

15 puikių Arduino projektų pradedantiesiems

Domina Arduino projektai, bet nežinote, nuo ko pradėti? Šie pradedančiųjų projektai išmokys jus pradėti.

Skaitykite toliau

DalintisTviteryjeEl. paštas
Susijusios temos
  • DIY
  • Arduino
  • Elektronika
Apie autorių
Samuelis L. Garbettas (Paskelbta 35 straipsniai)

Samuelis yra JK gyvenantis technologijų rašytojas, aistringas viskam, ką daryti „pasidaryk pats“. Pradėjęs verslą interneto svetainių kūrimo ir 3D spausdinimo srityse bei ilgus metus dirbęs rašytoju, Samuelis siūlo unikalų įžvalgą į technologijų pasaulį. Daugiausia dėmesio skiriantis „pasidaryk pats“ technologijų projektams, jam patinka tik dalytis smagiomis ir įdomiomis idėjomis, kurias galite išbandyti namuose. Ne darbo metu Samuelis dažniausiai važiuoja dviračiu, žaidžia kompiuterinius vaizdo žaidimus arba desperatiškai bando bendrauti su savo augintiniu krabu.

Daugiau iš Samuel L. Garbettas

Prenumeruokite mūsų naujienlaiškį

Prisijunkite prie mūsų naujienlaiškio, kad gautumėte techninių patarimų, apžvalgų, nemokamų el. knygų ir išskirtinių pasiūlymų!

Norėdami užsiprenumeruoti, spustelėkite čia