Inhaltsverzeichnis:

Desert Railroad Temperaturdetektor & Fahrgastzähler - Gunook
Desert Railroad Temperaturdetektor & Fahrgastzähler - Gunook

Video: Desert Railroad Temperaturdetektor & Fahrgastzähler - Gunook

Video: Desert Railroad Temperaturdetektor & Fahrgastzähler - Gunook
Video: Thermite welding process for joiningrailway tracks #indian #railway #welding 2024, November
Anonim
Desert Railroad Temperaturdetektor & Fahrgastzähler
Desert Railroad Temperaturdetektor & Fahrgastzähler

Zweck:

Temperatur: Diese Anleitung zeigt Ihnen, wie Sie ein Arduino RedBoard (mit MATLAB) einrichten und programmieren, um die Temperatur einer Eisenbahn zu erkennen. Wenn eine für die Passagiere unsichere Temperatur erreicht wird, ertönt eine Warnmeldung, Summer ertönt und ein Warnschild leuchtet auf.

Passagierzähler: In diesem Abschnitt lernen Sie, wie Sie eine Taste verwenden, um Passagiere zu zählen und eine Warnung auszulösen, wenn die maximale Kapazität erreicht ist.

Merkmale:

  • Verwendet die Taste, um Passagiere zu zählen, die in den Zug einsteigen
  • Verwendet TMP36 (Temperatursensor), um die Temperatur der Eisenbahn zu erkennen
  • Verwendet ein rotes LED-Licht, um den Bahnhof zu warnen
  • Verwendet Summer, um Alarm auszulösen
  • Versendet eine Warn-E-Mail mit einer Temperatur-Zeit-Darstellung
  • Popup-Warnmeldungen auf MATLAB

Schritt 1: Materialien und Zubehör

Materialien und Zubehör
Materialien und Zubehör
  • 1 Laptop
  • MATLAB 2017
  • Arduino Toolbox herunterladen
  • Sparkfun RedBoard
  • 1 Stromkabel
  • Steckbrett
  • 14 Drähte
  • 1 Piezo-Summer
  • 1 Drucktaste
  • 2 10k Ohm Widerstände
  • 1 TMP36-Sensor
  • Rotes LED-Licht
  • 3D-gedrucktes Schild (optional)

Schritt 2: Board-Setup

Board-Setup
Board-Setup

Folgen Sie der Einrichtung oben

Schritt 3: Schreiben des Codes

While-Schleife: Um sicherzustellen, dass der Code weiterhin die Temperatur testet und den Tastenstatus (gedrückt oder nicht gedrückt) erfasst, platzieren wir den Code für einen bestimmten Zeitraum in der while-Schleife.

Mit TMP36: Wir bestimmen die Temperatur, indem wir die Spannung ablesen und mit Umrechnungsfaktoren in Grad Fahrenheit umrechnen. Dann verwenden wir eine if-Anweisung, um einen Ton abzuspielen und Warnungen zu ertönen/zu senden, wenn die Temperatur größer oder gleich der eingestellten maximalen Temperatur ist

Button verwenden: Mit einer if-Anweisung können wir testen, ob der Button mit readDigitalPin gedrückt wurde. Dieser Befehl gibt einen Booleschen Wert (1 oder 0) zurück. Ist die Antwort 0, wurde die Taste gedrückt und der Fahrgastzähler erhöht sich und zeigt eine Willkommensnachricht an. Wenn die maximale Kapazität erreicht ist, ertönt eine Warnmeldung.

Schritt 4: Kopieren Sie den Code

%Eingänge: Knopfdruck, Temperatursensor

%Ausgänge: Lichter, Summer, Audioalarm, E-Mails, Grafiken

%Zweck: Dieses Produkt wurde entwickelt, um die Sicherheit und den Komfort von Passagieren, die mit dem Zug durch die Wüste reisen, zu gewährleisten.

%Nutzung: Erfassen der Anzahl der Fahrgäste mit einem Druckknopf und %Erfassen der Wärme mit einem Temperatursensor und grafische Darstellung und sendet sowohl %Fahrgastzahlen als auch die Temperaturkurve an den Bahnhof

configurePin(a, 'D2', 'Pullup'); %in zukünftigen Versionen verwenden Sie configurePin

Zeit = 200;

e=0;

x=0

solange Zeit > 0

button_status = readDigitalPin(a, 'D2'); % gleich Null, wenn die Taste gedrückt wird, sonst gleich 1

Spannung = readVoltage(a, 'A0'); %pin hängt davon ab, wo wir es platzieren

tempCelcius = (Spannung*100)-50; % im Sensorhandbuch angegeben

tempF(Zeit) = (tempCelcius*1.8)+32 % bekannte Umrechnungsformel

max = 120; %grad F

writeDigitalPin(a, 'D11', 1);

rem=mod(e, 2);

wenn tempF(Zeit)>=max

writeDigitalPin(a, 'D11', 0);

writeDigitalPin(a, 'D9', 1);

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

Pause(.5)

writeDigitalPin(a, 'D6', 1)

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

Pause(.5)

writeDigitalPin(a, 'D9', 1);

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

Pause(.5)

writeDigitalPin(a, 'D6', 1)

playTone(a, 'D6', 1000,.5) %spielt "Sirene"

z='Überhitzung.m4a'; %Dies legt die Sounddatei in eine Variable

[data, freq]=audioread(z); % Lädt Daten aus der Sounddatei

o=Audioplayer (Daten, Freq); %Erzeugt ein Objekt, um die Wiedergabe der Audiodatei zu steuern

o.play() %Spielt Audiodatei ab

o.playblocking() %Spielt die Datei ab und wartet, bis sie fertig ist

Ende

if button_status == 0 && rem==0

e=e+1

msgbox('Willkommen an Bord!');

elseif button_status == 0 && rem==1

e=e+1

msgbox('Bienvenido a bordo!');

Ende

wenn e==5

writeDigitalPin(a, 'D11', 0);

wenn x==0

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

s='Warnung_EF.m4a'; %Dies legt die Sounddatei in eine Variable

[data, freq]=audioread(s); %Ladet Daten aus der Sounddatei

o=Audioplayer (Daten, Freq); %Erzeugt ein Objekt, um die Wiedergabe der Audiodatei zu steuern

% o.play() %Spielt Audiodatei ab

o.playblocking() %Spielt die Datei ab und wartet, bis sie fertig ist

msgbox('Max. Kapazität')

x=x+1

Ende

sonst e>=6

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

Ende

Zeit = Zeit - 1;

% Pause (0,1);

% wenn e==5 && max(tempF)>=120

% Zeit=0

% Ende

Ende

ee=num2str(e)

t = [1:200];

tempF2=fliplr(tempF);

Plot(t, tempF2);

title('Zeit vs. Temperatur')

ylabel('Temperatur(F)')

xlabel('Zeit(en)')

saveas(gcf, 'tempplot.jpg')

mail= '[email protected]'

Passwort='Srsora123#'

host='smtp.gmail.com'

setpref('Internet', 'SMTP_Server', Host);

setpref('Internet', 'E_Mail', Mail);

setpref('Internet', 'SMTP_Benutzername', mail);

setpref('Internet', 'SMTP_Password', Passwort);

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, 'Hallo Bahnhof! Es sind so viele Fahrgäste im Zug', ee, 'tempplot.jpg')

Schritt 5: Ergebnisse

Empfohlen: