Sisukord:

Kõrberaudtee temperatuuri andur ja reisijate loendur: 5 sammu
Kõrberaudtee temperatuuri andur ja reisijate loendur: 5 sammu

Video: Kõrberaudtee temperatuuri andur ja reisijate loendur: 5 sammu

Video: Kõrberaudtee temperatuuri andur ja reisijate loendur: 5 sammu
Video: Zigbee датчик освещенности, температуры и влажности с экраном на электронных чернилах Moes 2024, Juuli
Anonim
Kõrberaudtee temperatuuri andur ja reisijate loendur
Kõrberaudtee temperatuuri andur ja reisijate loendur

Eesmärk:

Temperatuur: see juhend õpetab teile, kuidas seadistada ja programmeerida Arduino RedBoard (kasutades MATLAB -i) raudtee temperatuuri tuvastamiseks. Kui reisijate jaoks on ohtlik temperatuur saavutatud, kõlab hoiatusteade, helisignaalid kustuvad ja süttib hoiatusmärk.

Reisijate loendur: see osa õpetab teile, kuidas kasutada nuppu reisijate lugemiseks ja hoiatada, kui maksimaalne mahutavus on saavutatud.

Funktsioonid:

  • Kasutab nuppu rongi sisenevate reisijate loendamiseks
  • Kasutab raudtee temperatuuri tuvastamiseks TMP36 (temperatuuriandur)
  • Kasutab raudteejaama hoiatamiseks punast LED -tule
  • Kasutab alarmi helisignaale
  • Saadab hoiatusmeili temperatuuri ja aja graafikuga
  • Hüpikakende hoiatusteated MATLABis

Samm: materjalid ja tarvikud

Materjalid ja tarvikud
Materjalid ja tarvikud
  • 1 sülearvuti
  • MATLAB 2017
  • Laadige alla Arduino tööriistakast
  • Sparkfun RedBoard
  • 1 Toitekaabel
  • Breadbord
  • 14 juhtmest
  • 1 Piezo summer
  • 1 Vajutage nuppu
  • 2 10k oomi takistit
  • 1 TMP36 andur
  • Punane LED tuli
  • 3D trükitud märk (valikuline)

2. samm: plaadi seadistamine

Tahvli seadistamine
Tahvli seadistamine

Järgige ülaltoodud seadistust

Samm: koodi kirjutamine

Kui tsükkel: tagamaks, et kood jätkab temperatuuri testimist ja nupu oleku tundmist (vajutatud või mitte vajutatud), asetame koodi määratud aja jooksul while -ahelasse.

TMP36 kasutamine: määrame temperatuuri, lugedes pinget ja teisendades selle Fahrenheiti kraadideks, kasutades teisendustegureid. Seejärel kasutame lauset if, et esitada tooni ja heli/saata märguandeid, kui temperatuur on määratud maksimaalsest temperatuurist kõrgem või sellega võrdne

Nupu kasutamine: lausega if saame kontrollida readDigitalPin abil, kas nuppu vajutati. See käsk tagastab tõeväärtuse (1 või 0). Kui vastus on 0, siis vajutati nuppu ja reisijate loendur suureneb ning kuvab tervitusteate. Seejärel, kui maksimaalne võimsus on saavutatud, kõlab hoiatusteade.

Samm: kopeerige kood

%Sisendid: nupu vajutamine, temperatuuriandur

%Väljundid: tuled, helisignaalid, helimärguanne, e -kirjad, graafikud

Eesmärk: See toode on loodud selleks, et aidata tagada kõrbest rongiga reisivate reisijate ohutus ja mugavus.

%Kasutamine: reisijate arvu tuvastamine nupu abil ja %kuumuse tuvastamine temperatuurianduri abil ja selle graafiku koostamine ning saadab rongijaama nii %reisijate arvu kui ka temperatuuri graafiku

configurePin (a, 'D2', 'pullup'); %kasutab tulevastes väljaannetes konfiguratsiooniPin

aeg = 200;

e = 0;

x = 0

ajal> 0

button_status = readDigitalPin (a, 'D2'); % võrdub nulliga, kui nuppu vajutatakse, vastasel juhul võrdub 1

pinge = readVoltage (a, 'A0');%pin sõltub sellest, kuhu me selle asetame

tempCelcius = (pinge*100) -50; %on antud anduri kasutusjuhendis

tempF (aeg) = (tempCelcius*1,8) +32 %tuntud teisendusvalem

max = 120; %kraadi F.

writeDigitalPin (a, 'D11', 1);

rem = mod (e, 2);

kui tempF (aeg)> = 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) %mängib "sireeni"

z = 'Ülekuumenemine.m4a'; %See paneb helifaili muutujaks

[andmed, sagedus] = helilugemine (z); %Laeb andmeid helifailist

o = audiomängija (andmed, sagedus); %Loob objekti helifaili esitamise juhtimiseks

o.play () %Esitab helifaili

o.playblocking () %Mängib faili ja ootab selle lõppu

lõpp

kui nupu_seis == 0 && rem == 0

e = e+1

msgbox ('Tere tulemast pardale!');

elseif button_status == 0 && rem == 1

e = e+1

msgbox ('Bienvenido a bordo!');

lõpp

kui e == 5

writeDigitalPin (a, 'D11', 0);

kui x == 0

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

s = 'Hoiatus_EF.m4a'; %See paneb helifaili muutujaks

[andmed, sagedused] = helilugemine (d); %Laeb andmeid helifailist

o = audiomängija (andmed, sagedus); %Loob objekti helifaili esitamise juhtimiseks

% o.play () % Esitab helifaili

o.playblocking () %Mängib faili ja ootab selle lõppu

msgbox ('Maksimaalne maht')

x = x+1

lõpp

muidu e> = 6

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

lõpp

aeg = aeg - 1;

% paus (0,1);

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

% aeg = 0

% lõpp

lõpp

ee = num2str (e)

t = [1: 200];

tempF2 = fliplr (tempF);

graafik (t, tempF2);

pealkiri ("Aeg vs temperatuur")

ylabel ('Temperatuur (F)')

xlabel ('Aeg (id)')

saveas (gcf, 'tempplot.jpg')

mail = '[email protected]'

parool = 'Srsora123#'

host = 'smtp.gmail.com'

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

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

setpref ('Internet', 'SMTP_kasutajanimi', post);

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

rekvisiidid = 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 (post, 'Tere raudteejaam! Rongis on nii palju reisijaid', ee, 'tempplot.jpg')

5. samm: tulemused

Soovitan: