
Агуулгын хүснэгт:
2025 Зохиолч: John Day | [email protected]. Хамгийн сүүлд өөрчлөгдсөн: 2025-01-23 15:00

Орчин үеийн нийгэмд төмөр замын зорчигчид нэмэгдэх нь төмөр замын компаниуд эрэлт хэрэгцээг хангахын тулд сүлжээг оновчтой болгохын тулд илүү их зүйлийг хийх ёстой гэсэн үг юм. Энэхүү төсөлд бид arduino самбар дээрх температур, борооны ус, чичиргээ мэдрэгч нь зорчигчдын аюулгүй байдлыг нэмэгдүүлэхэд хэрхэн тусалж болохыг бага хэмжээгээр харуулах болно.
Энэхүү зааварчилгаа нь arduino дээрх температур, борооны ус, чичиргээ мэдрэгчүүдийн утсыг алхам алхамаар харуулахаас гадна эдгээр мэдрэгчийг ажиллуулахад шаардлагатай MATLAB кодыг харуулах болно.
Алхам 1: эд анги, материал
1. MATLAB -ийн хамгийн сүүлийн хувилбарыг суулгасан компьютер
2. Arduino самбар
3. Температур мэдрэгч
4. Борооны усны мэдрэгч
5. Чичиргээ мэдрэгч
6. Улаан LED гэрэл
7. Цэнхэр LED гэрэл
8. Ногоон LED гэрэл
9. RBG LED гэрэл
10. Баззер
11. 18 эрэгтэй-эрэгтэй утас
12. 3 эмэгтэй эрэгтэй утас
13. 2 Эмэгтэй-Эмэгтэй утас
14. 6 330 ом эсэргүүцэл
15. 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;
дээж авахХугацаа = 30;
түүвэр хийх Interval = 2; % Температурын заалтын хоорондох секунд
%дээж авах хугацааны векторыг тохируулсан
samplingTimes = 0: samplingInterval: samplelingDuration;
%үргэлжлэх хугацаа, интервал дээр үндэслэн дээжийн тоог тооцоолно
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 % Улаан 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 % Цэнхэр 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 (индекс));
түр зогсоох (түүвэрлэлтийн интервал) %дараагийн саатал хүртэл саатал
Төгсгөл
% Температурын заалтыг төлөвлөх
зураг (1)
талбай (samplepingTimes, tempF, 'r-*')
xlabel ('Цаг (секунд)')
ylabel ('Температур (F)')
гарчиг ('RedBoard -ийн температурын уншилт')
Алхам 3: Температур мэдрэгчийн гаралт


Дээрх нь температур мэдрэгчийн гаралтын утас ба MATLAB код юм.
Энэ төслийн хувьд бид температур мэдрэгчийн гаралтанд гурван LED гэрлийг ашигласан. Хэрэв зам хэт халуун байвал улаан өнгийг, хэт хүйтэн байвал цэнхэр өнгийг, завсар байвал ногоон өнгийг ашигласан.
Алхам 4: Борооны усны мэдрэгчийн оролт


Дээрх нь борооны усны мэдрэгчийн утас бөгөөд MATLAB кодыг доор байрлуулсан болно.
%% усны мэдрэгч
бүгдийг цэвэрлэ, clc
a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');
waterPin = 'A1';
vDry = 4.80; Ус байхгүй үед хүчдэл
дээж авахХугацаа = 60;
түүвэр хийх Interval = 2;
samplingTimes = 0: samplingInterval: samplelingDuration;
numSamples = урт (samplepingTimes);
% Хүчдэлийг тодорхой хугацаанд (60 секунд) унших давталтын хувьд
индексийн хувьд = 1: numSamples
volt2 = readVoltage (a, waterPin); % Усны зүү аналогоос хүчдэлийг уншина уу
Хэрэв ус илэрсэн бол дуугарах дууны дохио. Хүчдэлийн уналт = ус
хэрэв вольт2 <vХуурай
playTone (a, 'D09', 2400) % playTone функц нь MathWorks -ээс
% Ус илэрсэн тохиолдолд зорчигчдод анхааруулга харуулна
waitfor (warningdlg ('Таны галт тэрэг усны аюулаас болж саатаж магадгүй'));
Төгсгөл
% Хүчдэлийг усны мэдрэгчээр хэмжиж харуулна
fprintf (' %d секунд дэх хүчдэл нь %5.4f V. / n',…
samplingTimes (индекс), вольт2);
түр зогсоох (түүвэрлэлтийн интервал)
Төгсгөл
Алхам 5: Борооны усны мэдрэгчийн гаралт

Дээрх нь зам дээр хэт их ус унах бүрт дуугардаг дуугарагчийн утас юм. Буузны кодыг борооны усны оролтын код дотор оруулсан болно.
Алхам 6: Чичиргээ мэдрэгчийн оролт


Дээрх нь чичиргээ мэдрэгчийн утас юм. Чулуулаг зам дээр унасан тохиолдолд чичиргээ мэдрэгч нь төмөр замын системд чухал үүрэг гүйцэтгэдэг. MATLAB кодыг доор байрлуулсан болно.
%% чичиргээ мэдрэгч Бүгдийг цэвэрлэ, clc
PIEZO_PIN = 'A3'; % Чичиргээ мэдрэгчтэй холбогдсон аналог зүүг зарлах a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % Чичиргээний түүвэрлэлтийг хэмжих цаг ба интервалыг эхлүүлэхDuration = 30; % Секундын түүвэрлэлтийн интервал = 1;
samplingTimes = 0: samplingInterval: samplelingDuration;
numSamples = урт (samplingTimes);
% Дараах эх сурвалжаас авсан кодыг ашиглан бид үүнийг асаахын тулд өөрчилсөн
чичиргээ илэрсэн бол % ягаан LED.
% SparkFun Tinker Kit, RGB LED, SparkFun Electronics -ийн бичсэн, % нь Arduino -ийн олон нийтийн туслалцаатайгаар
% Эрик Давишахлын MATLAB -д дасан зохицсон
% RGB зүүг эхлүүлж байна
RED_PIN = 'D5';
GREEN_PIN = 'D6';
BLUE_PIN = 'D7';
% Чичирхийллийн мэдрэгчийн хүчдэлийн өөрчлөлтийг a -ээс дээш бүртгэх давталтын хувьд
% тодорхой хугацааны интервал (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: Чичиргээ мэдрэгчийн гаралт

Дээрх нь RBG LED гэрлийг ашигладаг утас юм. Чичиргээ илрэх үед гэрэл ягаан өнгөтэй болно. Гаралтын MATLAB кодыг оролтын код дотор оруулсан болно.
Алхам 8: Дүгнэлт
Эдгээр бүх алхмуудыг хийсний дараа та одоо температур, борооны ус, чичиргээг илрүүлэх чадвартай ардуинотой байх ёстой. Эдгээр мэдрэгчүүд хэрхэн бага хэмжээгээр ажилладаг болохыг харахад орчин үеийн амьдралд төмөр замын системд ямар чухал ач холбогдолтой болохыг төсөөлөхөд хялбар байдаг!
Зөвлөмж болгож буй:
Урт хугацааны утасгүй температур ба чичиргээ мэдрэгчийг эхлүүлэх нь: 7 алхам

Урт хугацааны утасгүй температур ба чичиргээ мэдрэгчийг эхлүүлэх нь: Заримдаа чичиргээ нь олон програмын ноцтой асуудлын шалтгаан болдог. Машины босоо ам, холхивчоос эхлээд хатуу дискний гүйцэтгэл хүртэлх чичиргээ нь машиныг гэмтээх, эрт солих, гүйцэтгэл муутай болгож, нарийвчлалд ихээхэн цохилт өгдөг. Хяналт хийж байна
Node-RED ашиглан утасгүй чичиргээ ба температур мэдрэгчийн өгөгдлийг MySQL-д ашиглах: 40 алхам

Node-RED ашиглан утасгүй чичиргээ ба температурын мэдрэгчийн өгөгдлийг MySQL-д ашиглах: Утасгүй сүлжээний сүлжээний бүтцийг ашиглан 2 миль хүртэлх зайтай NCD-ийн урт хугацааны IoT үйлдвэрлэлийн утасгүй чичиргээ, температур мэдрэгчийг танилцуулж байна. Нарийвчилсан 16 битийн чичиргээ ба температур мэдрэгчийг агуулсан энэхүү төхөөрөмж нь
Төмөр замыг хэрхэн яаж хийх вэ (шинжлэх ухааны тайлбарласан): 17 алхам

Төмөр замыг хэрхэн яаж хийх вэ (шинжлэх ухаан тайлбарласан): АНХААРУУЛГА: " ЧУХАЛ " Хэрэв та төмөр бууны сайжруулсан хувилбарыг хийхээр шийдсэн бол өөрийгөө гэмтээхгүй, цахилгаанд цохиулахгүйн тулд хийх алхмууд Бүтээсэн: Дункан Ее тойм Төмөр замын бууны тухай ойлголт нь дамжуулагч объектыг хөдөлгөхөөс бүрдэнэ
Суурийг хамгаалахын тулд хэрхэн занга хаалга хийх вэ?: 6 алхам

Хэрхэн баазаа хамгаалахын тулд занга хаалга хийх вэ?
FC-37 борооны мэдрэгчийг Arduino ашиглан хэрхэн ашиглах вэ: 4 алхам (зурагтай)

FC-37 борооны мэдрэгчийг Arduino ашиглан хэрхэн ашиглах вэ: Сайн байна уу! Эхний зааварчилгаа өгөхдөө би ардуиногоор FC-37 борооны мэдрэгчийг хэрхэн ашиглахыг танд үзүүлэх болно. Би arduino нано ашиглаж байгаа боловч бусад хувилбарууд сайн ажиллах болно