Სარჩევი:
- ნაბიჯი 1: ნაწილები და მასალები
- ნაბიჯი 2: კონფიგურაცია
- ნაბიჯი 3: კოდი და ლოგიკა
- ნაბიჯი 4: საბოლოო ნაბიჯი
ვიდეო: ჭკვიანი მატარებლის სისტემა: 4 ნაბიჯი
2024 ავტორი: John Day | [email protected]. ბოლოს შეცვლილი: 2024-01-30 10:18
შექმნილია უსაფრთხოების გაზრდის, უბედური შემთხვევების თავიდან ასაცილებლად და პოზიტიური და პროდუქტიული რეაგირების გასაადვილებლად, თუ უბედური შემთხვევა მოხდება.
ნაბიჯი 1: ნაწილები და მასალები
ზემოთ მოყვანილი სურათები მოთავსებულია ნაწილების ჩამონათვალის მიხედვით:
ნაწილების სია
1) ერთი ჟოლო PI 3 - მოდელი B
2) ერთი პურის დაფა
3) კაბელები (ზემოდან ქვემოდან) - ერთი დენის, ერთი Ethernet, ერთი ადაპტერი
4) ერთი სერვო ძრავა
5) ერთი 3D დაბეჭდილი რკინიგზის კარიბჭე
6) ორი LED (სასურველია წითელი და მწვანე)
7) ერთი დაჭერის ღილაკი
8) ათი მხტუნავი მავთული
9) ოთხი რეზისტორი
10) ლეპტოპი ან სამუშაო მაგიდა MATLAB– ით
ნაბიჯი 2: კონფიგურაცია
ზემოთ მოცემულია კონფიგურაციის სურათები მრავალი კუთხიდან:
პინების ადგილები (მცირე ზომის ასო, რასაც მოჰყვება რიგის ნომერი) ქვემოთ ჩამოთვლილია მიმდინარე ნაკადის მიხედვით.
მავთულები:
j19 to i47
j8 to b50
b5 სერვოზე
c6 სერვოსკენ
b7 სერვისზე
a13 to j7
a17 LED- მდე
LED დან a37
e40 to j20
j53 to j18
j7 LED- მდე
LED to j6
ღილაკი:
e54 to h51
რეზისტორები:
d40 დან b37
c50 დან d54
i51 to j47
ნაბიჯი 3: კოდი და ლოგიკა
ჩვენი მატარებლის სისტემის მიზანია უსაფრთხოების გაზრდა და რკინიგზის გადასასვლელებზე პოტენციურად სასიკვდილო ავარიების რისკის შემცირება. ამ მიზნის მისაღწევად, ჩვენს სისტემას აქვს მძღოლების მატარებლის გაფრთხილების სისტემა, ფიზიკური ბარიერი, რომელიც იშლება მანქანების ბილიკზე გადასვლის თავიდან ასაცილებლად და სარეზერვო გადაუდებელი ღილაკი დირიჟორისთვის, რომ დააჭიროს ადრეული გაფრთხილების სისტემას.
GUI დირიჟორის ოპერაციული სისტემა:
GUI, რომელიც ნაჩვენებია ზემოთ, შეიქმნა კონდუქტორის გამოყენებისათვის, რადგან ისინი მატარებელს მართავენ ბილიკის იმ უბნებში, სადაც მანქანების მოძრაობაა რკინიგზის გადასასვლელი.
ზედა მარჯვენა კუთხეში არის შუქი, რომელიც აცნობებს გამტარს, თუ მომავალი რკინიგზის გადასასვლელი კარი დახურულია და საშუალებას აძლევს დირიჟორს გახსნას ან დახუროს კარიბჭე საჭიროების შემთხვევაში. ამის ქვემოთ ნაჩვენებია კამერების მატარებელი, რომელსაც მატარებელი გადის. ქვედა მარცხენა კუთხეში, მატარებლის ადგილმდებარეობა განუწყვეტლივ არის გამოსახული გრაფიკზე და გრაფის ქვემოთ, მითითებულია მატარებლის მიერ ერთი დღის განმავლობაში შესრულებული წრეების რაოდენობა. პოზიციის დიაგრამის ზემოთ, არის გადაუდებელი ღილაკი და სტატუსის განცხადება. ეს საშუალებას აძლევს კონდუქტორს სიგნალი გაუწიოს საგანგებო სიტუაციას, თუ ტრასაზე არის მანქანა ან უსაფრთხოების კარიბჭე არ მუშაობს სწორად.
კოდი:
classdef micro <matlab.apps. AppBase % თვისებები, რომლებიც შეესაბამება აპლიკაციის კომპონენტებს
თვისებები (წვდომა = საჯარო)
UIFigure matlab.ui. Figure
RailwaygatestatusLampLabel matlab.ui.control. Label
gateLamp matlab.ui.control. Lamp
OpenGateButton matlab.ui.control. Button
CloseGateButton matlab.ui.control. Button
UIAxes matlab.ui.control. UIAxes
EmergencyButtonStatusLampLabel matlab.ui.control. Label
EmergencyButtonStatusLamp matlab.ui.control. Lamp
არაჩვეულებრივი პირობები ლეიბლი matlab.ui.control. Label
UIAxes2 matlab.ui.control. UIAxes
EF230Group6Label matlab.ui.control. Label
IanAllishKellyBondIanDaffronLabel matlab.ui.control. Label
LoopsCompletedLabel matlab.ui.control. Label
ეტიკეტი matlab.ui.control. Label
დასასრული
თვისებები (წვდომა = პირადი)
მრიცხველი int16
დასასრული
მეთოდები (წვდომა = საჯარო)
ფუნქციის ქრონომეტრი დარეკვა (აპლიკაცია, src, მოვლენა)
app. Temp. Text = int2str (app.counter);
app.counter = app.counter + 1;
%იძახებს პროგრამის საჭირო ყველა ცვლადს - - - - - - - - - - - - - -
გლობალური rpi
გლობალური ს
გლობალური ღია
გლობალური დახურვა
გლობალური კამერა
გლობალური მ
გლობალური ems
გლობალური t_count
%------------------------- მატარებლის მკლავის განყოფილება --------------------- ---------
თუ გახსნილია == 0
writePosition (s, 50)
app.gateLamp. Color = 'მწვანე';
დასასრული
თუ ახლოს == 0
writePosition (s, 120)
app.gateLamp. Color = 'წითელი';
დასასრული
%---------------------- კამერის საშუალებით მოძრაობის ამოცნობა -----------------------
მართალია
img = სურათი (კამერა);
სურათი (img);
აპლიკაცია. UIAxes (drawnow)
დასასრული
%---------------------- მკლავი გახსნა/დახურვა ----------------------- --------------
თუ readDigitalPin (rpi, 20)> 1 %კითხულობს პინ 17 -ს (ღილაკს) და ამოწმებს სიგნალს
for i = 40:.5: 150 %ამაღლებს ხიდს
writePosition (s, i)
დასასრული
for i = 1:10 %მარყუჟები აციმციმებს წითელ შუქს x ბევრჯერ
writeDigitalPin (rpi, 13, 1)
პაუზა (.5)
writeDigitalPin (rpi, 13, 0)
პაუზა (.5)
დასასრული
writePosition (s, 50)%put gate down
დასასრული
%-------------------- მობილური ტელეფონის მხარდაჭერა/ნაკვეთი ------------------------ -
მ. აჩქარების სენსორი ჩართულია = 1
მ. ჩაწერა = 1
მონაცემები = ნული (200, 1); %intialize მონაცემები მოძრავი ნაკვეთი
ფიგურა (აპლიკაცია. UIAxes2)
p = ნაკვეთი (მონაცემები)
ღერძი ([xbounda, ybounds])
პაუზა (1)
ტიკ
ხოლო toc <30 %მუშაობს 30 წამის განმავლობაში
[a, ~] = დამატება (მ);
თუ სიგრძე (a)> 200
მონაცემები = a (დასასრული-199: დასასრული, 3);
სხვა
მონაცემები (1: სიგრძე (ა)) = ა (:, 3);
დასასრული
%გადაწერო ნაკვეთი
გვ. მონაცემები = მონაცემები;
დნოუ
დასასრული
%------------------ პიქსელის უეცარი შეცვლა -------------------------------- ------
x1 = img; % კითხულობს pi- ს კამერას
red_mean = საშუალო (საშუალო (x1 (:,:, 1))); % კითხულობს წითელი პიქსელების საშუალო რაოდენობას
green_mean = საშუალო (საშუალო (x1 (:,,, 2))); % კითხულობს მწვანე პიქსელების საშუალო რაოდენობას
blue_mean = საშუალო (საშუალო (x1 (:,,, 3))); % კითხულობს ცისფერი პიქსელების საშუალო რაოდენობას
თუ red_mean> 150 && green_mean> 150 && blue_mean> 150
t_count = t_count + 1;
დასასრული
app. LoopsCompletedLabel. Text = num2str (t_count)
%------------------ ღილაკი EMS პროგრამირება ---------------------------- ---
configurePin (rpi, 12, 'DigitalOutput'); %ადგენს led pin, pin 16, როგორც გამომავალს
configurePin (rpi, 16, 'DigitalInput'); %ადგენს ღილაკის პინს, პინ 24, შეყვანის სახით
buttonPressed = readDigitalPin (rpi, 16); % კითხულობს ღილაკის დაჭერის მნიშვნელობას პინ 16 -ზე
თუ ღილაკიპრესილი == 1
ხოლო ღილაკი დაჭერილი == 1
writeDigitalPin (rpi, 12, 1)
buttonunPressed = ჩაწერეთDigitalPin (rpi, 12, 0); %
დასასრული % მთავრდება 'while buttonPressed == 1' მარყუჟში
დასასრული
writeDigitalPin (rpi, 16, 0) %აყენებს led- ს გამორთვას, როდესაც ღილაკს აღარ დააჭერთ setpref ('ინტერნეტი', 'SMTP_Server', 'smtp.gmail.com'); setpref ('ინტერნეტი', 'E_mail', '[email protected]'); % ფოსტის ანგარიში გაგზავნის setpref- დან ("ინტერნეტი", "SMTP_Username", "[email protected]"); % გამგზავნის მომხმარებლის სახელი setpref ("ინტერნეტი", "SMTP_Password", "efgroup6"); გამგზავნის პაროლი
props = java.lang. System.getProperties;
props.setProperty ('mail.smtp.auth', 'true'); props.setProperty ('mail.smtp.socketFactory.class', 'javax.net.ssl. SSLSocketFactory'); props.setProperty ('mail.smtp.socketFactory.port', '465');
sendmail ('[email protected] ',' გადაუდებელი მდგომარეობა! ',' დირიჟორმა გაააქტიურა ხელით გადართვის გადამრთველი, ითხოვს დაუყოვნებლივ რეაგირებას! ')
app. UndernormalconditionsLabel. Text = ems
დასასრული
დასასრული
%app. Label_4. Text = num2str (curr_temp);
მეთოდები (წვდომა = პირადი)
კოდი, რომელიც სრულდება კომპონენტის შექმნის შემდეგ
ფუნქციის გაშვება Fcn (აპლიკაცია)
%---------- ამ ფუნქციისათვის საჭირო ყველა ცვლადი --------------------
გლობალური rpi %arduino
rpi = raspi ('169.254.0.2', 'pi', 'ჟოლო');
გლობალური s %servo
s = servo (rpi, 17, 'MinPulseDuration', 5e-4, 'MaxPulseDuration', 2.5e-3);
გლობალური ღია
გახსნა = 1;
გლობალური დაიხურა
დაიხურა = 1;
გლობალური კამერა
კამერა = კამერა (rpi);
გლობალური მ
m = mobiledev;
გლობალური ems
ems = 'დაფიქსირდა საგანგებო მდგომარეობა, რომელიც აცნობებს EMS- ს';
გლობალური t_count
t_count = 0;
%პაროლის კონექტორი არის EFGroup6
% ტაიმერის ფუნქცია მარყუჟისთვის --------------------------------
app.counter = 0;
t = ტაიმერი (…
'TimerFcn', @app.timerCallback,…
'StartDelay', 1,… 'პერიოდი', 1,…
'ExecutionMode', 'fixedSpacing',…
'TasksToExecute', inf);
დაწყება (t);
დასასრული
% Callback ფუნქცია
ფუნქცია ManualOverrideSwitchValueChanged (აპლიკაცია, ღონისძიება)
დასასრული
ღილაკმა აიძულა ფუნქცია: OpenGateButton
ფუნქცია OpenGateButtonPushed (აპლიკაცია, ღონისძიება)
გლობალური დახურვა
დახურვა = 0;
დასასრული
ღილაკმა აიძულა ფუნქცია: CloseGateButton
ფუნქცია CloseGateButtonPushed (აპლიკაცია, ღონისძიება)
გლობალური ღია
გახსნა = 0;
დასასრული
დასასრული
აპლიკაციის ინიციალიზაცია და მშენებლობა
მეთოდები (წვდომა = პირადი)
შექმენით UIFigure და კომპონენტები
ფუნქცია createComponents (აპლიკაცია)
შექმენით UIFigure
app. UIFigure = uifigure;
app. UIFigure. Position = [100 100 640 480];
app. UIFigure. Name = 'ინტერფეისის ფიგურა';
შექმენით RailwaygatestatusLampLabel
app. RailwaygatestatusLampLabel = uilabel (app. UIFigure);
app. RailwaygatestatusLampLabel. HorizontalAlignment = 'მარჯვნივ'; app. RailwaygatestatusLampLabel. Position = [464 422 110 22]; app. RailwaygatestatusLampLabel. Text = 'რკინიგზის კარიბჭის სტატუსი';
შექმნა gateLamp
app.gateLamp = uilamp (app. UIFigure);
app.gateLamp. Position = [589 422 20 20];
app.gateLamp. Color = [0.9412 0.9412 0.9412];
შექმენით OpenGateButton
app. OpenGateButton = uibutton (app. UIFigure, 'ბიძგი');
app. OpenGateButton. ButtonPushedFcn = createCallbackFcn (აპლიკაცია, @OpenGateButtonPushed, ჭეშმარიტი); app. OpenGateButton. Position = [474 359 100 22];
app. OpenGateButton. Text = 'გახსენით კარიბჭე';
შექმენით CloseGateButton
app. CloseGateButton = uibutton (app. UIFigure, 'ბიძგი');
app. CloseGateButton. ButtonPushedFcn = createCallbackFcn (აპლიკაცია, @CloseGateButtonPushed, ჭეშმარიტი); app. CloseGateButton. Position = [474 285 100 22];
app. CloseGateButton. Text = 'დახურე კარიბჭე';
შექმნა UIAxes
app. UIAxes = uiaxes (app. UIFigure);
სათაური (აპლიკაცია. UIAxes, 'Camera Feed')
app. UIAxes. Position = [341 43 300 185];
% შექმნა EmergencyButtonStatusLampLabel
app. EmergencyButtonStatusLampLabel = uilabel (app. UIFigure); app. EmergencyButtonStatusLampLabel. HorizontalAlignment = 'მარჯვნივ'; app. EmergencyButtonStatusLampLabel. Position = [97 323 142 22]; app. EmergencyButtonStatusLampLabel. Text = 'გადაუდებელი ღილაკის სტატუსი';
შექმენით EmergencyButtonStatusLamp
app. EmergencyButtonStatusLamp = uilamp (app. UIFigure); app. EmergencyButtonStatusLamp. Position = [254 323 20 20];
შექმნა UndernormalconditionsLabel
app. UndernormalconditionsLabel = uilabel (app. UIFigure);
app. UndernormalconditionsLabel. Position = [108 285 248 22];
app. UndernormalconditionsLabel. Text = 'ნორმალურ პირობებში';
შექმნა UIAxes2
app. UIAxes2 = უიაქსები (app. UIFigure);
სათაური (აპლიკაცია. UIAxes2, "მატარებლის პოზიცია")
xlabel (აპლიკაცია. UIAxes2, 'X Position')
ylabel (აპლიკაცია. UIAxes2, 'Y Position')
app. UIAxes2. Box = 'ჩართული';
app. UIAxes2. XGrid = 'ჩართული';
app. UIAxes2. YGrid = 'ჩართული';
app. UIAxes2. პოზიცია = [18 43 300 185];
შექმენით EF230Group6Label
app. EF230Group6Label = uilabel (app. UIFigure);
app. EF230Group6Label. HorizontalAlignment = 'ცენტრი';
app. EF230Group6Label. FontSize = 28;
app. EF230Group6Label. FontWeight = 'თამამი';
app. EF230Group6Label. Position = [-4 401 379 64];
app. EF230Group6Label. Text = 'EF 230 ჯგუფი 6';
შექმენით IanAllishKellyBondIanDaffronLabel
app. IanAllishKellyBondIanDaffronLabel = uilabel (app. UIFigure); app. IanAllishKellyBondIanDaffronLabel. Position = [94 380 184 22]; app. IanAllishKellyBondIanDaffronLabel. Text = 'იან ალლიში, კელი ბონდი, იან დაფრონი';
შექმნა LoopsCompletedLabel
app. LoopsCompletedLabel = uilabel (app. UIFigure);
app. LoopsCompletedLabel. Position = [18 10 103 22];
app. LoopsCompletedLabel. Text = 'მარყუჟები დასრულებულია:';
ლეიბლის შექმნა
app. Label = uilabel (app. UIFigure);
app. Label. Position = [120 10 178 22];
app. Label. Text = '####';
დასასრული
დასასრული
მეთოდები (წვდომა = საჯარო)
% ააშენე აპლიკაცია
ფუნქციის აპლიკაცია = მიკრო
კომპონენტების შექმნა და კონფიგურაცია
კომპონენტების შექმნა (აპლიკაცია)
რეგისტრაცია app ერთად App დიზაინერი
registerApp (აპლიკაცია, აპლიკაცია. UIFigure)
შეასრულეთ გაშვების ფუნქცია
runStartupFcn (აპლიკაცია, @startupFcn)
თუ ნარგუტი == 0
წმინდა აპლიკაცია
დასასრული
დასასრული
% კოდი, რომელიც მუშაობს პროგრამის წაშლამდე
წაშლა (აპლიკაცია)
% წაშლა UIFigure როდესაც აპლიკაცია წაიშლება
წაშლა (აპლიკაცია. UIFigure)
დასასრული
დასასრული
დასასრული
ნაბიჯი 4: საბოლოო ნაბიჯი
მას შემდეგ, რაც კოდი დაიწერება და Raspberry Pi იქნება ჩართული, მიამაგრეთ სერვო ძრავა სამგანზომილებიან ბეჭდვით სარკინიგზო ბილიკზე, როგორც ეს მიმაგრებულია ზემოთ მოცემულ სურათზე.
ახლა, პროექტი დასრულებულია. შეაერთეთ ჟოლოს PI მატარებლის ბილიკზე და დააკვირდით ახალ სისტემას, რომელიც ქმნის უსაფრთხო რკინიგზის გადასასვლელს როგორც მანქანის მძღოლებისთვის, ასევე გამტარებისთვის. ითამაშეთ სისტემასთან GUI– სთან ურთიერთობით, რათა მოხდეს ავარიების თავიდან ასაცილებლად შექმნილი სეიფები.
ეს არის გაკვეთილის დასასრული, ისიამოვნეთ თქვენი ახალი ჭკვიანი მატარებლის სისტემით!
გირჩევთ:
ჭკვიანი სამაგიდო LED განათება - ჭკვიანი განათება W/ Arduino - Neopixels სამუშაო ადგილი: 10 ნაბიჯი (სურათებით)
ჭკვიანი სამაგიდო LED განათება | ჭკვიანი განათება W/ Arduino | Neopixels Workspace: დღეების განმავლობაში ჩვენ დიდ დროს ვატარებთ სახლში, ვსწავლობთ და ვმუშაობთ ვირტუალურად, ასე რომ, რატომ არ გავხადოთ ჩვენი სამუშაო სივრცე უფრო დიდი და ჭკვიანი განათების სისტემით Arduino და Ws2812b LED- ებით დაფუძნებული. აქ მე გაჩვენებთ როგორ ავაშენოთ თქვენი Smart სამაგიდო LED განათება, რომელიც
IoT დაფუძნებული ჭკვიანი მებაღეობა და ჭკვიანი სოფლის მეურნეობა ESP32– ის გამოყენებით: 7 ნაბიჯი
IoT დაფუძნებული ჭკვიანი მებაღეობა და ჭკვიანი სოფლის მეურნეობა ESP32– ის გამოყენებით: მსოფლიო იცვლება დროთა განმავლობაში და სოფლის მეურნეობაც. დღესდღეობით, ხალხი აერთიანებს ელექტრონიკას ყველა სფეროში და სოფლის მეურნეობა არ არის გამონაკლისი. ელექტრონიკის ეს შერწყმა სოფლის მეურნეობაში ეხმარება ფერმერებს და ადამიანებს, რომლებიც მართავენ ბაღებს. ამ
მატარებლის გადაკვეთის მონიტორის სისტემა: 5 ნაბიჯი (სურათებით)
მატარებლის გადაკვეთის მონიტორინგის სისტემა: ეს გასწავლით თუ როგორ გამოიყენოთ MatLab არდუინოს კოდირებისათვის რკინიგზის სისტემის ნაწილის გასაკონტროლებლად
მატარებლის სავარძლების სისტემა: 4 ნაბიჯი (სურათებით)
მატარებლის სავარძლების სისტემა: დღეს ჩვენ შევქმენით სისტემა, რომლის დანერგვაც შესაძლებელია მატარებლის სავარძლებში. ჩვენ უნდა მოვძებნოთ გაღიზიანება და მოვაგვაროთ გამოსავალი. ჩვენ გადავწყვიტეთ, რომ ჩვენ შევქმნით სისტემას, რომელიც გეტყვით თუ არა ადგილი დასაჯდომი მატარებლის კალათაში, რომელშიც ამჟამად იმყოფებით
მატარებლის სავარძლების ხელმისაწვდომობის საინფორმაციო სისტემა - FGC: 8 საფეხური
მატარებლის სავარძლების ხელმისაწვდომობის საინფორმაციო სისტემა - FGC: ეს პროექტი ემყარება მატარებლის იმპლემენტაციას, რომელიც საშუალებას აძლევს სადგურზე მყოფ ადამიანებს იცოდნენ რომელი ადგილები თავისუფალია. პროტოტიპის განსახორციელებლად, Arduino UNO პროგრამული უზრუნველყოფა გამოიყენება დამუშავებასთან ერთად