
Სარჩევი:
2025 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2025-01-23 14:50

თანამედროვე საზოგადოებაში სარკინიგზო მგზავრების ზრდა ნიშნავს იმას, რომ სარკინიგზო კომპანიებმა მეტი უნდა გააკეთონ ქსელების ოპტიმიზაციისათვის მოთხოვნის შესაბამისად. ამ პროექტში ჩვენ მცირე მასშტაბით ვაჩვენებთ, თუ როგორ შეუძლია ტემპერატურის, წვიმის წყლის და ვიბრაციის სენსორებს არდუინოს დაფაზე პოტენციურად შეუწყოს ხელი მგზავრების უსაფრთხოების გაზრდას.
ეს ინსტრუქცია ნაბიჯ-ნაბიჯ აჩვენებს არდუინოს ტემპერატურის, წვიმის წყლის და ვიბრაციის სენსორების გაყვანილობას, ასევე აჩვენებს MATLAB კოდს, რომელიც საჭიროა ამ სენსორების გასაშვებად.
ნაბიჯი 1: ნაწილები და მასალები
1. კომპიუტერი დამონტაჟებულია MATLAB- ის უახლესი ვერსიით
2. არდუინოს დაფა
3. ტემპერატურის სენსორი
4. წვიმის წყლის სენსორი
5. ვიბრაციის სენსორი
6. წითელი LED ნათურა
7. ლურჯი LED შუქი
8. მწვანე LED შუქი
9. RBG LED განათება
10. ბუზერი
11. 18 მამრობითი სქესის მავთულები
12. 3 ქალი-მამაკაცი მავთული
13. 2 ქალი-ქალი მავთული
14. 6 330 ოჰმეტიანი რეზისტორები
15. 1 100 ohm რეზისტორი
ნაბიჯი 2: ტემპერატურის სენსორის გაყვანილობა


ზემოთ არის გაყვანილობა და MATLAB კოდი ტემპერატურის სენსორის შეყვანისთვისაც.
მავთულები მიწიდან და 5V მხოლოდ ნეგატიურზე და პოზიტიურზე უნდა გაიაროს, შესაბამისად, ერთხელ მთელი დაფაზე. აქედან გამომდინარე, ნებისმიერი სახმელეთო კავშირი მოდის უარყოფითი სვეტიდან და ნებისმიერი 5V კავშირი პოზიტიური სვეტიდან.
ქვემოთ მოყვანილი კოდის კოპირება და ჩასმა შესაძლებელია ტემპერატურის სენსორისთვის.
%% TEMPERATURE SENSOR % ტემპერატურის სენსორისთვის ჩვენ გამოვიყენეთ შემდეგი წყარო
% EF230 ვებსაიტის მასალა ჩვენი ტემპერატურის სენსორის შესაცვლელად, რაც მომხმარებელს საშუალებას მისცემს
% შეყვანა და 3 LED სინათლის გამოსავალი გრაფიკით.
ესკიზი დაიწერა SparkFun Electronics– ის მიერ, Arduino საზოგადოების დიდი დახმარებით.
%მორგებულია MATLAB– ზე ერიკ დავიშაჰლის მიერ.
%ეწვიეთ https://learn.sparkfun.com/products/2 SIK ინფორმაციისთვის.
გაწმინდე ყველაფერი, clc
tempPin = 'A0'; % სენსორთან დაკავშირებული ანალოგური პინის გამოცხადება
a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno');
განსაზღვრეთ ანონიმური ფუნქცია, რომელიც გარდაქმნის ძაბვას ტემპერატურაზე
tempCfromVolts = @(ვოლტი) (ვოლტი -0.5)*100;
samplingDuration = 30;
samplingInterval = 2; წამი ტემპერატურის მაჩვენებლებს შორის
%შეიქმნა შერჩევის დროის ვექტორი
samplingTimes = 0: samplingInterval: samplingDuration;
%გამოთვალეთ ნიმუშების რაოდენობა ხანგრძლივობისა და ინტერვალის საფუძველზე
numSamples = სიგრძე (samplingTimes);
%წინასწარი გამოყოფის temp ცვლადები და ცვლადი რაოდენობის წაკითხვის იგი ინახავს
tempC = ნულოვანი (numSamples, 1);
tempF = tempC;
% შეყვანის დიალოგური ფანჯრის გამოყენებით მაქსიმალური და მინიმალური სარკინიგზო ტემპერატურის შესანახად
dlg_prompts = {'შეიყვანეთ მაქსიმალური ტემპერატურა', 'შეიყვანეთ მინიმალური ტემპი'};
dlg_title = 'რკინიგზის ტემპერატურის ინტერვალი';
N = 22;
dlg_ans = inputdlg (dlg_prompts, dlg_title, [1, სიგრძე (dlg_title)+N]);
% მომხმარებლისგან შეყვანის შენახვა და ჩვენების ჩაწერა
max_temp = str2 ორმაგი (dlg_ans {1})
min_temp = str2 ორჯერადი (dlg_ans {2})
txt = sprintf ("თქვენი შეყვანა ჩაწერილია");
h = msgbox (txt);
ლოდინი (თ);
მარყუჟისათვის ტემპერატურის რამდენჯერმე წაკითხვა.
ინდექსისთვის = 1: numSamples
წაიკითხეთ ძაბვა tempPin– ზე და შეინახეთ ცვლადი ვოლტის სახით
ვოლტი = readVoltage (a, tempPin);
tempC (ინდექსი) = tempCfromVolts (ვოლტი);
tempF (ინდექსი) = tempC (ინდექსი)*9/5+32; გადაიყვანეთ ცელსიუსიდან ფარენჰეიტში
თუ განცხადებები, რათა კონკრეტული LED განათება მოციმციმე დამოკიდებულია რომელი პირობა აკმაყოფილებს
თუ tempF (ინდექსი)> = max_temp % წითელი LED
writeDigitalPin (a, 'D13', 0);
პაუზა (0.5);
writeDigitalPin (a, 'D13', 1);
პაუზა (0.5);
writeDigitalPin (a, 'D13', 0);
elseif tempF (ინდექსი)> = min_temp && tempF (ინდექსი) <max_temp % მწვანე LED
writeDigitalPin (a, 'D11', 0);
პაუზა (0.5);
writeDigitalPin (a, 'D11', 1);
პაუზა (0.5);
writeDigitalPin (a, 'D11', 0);
elseif tempF (ინდექსი) <= 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)
ნაკვეთი (შერჩევის დრო, tempF, 'r-*')
xlabel ("დრო (წამი)")
ylabel ('ტემპერატურა (F)')
სათაური ('ტემპერატურის მაჩვენებლები წითელი დაფიდან')
ნაბიჯი 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); წაკითხვის ძაბვის წყლის pin ანალოგი
თუ განაცხადი ჟღერს Buzzer თუ წყალი გამოვლინდა. ძაბვის ვარდნა = წყალი
თუ volt2 <v მშრალი
playTone (a, 'D09', 2400) % playTone ფუნქცია MathWorks– დან
აჩვენეთ გაფრთხილება მგზავრებს წყლის აღმოჩენის შემთხვევაში
waitfor (warndlg ("თქვენი მატარებელი შეიძლება შეფერხდეს წყლის საფრთხეების გამო");
დასასრული
ჩვენება ძაბვის როგორც ეს იზომება წყლის სენსორი
fprintf ('ძაბვა %d წამში არის %5.4f V. / n',…
შერჩევის დრო (ინდექსი), ვოლტი 2);
პაუზა (შერჩევის ინტერვალი)
დასასრული
ნაბიჯი 5: წვიმის წყლის სენსორის გამომუშავება

ზემოთ არის ზუზერის გაყვანილობა, რომელიც ყვირის, როდესაც ძალიან ბევრი წყალი ეცემა ტრასაზე. ზუზერის კოდი ჩასმულია წვიმის წყლის შეყვანის კოდში.
ნაბიჯი 6: ვიბრაციის სენსორის შეყვანა


ზემოთ არის ვიბრაციის სენსორის გაყვანილობა. ვიბრაციის სენსორები შეიძლება მნიშვნელოვანი იყოს სარკინიგზო სისტემებისთვის ქანების დაცემის შემთხვევაში. MATLAB კოდი განთავსებულია ქვემოთ.
%% ვიბრაციის სენსორი გასაგებია ყველაფერი, clc
PIEZO_PIN = 'A3'; % ვიბრაციის სენსორთან დაკავშირებული ანალოგური პინის გამოცხადება a = arduino ('/dev/tty.usbserial-DA017PNO', 'uno'); % ვიბრაციის შერჩევის დროისა და ინტერვალის ინიციალიზაცია ხანგრძლივობა = 30; % წამი 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';
იყიდება მარყუჟის ჩაწერა ძაბვის ცვლილებები ვიბრაციის სენსორი მეტი a
% კონკრეტული დროის ინტერვალი (30 წამი)
ინდექსისთვის = 1: numSamples
volt3 = readVoltage (a, PIEZO_PIN);
თუ განცხადება ჩართოთ purple LED თუ ვიბრაცია არის გამოვლენილი
თუ ვოლტ 3> 0.025
writeDigitalPin (a, RED_PIN, 1);
იისფერი შუქის შექმნა
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 1);
else გამორთეთ LED თუ ვიბრაცია არ არის გამოვლენილი.
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
დასასრული
ჩვენება ძაბვის როგორც იზომება.
fprintf ('ძაბვა %d წამში არის %5.4f V. / n',…
შერჩევის დრო (ინდექსი), ვოლტ 3);
პაუზა (შერჩევის ინტერვალი)
დასასრული
შეწყვიტე შუქი ვიბრაციის გაზომვისას
writeDigitalPin (a, RED_PIN, 0);
writeDigitalPin (a, GREEN_PIN, 0);
writeDigitalPin (a, BLUE_PIN, 0);
ნაბიჯი 7: ვიბრაციის სენსორის გამომავალი

ზემოთ არის გამოყენებული RBG LED შუქის გაყვანილობა. ვიბრაციების გამოვლენისას სინათლე იასამნისფრად ანათებს. გამომავალი MATLAB კოდი ჩამონტაჟებულია შეყვანის კოდში.
ნაბიჯი 8: დასკვნა
ყველა ამ ნაბიჯის შემდეგ თქვენ უნდა გქონდეთ არდუინო, ტემპერატურის, წვიმის წყლის და ვიბრაციების გამოვლენის უნარით. მიუხედავად იმისა, თუ როგორ მუშაობს ეს სენსორები მცირე მასშტაბით, ადვილი წარმოსადგენია, თუ რამდენად სასიცოცხლო მნიშვნელობის იქნებოდა ისინი თანამედროვე ცხოვრებაში სარკინიგზო სისტემებისთვის!
გირჩევთ:
წვიმის დეტექტორი არდუინოს და წვიმის წვეთის სენსორის გამოყენებით: 8 ნაბიჯი

წვიმის დეტექტორი არდუინოს და წვიმის სენსორის გამოყენებით: ამ გაკვეთილში ჩვენ ვისწავლით თუ როგორ ამოვიცნოთ წვიმა წვიმის სენსორის გამოყენებით და გამოვიღოთ ხმა ბუზერის მოდულის და OLED ეკრანისა და ვიზუინოს გამოყენებით. ნახეთ ვიდეო
ტემპერატურის სენსორების ტესტირება - რომელია ჩემთვის?: 15 ნაბიჯი (სურათებით)

ტემპერატურის სენსორების ტესტირება - რომელია ჩემთვის ?: ერთ -ერთი პირველი სენსორი, რომლის შემოწმებაც ფიზიკურ გამოთვლებს უნდათ, არის ტემპერატურის გაზომვა. ოთხი ყველაზე პოპულარული სენსორია TMP36, რომელსაც აქვს ანალოგური გამომავალი და სჭირდება ციფრული ციფრული გადამყვანის ანალოგი, DS18B20, რაც
სამოქალაქო ინფრასტრუქტურის სტრუქტურული ჯანმრთელობის მონიტორინგი უკაბელო ვიბრაციის სენსორების გამოყენებით: 8 ნაბიჯი

სამოქალაქო ინფრასტრუქტურის სტრუქტურული ჯანმრთელობის მონიტორინგი უკაბელო ვიბრაციის სენსორების გამოყენებით: ძველი შენობის და სამოქალაქო ინფრასტრუქტურის გაუარესებამ შეიძლება გამოიწვიოს ფატალური და საშიში მდგომარეობა. ამ სტრუქტურების მუდმივი მონიტორინგი სავალდებულოა. სტრუქტურული ჯანმრთელობის მონიტორინგი არის უაღრესად მნიშვნელოვანი მეთოდოლოგია შეფასებისათვის
ულტრაბგერითი წვიმის წყლის ავზის მოცულობა: 10 ნაბიჯი (სურათებით)

ულტრაბგერითი წვიმის წყლის სატანკო ტევადობის საზომი: თუ თქვენ ხართ ჩემნაირი და გაქვთ ცოტაოდენი გარემოსდაცვითი სინდისი (ან უბრალოდ კანის ნაკეცები ხართ, რომელთაც სურთ დაზოგონ რამდენიმე დოლარი - რაც მეც ვარ …), შეიძლება გქონდეთ წვიმის წყლის ავზი. მე მაქვს ტანკი, რომ მოვიგროლო საკმაოდ იშვიათი წვიმა, რომელსაც ჩვენ ვიღებთ
წვიმის წყლის ნაკადი: 11 ნაბიჯი (სურათებით)

წვიმის წყლის ნაკადი: ძლიერმა წვიმამ შეიძლება გამოიწვიოს წყალდიდობა ჩვენს ზედაპირზე: ტროტუარები, წვიმის წყლის ჭაბურღილები, პოლდერები და ჩვენი დიკები. ამის თავიდან ასაცილებლად, ჩვენ გამოვიგონეთ წვიმის წყალი! წვიმის წყლის ნაკადი ციფრულად ითვლის მანძილს წვიმას შორის