Innehållsförteckning:

Desert Railroad Temperature Detector & Passenger Counter: 5 steg
Desert Railroad Temperature Detector & Passenger Counter: 5 steg

Video: Desert Railroad Temperature Detector & Passenger Counter: 5 steg

Video: Desert Railroad Temperature Detector & Passenger Counter: 5 steg
Video: finding a straight guy at pride 🏳️‍🌈👀 2024, Juli
Anonim
Desert Railroad Temperature Detector & Passenger Counter
Desert Railroad Temperature Detector & Passenger Counter

Ändamål:

Temperatur: Den här instruerbara lär dig hur du ställer in och programmerar en Arduino RedBoard (med MATLAB) för att detektera temperaturen på en järnväg. När en osäker temperatur för passagerarna uppnås, hörs ett varningsmeddelande, summer hörs och en varningsskylt tänds.

Passagerarräknare: Den här delen lär dig hur du använder en knapp för att räkna passagerare och avge en varning när maxkapacitet har uppnåtts.

Funktioner:

  • Använder knapp för att räkna upp passagerare som går in i tåg
  • Använder TMP36 (temperaturgivare) för att detektera järnvägens temperatur
  • Använder en röd LED -lampa för att varna tågstationen
  • Använder summer för att larma
  • Skickar ett varningsmeddelande med en diagram över temperatur mot tid
  • Popup-varningsmeddelanden på MATLAB

Steg 1: Material och tillbehör

Material och tillbehör
Material och tillbehör
  • 1 bärbar dator
  • MATLAB 2017
  • Ladda ner Arduino Toolbox
  • Sparkfun RedBoard
  • 1 strömkabel
  • Brödbord
  • 14 ledningar
  • 1 Piezo -summer
  • 1 Tryckknapp
  • 2 10k ohm motstånd
  • 1 TMP36 -sensor
  • Rött LED -ljus
  • 3D -tryckt skylt (tillval)

Steg 2: Board Setup

Board Setup
Board Setup

Följ installationen ovan

Steg 3: Skriva koden

Medan loop: För att säkerställa att koden fortsätter att testa temperaturen och känna av knappstatus (tryckt eller ej tryckt), placerar vi koden i while -loop för en viss tidsperiod.

Använda TMP36: Vi bestämmer temperaturen genom att läsa av spänningen och omvandla den till grader Fahrenheit med hjälp av omvandlingsfaktorer. Sedan använder vi en if -sats för att spela upp en ton och ljud/skicka varningar om temperaturen är högre än eller lika med den inställda maxtemperaturen

Användningsknapp: Med en if -sats kan vi testa om knappen trycktes med readDigitalPin. Detta kommando returnerar en booleskt (1 eller 0). Om svaret är 0, tryckte man på knappen och passagerarens räknare ökar och visar ett välkomstmeddelande. När den maximala kapaciteten uppnås ljuder ett varningsmeddelande.

Steg 4: Kopiera koden

%Ingångar: Tryck på knappen, temperaturgivare

%Utgångar: lampor, summer, ljudvarning, mejl, grafer

%Syfte: Denna produkt är utformad för att säkerställa säkerheten och komforten för %passagerare som reser med tåg genom öknen.

%Användning: Upptäcker antalet passagerare med en tryckknapp, och %detekterar värmen med en temperatursensor och ritar den och skickar både %passagerarnummer och temperaturdiagrammet till tågstationen

configurePin (a, 'D2', 'pullup'); %i framtida versioner använder configurePin

tid = 200;

e = 0;

x = 0

medan tiden> 0

button_status = readDigitalPin (a, 'D2'); % är lika med noll när knappen trycks in, annars är 1

voltage = readVoltage (a, 'A0');%pin beror på var vi placerar den

tempCelcius = (spänning*100) -50; %anges i sensorhandboken

tempF (tid) = (tempCelcius*1,8) +32 %känd omvandlingsformel

max = 120; %grader F

writeDigitalPin (a, 'D11', 1);

rem = mod (e, 2);

om tempF (tid)> = max

writeDigitalPin (a, 'D11', 0);

writeDigitalPin (a, 'D9', 1);

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

paus (.5)

writeDigitalPin (a, 'D6', 1)

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

paus (.5)

writeDigitalPin (a, 'D9', 1);

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

paus (.5)

writeDigitalPin (a, 'D6', 1)

playTone (a, 'D6', 1000,.5) %spelar "siren"

z = 'Överhettning.m4a'; %Detta sätter ljudfilen i en variabel

[data, frekv] = ljudläsning (z); %Läser in data från ljudfilen

o = ljudspelare (data, frekvens); %Skapar ett objekt för att styra uppspelningen av ljudfilen

o.play () %Spelar ljudfil

o.playblocking () %Spelar upp filen och väntar på att den ska slutföras

slutet

if button_status == 0 && rem == 0

e = e+1

msgbox ('Välkommen ombord!');

elseif button_status == 0 && rem == 1

e = e+1

msgbox ('Bienvenido a bordo!');

slutet

om e == 5

writeDigitalPin (a, 'D11', 0);

om x == 0

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

s = 'Varning_EF.m4a'; %Detta sätter ljudfilen i en variabel

[data, frekv] = ljudläsning (er); %Läser in data från ljudfilen

o = ljudspelare (data, frekvens); %Skapar ett objekt för att styra uppspelningen av ljudfilen

% o.play () % Spelar ljudfil

o.playblocking () %Spelar upp filen och väntar på att den ska slutföras

msgbox ('Max kapacitet')

x = x+1

slutet

annarsif e> = 6

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

slutet

tid = tid - 1;

% paus (0,1);

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

% tid = 0

% slutet

slutet

ee = num2str (e)

t = [1: 200];

tempF2 = fliplr (tempF);

plot (t, tempF2);

title ('Time vs. Temperature')

ylabel ('Temperatur (F)')

xlabel ('Tid (ar)')

saveas (gcf, 'tempplot.jpg')

mail = '[email protected]'

password = 'Srsora123#'

host = 'smtp.gmail.com'

setpref ('Internet', 'SMTP_Server', värd);

setpref ('Internet', 'E_mail', e -post);

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

setpref ('Internet', 'SMTP_Password', lösenord);

rekvisita = 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! Det finns så många passagerare i tåget', ee, 'tempplot.jpg')

Steg 5: Resultat

Rekommenderad: