Inhoudsopgave:

Desert Railroad temperatuurdetector & passagiersteller - Ajarnpa
Desert Railroad temperatuurdetector & passagiersteller - Ajarnpa

Video: Desert Railroad temperatuurdetector & passagiersteller - Ajarnpa

Video: Desert Railroad temperatuurdetector & passagiersteller - Ajarnpa
Video: ИСЧЕЗНЕННЫЕ - Загадки с историей 2024, Juli-
Anonim
Desert Railroad Temperatuur Detector & Passagiersteller
Desert Railroad Temperatuur Detector & Passagiersteller

Doel:

Temperatuur: deze instructable leert je hoe je een Arduino RedBoard (met MATLAB) instelt en programmeert om de temperatuur van een spoorweg te detecteren. Wanneer een onveilige temperatuur voor de passagiers wordt bereikt, klinkt er een waarschuwingsbericht, gaan de zoemers af en gaat er een waarschuwingsbord branden.

Passagiersteller: in dit gedeelte leert u hoe u een knop kunt gebruiken om passagiers te tellen en een waarschuwing te laten klinken wanneer de maximale capaciteit is bereikt.

Functies:

  • Gebruikt de knop om passagiers te tellen die de trein binnenkomen
  • Gebruikt TMP36 (temperatuursensor) om de temperatuur van de spoorweg te detecteren
  • Gebruikt een rood LED-lampje om het treinstation te waarschuwen
  • Gebruikt zoemers om alarm te slaan
  • Stuurt een waarschuwingse-mail met een grafiek van temperatuur versus tijd
  • Pop-up waarschuwingsberichten op MATLAB

Stap 1: Materialen en benodigdheden

Materialen en benodigdheden
Materialen en benodigdheden
  • 1 laptop
  • MATLAB 2017
  • Arduino Toolbox downloaden
  • Sparkfun RedBoard
  • 1 stroomkabel
  • broodbord
  • 14 draden
  • 1 piëzo-zoemer
  • 1 drukknop
  • 2 weerstanden van 10k ohm
  • 1 TMP36-sensor
  • Rood LED-licht
  • 3D geprint bord (optioneel)

Stap 2: Board-configuratie

Bordconfiguratie
Bordconfiguratie

Volg de instellingen hierboven

Stap 3: De code schrijven

While-lus: om ervoor te zorgen dat de code de temperatuur blijft testen en de status van de knop (ingedrukt of niet ingedrukt), plaatsen we de code gedurende een bepaalde tijd in de while-lus.

TMP36 gebruiken: We bepalen de temperatuur door de spanning af te lezen en deze om te rekenen naar graden Fahrenheit, met behulp van conversiefactoren. Vervolgens gebruiken we een if-statement om een toon af te spelen en een geluid te geven/waarschuwingen te sturen als de temperatuur hoger is dan of gelijk is aan de ingestelde maximale temperatuur

Knop gebruiken: Met een if-statement kunnen we testen of de knop is ingedrukt met readDigitalPin. Deze opdracht retourneert een Booleaanse waarde (1 of 0). Als de respons 0 is, is de knop ingedrukt en loopt de teller van passagiers op en wordt een welkomstbericht weergegeven. Wanneer de maximale capaciteit is bereikt, klinkt er een waarschuwingsbericht.

Stap 4: Kopieer de code

%Ingangen: Druk op de knop, temperatuursensor

%Uitgangen: lichten, zoemers, audiowaarschuwing, e-mails, grafieken

Doel: Dit product is ontworpen om de veiligheid en het comfort van passagiers die met de trein door de woestijn reizen te helpen verzekeren.

%Gebruik: Detectie van het aantal passagiers met behulp van een drukknop, en %detectie van de warmte met behulp van een temperatuursensor en grafiek en verzendt zowel % passagiersnummers als de temperatuurgrafiek naar het treinstation

configurePin(a, 'D2', 'pullup'); %gebruik in toekomstige releases configurePin

tijd = 200;

e=0;

x=0

terwijl tijd > 0

button_status = readDigitalPin(a, 'D2'); % is gelijk aan nul wanneer de knop wordt ingedrukt, anders is gelijk aan 1

voltage = readVoltage (a, 'A0');% pin hangt af van waar we het plaatsen

tempCelcius = (spanning*100)-50; % gegeven in sensorhandleiding

tempF(time) = (tempCelcius*1.8)+32 % bekende conversieformule

maximaal = 120; % graden F

writeDigitalPin(a, 'D11', 1);

rem=mod(e, 2);

if tempF(tijd)>=max

writeDigitalPin(a, 'D11', 0);

writeDigitalPin(a, 'D9', 1);

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

pauze (.5)

schrijfDigitalPin(a, 'D6', 1)

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

pauze (.5)

writeDigitalPin(a, 'D9', 1);

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

pauze (.5)

schrijfDigitalPin(a, 'D6', 1)

playTone(a, 'D6', 1000,.5) %speelt "sirene"

z='Oververhitting.m4a'; %Dit plaatst het geluidsbestand in een variabele

[data, freq]=audioread(z); %Laadt gegevens uit geluidsbestand

o=audiospeler(data, freq); %Maakt een object om het afspelen van het audiobestand te regelen

o.play() %Speelt audiobestand af

o.playblocking() %Speelt bestand af en wacht tot het klaar is

einde

if button_status == 0 && rem==0

e=e+1

msgbox('Welkom aan boord!');

elseif button_status == 0 && rem==1

e=e+1

msgbox('Bienvenido a bordo!');

einde

als e==5

writeDigitalPin(a, 'D11', 0);

als x==0

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

s='Waarschuwing_EF.m4a'; %Dit plaatst het geluidsbestand in een variabele

[data, freq]=audioread(s); %Laadt gegevens uit geluidsbestand

o=audiospeler(data, freq); %Maakt een object om het afspelen van het audiobestand te regelen

% o.play() %Speelt audiobestand af

o.playblocking() %Speelt bestand af en wacht tot het klaar is

msgbox('Maximale capaciteit')

x=x+1

einde

andersif e>=6

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

einde

tijd = tijd - 1;

% pauze(0.1);

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

% tijd=0

% einde

einde

ee=getal2str(e)

t=[1:200];

tempF2=fliplr(tempF);

plot(t, tempF2);

title('Tijd versus temperatuur')

ylabel('Temperatuur(F)')

xlabel('Tijd(en)')

saveas(gcf, 'tempplot.jpg')

mail= '[email protected]'

wachtwoord='Srsora123#'

host='smtp.gmail.com'

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

setpref('Internet', 'E-mail', mail);

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

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

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 Treinstation! Er zitten zoveel passagiers in de trein', ee, 'tempplot.jpg')

Stap 5: Resultaten

Aanbevolen: