Πίνακας περιεχομένων:

Ανιχνευτής θερμοκρασίας ερήμου σιδηροδρόμου & μετρητής επιβατών: 5 βήματα
Ανιχνευτής θερμοκρασίας ερήμου σιδηροδρόμου & μετρητής επιβατών: 5 βήματα

Βίντεο: Ανιχνευτής θερμοκρασίας ερήμου σιδηροδρόμου & μετρητής επιβατών: 5 βήματα

Βίντεο: Ανιχνευτής θερμοκρασίας ερήμου σιδηροδρόμου & μετρητής επιβατών: 5 βήματα
Βίντεο: SPT-2020: Μίνι φορητός ανιχνευτής θερμοκρασίας της Secuplus 2024, Ιούλιος
Anonim
Ανιχνευτής θερμοκρασίας ερήμου σιδηροδρόμου & μετρητής επιβατών
Ανιχνευτής θερμοκρασίας ερήμου σιδηροδρόμου & μετρητής επιβατών

Σκοπός:

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

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

Χαρακτηριστικά:

  • Χρησιμοποιεί το κουμπί για να μετρήσει τους επιβάτες που εισέρχονται στο τρένο
  • Χρησιμοποιεί TMP36 (αισθητήρας θερμοκρασίας) για την ανίχνευση της θερμοκρασίας του σιδηροδρόμου
  • Χρησιμοποιεί μια κόκκινη λυχνία LED για να προειδοποιήσει το σιδηροδρομικό σταθμό
  • Χρησιμοποιεί βομβητές για να ηχήσει συναγερμό
  • Στέλνει ένα email ειδοποίησης με μια γραφική παράσταση θερμοκρασίας έναντι του χρόνου
  • Αναδυόμενα προειδοποιητικά μηνύματα στο MATLAB

Βήμα 1: Υλικά και αναλώσιμα

Υλικά και Προμήθειες
Υλικά και Προμήθειες
  • 1 φορητός υπολογιστής
  • MATLAB 2017
  • Κατεβάστε το Arduino Toolbox
  • Sparkfun RedBoard
  • 1 Καλώδιο τροφοδοσίας
  • Breadbord
  • 14 σύρματα
  • 1 Piezo Buzzer
  • 1 κουμπί
  • 2 αντιστάσεις 10k ohm
  • 1 αισθητήρας TMP36
  • Κόκκινο φως LED
  • 3D εκτυπωμένη πινακίδα (προαιρετικά)

Βήμα 2: Ρύθμιση πίνακα

Ρύθμιση πίνακα
Ρύθμιση πίνακα

Ακολουθήστε την παραπάνω ρύθμιση

Βήμα 3: Γράφοντας τον Κώδικα

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

Χρήση TMP36: Καθορίζουμε τη θερμοκρασία διαβάζοντας την τάση και μετατρέποντάς την σε βαθμούς Φαρενάιτ, χρησιμοποιώντας συντελεστές μετατροπής. Στη συνέχεια, χρησιμοποιούμε μια δήλωση if για αναπαραγωγή ενός ήχου και ήχο/αποστολή ειδοποιήσεων εάν η θερμοκρασία είναι μεγαλύτερη ή ίση με τη ρυθμισμένη μέγιστη θερμοκρασία

Χρήση κουμπιού: Με μια δήλωση if, μπορούμε να δοκιμάσουμε αν το κουμπί πατήθηκε χρησιμοποιώντας το readDigitalPin. Αυτή η εντολή θα επιστρέψει ένα Boolean (1 ή 0). Εάν η απόκριση είναι 0, τότε το κουμπί πατήθηκε και ο μετρητής των επιβατών αυξάνεται και εμφανίζει ένα μήνυμα καλωσορίσματος. Στη συνέχεια, όταν επιτευχθεί η μέγιστη χωρητικότητα, ακούγεται ένα προειδοποιητικό μήνυμα.

Βήμα 4: Αντιγράψτε τον κώδικα

%Εισόδους: Πατώντας το κουμπί, αισθητήρας θερμοκρασίας

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

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

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

configurePin (a, 'D2', 'pullup'); %σε μελλοντικές εκδόσεις χρησιμοποιούν configurePin

χρόνος = 200;

e = 0;

x = 0

ενώ χρόνος> 0

button_status = readDigitalPin (a, 'D2'); % ισούται με μηδέν όταν πατάτε το κουμπί, διαφορετικά ισούται με 1

τάση = readVoltage (a, 'A0');%pin εξαρτάται από το πού το τοποθετούμε

tempCelcius = (τάση*100) -50; %που αναφέρεται στο εγχειρίδιο αισθητήρα

tempF (χρόνος) = (tempCelcius*1.8) +32 %γνωστός τύπος μετατροπής

max = 120; %βαθμοί F

writeDigitalPin (a, 'D11', 1)?

rem = mod (e, 2);

εάν tempF (χρόνος)> = μέγ

writeDigitalPin (a, 'D11', 0)?

writeDigitalPin (a, 'D9', 1)?

playTone (a, 'D9', 2400,.5)

παύση (.5)

writeDigitalPin (a, 'D6', 1)

playTone (a, 'D6', 1000,.5)

παύση (.5)

writeDigitalPin (a, 'D9', 1)?

playTone (a, 'D9', 2400,.5)

παύση (.5)

writeDigitalPin (a, 'D6', 1)

playTone (a, 'D6', 1000,.5) %παίζει "σειρήνα"

z = 'Υπερθέρμανση.m4a'; %Αυτό θέτει το αρχείο ήχου σε μια μεταβλητή

[δεδομένα, συχνότητα] = audioread (z); %Φορτώνει δεδομένα από το αρχείο ήχου

o = audioplayer (δεδομένα, συχνότητα); %Δημιουργεί ένα αντικείμενο για τον έλεγχο της αναπαραγωγής του αρχείου ήχου

o.play () %Παίζει αρχείο ήχου

o.playblocking () %Παίζει το αρχείο και περιμένει να τελειώσει

τέλος

εάν button_status == 0 && rem == 0

e = e+1

msgbox ('Welcome Aboard!');

elseif button_status == 0 && rem == 1

e = e+1

msgbox ('Bienvenido a bordo!');

τέλος

αν e == 5

writeDigitalPin (a, 'D11', 0)?

αν x == 0

playTone (a, 'D6', 600, 1)?

s = 'Warning_EF.m4a'; %Αυτό θέτει το αρχείο ήχου σε μια μεταβλητή

[δεδομένα, συχνότητα] = audioread (s); %Φορτώνει δεδομένα από το αρχείο ήχου

o = audioplayer (δεδομένα, συχνότητα); %Δημιουργεί ένα αντικείμενο για τον έλεγχο της αναπαραγωγής του αρχείου ήχου

% o.play () % Παίζει αρχείο ήχου

o.playblocking () %Παίζει το αρχείο και περιμένει να τελειώσει

msgbox ("Μέγιστη χωρητικότητα")

x = x+1

τέλος

elseif e> = 6

playTone (a, 'D6', 2400, 0)?

τέλος

χρόνος = χρόνος - 1;

% παύση (0,1).

% αν e == 5 && max (tempF)> = 120

% χρόνος = 0

% τέλος

τέλος

ee = num2str (e)

t = [1: 200];

tempF2 = fliplr (tempF);

διάγραμμα (t, tempF2);

τίτλος ('Χρόνος έναντι θερμοκρασίας')

ylabel ("Θερμοκρασία (F)")

xlabel ('Timeρα (ες)')

saveas (gcf, 'tempplot.jpg')

mail = '[email protected]'

password = 'Srsora123#'

host = 'smtp.gmail.com'

setpref ('Internet', 'SMTP_Server', host)?

setpref ('Internet', 'E_mail', mail)?

setpref ('Internet', 'SMTP_Username', mail)?

setpref («Διαδίκτυο», «SMTP_Password», κωδικός πρόσβασης)

props = java.lang. System.getProperties;

props.setProperty ('mail.smtp.auth', 'true');

props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory');

props.setProperty ('mail.smtp.socketFactory.port', '465');

sendmail (mail, 'Hello Train Station! Υπάρχουν τόσοι πολλοί επιβάτες στο τρένο', εε, 'tempplot.jpg')

Βήμα 5: Αποτελέσματα

Συνιστάται: