Πίνακας περιεχομένων:
- Προμήθειες
- Βήμα 1: Κατασκευή του JLCPCB Datalogger με αισθητήρα θερμοκρασίας με Arduino
- Βήμα 2:
- Βήμα 3:
- Βήμα 4:
- Βήμα 5:
- Βήμα 6: Μενού ελέγχου JLCPCB Datalogger
- Βήμα 7:
- Βήμα 8:
- Βήμα 9:
- Βήμα 10:
- Βήμα 11: Πρόσβαση σε δεδομένα μονάδας κάρτας SD με Arduino
- Βήμα 12: Συμπέρασμα
Βίντεο: Αισθητήρας θερμοκρασίας για Arduino Εφαρμόστηκε για βήματα COVID 19: 12 (με εικόνες)
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:33
Ο αισθητήρας θερμοκρασίας για το Arduino είναι ένα θεμελιώδες στοιχείο όταν θέλουμε να μετρήσουμε τη θερμοκρασία ενός επεξεργαστή του ανθρώπινου σώματος.
Ο αισθητήρας θερμοκρασίας με το Arduino πρέπει να είναι σε επαφή ή κοντά για να λάβει και να μετρήσει το επίπεδο θερμότητας. Έτσι λειτουργούν τα θερμόμετρα.
Αυτές οι συσκευές χρησιμοποιούνται εξαιρετικά για τη μέτρηση της θερμοκρασίας του σώματος των ασθενών, καθώς η θερμοκρασία είναι ένας από τους πρώτους παράγοντες που αλλάζουν στο ανθρώπινο σώμα όταν υπάρχει ανωμαλία ή ασθένεια.
Μία από τις ασθένειες που μεταβάλλουν τη θερμοκρασία του ανθρώπινου σώματος είναι η COVID 19. Επομένως, παρουσιάζουμε τα κύρια συμπτώματα:
Βήχας Κούραση Δυσκολία στην αναπνοή (Σοβαρές περιπτώσεις) Πυρετός Ο πυρετός είναι ένα σύμπτωμα του οποίου το κύριο χαρακτηριστικό είναι η αύξηση της θερμοκρασίας του σώματος. Σε αυτήν την ασθένεια, πρέπει να παρακολουθούμε συνεχώς αυτά τα συμπτώματα.
Έτσι, θα αναπτύξουμε ένα έργο για την παρακολούθηση της θερμοκρασίας και την αποθήκευση αυτών των δεδομένων σε μια κάρτα μνήμης μέσω ενός JLCPCB Datalogger χρησιμοποιώντας έναν αισθητήρα θερμοκρασίας με Arduino.
Επομένως, σε αυτό το άρθρο θα μάθετε:
- Πώς λειτουργεί ένας JLCPCB Datalogger με αισθητήρα θερμοκρασίας με Arduino;
- Πώς λειτουργεί ο αισθητήρας θερμοκρασίας με το Arduino.
- Πώς λειτουργεί ο αισθητήρας θερμοκρασίας DS18B20 με το Arduino
- Χρησιμοποιήστε κουμπιά με πολλές λειτουργίες.
Στη συνέχεια, θα σας δείξουμε πώς θα αναπτύξετε το JLCPCB Datalogger σας χρησιμοποιώντας τον αισθητήρα θερμοκρασίας Arduino.
Προμήθειες
Arduino UNO
JLCPCB Εκτυπωμένος πίνακας κυκλωμάτων
Αισθητήρας θερμοκρασίας DS18B20
Arduino Nano R3
Άλτες
Οθόνη LCD 16 x 2
Διακόπτης κουμπιού
Αντίσταση 1kR
Ενότητα κάρτας SD για Arduino
Βήμα 1: Κατασκευή του JLCPCB Datalogger με αισθητήρα θερμοκρασίας με Arduino
Όπως αναφέρθηκε προηγουμένως, το έργο συνίσταται στη δημιουργία ενός JLCPCB Datalogger με αισθητήρα θερμοκρασίας με Arduino και μέσω αυτών των δεδομένων, μπορούμε να παρακολουθούμε τη θερμοκρασία του ασθενούς που υποβάλλεται σε θεραπεία.
Έτσι, το κύκλωμα φαίνεται στο παραπάνω σχήμα.
Επομένως, όπως μπορείτε να δείτε, αυτό το κύκλωμα διαθέτει αισθητήρα θερμοκρασίας DS18B20 με Arduino, ο οποίος είναι υπεύθυνος για τη μέτρηση της ένδειξης θερμοκρασίας του ασθενούς.
Επιπλέον, το Arduino Nano θα είναι υπεύθυνο για τη συλλογή αυτών των δεδομένων και την αποθήκευσή τους στην κάρτα μνήμης της μονάδας κάρτας SD.
Κάθε πληροφορία θα αποθηκευτεί με τον αντίστοιχο χρόνο της, ο οποίος θα διαβαστεί από τη μονάδα RTC DS1307.
Έτσι, για να αποθηκευτούν τα δεδομένα του αισθητήρα θερμοκρασίας με το Arduino, ο χρήστης πρέπει να εκτελέσει τη διαδικασία μέσω του μενού ελέγχου με την οθόνη LCD 16x2.
Βήμα 2:
Κάθε κουμπί είναι υπεύθυνο για τον έλεγχο μιας επιλογής, όπως φαίνεται στην οθόνη LCD 16x2 στο σχήμα 2.
Κάθε επιλογή είναι υπεύθυνη για την εκτέλεση μιας λειτουργίας στο σύστημα, όπως φαίνεται παρακάτω.
- Η επιλογή M είναι υπεύθυνη για την έναρξη της μέτρησης και της καταγραφής δεδομένων στην κάρτα μνήμης.
- Η επιλογή Η είναι υπεύθυνη για τη ρύθμιση των ωρών του συστήματος.
- Η επιλογή O/P χρησιμοποιείται για την επιβεβαίωση της εισαγωγής δεδομένων στο σύστημα ή για παύση της εγγραφής δεδομένων στην κάρτα μνήμης.
Για να κατανοήσουμε τη διαδικασία ελέγχου του συστήματος, θα παράσχουμε τον παρακάτω κώδικα και θα συζητήσουμε το βήμα-βήμα σύστημα ελέγχου του JLCPCB Datalogger με αισθητήρα θερμοκρασίας με Arduino.
#include // Βιβλιοθήκη με όλες τις λειτουργίες του αισθητήρα DS18B20
#include #include // Biblioteca I2C έως LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Διαμόρφωση οθόνης LCD 16x2 για 0x27 #define ONE_WIRE_BUS 8 // Digitalηφιακή καρφίτσα για σύνδεση του αισθητήρα DS18B20 // Ορισμός στιγμιότυπων από το OneWire για τον αισθητήρα OneWire oneWire (ONE_WIRE_BUS). Αισθητήρες θερμοκρασίας Dallas (& oneWire); DeviceAddress sensor1; Αρχείο myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool μέτρα = 0, adjusthour = 0, ok = 0; bool μέτρα_στατική = 0, adjusthour_state = 0, ok_state = 0; bool μέτρηση_προϊόν = 0, προσαρμογή_διαδικασίας = 0; byte actualMin = 0, previousMin = 0; byte actualHour = 0, previousHour = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 για Mega / Pin 10 για UNO int DataTime [7]; void updateHour () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (φορές); minUpdate = DataTime [5]; }} void updateTemp () {DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("Θερμοκρασία:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); minUpdate = DataTime [5]; }} void setup () {Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Σύστημα Temp"); lcd.setCursor (3, 1); lcd.print ("Καταγραφέας δεδομένων"); καθυστέρηση (2000). // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Τοποθέτηση αισθητήρα με επιτυχία!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Αισθητήρας"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); ΕΠΙΣΤΡΟΦΗ; } DS1307.getDate (DataTime); lcd.clear (); sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); } void loop () {updateHour (); // Ανάγνωση κουμπιών καταστάσεις μέτρηση = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); εάν (μέτρηση == 0 && μέτρηση_κατάστασης == 1) {μέτρηση_κράτους = 0; } if (μέτρηση == 1 && μέτρηση_κατάστασης == 0 && μετρητής_διαδικασίας == 0) {μέτρηση_διαδικασίας = 1; μέτρηση_κράτους = 1; if (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); SD.remove ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } else {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } καθυστέρηση (500); myFile.print ("ourρα:"); myFile.println ("Θερμοκρασία"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("Θερμοκρασία:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && μετρητής_διαδικασίας == 0) {adjust_process = 1; } // --------------------------------------------------- --- Διαδικασία μέτρησης ------------------------------------------------- -------------- εάν (μέτρηση_προσ. == 1) {updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ---------------------------------------------------- --------- Πρακτικά καταμέτρησης ------------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = πραγματικό Min; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (φορές); myFile.println (TempSensor); contMin = 0; } // --------------------------------------------------- ------------ Countρες καταμέτρησης ---------------------------------------- ---------------------- εάν (πραγματική ώρα! = προηγούμενη ώρα) {contHour ++; previousHour = πραγματική ώρα; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Τέλος"); lcd.setCursor (5, 1); lcd.print ("Διαδικασία"); μέτρηση_διαδικασία = 0; contHour = 0; } //----------------------------------------------Κατάσταση για διακοπή του καταγραφικού δεδομένων -------------------------------------------------- ---- if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Σταμάτησε"); lcd.setCursor (5, 1); lcd.print ("Διαδικασία"); μέτρηση_διαδικασία = 0; καθυστέρηση (2000). lcd.clear (); DS1307.getDate (DataTime); sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }} // -------------------------------------------------- ------- Προσαρμογή ωρών --------------------------------------------- ---------------------- // Adjust Hour if (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Προσαρμογή ώρας:"); sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (φορές); // Hour Adjust do {μέτρα = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); εάν (μέτρηση == 0 && μέτρηση_κράτους == 1) {μέτρηση_κράτους = 0; } if (μέτρηση == 1 && μέτρηση_κράτους == 0) {DataTime [4] ++; εάν (DataTime [4]> 23) {DataTime [4] = 0? } state_state = 1; sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (φορές); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00) · } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; εάν (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (φορές); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00) · adjusthour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); adjust_process = 0; }} while (εντάξει! = 1); } // --------------------------------------------------- ------- Τέλος προσαρμογής ώρας -------------------------------------------- -------------------}
Αρχικά, ορίζουμε όλες τις βιβλιοθήκες για τον έλεγχο των μονάδων και τη δήλωση μεταβλητών που χρησιμοποιούνται κατά τον προγραμματισμό του JLCPCB Datalogger με αισθητήρα θερμοκρασίας για το Arduino. Το μπλοκ κωδικών εμφανίζεται παρακάτω.
Βήμα 3:
#include // Βιβλιοθήκη με όλες τις λειτουργίες του αισθητήρα DS18B20
#include #include // Biblioteca I2C έως LCD 16x2 #include // Biblioteca de Comunicacao I2C #include // OneWire Library for DS18B20 Sensor #include #include LiquidCrystal_I2C lcd (0x27, 16, 2); // Διαμόρφωση οθόνης LCD 16x2 για 0x27 #define ONE_WIRE_BUS 8 // Digitalηφιακή καρφίτσα για σύνδεση του αισθητήρα DS18B20 // Ορισμός στιγμιότυπων από το OneWire για τον αισθητήρα OneWire oneWire (ONE_WIRE_BUS). Αισθητήρες θερμοκρασίας Dallas (& oneWire); DeviceAddress sensor1; Αρχείο myFile; #define Buttonmeasure 2 #define Buttonadjusthour 3 #define Buttonok 4 bool μέτρα = 0, adjusthour = 0, ok = 0; bool μέτρα_στατική = 0, adjusthour_state = 0, ok_state = 0; bool μέτρηση_προϊόν = 0, προσαρμογή_διαδικασίας = 0; byte actualMin = 0, previousMin = 0; byte actualHour = 0, previousHour = 0; byte minUpdate = 0; int pinoSS = 10; // Pin 53 για Mega / Pin 10 για UNO int DataTime [7];
Στη συνέχεια, έχουμε τη λειτουργία κενής ρύθμισης. Αυτή η λειτουργία χρησιμοποιείται για τη διαμόρφωση των ακίδων και της προετοιμασίας της συσκευής, όπως φαίνεται παρακάτω.
void setup ()
{Serial.begin (9600); DS1307.begin (); sensors.begin (); pinMode (pinoSS, OUTPUT); // Declara pinoSS como saída Wire.begin (); // Inicializacao da Comunicacao I2C lcd.init (); // Inicializacao do LCD lcd.backlight (); lcd.setCursor (3, 0); lcd.print ("Σύστημα Temp"); lcd.setCursor (3, 1); lcd.print ("Καταγραφέας δεδομένων"); καθυστέρηση (2000). // Localiza e mostra enderecos dos sensores Serial.println ("Localizando sensores DS18B20 …"); Serial.print ("Τοποθέτηση αισθητήρα με επιτυχία!"); Serial.print (sensors.getDeviceCount (), DEC); Serial.println ("Αισθητήρας"); if (SD.begin ()) {// Inicializa o SD Card Serial.println ("SD Card pronto para uso."); // Imprime na tela} else {Serial.println ("Falha na inicialização do SD Card."); ΕΠΙΣΤΡΟΦΗ; } DS1307.getDate (DataTime); lcd.clear (); sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
Αρχικά, ξεκίνησε η σειριακή επικοινωνία, το ρολόι σε πραγματικό χρόνο και ο αισθητήρας θερμοκρασίας για το Arduino DS18B20. Μετά την προετοιμασία και τον έλεγχο των συσκευών, το μήνυμα με τις επιλογές μενού εκτυπώθηκε στην οθόνη LCD 16x2. Αυτή η οθόνη φαίνεται στο σχήμα 1.
Βήμα 4:
Μετά από αυτό, το σύστημα διαβάζει τις ώρες και ενημερώνει την τιμή καλώντας τη συνάρτηση updateHour. Έτσι, αυτή η συνάρτηση έχει σκοπό να παρουσιάζει την ωριαία τιμή κάθε λεπτό. Το μπλοκ κωδικών λειτουργίας εμφανίζεται παρακάτω.
void updateHour ()
{DS1307.getDate (DataTime); if (DataTime [5]! = minUpdate) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (""); lcd.setCursor (5, 0); lcd.print (φορές); minUpdate = DataTime [5]; }}
Βήμα 5:
Εκτός από την ενημέρωση των ωρών, ο χρήστης μπορεί να επιλέξει ένα από τα τρία κουμπιά για την παρακολούθηση του ασθενούς με αισθητήρα θερμοκρασίας με Arduino. Το κύκλωμα φαίνεται στο παραπάνω σχήμα.
Βήμα 6: Μενού ελέγχου JLCPCB Datalogger
Πρώτον, ο χρήστης πρέπει να ελέγξει και να προσαρμόσει τις ώρες λειτουργίας του συστήματος. Αυτή η διαδικασία εκτελείται όταν πατήσετε το δεύτερο κουμπί.
Όταν πατήσετε το κουμπί, πρέπει να εμφανιστεί η ακόλουθη οθόνη, η οποία φαίνεται στο παραπάνω σχήμα.
Βήμα 7:
Από αυτήν την οθόνη, ο χρήστης θα μπορεί να εισάγει τις τιμές ώρας και λεπτού από τα κουμπιά που είναι συνδεδεμένα με τις ψηφιακές ακίδες 2 και 3 του Arduino. Τα κουμπιά εμφανίζονται στο παραπάνω σχήμα.
Το τμήμα κωδικού για τον έλεγχο των ωρών φαίνεται παρακάτω.
εάν (adjusthour == 0 && adjusthour_state == 1)
{adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0 && μετρητής_διαδικασίας == 0) {adjust_process = 1; }
Όταν πατηθεί το κουμπί των ωρών και η μεταβλητή μέτρησης_διαδικασίας οριστεί στο 0, η συνθήκη θα είναι αληθής και η μεταβλητή προσαρμογής_διαδικασίας θα οριστεί στο 1. Η μεταβλητή μέτρησης_μεθόδου χρησιμοποιείται για να σηματοδοτήσει ότι το σύστημα παρακολουθεί τη θερμοκρασία. Όταν η τιμή του είναι 0, το σύστημα θα επιτρέψει στον χρήστη να εισέλθει στο μενού ρύθμισης ώρας. Επομένως, αφού η μεταβλητή adjust_process λάβει μια τιμή 1, το σύστημα θα εισαγάγει τη συνθήκη ρύθμισης χρόνου. Αυτό το μπλοκ κωδικών εμφανίζεται παρακάτω.
// ---------------------------------------------------- ----- Προσαρμογή ωρών ---------------------------------------------- --------------------
// Adjust Hour if (adjust_process == 1) {lcd.clear (); DS1307.getDate (DataTime); lcd.setCursor (0, 0); lcd.print ("Προσαρμογή ώρας:"); sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (φορές); // Hour Adjust do {μέτρα = digitalRead (Buttonmeasure); adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok); εάν (μέτρηση == 0 && μέτρηση_κράτους == 1) {μέτρηση_κράτους = 0; } if (μέτρηση == 1 && μέτρηση_κράτους == 0) {DataTime [4] ++; εάν (DataTime [4]> 23) {DataTime [4] = 0? } state_state = 1; sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (φορές); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00) · } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; εάν (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (φορές); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00) · adjusthour_state = 1; } if (ok == 1) {lcd.clear (); DS1307.getDate (DataTime); sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); adjust_process = 0; }} while (εντάξει! = 1); }
Σε αυτήν την κατάσταση, το σύστημα θα εμφανίσει το μήνυμα που εμφανίζεται στο σχήμα 4 και στη συνέχεια περιμένει τις τιμές να προσαρμοστούν εσωτερικά στον βρόχο while. Κατά την προσαρμογή των ωρών, αυτά τα κουμπιά αλλάζουν τις λειτουργίες τους, δηλαδή είναι πολυλειτουργικές.
Αυτό σας επιτρέπει να χρησιμοποιήσετε ένα κουμπί για περισσότερες από μία λειτουργίες και να μειώσετε την πολυπλοκότητα του συστήματος.
Με αυτόν τον τρόπο, ο χρήστης θα προσαρμόσει την τιμή των ωρών και των λεπτών και στη συνέχεια θα αποθηκεύσει τα δεδομένα στο σύστημα όταν πατηθεί το κουμπί Ok.
Όπως μπορείτε να δείτε, το σύστημα θα διαβάσει τα 3 κουμπιά, όπως φαίνεται παρακάτω.
μέτρηση = digitalRead (Buttonmeasure);
adjusthour = digitalRead (Buttonadjusthour); ok = digitalRead (Buttonok);
Σημειώστε ότι το κουμπί μέτρησης (Buttonmeasure) άλλαξε τη λειτουργία του. Τώρα θα χρησιμοποιηθεί για την προσαρμογή των τιμών ώρας, όπως φαίνεται παρακάτω. Οι ακόλουθες δύο συνθήκες είναι παρόμοιες και χρησιμοποιούνται για την προσαρμογή των ωρών και των λεπτών, όπως φαίνεται παραπάνω.
εάν (μέτρο == 0 && μέτρηση_κράτους == 1)
{μέτρηση_κράτους = 0; } if (μέτρηση == 1 && μέτρηση_κράτους == 0) {DataTime [4] ++; εάν (DataTime [4]> 23) {DataTime [4] = 0? } state_state = 1; sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (φορές); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00) · } if (adjusthour == 0 && adjusthour_state == 1) {adjusthour_state = 0; } if (adjusthour == 1 && adjusthour_state == 0) {DataTime [5] ++; εάν (DataTime [5]> 59) {DataTime [5] = 0; } sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 1); lcd.print (φορές); DS1307.setDate (DataTime [0], DataTime [1], DataTime [2], DataTime [3], DataTime [4], DataTime [5], 00) · adjusthour_state = 1; }
Επομένως, κάθε φορά που πατάτε ένα από τα δύο κουμπιά, η τιμή των θέσεων 4 και 5 του διανύσματος DataTime θα αλλάζει και δεύτερον, αυτές οι τιμές θα αποθηκεύονται στη μνήμη DS1307.
Μετά τις προσαρμογές, ο χρήστης πρέπει να κάνει κλικ στο κουμπί Ok, για να ολοκληρώσει τη διαδικασία. Όταν συμβεί αυτό το συμβάν, το σύστημα θα εκτελέσει τις ακόλουθες γραμμές κώδικα.
αν (εντάξει == 1)
{lcd.clear (); DS1307.getDate (DataTime); sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (0, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O"); adjust_process = 0; }
Θα εισαγάγει την παραπάνω συνθήκη και θα παρουσιάσει το μήνυμα ώρας και το μενού Επιλογές στον χρήστη.
Τέλος, ο χρήστης πρέπει να ξεκινήσει τη διαδικασία παρακολούθησης του ασθενούς μέσω του αισθητήρα θερμοκρασίας με το Arduino JLCPCB Datalogger.
Για να γίνει αυτό, ο χρήστης πρέπει να πατήσει το κουμπί μέτρησης, το οποίο είναι συνδεδεμένο με την ψηφιακή ακίδα 2.
Στη συνέχεια, το σύστημα θα πραγματοποιήσει την ανάγνωση με τον αισθητήρα θερμοκρασίας για το Arduino και θα τον αποθηκεύσει στην κάρτα μνήμης. Η περιοχή κυκλώματος φαίνεται στο παραπάνω σχήμα.
Βήμα 8:
Επομένως, όταν πατηθεί το κουμπί, θα εκτελεστεί το ακόλουθο τμήμα κώδικα.
εάν (μέτρο == 0 && μέτρηση_κράτους == 1)
{μέτρηση_κράτους = 0; } if (μέτρηση == 1 && μέτρηση_κατάστασης == 0 && μετρητής_διαδικασίας == 0) {μέτρηση_διαδικασίας = 1; μέτρηση_κράτους = 1; if (SD.exists ("temp.txt")) {Serial.println ("Apagou o arquivo anterior!"); SD.remove ("temp.txt"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt Serial.println ("Criou o arquivo!"); } else {Serial.println ("Criou o arquivo!"); myFile = SD.open ("temp.txt", FILE_WRITE); // Cria / Abre arquivo.txt myFile.close (); } καθυστέρηση (500); myFile.print ("ourρα:"); myFile.println ("Θερμοκρασία"); DS1307.getDate (DataTime); actualMin = previousMin = DataTime [5]; sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.clear (); lcd.setCursor (5, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("Θερμοκρασία:"); lcd.setCursor (14, 1); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); lcd.print (TempSensor); }
Στο παραπάνω τμήμα κώδικα, το σύστημα θα εκχωρήσει μια τιμή 1 στη μεταβλητή μέτρησης_διαδικασίας. Είναι υπεύθυνο για την αποθήκευση των δεδομένων στην κάρτα SD.
Επιπλέον, το σύστημα θα ελέγξει εάν υπάρχει ή όχι αρχείο κειμένου με αρχείο καταγραφής δεδομένων. Εάν υπάρχει αρχείο, το σύστημα θα διαγράψει και θα δημιουργήσει ένα νέο για την αποθήκευση των δεδομένων.
Μετά από αυτό, θα δημιουργήσει δύο στήλες: μία για τις ώρες και μία για τη θερμοκρασία μέσα στο αρχείο κειμένου.
Μετά από αυτό, θα εμφανίσει τις ώρες και τη θερμοκρασία στην οθόνη LCD, όπως φαίνεται στο παραπάνω σχήμα.
Μετά από αυτό, η ροή κώδικα θα εκτελέσει το ακόλουθο μπλοκ προγράμματος.
εάν (μέτρηση_διαδικασίας == 1)
{updateTemp (); byte contMin = 0, contHour = 0; DS1307.getDate (DataTime); actualMin = DataTime [5]; // ---------------------------------------------------- --------- Πρακτικά καταμέτρησης ------------------------------------------- ------------------- if (actualMin! = previousMin) {contMin ++; previousMin = πραγματικό Min; } if (contMin == 5) {sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (φορές); myFile.println (TempSensor); contMin = 0; } // --------------------------------------------------- ------------ Countρες καταμέτρησης ---------------------------------------- ---------------------- εάν (πραγματική ώρα! = προηγούμενη ώρα) {contHour ++; previousHour = πραγματική ώρα; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Τέλος"); lcd.setCursor (5, 1); lcd.print ("Διαδικασία"); μέτρηση_διαδικασία = 0; contHour = 0; } //----------------------------------------------Κατάσταση για διακοπή του καταγραφικού δεδομένων -----
Αρχικά, θα εκτελεστεί η συνάρτηση updateTemp (). Είναι παρόμοιο με τη συνάρτηση updateHour (). Ωστόσο, εμφανίζει τη θερμοκρασία κάθε 1 λεπτό.
Μετά από αυτό, το σύστημα θα συλλέξει τα δεδομένα χρόνου από το ρολόι πραγματικού χρόνου και θα αποθηκεύσει την τρέχουσα τιμή λεπτού στη μεταβλητή currentMin.
Στη συνέχεια, θα ελέγξει εάν η μεταβλητή min έχει αλλάξει, σύμφωνα με την κατάσταση που παρουσιάζεται παρακάτω
εάν (actualMin! = previousMin)
{contMin ++; previousMin = πραγματικό Min; }
Επομένως, εάν η τρέχουσα μεταβλητή λεπτού είναι διαφορετική από την προηγούμενη τιμή, σημαίνει ότι έχει συμβεί αλλαγή στην τιμή. Με αυτόν τον τρόπο, η συνθήκη θα είναι αληθής και η τιμή του αριθμού λεπτών θα αυξηθεί (contMin) και η τρέχουσα τιμή θα εκχωρηθεί στη μεταβλητή previousMin, για να αποθηκεύσει την προηγούμενη τιμή της.
Επομένως, όταν η τιμή αυτής της καταμέτρησης είναι ίση με 5, σημαίνει ότι έχουν περάσει 5 λεπτά και το σύστημα πρέπει να εκτελέσει μια νέα ανάγνωση θερμοκρασίας και να αποθηκεύσει την ώρα και την τιμή θερμοκρασίας στο αρχείο καταγραφής της κάρτας SD.
αν (contMin == 5)
{sprintf (times, "%02d:%02d", DataTime [4], DataTime [5]); sensors.requestTemperatures (); float TempSensor = sensors.getTempCByIndex (0); myFile.print (φορές); myFile.println (TempSensor); contMin = 0; }
Με αυτόν τον τρόπο, αυτή η διαδικασία θα επαναληφθεί μέχρι να φτάσει την τιμή των 5 ωρών παρακολούθησης της θερμοκρασίας του ασθενούς με τον αισθητήρα θερμοκρασίας με Arduino.
Το τμήμα κώδικα εμφανίζεται παρακάτω και είναι παρόμοιο με την καταμέτρηση των λεπτών, που παρουσιάστηκε παραπάνω.
// ---------------------------------------------------- ----------- Countρες καταμέτρησης ----------------------------------------- ---------------------
εάν (πραγματική ώρα! = προηγούμενη ώρα) {contHour ++; previousHour = πραγματική ώρα; } if (contHour == 5) {myFile.close (); lcd.clear (); lcd.setCursor (5, 0); lcd.print ("Τέλος"); lcd.setCursor (5, 1); lcd.print ("Διαδικασία"); μέτρηση_διαδικασία = 0; contHour = 0; }
Μετά την επίτευξη 5 ωρών παρακολούθησης, το σύστημα θα κλείσει το αρχείο καταγραφής και θα παρουσιάσει το μήνυμα "Ολοκληρωμένη διαδικασία" στον χρήστη.
Επιπλέον, ο χρήστης μπορεί να πατήσει το κουμπί Ok/Pause για να σταματήσει η εγγραφή δεδομένων. Όταν συμβεί αυτό, θα εκτελεστεί το ακόλουθο μπλοκ κώδικα.
// -------------------------------------------------- Όρος σε σταματήστε τον καταγραφικό δεδομένων -------------------------------------------------- ---
if (ok == 1) {myFile.close (); lcd.clear (); lcd.setCursor (6, 0); lcd.print ("Σταμάτησε"); lcd.setCursor (5, 1); lcd.print ("Διαδικασία"); μέτρηση_διαδικασία = 0; καθυστέρηση (2000). lcd.clear (); DS1307.getDate (DataTime); sprintf (φορές, "%02d:%02d", DataTime [4], DataTime [5]); lcd.setCursor (5, 0); lcd.print (φορές); lcd.setCursor (0, 1); lcd.print ("1-M 2-H 3-O/P"); }
Βήμα 9:
Στη συνέχεια, το σύστημα θα κλείσει το αρχείο και θα εμφανίσει το μήνυμα "Διακοπή διαδικασίας", όπως φαίνεται στο σχήμα 8.
Βήμα 10:
Μετά από αυτό, το σύστημα θα εκτυπώσει την οθόνη ώρας και τις επιλογές μενού, όπως φαίνεται στο σχήμα 9.
Βήμα 11: Πρόσβαση σε δεδομένα μονάδας κάρτας SD με Arduino
Μετά τη διαδικασία παρακολούθησης του JLCPCB Datalogger με τον αισθητήρα θερμοκρασίας με Arduino, είναι απαραίτητο να αφαιρέσετε την κάρτα μνήμης και να αποκτήσετε πρόσβαση στα δεδομένα στον υπολογιστή.
Για να δείτε και να αναλύσετε τα δεδομένα με καλύτερη ποιότητα, εξάγετε / αντιγράψτε όλες τις πληροφορίες του αρχείου κειμένου στο Excel. Μετά από αυτό, μπορείτε να σχεδιάσετε γραφήματα και να αναλύσετε τα αποτελέσματα που λαμβάνονται.
Βήμα 12: Συμπέρασμα
Το JLCPCB Datalogger με αισθητήρα θερμοκρασίας με Arduino μας επιτρέπει, εκτός από τη μέτρηση της θερμοκρασίας, να καταγράφουμε πληροφορίες σχετικά με τη συμπεριφορά θερμοκρασίας του ασθενούς σε μια χρονική περίοδο.
Με αυτά τα αποθηκευμένα δεδομένα, είναι δυνατό να αναλυθεί και να κατανοηθεί πώς συμπεριφέρεται η θερμοκρασία του ασθενούς που έχει μολυνθεί από τον COVID 19.
Επιπλέον, είναι δυνατό να αξιολογηθεί το επίπεδο θερμοκρασίας και να συσχετιστεί η αξία του με την εφαρμογή κάποιου τύπου φαρμάκου.
Επομένως, μέσω αυτών των δεδομένων, ο JLCPCB Datalogger με αισθητήρα θερμοκρασίας για το Arduino στοχεύει να βοηθήσει γιατρούς και νοσηλευτές στη μελέτη της συμπεριφοράς των ασθενών.
Τέλος, ευχαριστούμε την εταιρεία JLCPCB για την υποστήριξη της ανάπτυξης του έργου και ελπίζουμε ότι μπορείτε να το χρησιμοποιήσετε
Όλα τα αρχεία μπορούν να ληφθούν και να χρησιμοποιηθούν ελεύθερα από οποιονδήποτε χρήστη.
Συνιστάται:
Αισθητήρας θερμοκρασίας και κρέατος BBQ στο ESP8266 Με οθόνη: 5 βήματα (με εικόνες)
BBQ Temperature & Meat Sensor στο ESP8266 With Display: Σε αυτό το Instructable θα σας δείξω πώς να φτιάξετε τη δική σας έκδοση ενός εργαλείου BBQ που μετρά την τρέχουσα θερμοκρασία στο μπάρμπεκιου σας και ενεργοποιεί έναν ανεμιστήρα για να ανάψει αν χρειαστεί. Επιπλέον, υπάρχει επίσης ένας αισθητήρας θερμοκρασίας πυρήνα κρέατος attac
Αισθητήρας/μετρητής θερμοκρασίας κινητήρα με ασύρματο αισθητήρα για κλασικά οχήματα: 7 βήματα
Αισθητήρας θερμοκρασίας κινητήρα/μετρητής με ασύρματο αισθητήρα για κλασικά οχήματα: Έφτιαξα αυτόν τον αισθητήρα για το υπέροχο μου Τσιπιτάκ. Ένα αυτοκίνητο fiat 126 με 2 κύλινδρο αερόψυκτο κινητήρα κάτω από το πίσω καπό. Το Chipitak δεν έχει μετρητή θερμοκρασίας που δείχνει πόσο ζεστός είναι ο κινητήρας, έτσι σκέφτηκα ότι ένας αισθητήρας θα ήταν χρήσιμος. Wantedθελε επίσης ο αισθητήρας να είναι καλώδιο
ESP32 NTP Θερμόμετρο μαγειρέματος θερμοκρασίας ανιχνευτή θερμοκρασίας με διόρθωση και συναγερμό θερμοκρασίας Steinhart-Hart .: 7 βήματα (με εικόνες)
ESP32 NTP Θερμόμετρο Θερμόμετρο μαγειρέματος με διόρθωση και συναγερμό θερμοκρασίας Steinhart-Hart .: Ακόμα στο ταξίδι για να ολοκληρώσετε ένα «επερχόμενο έργο», ", ESP32 NTP Temperature Probe Cooking Thermometer With Steinhart-Hart Correction and Temperature Alarm " είναι ένας οδηγός που δείχνει πώς προσθέτω έναν αισθητήρα θερμοκρασίας NTP, piezo b
Αισθητήρας θερμοκρασίας IoT με ESP8266: 6 βήματα (με εικόνες)
IoT Temperature Sensor With ESP8266: Εμπνεύστηκα να δημιουργήσω έναν αισθητήρα θερμοκρασίας που μπορώ να παρακολουθώ μέσω wifi. Αυτό το έργο δεν είναι νέο, αλλά μου αρέσει η ιδέα να έχω ενδιάμεσο επίπεδο για ασφάλεια και να μην χρειάζεται να ανοίξω θύρα στο δρομολογητή σας στη συσκευή σας IoT. Η βασική ιδέα θα
Digitalηφιακός αισθητήρας θερμοκρασίας βασισμένος σε Arduino: 5 βήματα (με εικόνες)
Digitalηφιακός αισθητήρας θερμοκρασίας βασισμένος σε Arduino: Οι αισθητήρες θερμοκρασίας είναι ένα πραγματικό συνηθισμένο πράγμα αυτές τις μέρες, αλλά οι περισσότεροι από αυτούς είναι εξαιρετικά περίπλοκοι ή πολύ ακριβοί για αγορά. Αυτό το έργο σας δίνει έναν ψηφιακό αισθητήρα θερμοκρασίας με βάση το Arduino, ο οποίος όχι μόνο είναι φθηνός και πολύ εύκολος να μ