Агуулгын хүснэгт:

Ухаалаг галт тэрэгний систем: 4 алхам
Ухаалаг галт тэрэгний систем: 4 алхам

Видео: Ухаалаг галт тэрэгний систем: 4 алхам

Видео: Ухаалаг галт тэрэгний систем: 4 алхам
Видео: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Долдугаар сарын
Anonim
Ухаалаг галт тэрэгний систем
Ухаалаг галт тэрэгний систем

Аюулгүй байдлыг нэмэгдүүлэх, ослоос урьдчилан сэргийлэх, осол гарсан тохиолдолд туслах эерэг, үр бүтээлтэй хариу үйлдлийг нэмэгдүүлэх зорилготой.

Алхам 1: эд анги, материал

Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги
Материал ба эд анги

Дээрх зургуудыг доорх хэсгүүдийн жагсаалтын дарааллаар байрлуулна.

Эд ангиудын жагсаалт

1) Нэг Raspberry PI 3 - Б загвар

2) Нэг талхны самбар

3) Кабель (дээрээс доош) - Нэг хүч, нэг Ethernet, нэг адаптер

4) Нэг servvo мотор

5) Нэг 3D хэвлэмэл төмөр замын хаалга

6) Хоёр LED (улаан, ногоон байвал зохимжтой)

7) Нэг товчлуур

8) Арван холбогч утас

9) Дөрвөн эсэргүүцэл

10) MATLAB бүхий зөөврийн компьютер эсвэл ширээний компьютер

Алхам 2: Тохиргоо

Тохиргоо
Тохиргоо
Тохиргоо
Тохиргоо
Тохиргоо
Тохиргоо
Тохиргоо
Тохиргоо

Дээрх тохиргоог олон өнцгөөс харуулсан зургууд байна.

Зүү байршлыг (жижиг үсгээр, дараа нь мөрийн дугаараар) одоогийн урсгалыг дагаж дарааллаар жагсаав.

Утас:

j19 -ээс i47 хүртэл

j8 -аас b50 хүртэл

b5 Servo руу

c6 Servo руу

b7 servo руу

a13 -аас j7 хүртэл

a17 -аас LED хүртэл

A37 хүртэл LED

e40 -аас j20 хүртэл

j53 -аас j18 хүртэл

j7 -ийг LED болгоно

LED нь j6 хүртэл

Товч:

e54 -ээс h51 хүртэл

Эсэргүүцэл:

d40 -аас b37 хүртэл

c50 -аас d54 хүртэл

i51 -ээс j47 хүртэл

Алхам 3: Код ба логик

Код ба логик
Код ба логик

Манай галт тэрэгний системийн зорилго нь аюулгүй байдлыг дээшлүүлэх, төмөр замын гарам дээр хүний амь нас эрсдэж болзошгүй осол аваарыг бууруулах явдал юм. Үүнд хүрэхийн тулд манай системд жолооч нарт зориулсан галт тэрэгний анхааруулах систем, машиныг зам хөндлөн гарахаас урьдчилан сэргийлэхийн тулд буулгасан физик хаалт, эрт сэрэмжлүүлгийн систем ажиллахгүй бол кондукторыг дарах яаралтай тусламжийн товчлууртай.

GUI дамжуулагчийн үйлдлийн систем:

Дээр үзүүлсэн GUI нь галт тэргийг автомашины хөдөлгөөнтэй төмөр замын гарамтай газруудаар дамжуулж байх үед дамжуулагчийг ашиглах зорилгоор бүтээгдсэн болно.

Баруун дээд буланд удахгүй болох төмөр замын гармын хаалга хаагдсан бол дамжуулагчийг мэдэгдэх гэрэл байгаа бөгөөд шаардлагатай бол дамжуулагчийг хаалгыг онгойлгох, хаах боломжийг олгодог. Үүний доор галт тэрэг өнгөрөх камерын тэжээлийг харуулав. Зүүн доод буланд галт тэрэгний байршлыг график дээр тасралтгүй зурж, графикийн доор галт тэрэг нэг өдрийн дотор хийсэн тойргийн тоог зааж өгсөн болно. Байршлын графикийн дээр яаралтай тусламжийн товчлуур ба статусын мэдэгдэл байдаг. Энэ нь зам дээр машин байгаа эсвэл хамгаалалтын хаалга зөв ажиллахгүй байгаа тохиолдолд дамжуулагч нь яаралтай тусламжийн дохио өгөх боломжийг олгодог.

Код:

classdef micro <matlab.apps. AppBase % програмын бүрэлдэхүүн хэсгүүдэд тохирох % шинж чанарууд

шинж чанарууд (Хандалт = нийтийн)

UIFigure matlab.ui. Зураг

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

Хэвийн бус нөхцөлLabel 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

Төгсгөл

аргууд (Хандалт = нийтийн)

функц таймерCallback (апп, src, event)

app. Temp. Text = int2str (app.counter);

app.counter = app.counter + 1;

%програмын шаардлагатай бүх хувьсагчийг дуудах - - - - - - - - - - - - - -

дэлхийн rpi

дэлхийн с

дэлхийн нээлттэй

дэлхийн ойрхон

дэлхийн камер

дэлхийн м

дэлхийн эм

дэлхийн t_count

%------------------------- Галт тэрэгний гар хэсэг --------------------- ---------

нээлттэй бол == 0

бичих байрлал (ууд, 50)

app.gateLamp. Color = 'ногоон';

Төгсгөл

ойр байвал == 0

бичих байрлал (ууд, 120)

app.gateLamp. Color = 'улаан';

Төгсгөл

%---------------------- Камераар дамжуулан хөдөлгөөн илрүүлэх -----------------------

үнэн байхад

img = хормын хувилбар (камер);

зураг (img);

app. UIAxes (зурсан)

Төгсгөл

%---------------------- Гар нээх/хаах ----------------------- --------------

readDigitalPin (rpi, 20)> 1 %нь 17 -р зүү (товчлуур) -ыг уншиж, дохиог шалгадаг

i = 40:.5: 150 %нь гүүрийг өргөдөг

бичих байрлал (s, i)

Төгсгөл

i = 1:10 %-ийн гогцоонуудын хувьд улаан гэрэл x удаа анивчдаг

бичихDigitalPin (rpi, 13, 1)

түр зогсоох (.5)

бичихDigitalPin (rpi, 13, 0)

түр зогсоох (.5)

Төгсгөл

writePosition (s, 50)%нь хаалгыг доош нь тавьдаг

Төгсгөл

%-------------------- Гар утасны дэмжлэг/Plot ------------------------ -

m. AccelerationSensorEnabled = 1

m.logging = 1

өгөгдөл = тэг (200, 1); %гулсмал талбайн өгөгдлийг intialize

зураг (app. UIAxes2)

p = талбай (өгөгдөл)

тэнхлэг ([xbounda, ybounds])

түр зогсоох (1)

tic

toc <30 %нь 30 секундын турш ажилладаг

[a, ~] = accellog (m);

хэрэв урт (a)> 200

өгөгдөл = a (төгсгөл-199: төгсгөл, 3);

өөр

өгөгдөл (1: урт (a)) = a (:, 3);

Төгсгөл

%хэсгийг дахин зурах

p. YData = өгөгдөл;

зурсан

Төгсгөл

%------------------ Гэнэтийн пикселийн өөрчлөлт ---------------------------- ------

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)

%------------------ Button EMS програмчлал ---------------------------- ---

configurePin (rpi, 12, 'DigitalOutput'); %нь хөтөч зүү, зүү 16 -ийг гаралт болгон тохируулдаг

configurePin (rpi, 16, 'DigitalInput'); %нь товчлуурын зүү, зүү 24 -ийг оролт болгон тохируулдаг

buttonPressed = readDigitalPin (rpi, 16); % 16 -р товчлуур дээр дарах утгыг уншина

хэрэв товчлуур дарагдсан бол == 1

товчлуур дарагдсан үед == 1

бичихDigitalPin (rpi, 12, 1)

buttonunPressed = writeDigitalPin (rpi, 12, 0); %

end % 'while buttonPressed == 1' хүрд дуусна

Төгсгөл

writeDigitalPin (rpi, 16, 0) %товчлуур дарагдахаа больсон тохиолдолд унтраах тохиргоог тохируулна setpref ('Интернет', 'SMTP_Server', 'smtp.gmail.com'); setpref ('Интернет', 'E_mail', '[email protected]'); setpref -ээс илгээх % имэйл данс ('Интернет', 'SMTP_Username', '[email protected]'); % илгээгчийн хэрэглэгчийн нэр setpref ('Интернет', 'SMTP_Password', 'efgroup6'); % Илгээгчийн нууц үг

тулгуур = java.lang. System.getProperties;

props.setProperty ('mail.smtp.auth', 'үнэн'); 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);

аргууд (Хандалт = хувийн)

% Бүрэлдэхүүн хэсэг үүсгэсний дараа хэрэгждэг код

function startupFcn (апп)

%---------- Энэ функцэд шаардлагатай бүх хувьсагчид --------------------

дэлхийн 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);

дэлхийн м

м = хөдөлгөөнт төхөөрөмж;

дэлхийн эм

ems = 'БОМС -д мэдэгдсэн онцгой байдлын талаар мэдээлсэн';

дэлхийн t_count

t_count = 0;

%нууц үгийн холбогч нь EFGroup6 юм

Loop-ийн % таймер функц --------------------------------

app.counter = 0;

t = таймер (…

'TimerFcn', @app.timerCallback,…

'StartDelay', 1,… 'Хугацаа', 1,…

'ExecutionMode', 'fixedSpacing',…

'TasksToExecute', inf);

эхлэх (t);

Төгсгөл

% Дахин дуудлага хийх функц

ManualOverrideSwitchValueChanged функц (апп, үйл явдал)

Төгсгөл

% Button түлхсэн функц: OpenGateButton

OpenGateButtonPushed функц (апп, үйл явдал)

дэлхийн ойрхон

хаах = 0;

Төгсгөл

% Button дарагдсан функц: CloseGateButton

CloseGateButtonPushed функц (апп, үйл явдал)

дэлхийн нээлттэй

нээлттэй = 0;

Төгсгөл

Төгсгөл

% Апп эхлүүлэх ба бүтээх

аргууд (Хандалт = хувийн)

% UIFigure болон бүрэлдэхүүн хэсгүүдийг үүсгэх

createComponents функц (апп)

% UIFigure үүсгэх

app. UIFigure = uifigure;

app. UIFigure. Position = [100 100 640 480];

app. UIFigure. Name = 'UI зураг';

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, 'push');

app. OpenGateButton. ButtonPushedFcn = createCallbackFcn (апп, @OpenGateButtonPushed, үнэн); app. OpenGateButton. Position = [474 359 100 22];

app. OpenGateButton. Text = 'Нээлттэй хаалга';

CloseGateButton үүсгэх

app. CloseGateButton = uibutton (app. UIFigure, 'push');

app. CloseGateButton. ButtonPushedFcn = createCallbackFcn (апп, @CloseGateButtonPushed, үнэн); app. CloseGateButton. Position = [474 285 100 22];

app. CloseGateButton. Text = 'Хаалгыг хаах';

% UIAxes үүсгэх

app. UIAxes = uiaxes (app. UIFigure);

гарчиг (app. UIAxes, 'Camera Feed')

app. UIAxes. Position = [341 43 300 185];

EmergencyButtonStatusLampLabel үүсгэх

app. EmergencyButtonStatusLampLabel = uilabel (app. UIFigure); app. EmergencyButtonStatusLampLabel. HorizontalAlignment = 'баруун'; app. ErergencyButtonStatusLampLabel. Position = [97 323 142 22]; app. EmergencyButtonStatusLampLabel. Text = 'Онцгой байдлын товчлуурын төлөв';

EmergencyButtonStatusLamp үүсгэх

app. EmergencyButtonStatusLamp = uilamp (app. UIFigure); app. EmergencyButtonStatusLamp. Position = [254 323 20 20];

% Хэвийн бус нөхцөл үүсгэх шошго

app. UndernormalconditionsLabel = uilabel (app. UIFigure);

app. UndernormalconditionsLabel. Position = [108 285 248 22];

app. UndernormalconditionsLabel. Text = 'Хэвийн нөхцөлд';

% UIAxes2 үүсгэх

app. UIAxes2 = uiaxes (app. UIFigure);

гарчиг (app. UIAxes2, 'Галт тэрэгний байрлал')

xlabel (app. UIAxes2, 'X Position')

ylabel (app. UIAxes2, 'Y Position')

app. UIAxes2. Box = 'асаалттай';

app. UIAxes2. XGrid = 'асаалттай';

app. UIAxes2. YGrid = 'асаалттай';

app. UIAxes2. Position = [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 Group 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 = '####';

Төгсгөл

Төгсгөл

аргууд (Хандалт = нийтийн)

% Апп бүтээх

апп функц = микро

% Бүрэлдэхүүн хэсгүүдийг үүсгэх, тохируулах

createComponents (апп)

% Апп дизайнер дээр програмыг бүртгүүлнэ үү

registerApp (апп, апп. UIFigure)

% Эхлэх функцийг гүйцэтгэх

runStartupFcn (апп, @startupFcn)

хэрэв nargout == 0

цэвэр апп

Төгсгөл

Төгсгөл

% Апп устгахаас өмнө ажилладаг код

устгах (апп)

Апп устгагдах үед % UIFigure -ийг устгана уу

устгах (app. UIFigure)

Төгсгөл

Төгсгөл

Төгсгөл

Алхам 4: Эцсийн алхам

Эцсийн алхам
Эцсийн алхам

Кодыг бичээд Raspberry Pi утсыг холбосны дараа servo моторыг дээрх зураг дээр хавсаргасан шиг 3 хэмжээст хэвлэмэл төмөр замын төмөр замын хаалган дээр холбоно уу.

Одоо төсөл дууссан. Бөөрөлзгөнө PI -ийг галт тэрэгний замд холбож, автомашины жолооч, кондукторын хувьд аюулгүй төмөр замын гарам бий болгох шинэ системийг ажиглаарай. Осол гэмтлээс урьдчилан сэргийлэх үүднээс аюулгүй ажиллагааны сейфүүдийг ажиллуулахын тулд GUI -тэй хамтран ажиллаж, системээр тоглоорой.

Хичээл дууслаа, шинэ ухаалаг галт тэрэгний системээ сайхан өнгөрүүлээрэй!

Зөвлөмж болгож буй: