Η κατασκευή του DIY θερμομέτρου Arduino είναι ένας διασκεδαστικός και πρακτικός τρόπος για να επεκτείνετε τις δεξιότητές σας στο τεχνικό, αλλά από πού πρέπει να ξεκινήσετε; Ελάτε μαζί μας καθώς εμβαθύνουμε στην καλωδίωση και την κωδικοποίηση που περιλαμβάνει τη μετατροπή ενός Arduino, ενός αισθητήρα θερμοκρασίας DS18B20, και μια οθόνη OLED σε ένα ακριβές ψηφιακό θερμόμετρο που μπορεί να λειτουργήσει καλά σε δωμάτια, δεξαμενές ψαριών και ακόμη σε εξωτερικό χώρο.

Τι χρειάζεστε για να φτιάξετε ένα ψηφιακό θερμόμετρο Arduino DIY;

Όλα αυτά τα στοιχεία μπορούν να βρεθούν σε ιστότοπους όπως το eBay και το Amazon.

Μια πλακέτα Arduino

Μπορείτε να χρησιμοποιήσετε σχεδόν οποιοδήποτε Arduino με έξοδο 5V για αυτό το έργο. Χρησιμοποιούμε ένα Arduino Pro Micro έτσι ώστε το τελικό θερμόμετρο μας να είναι συμπαγές, αλλά μπορείτε να χρησιμοποιήσετε μια μεγαλύτερη πλακέτα όπως ένα Arduino Uno εάν θέλετε να αποφύγετε τη συγκόλληση για αυτό το έργο.

Ανιχνευτής θερμοκρασίας DS18B20

Οι αισθητήρες θερμοκρασίας DS18B20 μπορούν να βρεθούν ως μικροί αυτόνομοι αισθητήρες, PCB με συνδεδεμένους αισθητήρες ή ως αδιάβροχοι αισθητήρες σε μακριά καλώδια. Επιλέξαμε το δεύτερο, καθώς αυτό μας δίνει τη δυνατότητα να χρησιμοποιήσουμε το θερμόμετρο μας μέσα σε μια δεξαμενή ψαριών, αλλά μπορείτε να επιλέξετε οποιαδήποτε παραλλαγή του αισθητήρα θερμοκρασίας DS18B20. Σε αντίθεση με άλλους τύπους αισθητήρων θερμοκρασίας, οι DS18B20 παρέχουν ένα άμεσο προς ψηφιακό σήμα στο Arduino σας, αντί για τα αναλογικά σήματα που προέρχονται από επιλογές όπως οι αισθητήρες θερμοκρασίας LM35.

instagram viewer

Οθόνη OLED/LCD

Η οθόνη που θα επιλέξετε για το θερμόμετρο σας θα έχει μεγάλο αντίκτυπο στο τελικό προϊόν. Επιλέξαμε μια μονόχρωμη λευκή οθόνη OLED 1,3 ιντσών συμβατή με I2C για το θερμόμετρο μας, αλλά μπορείτε να επιλέξετε ό, τι θέλετε, εφόσον υποστηρίζει I2C.

Πρόσθετα Μικρά Ανταλλακτικά

  • Αντίσταση 4,7K (kiloohm).
  • 28 έως 22 AWG μονωμένο καλώδιο σιλικόνης/PVC
  • Ένα breadboard (προαιρετικό για όσους δεν θέλουν να κολλήσουν)

Καλωδίωση του DIY θερμομέτρου σας

Η καλωδίωση για αυτό το έργο είναι πολύ πιο απλή από όσο φαντάζεστε. Χρησιμοποιώντας το παραπάνω διάγραμμα κυκλώματος, μπορείτε να δημιουργήσετε το δικό σας ψηφιακό θερμόμετρο DIY με λίγη προσπάθεια, αλλά έχουμε επίσης αναλύσει το διάγραμμα παρακάτω για να διευκολύνουμε την παρακολούθηση.

Καλωδίωση του αισθητήρα θερμοκρασίας DS18B20

Η σωστή καλωδίωση του αισθητήρα θερμοκρασίας DS18B20 είναι ζωτικής σημασίας για αυτό το έργο και πρέπει να βεβαιωθείτε ότι χρησιμοποιείτε την αντίσταση 4,7K που αναφέραμε προηγουμένως διαφορετικά ο αισθητήρας σας δεν πρόκειται να λειτουργήσει σωστά. Ο αισθητήρας συνοδεύεται από τρία καλώδια: Γείωση (συνήθως μαύρο), VCC (συνήθως κόκκινο) και Δεδομένα.

  • Το VCC συνδέεται σε μια ακίδα 5 V στο Arduino σας
  • Η γείωση συνδέεται με έναν ακροδέκτη GND στο Arduino σας
  • Τα δεδομένα μπορούν να συνδεθούν σε οποιαδήποτε ψηφιακή ακίδα στο Arduino σας (επιλέξαμε την ψηφιακή ακίδα 15)
  • Τα καλώδια δεδομένων και VCC πρέπει επίσης να συνδέονται μεταξύ τους με αντίσταση 4,7K

Καλωδίωση της οθόνης OLED I2C

Καθώς χρησιμοποιούμε μια σύνδεση I2C μεταξύ της οθόνης OLED και του Arduino μας, πρέπει να συνδέσουμε μόνο τέσσερα καλώδια για να μπορέσουμε να αρχίσουμε να χρησιμοποιούμε την οθόνη μας: VCC, Γείωση, SDA και SCL. Σχεδόν κάθε σύγχρονο Arduino έχει ενσωματωμένες ακίδες SDA και SCL, παρέχοντας τη δυνατότητα σύνδεσης έως και 128 μοναδικών στοιχείων I2C σε μία μόνο πλακέτα.

Το Arduino Pro Micro μας διαθέτει SDA στην ψηφιακή ακίδα 2 και SCL στην ψηφιακή ακίδα 3, αλλά ίσως χρειαστεί να αναζητήσετε ένα διάγραμμα pinout της συγκεκριμένης πλακέτας που έχετε επιλέξει πριν ξεκινήσετε.

  • Το VCC συνδέεται σε μια ακίδα 5 V στο Arduino σας
  • Η γείωση συνδέεται με έναν ακροδέκτη GND στο Arduino σας
  • Το SDA συνδέεται με τον ακροδέκτη SDA στο Arduino σας
  • Το SCL συνδέεται με τον ακροδέκτη SCL στο Arduino σας

Δοκιμή του κυκλώματος σας

Είναι σημαντικό να δοκιμάσετε το κύκλωμα που δημιουργήσατε πριν ξεκινήσετε να γράφετε τον τελικό κώδικα για αυτό, αλλά μπορείτε να χρησιμοποιήσετε τα παραδείγματα έργων που συνοδεύουν τις βιβλιοθήκες που συζητούνται παρακάτω για να ελέγξετε το κύκλωμα που έχετε έκανε.

Κωδικοποίηση του αισθητήρα θερμοκρασίας και της οθόνης OLED

Η κωδικοποίηση του ψηφιακού θερμομέτρου DIY είναι πιο δύσκολη από την καλωδίωση, αλλά το Arduino IDE μπορεί να χρησιμοποιηθεί για αυτό για να το διευκολύνει.

