Სარჩევი:

ტემპერატურის, წვიმის წყლის და ვიბრაციის სენსორების გამოყენება არდუინოში რკინიგზის დასაცავად: 8 ნაბიჯი (სურათებით)
ტემპერატურის, წვიმის წყლის და ვიბრაციის სენსორების გამოყენება არდუინოში რკინიგზის დასაცავად: 8 ნაბიჯი (სურათებით)

ვიდეო: ტემპერატურის, წვიმის წყლის და ვიბრაციის სენსორების გამოყენება არდუინოში რკინიგზის დასაცავად: 8 ნაბიჯი (სურათებით)

ვიდეო: ტემპერატურის, წვიმის წყლის და ვიბრაციის სენსორების გამოყენება არდუინოში რკინიგზის დასაცავად: 8 ნაბიჯი (სურათებით)
ვიდეო: გადაცემათა კოლოფის საეჭვო სიმპტომები 2024, ივლისი
Anonim
ტემპერატურის, წვიმის წყლის და ვიბრაციის სენსორების გამოყენება არდუინოში რკინიგზის დასაცავად
ტემპერატურის, წვიმის წყლის და ვიბრაციის სენსორების გამოყენება არდუინოში რკინიგზის დასაცავად

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

ეს ინსტრუქცია ნაბიჯ-ნაბიჯ აჩვენებს არდუინოს ტემპერატურის, წვიმის წყლის და ვიბრაციის სენსორების გაყვანილობას, ასევე აჩვენებს 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: დასკვნა

ყველა ამ ნაბიჯის შემდეგ თქვენ უნდა გქონდეთ არდუინო, ტემპერატურის, წვიმის წყლის და ვიბრაციების გამოვლენის უნარით. მიუხედავად იმისა, თუ როგორ მუშაობს ეს სენსორები მცირე მასშტაბით, ადვილი წარმოსადგენია, თუ რამდენად სასიცოცხლო მნიშვნელობის იქნებოდა ისინი თანამედროვე ცხოვრებაში სარკინიგზო სისტემებისთვის!

გირჩევთ: