Мазмуну:

Темир жолдорду коргоо үчүн Arduinoдо температура, жамгыр суусу жана дирилдөө сенсорлорун колдонуу: 8 кадам (сүрөттөр менен)
Темир жолдорду коргоо үчүн Arduinoдо температура, жамгыр суусу жана дирилдөө сенсорлорун колдонуу: 8 кадам (сүрөттөр менен)

Video: Темир жолдорду коргоо үчүн Arduinoдо температура, жамгыр суусу жана дирилдөө сенсорлорун колдонуу: 8 кадам (сүрөттөр менен)

Video: Темир жолдорду коргоо үчүн Arduinoдо температура, жамгыр суусу жана дирилдөө сенсорлорун колдонуу: 8 кадам (сүрөттөр менен)
Video: Локоны на утюжок |Прическа на каждый день |На короткие волосы | Hair tutorial |Short hair Hairstyle 2024, Июль
Anonim
Темир жолдорду коргоо үчүн Arduinoдогу температура, жамгыр суусу жана дирилдөө сенсорлорун колдонуу
Темир жолдорду коргоо үчүн Arduinoдогу температура, жамгыр суусу жана дирилдөө сенсорлорун колдонуу

Заманбап коомдо темир жолчулардын көбөйүшү темир жол компаниялары суроо-талапты канааттандыруу үчүн тармактарды оптималдаштыруу үчүн көбүрөөк аракет кылышы керек дегенди билдирет. Бул долбоордо биз кичинекей масштабда ардуино тактасындагы температура, жамгыр суусу жана дирилдөө сенсорлору жүргүнчүлөрдүн коопсуздугун жогорулатууга кандайча жардам берерин көрсөтөбүз.

Бул Instructable этап-этабы менен ардуинодогу температуранын, жамгырдын жана дирилдөө сенсорлорунун зымдарын көрсөтөт, ошондой эле бул сенсорлорду иштетүү үчүн керектүү MATLAB кодун көрсөтөт.

1 -кадам: Бөлүктөр жана материалдар

1. MATLABнын акыркы версиясы орнотулган компьютер

2. Arduino Board

3. Температура сенсору

4. Жамгыр суусу сенсору

5. Дирилдөө сенсору

6. Кызыл LED жарык

7. Blue LED Light

8. Жашыл LED жарык

9. RBG LED Light

10. Зумзер

11. 18 Эркек-Эркек зымдары

12. 3 Аял-Эркек зымдары

13. 2 Аял-Аял зымдары

14. 6 330 омдук резисторлор

15. 1 100 омдук резистор

2 -кадам: Температура сенсорунун зымдары

Температура сенсорунун зымдары
Температура сенсорунун зымдары
Температура сенсорунун зымдары
Температура сенсорунун зымдары

Жогоруда температура сенсорун киргизүү үчүн өткөргүчтөр жана MATLAB коду бар.

Жерден жана 5Вдан келген зымдар бүтүндөй такта үчүн бир жолу терс жана позитивдүү болуш керек. Мындан ары, бардык жердеги туташуулар терс мамычадан жана 5В туташуулары оң колонкадан келет.

Төмөндөгү кодду температура сенсоруна көчүрүү жана чаптоо мүмкүн.

%% TEMPERATURE SENSOR % Температура сенсору үчүн биз төмөнкү булакты колдондук

% EF230 веб -сайтынын материалдары колдонуучуга уруксат берүү үчүн биздин температура сенсорун өзгөртөт

% киргизүү жана 3 LED жарыгы график менен.

%Бул эскиз SparkFun Electronics тарабынан жазылган, %Arduino коомчулугунун көп жардамы менен.

%Эрик Давишахл тарабынан MATLABка ылайыкташтырылган.

%SIK маалыматы үчүн https://learn.sparkfun.com/products/2 дарегине баш багыңыз.

баарын тазалоо, clc

tempPin = 'A0'; % Температура сенсоруна туташкан аналогдук пинди жарыялоо

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

% Чыңалууну температурага айландыруучу анонимдүү функцияны аныктаңыз

tempCfromVolts = @(вольт) (вольт-0,5)*100;

samplingDuration = 30;

samplingInterval = 2; % Температуранын көрсөткүчтөрүнүн ортосунда секундалар

%үлгүсүн алуу векторун орнотту

samplingTimes = 0: samplingInterval: samplingDuration;

%узактыгына жана интервалына жараша үлгүлөрдүн санын эсептейт

numSamples = узундугу (samplingTimes);

%сактай турган окуулардын саны үчүн температуранын өзгөрмөлөрүн жана өзгөрмөлөрүн алдын ала бөлүштүрөт

tempC = нөлдөр (numSamples, 1);

tempF = tempC;

% темир жолдун максималдуу жана минималдуу температураларын сактоо үчүн киргизүү диалог кутусун колдонуу

dlg_prompts = {'Макс темпти киргизиңиз', 'Мин Темпти киргизиңиз}};

dlg_title = 'Темир жол температурасынын интервалдары';

N = 22;

dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, узундук (dlg_title)+N]);

% Колдонуучунун кириштерин сактоо жана киргизүү жазылганын көрсөтүү

max_temp = str2double (dlg_ans {1})

min_temp = str2double (dlg_ans {2})

txt = sprintf ('Сиздин киргизилгениңиз жазылды');

h = msgbox (txt);

күтүү (h);

% Температураны белгилүү бир жолу окуу үчүн цикл үчүн.

индекс = 1 үчүн: numSamples

% TempPinдеги чыңалууну окуп, өзгөрмө вольт катары сактаңыз

вольт = readVoltage (a, tempPin);

tempC (индекс) = tempCfromVolts (вольт);

tempF (индекс) = tempC (индекс)*9/5+32; % Цельсийден Фаренгейтке которуу

% Кайсы шарт аткарылганына жараша конкреттүү LED чырактарын жасоо боюнча билдирүүлөр

if tempF (index)> = max_temp % Red LED

writeDigitalPin (a, 'D13', 0);

тыным (0,5);

writeDigitalPin (a, 'D13', 1);

тыным (0,5);

writeDigitalPin (a, 'D13', 0);

elseif tempF (index)> = min_temp && tempF (index) <max_temp % Green LED

writeDigitalPin (a, 'D11', 0);

тыным (0,5);

writeDigitalPin (a, 'D11', 1);

тыным (0,5);

writeDigitalPin (a, 'D11', 0);

elseif tempF (index) <= min_temp % Blue LED

writeDigitalPin (a, 'D12', 0);

тыным (0,5);

writeDigitalPin (a, 'D12', 1);

тыным (0,5);

writeDigitalPin (a, 'D12', 0);

аяктоо

% Температураны алар өлчөнгөндөй көрсөтүү

fprintf (' %d секундадагы температура %5.2f C же %5.2f F. / n',…

samplingTimes (индекс), tempC (индекс), tempF (индекс));

пауза (samplingInterval) %кечиктирүү кийинки үлгүгө чейин

аяктоо

% Температуранын көрсөткүчтөрүн пландаштыруу

сүрөт (1)

сюжет (samplingTimes, tempF, 'r-*')

xlabel ('Убакыт (секунд)')

ylabel ('Температура (F)')

аталышы ('RedBoardдун Температура Окуулары')

3 -кадам: Температура сенсорунун чыгышы

Температура сенсорунун чыгышы
Температура сенсорунун чыгышы
Температура сенсорунун чыгышы
Температура сенсорунун чыгышы

Жогоруда температура сенсорунун чыгышы үчүн өткөргүчтөр жана MATLAB коду көрсөтүлгөн.

Бул долбоор үчүн биз температура сенсорубуздун чыгышы үчүн үч LED чырак колдондук. Биз тректер өтө ысык болсо, кызыл, эгер өтө муздак болсо көк, экөөнүн ортосунда жашыл түстү колдонгонбуз.

4 -кадам: Жамгыр суусу сенсорунун кириши

Жамгыр суу сенсорунун кириши
Жамгыр суу сенсорунун кириши
Жамгыр суусу сенсорунун кириши
Жамгыр суусу сенсорунун кириши

Жогоруда жамгыр суу сенсорунун зымдары бар жана MATLAB коду төмөндө жайгаштырылган.

%% Суу сенсору

баарын тазалоо, clc

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

waterPin = 'A1';

vDry = 4.80; % Суу жок болгондо чыңалуу

samplingDuration = 60;

samplingInterval = 2;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = узундугу (samplingTimes);

Белгилүү бир убакытка (60 секунд) чыңалууну окуу үчүн цикл үчүн

индекс = 1 үчүн: numSamples

volt2 = readVoltage (a, waterPin); % Суу пин аналогунан чыңалууну окуу

% Эгерде суу табылса, коңгуроо кагуу үчүн билдирүү. Чыңалуу төмөндөшү = суу

Эгерде volt2 <vDry

playTone (a, 'D09', 2400) % playTone функциясы MathWorksтон

% Суу аныкталса, жүргүнчүлөргө эскертүү көрсөтүү

waitfor (warningdlg ('Сиздин поезд суу коркунучунан улам кармалып калышы мүмкүн'));

аяктоо

% Чыңалууну суу сенсору менен өлчөгүлө

fprintf (' %d секунддагы чыңалуу %5.4f V. / n',…

samplingTimes (индекс), вольт2);

пауза (үлгү алуу аралыгы)

аяктоо

5 -кадам: Жамгыр суусу сенсорунун чыгышы

Жамгыр суусу сенсорунун чыгышы
Жамгыр суусу сенсорунун чыгышы

Жогоруда трекке суу өтө көп түшкөндө сигнал бере турган сигналдын зымдары бар. Коңгуроонун коду жамгыр суусун киргизүү кодунун ичине камтылган.

6 -кадам: Vibration Sensor Input

Vibration Sensor Input
Vibration Sensor Input
Vibration Sensor Input
Vibration Sensor Input

Жогоруда титирөө сенсорунун зымдары бар. Вибрация сенсорлору темир жол системалары үчүн рокко таш түшкөн учурда маанилүү болушу мүмкүн. MATLAB коду төмөндө жайгаштырылган.

%% Vibration Sensor Бардыгын тазалоо, clc

PIEZO_PIN = 'A3'; % Вибрация сенсоруна туташкан аналогдук пин жарыялоо a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Вибрация үлгүлөрүн өлчөө үчүн убакытты жана интервалды баштооDuration = 30; % Seconds samplingInterval = 1;

samplingTimes = 0: samplingInterval: samplingDuration;

numSamples = узундугу (samplingTimes);

% Төмөнкү булактын кодун колдонуп, биз аны күйгүзүү үчүн өзгөрттүк

Вибрация аныкталса % кочкул кызыл LED.

% SparkFun Tinker Kit, RGB LED, SparkFun Electronics тарабынан жазылган, % Arduino коомчулугунун көп жардамы менен

% Эрик Давишахл тарабынан MATLABка ылайыкташтырылган

% RGB пин орнотуу

RED_PIN = 'D5';

GREEN_PIN = 'D6';

BLUE_PIN = 'D7';

% Виркуляция сенсорунан чыңалуу өзгөрүүлөрүн жазуу үчүн

% белгилүү убакыт аралыгы (30 секунд)

индекс = 1 үчүн: numSamples

volt3 = readVoltage (a, PIEZO_PIN);

% Эгерде дирилдөө аныкталса, кызгылт көк LEDди күйгүзүү үчүн билдирүү

эгерде вольт3> 0,025

writeDigitalPin (a, RED_PIN, 1);

% Кызгылт көк жарыкты жаратуу

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 1);

башка % Эгерде дирилдөө аныкталбаса, LEDди өчүрүңүз.

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

аяктоо

% Чыңалууну өлчөнгөндөй көрсөтүү.

fprintf (' %d секунддагы чыңалуу %5.4f V. / n',…

samplingTimes (индекс), вольт3);

пауза (үлгү алуу аралыгы)

аяктоо

% Дирилдөөнү өлчөөдө жарыкты өчүрүү жасалат

writeDigitalPin (a, RED_PIN, 0);

writeDigitalPin (a, GREEN_PIN, 0);

writeDigitalPin (a, BLUE_PIN, 0);

7 -кадам: Vibration Sensor Output

Vibration Sensor Output
Vibration Sensor Output

Жогоруда RBG LED жарыгынын зымдары колдонулат. Вибрация аныкталганда жарык кызгылт көк түскө боёлот. Чыгуу үчүн MATLAB коду киргизүү кодунун ичине камтылган.

8 -кадам: Жыйынтык

Бул кадамдардын бардыгын аткаргандан кийин, азыр температураны, жамгырдын суусун жана дирилдөөнү аныктоо жөндөмүнө ээ болгон ардуино болушуңуз керек. Бул сенсорлордун кичинекей масштабда кантип иштээрин көрүп жатып, алардын азыркы жашоодо темир жол системалары үчүн канчалык маанилүү экенин элестетүү оңой!

Сунушталууда: