Turinys:

Temperatūros, lietaus vandens ir vibracijos jutiklių naudojimas „Arduino“geležinkeliams apsaugoti: 8 žingsniai (su nuotraukomis)
Temperatūros, lietaus vandens ir vibracijos jutiklių naudojimas „Arduino“geležinkeliams apsaugoti: 8 žingsniai (su nuotraukomis)

Video: Temperatūros, lietaus vandens ir vibracijos jutiklių naudojimas „Arduino“geležinkeliams apsaugoti: 8 žingsniai (su nuotraukomis)

Video: Temperatūros, lietaus vandens ir vibracijos jutiklių naudojimas „Arduino“geležinkeliams apsaugoti: 8 žingsniai (su nuotraukomis)
Video: Building The World's First MANUAL Dodge DEMON! | PT 2 2024, Liepa
Anonim
Temperatūros, lietaus vandens ir vibracijos jutiklių naudojimas „Arduino“geležinkeliams apsaugoti
Temperatūros, lietaus vandens ir vibracijos jutiklių naudojimas „Arduino“geležinkeliams apsaugoti

Šiuolaikinėje visuomenėje geležinkelio keleivių skaičiaus padidėjimas reiškia, kad geležinkelio įmonės turi daugiau stengtis optimizuoti tinklus, kad neatsiliktų nuo paklausos. Šiame projekte nedideliu mastu parodysime, kaip temperatūros, lietaus vandens ir vibracijos jutikliai arduino plokštėje gali padėti padidinti keleivių saugumą.

Ši instrukcija žingsnis po žingsnio parodys „arduino“temperatūros, lietaus vandens ir vibracijos jutiklių laidus, taip pat parodys MATLAB kodą, reikalingą šiems jutikliams paleisti.

1 žingsnis: dalys ir medžiagos

1. Kompiuteris, kuriame įdiegta naujausia MATLAB versija

2. „Arduino“lenta

3. Temperatūros jutiklis

4. Lietaus vandens jutiklis

5. Vibracijos jutiklis

6. Raudona LED lemputė

7. Mėlyna LED lemputė

8. Žalia LED lemputė

9. RBG LED lemputė

10. Garsinis signalas

11. 18 vyrų ir vyrų laidai

12. 3 Moterų-vyrų laidai

13. 2 Moterų-moterų laidai

14. 6 330 omų rezistoriai

15. 1 100 omų rezistorius

2 žingsnis: Temperatūros jutiklio prijungimas

Temperatūros jutiklio laidai
Temperatūros jutiklio laidai
Temperatūros jutiklio laidai
Temperatūros jutiklio laidai

Viršuje taip pat yra temperatūros jutiklio įvesties laidai ir MATLAB kodas.

Įžeminimo ir 5 V laidai tik vieną kartą turi būti sujungti į neigiamą ir teigiamą visos plokštės. Nuo šiol visos įžeminimo jungtys bus iš neigiamo stulpelio, o visos 5 V jungtys - iš teigiamo stulpelio.

Žemiau esantį kodą galima nukopijuoti ir įklijuoti temperatūros jutikliui.

%% TEMPERATŪROS JUTIKLIS % Temperatūros jutikliui kartu naudojome šį šaltinį

% EF230 svetainės medžiaga, skirta modifikuoti mūsų temperatūros jutiklį, kad vartotojas galėtų

% įvesties ir 3 LED šviesos išėjimai su grafiku.

Šį eskizą parašė „SparkFun Electronics“, %su daug pagalbos iš „Arduino“bendruomenės.

%MATLAB pritaikė Ericas Davishahlas.

%SIK informacijos rasite apsilankę

išvalyk viską, kl

tempPin = 'A0'; % Analoginio kaiščio, prijungto prie temperatūros jutiklio, deklaravimas

a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');

% Apibrėžkite anoniminę funkciją, kuri įtampą paverčia temperatūra

tempCfromVolts = @(voltai) (voltai-0,5)*100;

mėginių ėmimo trukmė = 30;

samplingInterval = 2; % Sekundžių tarp temperatūros rodmenų

%nustatytas mėginių ėmimo laiko vektorius

samplingTimes = 0: samplingInterval: samplingDuration;

%apskaičiuoja mėginių skaičių pagal trukmę ir intervalą

numSamples = ilgis (samplingTimes);

%iš anksto paskirstyti temp kintamuosius ir rodmenų, kuriuos jis išsaugos, kintamąjį

tempC = nuliai (numSamples, 1);

tempF = tempC;

% naudojant įvesties dialogo langą, kad būtų išsaugota maksimali ir minimali bėgių temperatūra

dlg_prompts = {'Enter Max Temp', 'Enter Min Temp'};

dlg_title = 'Geležinkelio temperatūros intervalai';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, ilgis (dlg_title)+N]);

% Vartotojo įvesties išsaugojimas ir įvesties rodymas

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Jūsų įvestis buvo įrašyta');

h = „msgbox“(txt);

laukti (h);

% Norėdami ciklas nuskaityti temperatūrą tam tikrą skaičių kartų.

indeksui = 1: numSamples

% Perskaitykite „tempPin“įtampą ir saugokite kaip kintamus voltus

voltai = skaitytiVoltage (a, tempPin);

tempC (indeksas) = tempCfromVolts (voltai);

tempF (indeksas) = tempC (indeksas)*9/5+32; % Konvertuoti iš Celsijaus į Farenheitą

% Jei teiginiai, skirti tam tikroms LED lemputėms mirksėti, priklauso nuo to, kuri sąlyga įvykdyta

jei tempF (indeksas)> = max_temp % Raudonas šviesos diodas

writeDigitalPin (a, 'D13', 0);

pauzė (0,5);

writeDigitalPin (a, 'D13', 1);

pauzė (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (indeksas)> = min_temp && tempF (indeksas) <max_temp % žalias šviesos diodas

writeDigitalPin (a, 'D11', 0);

pauzė (0,5);

writeDigitalPin (a, 'D11', 1);

pauzė (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (indeksas) <= min_temp % Mėlynas šviesos diodas

writeDigitalPin (a, 'D12', 0);

pauzė (0,5);

writeDigitalPin (a, 'D12', 1);

pauzė (0,5);

writeDigitalPin (a, 'D12', 0);

galas

% Rodyti matuojamas temperatūras

fprintf ('Temperatūra %d sekundžių yra %5.2f C arba %5.2f F. / n',…

samplingTimes (indeksas), tempC (indeksas), tempF (indeksas));

pauzė (samplingInterval) %vėlavimas iki kito mėginio

galas

% Temperatūros rodmenų brėžimas

figūra 1)

grafikas (mėginių ėmimo laikas, tempF, „r-*“)

xlabel ('Laikas (sekundės)')

ylabel („Temperatūra (F)“)

pavadinimas („„ RedBoard “temperatūros rodmenys“)

3 žingsnis: temperatūros jutiklio išėjimas

Temperatūros jutiklio išėjimas
Temperatūros jutiklio išėjimas
Temperatūros jutiklio išėjimas
Temperatūros jutiklio išėjimas

Viršuje yra temperatūros jutiklio išvesties laidai ir MATLAB kodas.

Šiam projektui temperatūros jutiklio išėjimui panaudojome tris LED lemputes. Mes naudojome raudoną, jei takeliai buvo per karšti, mėlyną, jei jie buvo per šalti, ir žalią, jei jie buvo tarp jų.

4 žingsnis: lietaus vandens jutiklio įvestis

Lietaus vandens jutiklio įvestis
Lietaus vandens jutiklio įvestis
Lietaus vandens jutiklio įvestis
Lietaus vandens jutiklio įvestis

Viršuje yra lietaus vandens jutiklio laidai, o MATLAB kodas yra paskelbtas žemiau.

%% Vandens jutiklis

išvalyk viską, kl

a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');

waterPin = 'A1';

vDry = 4,80; % Įtampa, kai nėra vandens

mėginių ėmimo trukmė = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = ilgis (samplingTimes);

% Kad ciklas nuskaitytų įtampą tam tikrą laiką (60 sekundžių)

indeksui = 1: numSamples

volt2 = skaitymo įtampa (a, waterPin); % Skaityti įtampą iš vandens kaiščio analogo

% Jei sakoma, kad garsinis signalas skamba, jei aptinkamas vanduo. Įtampos kritimas = vanduo

jei volt2 <vsausas

playTone (a, 'D09', 2400) % playTone funkcija iš MathWorks

% Rodyti įspėjimą keleiviams, jei aptinkamas vanduo

waitfor (warndlg („Jūsų traukinys gali vėluoti dėl vandens pavojų“));

galas

% Rodyti įtampą, kurią matuoja vandens jutiklis

fprintf ('Įtampa %d sekundėje yra %5.4f V. / n',…

samplingTimes (indeksas), volt2);

pauzė (atrankos intervalas)

galas

5 žingsnis: Lietaus vandens jutiklio išėjimas

Lietaus vandens jutiklio išėjimas
Lietaus vandens jutiklio išėjimas

Viršuje yra garsinio signalo laidas, kuris pypteli, kai į taką patenka per daug vandens. Signalizacijos kodas yra įterptas į lietaus vandens įvesties kodą.

6 žingsnis: vibracijos jutiklio įvestis

Vibracijos jutiklio įvestis
Vibracijos jutiklio įvestis
Vibracijos jutiklio įvestis
Vibracijos jutiklio įvestis

Viršuje yra vibracijos jutiklio laidai. Vibracijos jutikliai gali būti svarbūs geležinkelio sistemoms, kai ant bėgių krenta akmenys. MATLAB kodas yra paskelbtas žemiau.

%% Vibracijos jutiklisAšvalyti viską, clc

PIEZO_PIN = 'A3'; % Analoginio kaiščio, prijungto prie vibracijos jutiklio, deklaravimas a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Laiko ir intervalo inicijavimas vibracijos mėginių ėmimui matuotiDuration = 30; % Sekundžių atrankaIntervalas = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = ilgis (samplingTimes);

% Naudodami kodą iš šio šaltinio, mes jį pakeitėme, kad įjungtume

% violetinis šviesos diodas, jei aptinkama vibracija.

% „SparkFun Tinker Kit“, RGB LED, parašytas „SparkFun Electronics“, % su daug pagalbos iš „Arduino“bendruomenės

% MATLAB pritaikė Ericas Davishahlas

% Inicijuojamas RGB kaištis

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Kad ciklas įrašytų įtampos pokyčius iš vibracijos jutiklio per a

% konkretaus laiko intervalo (30 sekundžių)

indeksui = 1: numSamples

volt3 = skaitymo įtampa (a, PIEZO_PIN);

% Jei teiginys įjungia violetinį šviesos diodą, jei aptinkama vibracija

jei volt3> 0,025

writeDigitalPin (a, RED_PIN, 1);

Purpurinės šviesos sukūrimas

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

else % Išjunkite šviesos diodą, jei vibracija neaptinkama.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

galas

% Rodyti matuojamą įtampą.

fprintf ('Įtampa %d sekundėje yra %5.4f V. / n',…

samplingTimes (indeksas), volt3);

pauzė (atrankos intervalas)

galas

% Išjunkite šviesą matuojant vibracijas

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

7 žingsnis: Vibracijos jutiklio išėjimas

Vibracijos jutiklio išėjimas
Vibracijos jutiklio išėjimas

Viršuje yra naudojamos RBG LED lempos laidai. Kai aptinkama vibracija, lemputė švytės purpurine spalva. Išvesties MATLAB kodas yra įterptas į įvesties kodą.

8 žingsnis: Išvada

Atlikę visus šiuos veiksmus, dabar turėtumėte turėti arduino, galintį aptikti temperatūrą, lietaus vandenį ir vibracijas. Žiūrint, kaip šie jutikliai veikia nedideliu mastu, nesunku įsivaizduoti, kokie jie gali būti gyvybiškai svarbūs geležinkelio sistemoms šiuolaikiniame gyvenime!

Rekomenduojamas: