Мазмұны:

CNC барабан плоттері: 13 қадам (суреттермен)
CNC барабан плоттері: 13 қадам (суреттермен)

Бейне: CNC барабан плоттері: 13 қадам (суреттермен)

Бейне: CNC барабан плоттері: 13 қадам (суреттермен)
Бейне: планшетный режущий плоттер для изготовления гофротары 2024, Қараша
Anonim
Image
Image
CNC барабан плоттері
CNC барабан плоттері

Бұл нұсқаулықта пластмассадан жасалған құбырдан, екі BYJ-48 қадамдық қозғалтқыштан және SG-90 сервосынан жасалған А4/А3 плоттері сипатталған. Негізінде бұл барабанға оралған жалпақ кереует.

Бір қозғалтқыш барабанды айналдырады, екіншісі басып шығару механизмін қозғайды. Серво қаламды көтеру және төмендету үшін қолданылады.

Бұл плоттер дәстүрлі плоттерден бірнеше артықшылықтарға ие:

  • айтарлықтай аз із
  • тек бір сызықты бағыттаушы рельсті қажет етеді
  • құрылысы қарапайым
  • арзан

Борттық аудармашы Inkscape-тен gcode шығуын қабылдайды.

Плоттермен байланыс bluetooth сілтемесі арқылы жүзеге асады.

Плоттер менің нұсқаулығымда сипатталған CNC графикалық планшетімен үйлесімді

Нақтылық құралы болмаса да, бұл плоттердің дәлдігі акварель контурларын қағазға көшіру мақсатымен қанағаттанарлық.

1 -қадам: Цикл

Цикл
Цикл

Схемада Arduino UNO R3 микроконтроллері мен дискретті компоненттер орнатылатын реттелетін қалқан бар. Қуат 5 вольтты 1 амперлік сыртқы реттегіш арқылы қолданылады. Орташа ток шамамен 500 мА құрайды.

BYJ-48 қадамдық қозғалтқыштары PORTB (түйреуіштер D8, D9, D10, D11) мен PORTC (түйреуіштер A0, A1, A2, A3) бекітілген. Қаламды көтеретін SG-90 серво D3 түйреуішіне бекітілген.

560 Ом резисторлары, егер бірдеңе дұрыс болмай қалса, arduino-ға қысқа тұйықталудан қорғайтын шара береді. Олар қалқанды сыммен қосуды жеңілдетеді, себебі олар жеткізу рельстері арқылы «секіргіш» ретінде әрекет етеді.

1k2 және 2K2 резисторлары HC-06 bluetooth модулінің [1] зақымдалуын болдырмайды, 5 вольтты arduino-дан 3,3 вольтке дейін төмендетеді.

[1] USB порты арқылы arduino-ға код жүктеу кезінде HC-06 bluetooth модулін ажыратыңыз. Бұл кез келген сериялық порт қақтығыстарын болдырмайды.

2 -қадам: Сызықтық жетек

Сызықтық жетек
Сызықтық жетек
Сызықтық жетек
Сызықтық жетек
Сызықтық жетек
Сызықтық жетек

Сызықтық жетек ұзындығы 3х32 мм алюминийден, алюминийден жасалған жолақтан және төрт шарикті подшипниктен жасалған.

Алюминийді көптеген құрылыс дүкендерінен алуға болады. U624ZZ 4x13x7 мм U-ойық шығырлары https://www.aliexpress.com сайтынан қол жетімді

Қарапайым қол құралдары сізге қажет. Алюминий штангасын плоттердің өлшеміне сәйкес кесіңіз.

Қозғалтқыш жиынтығы

BJY-48 сатылы қозғалтқышты штанга арқылы бір ұшына орнатыңыз және қозғалтқыш білігіне 5 мм саңылауы бар GT2 20 тісті бекітіңіз. Енді штанганың екінші шетіне шығыс еркін айнала алатындай басқа GT2 шкивін орнатыңыз. Мен бұған жету үшін диаметрі 5 мм құбырлы (радио) аралық пен 3 мм болтты қолдандым.

Енді шығырларға GT2 уақыт белдеуінің ұзындығын айналдырыңыз. Уақыт белдеуінің ұштарын жартылай бұру арқылы біріктіріңіз, осылайша тістер бір-біріне еніп, кабельдік галстукпен бекітіледі.

Соңында каретка қондырғысын уақыт белдеуіне кабель байламымен бекітіңіз.

Вагон жинағы

Арбалық жинақ U624ZZ шкивтері болтқа бекітілген алюминий қаңылтырдан жасалған жолақтан [1] жасалған. Қажет болса, алюминий қаңылтырынан шығырларды орналастыру үшін 4 мм жуғышты қолданыңыз.

4 мм ойығы бар шкивтер алюминий штангасының үстіңгі және астыңғы жағына қарай қозғалады, бірақ алюминий жолағы солға және оңға еркін қозғалады.

Арбаның еркін жүруін қамтамасыз ету үшін алдымен жоғарғы екі шығырды орнатыңыз, содан кейін шкивтер штангаға отырып, төменгі екі шығырдың орнын белгілеңіз. Енді бұл екі шығырға арналған тесіктер бұрғылануы мүмкін. Үлкен 4 мм бұрғылаудың ауытқуын болдырмау үшін алдымен кішкене «ұшқыш» бұрғылауды қолданыңыз.

Алюминий жолағын «U» -ға бүктемес бұрын, қаламның диаметріне сәйкес келетін жоғарғы және төменгі тесіктерді бұрғылаңыз. Енді бұрылыстарды аяқтаңыз.

Уақыт белбеуін арбалық жинауға кабельдік байлау мен жоғарғы екі шығырдың арасына 3 мм болт арқылы бекітіңіз.

Қаламды көтеруге арналған жинақ

SG-90 сервосын бір немесе екі кабельдік байланыстың көмегімен каретканың жоғарғы бөлігіне бекітіңіз.

Қаламды бұрғыланған екі тесікке түсіріңіз. Қаламның жоғары және төмен еркін сырғитынына көз жеткізіңіз.

Қаламға «жағаны» бекітіңіз, сонда қалам барабаннан таза болады, ал серво қаламсап күйінде болғанда.

[1] Алюминийді парақтың екі жағын өткір пышақпен (қорапты кескішпен) соғу арқылы кесуге болады, содан кейін кесуді үстелдің шетіне бүгу керек. Бірнеше қимыл мен парақ жарылып кетеді. Қалбырдан айырмашылығы, бұл әдіс алюминийді сындырмайды.

3 -қадам: Барабан

Барабан
Барабан
Барабан
Барабан
Барабан
Барабан

Барабан екі ағаш бітеуіші бар пластикалық құбырдан тұрады [1].

Құбырдың ішкі радиусына орнатылған компасты қолданыңыз. Енді әр контурды жіңішке пышақпен кесіңіз («жеңу», «қапалану»), содан кейін ағаш штепсель көмегімен әр ұшты айырға реттеңіз. Кішкене бұрандалы ағаш бұрандаларды қолданып, бітеуіштерді бекітіңіз.

Әр ұштық штепсельдің ортасынан өтетін 6 мм инженерлік болт осьті құрайды.

Барабан өлшемдері

Барабан өлшемдері сіздің қағаз өлшеміңізге байланысты анықталады. Барабан диаметрі 100 мм, А4 портреті мен А3 пейзажын қолдайды. Барабан диаметрі 80 мм тек А4 ландшафтын қолдайды. Инерцияны төмендету үшін барабанның диаметрін мүмкіндігінше кіші етіп қолданыңыз … BYJ-48 қозғалтқыштары шамалы ғана.

Барабан диаметрі 90 мм А4 портреті мен А3 ландшафты қағазы үшін өте қолайлы, қарама -қарсы жиектері барабанға оралғанда шамамен 10 мм қабаттасады, демек сізде тек бір тігіс бар.

Барабанды айналдыру

Әр ось барабан еркін айнала алатындай етіп алюминийден жасалған жақша арқылы өтеді. Соңы қалтқының алдын алу оське бекітілген ГТ-2, 20 тісті, 6 мм саңылау, шкив көмегімен жүзеге асырылады. Үздіксіз GT-2 уақыт белдеуі барабанға BJY-48 редукторлы қозғалтқышты қосады. Қозғалтқышқа диаметрі 5 мм болатын шығыр қажет.

[1] Пластикалық бітеуіштер құбыр диаметрінің көпшілігінде қол жетімді, бірақ олар қабылданбады, себебі олар ішіне емес, құбырдың үстіне қойылады, ал пластик иілуге бейім. Егер болттардың орнына үздіксіз ось қолданылса, олар жақсы болар еді … бірақ содан кейін сіз осьті ұштық штепсельдерге бекітудің қандай да бір әдісін қажет етеді.

4 -қадам: Құрылысқа қатысты кеңестер

Қаламның барабанның ортасы бойымен қозғалатынын тексеріңіз. Бұған ағаш тіректердің бұрыштарын кесу арқылы қол жеткізуге болады. Егер қалам орталықтан тыс болса, ол барабанның бүйірінен төмен қарай жылжиды.

Қаламның екі саңылауын дәл бұрғылау маңызды. Қалам қаламындағы немесе кареткадағы кез келген тербеліс Х осінің бойында тербелістерді тудырады.

GT-2 ремендік белбеуін қатайтып алмаңыз … олар тек тарылуы керек. BYJ-48 қадамдық қозғалтқыштарында көп момент жоқ.

BJY-48 қадамдық қозғалтқыштары X осінің бойында елеусіз, бірақ Y осіне қатысты алаңдаушылық туғызатын кері әсердің аз мөлшерін жиі көрсетеді. Мұның себебі-Y осінің қозғалтқышының бір айналуы барабанның бір айналуына тең, ал қаламсап барабанның ұзындығын өту үшін X осінің қозғалтқышының көптеген бұрылыстарын қажет етеді. Барабанда тұрақты айналу моментін сақтау арқылы Y осінің кез келген кері әсерін жоюға болады. Қарапайым әдіс - барабанға оралған нейлон сымына кішкене салмақ бекіту.

5 -қадам: Бресенхэмнің сызық сызу алгоритмі

Бресенхэмнің сызық сызу алгоритмі
Бресенхэмнің сызық сызу алгоритмі
Бресенхэмнің сызық сызу алгоритмі
Бресенхэмнің сызық сызу алгоритмі

Бұл плоттер Бресенхэм сызығының алгоритмінің оңтайландырылған нұсқасын [1] қолданады. Өкінішке орай, бұл алгоритм 45 градустан төмен немесе оған тең көлбеу көлбеу үшін ғана жарамды (яғни шеңбердің бір октанты).

Бұл шектеуді айналып өту үшін мен барлық XY кірістерін бірінші «октантқа» «картаға түсіремін», содан кейін оларды жоспарлау уақыты келгенде «картадан шығарамын». Бұған қол жеткізу үшін кіріс және шығыс картасын түсіру функциялары жоғарыдағы диаграммада көрсетілген.

Туынды

Егер сіз Бресенхэмнің алгоритмімен таныс болсаңыз, бұл қадамның қалған бөлігі алынып тасталуы мүмкін.

(0, 0) -ден (x1, y1) -ге дейін сызық жүргізейік, онда:

  • x1 = 8 = көлденең қашықтық
  • y1 = 6 = тік қашықтық

(0, 0) бастапқы нүкте арқылы өтетін түзудің теңдеуі y = m*x теңдеуімен берілген, мұнда:

m = y1/x1 = 6/8 = 0,75 = көлбеу

Қарапайым алгоритм

Бұл сызықты құрудың қарапайым алгоритмі:

  • int x1 = 8;
  • int y1 = 6;
  • қалқыма m = y1/x1;
  • сюжет (0, 0);
  • үшін (int x = 1; x <= x1; x ++) {
  • int y = дөңгелек (m*x);
  • сюжет (x, y);
  • }

Кесте 1: Қарапайым алгоритм

x м x*x ж
0 0.75 0 0
1 0.75 0.75 1
2 0.75 1.5 2
3 0.75 2.25 2
4 0.75 3 3
5 0.75 3.75 4
6 0.75 4.5 5
7 0.75 5.25 5
8 0.75 6 6

Бұл қарапайым алгоритмде екі мәселе бар:

  • негізгі цикл баяу көбейтуді қамтиды
  • ол баяу өзгермелі нүкте сандарын қолданады

Бұл сызық үшін y мен x -тің графигі жоғарыда көрсетілген.

Бресенхам алгоритмі

Бресенхэм нөлге инициализацияланған «e» қате терминінің тұжырымдамасын енгізді. Ол 1 кестеде көрсетілген m*x мәндерін 'm' -ге 'e' -ге бірізді қосу арқылы алуға болатынын түсінді. Сонымен қатар, ол m*x бөлшек бөлігі 0,5 -тен үлкен болған жағдайда ғана y көбейтілетінін түсінді. 0 <= 0.5 <= 1 диапазонында салыстыруды сақтау үшін, ол y өскен сайын 'e' дан 1 шығарады.

  • int x1 = 8;
  • int y1 = 6;
  • қалқыма m = y1/x1;
  • int y = 0;
  • float e = 0;
  • сюжет (0, 0);
  • үшін (int x = 1; x <= x1; x ++) {
  • e+= m;
  • егер (e> = 0,5) {
  • e -= 1;
  • y ++;
  • }
  • сюжет (x, y);
  • }

2 -кесте: Бресенхам алгоритмі

x м д e-1 ж
0 0.75 0 0 0
1 0.75 0.75 -0.25 1
2 0.75 0.5 -0.5 2
3 0.75 0.25 2
4 0.75 1 0 3
5 0.75 0.75 -0.25 4
6 0.75 0.5 -0.5 5
7 0.75 0.25 5
8 0.75 1 0 6

Егер сіз алгоритм мен 2 -кестені зерттесеңіз, сіз оны байқайсыз;

  • негізгі цикл тек қосу мен азайтуды қолданады … көбейту жоқ
  • y үлгісі 1 кестеге ұқсас.

Бірақ біз әлі де өзгермелі нүктелік сандарды қолданамыз … оны түзетейік.

Бресенхэмнің (оңтайландырылған) алгоритмі

Бресенхамның өзгермелі нүкте алгоритмін бүтін санға түрлендіруге болады, егер біз 'm' және 'e' мәндерін 2*x1 -ге масштабтайтын болсақ, онда m = (y1/x1)*2*x1 = 2*y1

'M' және 'e' масштабтаудан басқа алгоритм жоғарыда көрсетілгенге ұқсас, тек қана:

  • біз 'x' өскен сайын 'e' -ге 2*y1 қосамыз
  • егер е x1 -ге тең болса немесе одан үлкен болса, біз y өсеміз.
  • біз 1 -дің орнына 'e' -ден 2*x1 шығарамыз
  • x1 салыстыру үшін 0,5 орнына қолданылады

Егер цикл тест үшін нөлді қолданса, алгоритмнің жылдамдығын одан әрі арттыруға болады. Мұны істеу үшін бізге 'e' қателік терминіне офсет қосу керек.

  • int x1 = 8;
  • int y1 = 6;
  • int m = (y1 << 1); // тұрақты: көлбеу 2*x1 масштабталған
  • int E = (x1 << 1); // тұрақты: 2*x1 циклде қолдану үшін
  • int e = -x1; // -E/2 ығысуы: тест қазір нөлмен орындалды
  • сюжет (0, 0);
  • int y = 0;
  • үшін (x = 1; x <= x1; x ++) {
  • e += m;
  • егер (e> = x1) {
  • e -= E
  • y ++;
  • }
  • сюжет (x, y);
  • }

3 -кесте: Бресенхэмнің (оңтайландырылған) алгоритмі

x м E д е - Е ж
0 12 16 -8 0
1 12 16 4 -12 1
2 12 16 0 -16 2
3 12 16 -4 2
4 12 16 8 -8 3
5 12 16 4 -12 4
6 12 16 0 -16 5
7 12 16 -4 5
8 12 16 8 -8 6

Тағы да у үлгісі басқа кестелердегідей. Бір қызығы, 3 -кестеде тек бүтін сандар ғана бар және m/E = 12/16 = 0,75 қатынасы - бұл сызықтың 'm' көлбеуі.

Бұл алгоритм өте жылдам, себебі негізгі цикл тек қосу, азайту және нөлмен салыстыруды қамтиды. Көбейту x1 мен y1 мәндерін екі есе көбейту үшін «солға ығысу» арқылы 'E' және 'm' мәндерін инициализациялаудан басқа қолданылмайды.

[1] Бресенхам алгоритмінің бұл оңтайландырылған нұсқасы «Бресенхэм сызығы мен шеңбер сызбасы» қағазынан алынған, авторлық құқықтар © 1994-2006, Рэндолф Франклин (WRF). Оның материалын коммерциялық емес зерттеулер мен білім алу үшін пайдалануға болады, егер сіз оған несие берсеңіз және оның басты бетіне сілтеме жасасаңыз,

6 -қадам: Кодекс

Қосылған файлды аттас қалтаға жүктеңіз, содан кейін arduino IDE (интеграцияланған даму ортасы) арқылы плоттерге жүктеңіз.

Жүктеуді бастамас бұрын HC-06 bluetoorh модулін ажыратыңыз. Бұл USB кабелімен порттың сериялық қақтығысын болдырмау үшін қажет.

Үшінші тарап коды

Жоғарыда көрсетілген.ino кодымен қатар сізге тегін / қайырымдылық құралдары бар келесі бағдарламалық пакеттер қажет болады:

  • Тератерм https://osdn.net/projects/ttssh2/releases/ сайтында қол жетімді.
  • Inkscape https://inkscape.org/kz/download/ сайтынан қол жетімді.

Жоғарыда көрсетілген үшінші тарап пакеттерінің әрқайсысын орнату және пайдалану бойынша нұсқауларды менің мақалада табуға болады

7 -қадам: Мәзір

Мәзір
Мәзір

«Teraterm» көмегімен плоттермен bluetooth байланысын жасаңыз.

Барлық командалар үлкен регистрде болғандықтан, «бас әріптермен құлыптауды» қосыңыз.

'M' әрпін теріңіз және мәзір жоғарыда көрсетілгендей пайда болуы керек.

Мәзір ақылға қонымды:

  • M (немесе M0) мәзірді шығарады
  • G0 қаламды көтерілген қаламмен белгілі бір XY координатасына жіберуге мүмкіндік береді.
  • G1 қаламды төмен түсірілген белгілі бір XY координатасына жіберуге мүмкіндік береді.
  • T1 қаламды 0, 0 координатасынан жоғары қоюға мүмкіндік береді. Шығу үшін 'E' теріңіз.
  • T2 сызбаны масштабтауға мүмкіндік береді. Мысалы, «T2 S2.5» сіздің суретті 250%масштабтайды. Әдепкі шкаласы 100%
  • T3 және T4 қаламды көтеруге немесе төмендетуге мүмкіндік береді.
  • T5 «ABC» тест үлгісін салады.
  • T6 «нысана» салады.
  • T7 радиалды сызықтар жиынтығын салады, оның мақсаты - Брезенхэм алгоритмінің сегіз «октанттың» әрқайсысында жұмыс істейтінін тексеру.

Ескертулер:

  • қаламның барлық қозғалысы T2 мәзір опциясын қолдана отырып, сызбалық масштаб жиынтығын қолданады
  • «17:» және «19:» сандары - arduino аудармашысының «Xon» және «Xoff» терминалдарының қол алысу кодтары.

8 -қадам: калибрлеу

X_STEPS_PER_MM және Y_STEPS_PER_MM мәндері диаметрі 90 мм барабанға арналған.

Барабанның басқа диаметрлерінің мәндерін келесі қатынастарды қолдана отырып есептеуге болады:

  • барабанның шеңбері PI*диаметрі
  • 2048 қадам әр қозғалтқыш білігінің бір айналымына тең
  • ГТ-2 шкивінің бір айналымы уақыт белдеуінің 40 миллиметрлік сызықтық қозғалысына тең

Басқа әдіс - келесі пәрмендерді енгізу,

  • G1 X0 Y100
  • G1 X100 Y100

содан кейін алынған жолдардың ұзындығын өлшеп, X-STEPS_PER_MM және Y_STEPS_PER_MM мәндерін «масштабтаңыз»

9 -қадам: Gcode алдын ала өңдеу

Gcode алдын ала өңдеу
Gcode алдын ала өңдеу
Gcode алдын ала өңдеу
Gcode алдын ала өңдеу

Бұл плоттер тек төрт Inkscape кодын қажет етеді (мысалы: G0, G1, G2, G3). Егер барлық қажет емес кодтар мен түсініктемелерді алып тастасақ, код айтарлықтай жылдам орындалады.

Мұны істеу үшін сізге «Блокнот ++» көшірмесі қажет. Бұл ақысыз мәтіндік редактор қажетсіз мәтінді табуға және жоюға арналған «тұрақты өрнек» іздеу жүйесін қамтиды. Блокнот ++ https://notepad-plus-plus.org/download/v6.9.2.html сайтында қол жетімді

Notepad ++ көмегімен өзгертілетін файлды ашып, курсорды файлдың жоғарғы жағына орналастырыңыз.

Жоғарғы мәзір жолағынан «Көру/Таңбаны көрсету/Барлық таңбаларды», содан кейін «Іздеу/Ауыстыру …» таңдаңыз.

«Тұрақты өрнек» құсбелгісін қойыңыз (1 -суретті қараңыз) және келесі код тізбегінің әрқайсысын іздеу жолағына енгізіңіз.

Әр жазбадан кейін «Барлығын ауыстыру» түймесін басыңыз:

  • %
  • (.*)
  • ^М.*$
  • Z.*$

Жоғарыда келтірілген тұрақты өрнектер барлық % белгілерін, жақшада көрсетілген барлық түсініктемелерді, барлық M кодтарын, барлық Z кодтарын және одан кейінгі кодтарды жояды.

Енді «Кеңейтілген өрнек» құсбелгісін қойыңыз (2 -суретті қараңыз) және келесі код тізбегін енгізіңіз:

r / n / r / n / r / n

Бұл өрнек бірінші ретпен жасалған қажетсіз кареткаларды қайтаруды және жолды беруді жояды.

«Басқаша сақтау» көмегімен файлды басқа атпен сақтаңыз.

Орындалды.

10 -қадам: Нәтижелер

Нәтижелер
Нәтижелер

Бұл плоттер «тұжырымдаманың дәлелі» ретінде салынған және ешқашан мінсіз болғысы келмеген. Нәтиже жаман емес екенін айттым. Олар менің акварель контурларын қағазға көшірудегі менің мақсаттық мақсатыма міндетті түрде сәйкес келеді.

Алғашқы үш сурет-сәйкесінше T5, T6, T7 кіріктірілген тест үлгілері.

«Сәлем әлем!» үлгі плютерге Bluetooth арқылы жіберілді. Бұл файлдың «алдын ала өңделген» көшірмесі қоса беріледі.

11 -қадам: кодты жаңарту

Кодты жаңарту
Кодты жаңарту

Бұл плоттердің коды Drum_Plotter_V2.ino болып жаңартылды.

Drum_Plotter.ino түпнұсқасынан өзгертулер мыналарды қамтиды:

  • қаламның тегіс орналасуы
  • енді G02 gcode нұсқауларын таниды (сағат тілі бойынша доғалар)
  • енді G03 gcode нұсқауларын таниды (сағат тіліне қарсы доғалар)

Қосылған диаграммада доға бұрышын есептеу әдісі көрсетілген.

12 -қадам: Drum_plotter_v3.ino

«CNC барабан плоттері» үшін код жаңартуы қоса берілген.

«drum_plotter_v3.ino» плоттердің дәлдігіне әсер еткен шағын қатені түзетеді.

Тарихты өзгерту

2 нұсқа:

Қос доға қисықтары қосылды

3 нұсқа:

Келесі функциялар плоттердің дәлдігіне әсер ететін кішігірім қатені жою үшін қайта жазылды.

  • (int) move_to () функциясында round () -мен ауыстырылды.
  • draw_line () функциясы «октантты» іздеу алгоритмі жақсарды
  • Аудармашы қазір дизайнды жеңілдететін көрсеткіштерді емес, жол функцияларын қолданады. Мысалы, біз енді 'M' әрпін іздеудің орнына «MENU» іздей аламыз, содан кейін келесі бүтін санды шығарып аламыз. Бұл плоттерді жеке командалармен жекелендіруге мүмкіндік береді.

13 -қадам: Drum_plotter_plotter_v4.ino

2017 жылдың 16 қаңтары:

Бұл барабан плоттерінің коды одан әрі оңтайландырылды. Қосымша мүмкіндіктер қосылды.

Өзгерістерге мыналар кіреді:

  • draw_line () жылдам алгоритмі
  • move_to () функциясына сәйкес келеді
  • қадам санауыштары
  • кішігірім қателерді түзету

Қосымша ақпарат алу үшін «drum_plotter_v4.ino» ішіндегі түсініктемелерді оқыңыз.

Менің басқа нұсқауларды көру үшін мына жерді басыңыз.

Ұсынылған: