Construirea termometrului dvs. DIY Arduino este o modalitate distractivă și practică de a vă extinde abilitățile de lucru, dar de unde ar trebui să începeți? Alăturați-vă nouă în timp ce ne aprofundăm în cablarea și codificarea care implică transformarea unui Arduino, a unei sonde de temperatură DS18B20, și un afișaj OLED într-un termometru digital precis care poate funcționa bine în camere, acvarii și chiar în aer liber.

De ce aveți nevoie pentru a face un termometru digital Arduino DIY?

Toate aceste componente pot fi găsite pe site-uri web precum eBay și Amazon.

O placă Arduino

Puteți utiliza aproape orice Arduino cu o ieșire de 5V pentru acest proiect. Folosim un Arduino Pro Micro, astfel încât termometrul nostru finit să fie compact, dar puteți folosi o placă mai mare, cum ar fi un Arduino Uno, dacă doriți să evitați lipirea pentru acest proiect.

Sondă de temperatură DS18B20

Senzorii de temperatură DS18B20 pot fi găsiți ca senzori autonomi mici, PCB-uri cu senzori atașați sau ca sonde impermeabile pe fire lungi. Am ales-o pe cea din urmă, deoarece aceasta ne permite să folosim termometrul în interiorul unui rezervor de pește, dar puteți alege orice variantă a senzorului de temperatură DS18B20. Spre deosebire de alte tipuri de senzori de temperatură, DS18B20 oferă un semnal direct către digital către Arduino, mai degrabă decât semnalele analogice care provin de la opțiuni precum senzorii de temperatură LM35.

instagram viewer

Un ecran OLED/LCD

Afișajul pe care îl alegeți pentru termometrul dvs. va avea un impact mare asupra produsului finit. Am ales pentru termometrul nostru un ecran OLED alb monocrom compatibil cu I2C de 1,3 inchi, dar puteți alege orice doriți, atâta timp cât acceptă I2C.

Piese mici suplimentare

  • Rezistor de 4,7K (kiloohmi).
  • Sârmă izolată din silicon/PVC de 28 până la 22 AWG
  • O placă (opțional pentru cei care nu doresc să lipize)

Conectarea termometrului DIY

Cablajul pentru acest proiect este mult mai simplu decât vă puteți imagina. Folosind schema de circuit de mai sus, vă puteți crea propriul termometru digital DIY cu puțin efort, dar am detaliat și diagrama de mai jos pentru a o face mai ușor de urmărit.

Cablajul sondei de temperatură DS18B20

Conectarea corectă a sondei de temperatură DS18B20 este vitală pentru acest proiect și trebuie să vă asigurați că utilizați rezistența de 4,7K pe care am menționat-o mai devreme sau sonda dvs. nu va funcționa corect. Sonda vine cu trei fire: masă (de obicei neagră), VCC (de obicei roșu) și date.

  • VCC se conectează la un pin de 5V de pe Arduino
  • Masa se conectează la un pin GND de pe Arduino
  • Datele se pot conecta la orice pin digital de pe Arduino (am ales pinul digital 15)
  • Firele de date și VCC trebuie, de asemenea, conectate între ele cu un rezistor de 4,7K

Conectarea afișajului OLED I2C

Deoarece folosim o conexiune I2C între afișajul nostru OLED și Arduino, trebuie să conectăm doar patru fire înainte de a începe să folosim afișajul nostru: VCC, Ground, SDA și SCL. Aproape fiecare Arduino modern are pini SDA și SCL încorporați, oferind posibilitatea de a conecta până la 128 de componente I2C unice la o singură placă.

Arduino Pro Micro are SDA pe pinul digital 2 și SCL pe pinul digital 3, dar poate fi necesar să căutați o diagramă de pinout a plăcii specifice pe care ați ales-o înainte de a începe.

  • VCC se conectează la un pin de 5V de pe Arduino
  • Masa se conectează la un pin GND de pe Arduino
  • SDA se conectează la pinul SDA de pe Arduino
  • SCL se conectează la pinul SCL de pe Arduino

Testarea circuitului dvs

Este esențial să testați circuitul pe care l-ați realizat înainte de a începe să scrieți codul final pentru acesta, dar puteți folosi exemplele de proiecte care vin cu bibliotecile discutate mai jos pentru a testa circuitul pe care îl aveți făcut.

Codarea senzorului de temperatură și a afișajului OLED

Codarea termometrului digital DIY este mai dificilă decât conectarea acestuia, dar Arduino IDE poate fi folosit pentru a face acest lucru mai ușor.

Alegerea bibliotecilor corecte

  • Biblioteca de afișare OLED: Folosim biblioteca Adafruit_SH1106.h pentru afișarea noastră, deoarece aceasta este biblioteca cu care a fost proiectată să funcționeze. Alte afișaje OLED pot folosi propriile biblioteci, cum ar fi biblioteca Adafruit_SSD1306.h și, de obicei, puteți afla care dintre ele aveți nevoie de pe pagina produsului de pe care ați primit afișajul.
  • Sondă de temperatură DS18B20: Avem nevoie de două biblioteci pentru sonda noastră de temperatură. DallasTemperature.h este folosit pentru a colecta date de temperatură, iar OneWire.h pentru a face posibilă conexiunea noastră cu un singur fir.

Odată ce aceste biblioteci au fost instalate și incluse în proiectul dvs., codul dvs. ar trebui să arate ceva ca fragmentul de mai jos. Rețineți că am inclus și cod pentru a seta pinii componentelor noastre.

#include  //Afișează biblioteca
#include
#include //Biblioteca sondelor de temperatură
#define OLED_RESET -1
display Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pinul firului de date al sondei de temperatură
OneWire oneWire (ONE_WIRE_BUS); //Spune-i OneWire ce pin folosim
DallasSenzori de temperatură(&oneWire); //OneWire referință la temperatura din Dallas

Construirea Funcțiilor

  • anulează configurarea: Folosim standardul înființat funcția pentru a inițializa atât afișajul, cât și sonda noastră de temperatură.
  • buclă goală: Standardul nostru buclă funcția va fi folosită doar pentru a apela la nostru Afişa funcţie.
  • void Display: Am adăugat un Afişa funcția care numește nostru Temp funcţionează şi oferă informaţii pe afişajul nostru.
  • int Temp: Al nostru Temp funcția este utilizată pentru a obține o citire a temperaturii pentru nostru Afişa funcţie.

Odată finalizat, acesta ar trebui să arate ca fragmentul de mai jos.

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

Codarea afișajului OLED

Înainte de a putea adăuga codul nostru Afişa funcție, trebuie să ne asigurăm că panoul OLED este inițializat în sistemul nostru anulează configurarea funcţie. În primul rând, folosim a afișare.începe comanda pentru a porni afișajul, urmată de a display.clearDisplay comanda pentru a vă asigura că afișajul este clar.

void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Modificare în funcție de biblioteca dvs. de afișare
display.clearDisplay();
}

De aici, putem adăuga codul nostru Afişa funcţie. Aceasta începe cu alta display.clearDisplay comandă, înainte de a declara o nouă variabilă întreagă cu o valoare care apelează Temp funcția (vom trata aceasta mai târziu). Apoi putem folosi această variabilă pentru a afișa temperatura pe afișaj folosind următorul cod.

void Display() {
display.clearDisplay();
int intTemp = Temp(); //Apelează funcția noastră Temp
display.setTextSize (3); //Setează dimensiunea textului nostru
display.setTextColor (ALB); //Setează culoarea textului nostru
display.setCursor (5, 5); //Setează poziția textului nostru pe afișaj
display.print (intTemp); //Tipărește valoarea furnizată de funcția Temp
display.drawCircle (44, 7, 3, ALB); //Desenează un simbol de grad
display.setCursor (50, 5);
display.print("C"); //Adaugă C pentru a indica faptul că temperatura noastră este în Celsius
}

Codarea sondei de temperatură DS18B20

La fel ca afișajul nostru, sonda noastră de temperatură are nevoie de cod de configurare pentru a inițializa componenta.

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

Apoi, este timpul să programăm sonda în sine și trebuie să adăugăm codul nostru Temp funcţie. În primul rând, vom solicita temperatura de la sonda noastră, urmată de înregistrarea rezultatului ca variabilă flotantă și convertirea acestuia într-un număr întreg. Dacă acest proces are succes, temperatura este revenită la Afişa funcţie.

int Temp() {
senzori.requestTemperatures(); // Trimite comanda pentru a obține temperaturi
float tempC = senzori.getTempCByIndex (0); //Acest lucru solicită temperatura în Celsius și o atribuie unui float
int intTemp = (int) tempC; //Acest lucru transformă float într-un număr întreg
if (tempC != DEVICE_DISCONNECTED_C) //Verificați dacă citirea noastră a funcționat
{
return intTemp; //Readuceți valoarea temperaturii noastre la funcția de afișare
}
}

Terminand

În cele din urmă, trebuie doar să spunem principalul nostru buclă funcția de a apela nostru Afişa funcţionează cu fiecare ciclu al codului, lăsându-ne cu un proiect care arată astfel.

#include  //Afișează biblioteca
#include
#include //Biblioteca sondelor de temperatură
#define OLED_RESET -1
display Adafruit_SH1106 (OLED_RESET);
#define ONE_WIRE_BUS 15 //Pinul firului de date al sondei de temperatură
OneWire oneWire (ONE_WIRE_BUS); //Spune-i OneWire ce pin folosim
DallasSenzori de temperatură(&oneWire); //OneWire referință la temperatura din Dallas
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
senzori.begin();
}
void loop() {
Afişa(); //Apelează funcția noastră de afișare
}
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Apelează funcția noastră Temp
display.setTextSize (3); //Setează dimensiunea textului nostru
display.setTextColor (ALB); //Setează culoarea textului nostru
display.setCursor (5, 5); //Setează poziția textului nostru pe afișaj
display.print (intTemp); //Tipărește valoarea furnizată de funcția Temp
display.drawCircle (44, 7, 3, ALB); //Desenează un simbol de grad
display.setCursor (50, 5);
display.print("C"); //Adaugă C pentru a indica faptul că temperatura noastră este în Celsius
}
int Temp() {
senzori.requestTemperatures(); // Trimite comanda pentru a obține temperaturi
float tempC = senzori.getTempCByIndex (0); //Acest lucru solicită temperatura în Celsius și o atribuie unui float
int intTemp = (int) tempC; //Acest lucru transformă float într-un număr întreg
if (tempC != DEVICE_DISCONNECTED_C) //Verificați dacă citirea noastră a funcționat
{
return intTemp; //Readuceți valoarea temperaturii noastre la funcția de afișare
}
}

Construirea unui termometru digital DIY

Acest proiect ar trebui să fie distractiv și informativ, oferindu-vă totodată șansa de a realiza un articol practic. Am conceput acest cod pentru a fi cât mai simplu posibil, dar îl puteți folosi ca bază pentru un proiect mai complicat pe măsură ce învățați.

15 proiecte Arduino grozave pentru începători

Sunteți interesat de proiectele Arduino, dar nu sunteți sigur de unde să începeți? Aceste proiecte pentru începători vă vor învăța cum să începeți.

Citiți în continuare

AcțiuneTweetE-mail
Subiecte asemănătoare
  • DIY
  • Arduino
  • Electronică
Despre autor
Samuel L. Garbett (35 articole publicate)

Samuel este un scriitor de tehnologie din Marea Britanie cu o pasiune pentru toate lucrurile bricolaj. După ce a început afaceri în domeniile dezvoltării web și imprimării 3D, împreună cu munca de scriitor timp de mulți ani, Samuel oferă o perspectivă unică asupra lumii tehnologiei. Concentrându-se în principal pe proiecte tehnologice de bricolaj, nu îi place nimic mai mult decât să împărtășească idei distractive și interesante pe care le poți încerca acasă. În afara serviciului, Samuel poate fi găsit de obicei mergând cu bicicleta, jucând jocuri video pe computer sau încercând cu disperare să comunice cu crabul lui.

Mai multe de la Samuel L. Garbett

Aboneaza-te la newsletter-ul nostru

Alăturați-vă buletinului nostru informativ pentru sfaturi tehnice, recenzii, cărți electronice gratuite și oferte exclusive!

Click aici pentru a te abona