Επιλέγοντας τις σωστές βιβλιοθήκες

  • Βιβλιοθήκη οθόνης OLED: Χρησιμοποιούμε τη βιβλιοθήκη Adafruit_SH1106.h για την οθόνη μας, καθώς αυτή είναι η βιβλιοθήκη με την οποία σχεδιάστηκε να λειτουργεί. Άλλες οθόνες OLED μπορεί να χρησιμοποιούν τις δικές τους βιβλιοθήκες, όπως τη βιβλιοθήκη Adafruit_SSD1306.h, και συνήθως μπορείτε να μάθετε ποια χρειάζεστε από τη σελίδα προϊόντος από την οποία λάβατε την οθόνη σας.
  • Ανιχνευτής θερμοκρασίας DS18B20: Χρειαζόμαστε δύο βιβλιοθήκες για τον αισθητήρα θερμοκρασίας μας. Το DallasTemperature.h χρησιμοποιείται για τη συλλογή δεδομένων θερμοκρασίας και το OneWire.h για να κάνει δυνατή τη σύνδεσή μας με ένα καλώδιο.

Αφού εγκατασταθούν αυτές οι βιβλιοθήκες και συμπεριληφθούν στο έργο σας, ο κώδικάς σας θα πρέπει να μοιάζει με το παρακάτω απόσπασμα. Σημειώστε ότι έχουμε συμπεριλάβει επίσης κώδικα για τον ορισμό των ακίδων για τα στοιχεία μας.

#περιλαμβάνω  //Βιβλιοθήκη εμφάνισης
#περιλαμβάνω
#περιλαμβάνω //Βιβλιοθήκη Temp probe
#define OLED_RESET -1
Adafruit_SH1106 οθόνη (OLED_RESET);
#define ONE_WIRE_BUS 15 //Πείρο καλωδίου δεδομένων ανιχνευτή θερμοκρασίας
OneWire oneWire (ONE_WIRE_BUS); //Πείτε στο OneWire ποιο pin χρησιμοποιούμε
Αισθητήρες θερμοκρασίας Dallas (&oneWire); // Αναφορά OneWire στη θερμοκρασία Ντάλας

Δόμηση των Λειτουργιών

  • ρύθμιση κενού: Χρησιμοποιούμε το πρότυπο εγκατάσταση λειτουργία για την προετοιμασία τόσο της οθόνης όσο και του αισθητήρα θερμοκρασίας.
  • κενό βρόχο: Το πρότυπό μας βρόχος η λειτουργία θα χρησιμοποιηθεί μόνο για την κλήση μας Απεικόνιση λειτουργία.
  • κενή οθόνη: Προσθέσαμε α Απεικόνιση λειτουργία που καλεί μας Θερμ λειτουργία και παρέχει πληροφορίες στην οθόνη μας.
  • int Θερμ: Μας Θερμ Η συνάρτηση χρησιμοποιείται για να πάρει μια ένδειξη θερμοκρασίας για μας Απεικόνιση λειτουργία.

Μόλις ολοκληρωθεί, θα πρέπει να μοιάζει με το παρακάτω απόσπασμα.

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

Κωδικοποίηση της οθόνης OLED

Προτού μπορέσουμε να προσθέσουμε κώδικα στο δικό μας Απεικόνιση λειτουργία, πρέπει να βεβαιωθούμε ότι ο πίνακας OLED έχει αρχικοποιηθεί στο δικό μας ρύθμιση κενού λειτουργία. Αρχικά, χρησιμοποιούμε α εμφάνιση.αρχίζουν εντολή για να ξεκινήσει η οθόνη, ακολουθούμενη από a εμφάνιση.clearDisplay εντολή για να βεβαιωθείτε ότι η οθόνη είναι καθαρή.

void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C); //Αλλαγή με βάση τη βιβλιοθήκη εμφάνισης
display.clearDisplay();
}

Από εδώ, μπορούμε να προσθέσουμε κώδικα στο δικό μας Απεικόνιση λειτουργία. Αυτό ξεκινά με ένα άλλο εμφάνιση.clearDisplay εντολή, πριν δηλώσετε μια νέα ακέραια μεταβλητή με μια τιμή που καλεί το Θερμ λειτουργία (θα το καλύψουμε αργότερα). Στη συνέχεια, μπορούμε να χρησιμοποιήσουμε αυτή τη μεταβλητή για να εμφανίσουμε τη θερμοκρασία στην οθόνη χρησιμοποιώντας τον ακόλουθο κώδικα.

void Display() {
display.clearDisplay();
int intTemp = Temp(); //Καλεί τη συνάρτηση Temp
display.setTextSize (3); //Ορίζει το μέγεθος του κειμένου μας
display.setTextColor (ΛΕΥΚΟ); //Ορίζει το χρώμα του κειμένου μας
display.setCursor (5, 5); //Ορίζει τη θέση του κειμένου στην οθόνη
display.print (intTemp); //Εκτυπώνει την τιμή που παρέχεται από τη συνάρτηση Temp
display.drawCircle (44, 7, 3, WHITE); //Σχεδιάζει ένα σύμβολο βαθμού
display.setCursor (50, 5);
display.print("C"); //Προσθέτει C για να δείξει ότι η θερμοκρασία μας είναι σε Κελσίου
}

Κωδικοποίηση του αισθητήρα θερμοκρασίας DS18B20

Όπως η οθόνη μας, ο αισθητήρας θερμοκρασίας χρειάζεται επίσης κωδικό ρύθμισης για την προετοιμασία του στοιχείου.

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

Στη συνέχεια, ήρθε η ώρα να προγραμματίσουμε το ίδιο το probe και πρέπει να προσθέσουμε κώδικα στο δικό μας Θερμ λειτουργία. Αρχικά, θα ζητήσουμε τη θερμοκρασία από τον ανιχνευτή μας, ακολουθούμενη από την καταγραφή του αποτελέσματος ως μεταβλητή float και τη μετατροπή του σε ακέραιο. Εάν αυτή η διαδικασία είναι επιτυχής, η θερμοκρασία επιστρέφει στο Απεικόνιση λειτουργία.

int Temp() {
sensors.requestTemperatures(); // Στείλτε την εντολή για λήψη θερμοκρασιών
float tempC = sensors.getTempCByIndex (0); //Αυτό ζητά τη θερμοκρασία σε Κελσίου και την εκχωρεί σε ένα float
int intTemp = (int) tempC; //Αυτό μετατρέπει το float σε ακέραιο
if (tempC != DEVICE_DISCONNECTED_C) //Ελέγξτε εάν η μέτρησή μας λειτούργησε
{
επιστροφή intTemp? //Επιστρέφουμε την τιμή της θερμοκρασίας μας στη συνάρτηση Display
}
}

Τελειώνω

Τέλος, πρέπει απλώς να πούμε τον κύριο μας βρόχος λειτουργία για να καλέσει μας Απεικόνιση λειτουργούν με κάθε κύκλο του κώδικα, αφήνοντάς μας ένα έργο που μοιάζει με αυτό.

#περιλαμβάνω  //Βιβλιοθήκη εμφάνισης
#περιλαμβάνω
#περιλαμβάνω //Βιβλιοθήκη Temp probe
#define OLED_RESET -1
Adafruit_SH1106 οθόνη (OLED_RESET);
#define ONE_WIRE_BUS 15 //Πείρο καλωδίου δεδομένων ανιχνευτή θερμοκρασίας
OneWire oneWire (ONE_WIRE_BUS); //Πείτε στο OneWire ποιο pin χρησιμοποιούμε
Αισθητήρες θερμοκρασίας Dallas (&oneWire); // Αναφορά OneWire στη θερμοκρασία Ντάλας
void setup() {
display.begin (SH1106_SWITCHCAPVCC, 0x3C);
display.clearDisplay();
sensors.begin();
}
void loop() {
Απεικόνιση(); //Καλεί τη λειτουργία εμφάνισης
}
void Display() {
display.clearDisplay();
int intTemp = Temp(); //Καλεί τη συνάρτηση Temp
display.setTextSize (3); //Ορίζει το μέγεθος του κειμένου μας
display.setTextColor (ΛΕΥΚΟ); //Ορίζει το χρώμα του κειμένου μας
display.setCursor (5, 5); //Ορίζει τη θέση του κειμένου στην οθόνη
display.print (intTemp); //Εκτυπώνει την τιμή που παρέχεται από τη συνάρτηση Temp
display.drawCircle (44, 7, 3, WHITE); //Σχεδιάζει ένα σύμβολο βαθμού
display.setCursor (50, 5);
display.print("C"); //Προσθέτει C για να δείξει ότι η θερμοκρασία μας είναι σε Κελσίου
}
int Temp() {
sensors.requestTemperatures(); // Στείλτε την εντολή για λήψη θερμοκρασιών
float tempC = sensors.getTempCByIndex (0); //Αυτό ζητά τη θερμοκρασία σε Κελσίου και την εκχωρεί σε ένα float
int intTemp = (int) tempC; //Αυτό μετατρέπει το float σε ακέραιο
if (tempC != DEVICE_DISCONNECTED_C) //Ελέγξτε εάν η μέτρησή μας λειτούργησε
{
επιστροφή intTemp? //Επιστρέφουμε την τιμή της θερμοκρασίας μας στη συνάρτηση Display
}
}

Κατασκευή Ψηφιακού Θερμομέτρου DIY

Αυτό το έργο πρέπει να είναι διασκεδαστικό και ενημερωτικό, ενώ σας δίνει επίσης την ευκαιρία να φτιάξετε ένα πρακτικό αντικείμενο. Σχεδιάσαμε αυτόν τον κώδικα ώστε να είναι όσο το δυνατόν πιο απλός, αλλά μπορείτε να τον χρησιμοποιήσετε ως βάση για ένα πιο περίπλοκο έργο όπως μαθαίνετε.

15 υπέροχα έργα Arduino για αρχάριους

Ενδιαφέρεστε για έργα Arduino αλλά δεν είστε σίγουροι από πού να ξεκινήσετε; Αυτά τα έργα αρχαρίων θα σας διδάξουν πώς να ξεκινήσετε.

Διαβάστε Επόμενο

ΜερίδιοΤιτίβισμαΗΛΕΚΤΡΟΝΙΚΗ ΔΙΕΥΘΥΝΣΗ
Σχετικά θέματα
  • DIY
  • Arduino
  • ΗΛΕΚΤΡΟΝΙΚΑ ΕΙΔΗ
Σχετικά με τον Συγγραφέα
Σάμουελ Λ. Garbett (Δημοσιεύτηκαν 35 άρθρα)

Ο Samuel είναι ένας συγγραφέας τεχνολογίας με έδρα το Ηνωμένο Βασίλειο με πάθος για όλα τα πράγματα DIY. Έχοντας ξεκινήσει επιχειρήσεις στους τομείς της ανάπτυξης ιστοσελίδων και της τρισδιάστατης εκτύπωσης, παράλληλα με την εργασία ως συγγραφέας για πολλά χρόνια, ο Samuel προσφέρει μια μοναδική εικόνα του κόσμου της τεχνολογίας. Εστιάζοντας κυρίως σε έργα τεχνολογίας DIY, δεν του αρέσει τίποτα περισσότερο από το να μοιράζεται διασκεδαστικές και συναρπαστικές ιδέες που μπορείτε να δοκιμάσετε στο σπίτι. Εκτός δουλειάς, ο Samuel μπορεί συνήθως να βρεθεί να κάνει ποδήλατο, να παίζει βιντεοπαιχνίδια υπολογιστή ή να προσπαθεί απεγνωσμένα να επικοινωνήσει με το κατοικίδιο καβούρι του.

Περισσότερα από τον Samuel L. Garbett

Εγγραφείτε στο ενημερωτικό μας δελτίο

Εγγραφείτε στο ενημερωτικό μας δελτίο για συμβουλές τεχνολογίας, κριτικές, δωρεάν ebook και αποκλειστικές προσφορές!

Κάντε κλικ εδώ για να εγγραφείτε