فهرست مطالب:

ماشین RasbperryPi با دوربین FPV. کنترل توسط مرورگر وب: 31 مرحله (همراه با تصاویر)
ماشین RasbperryPi با دوربین FPV. کنترل توسط مرورگر وب: 31 مرحله (همراه با تصاویر)

تصویری: ماشین RasbperryPi با دوربین FPV. کنترل توسط مرورگر وب: 31 مرحله (همراه با تصاویر)

تصویری: ماشین RasbperryPi با دوربین FPV. کنترل توسط مرورگر وب: 31 مرحله (همراه با تصاویر)
تصویری: ساخت ربات کنترلی(کنترل از طریق کیبورد) مبتنی بر رزبری پای با قابلیت فیلم‌برداری از محیط 2024, نوامبر
Anonim
Image
Image

ما ماشین 4wd را خواهیم ساخت - فرمان شبیه به یک مخزن خواهد بود - برای چرخاندن یک طرف چرخ ها با سرعت متفاوتی نسبت به سایر چرخش ها می چرخد. در ماشین دوربین روی نگهدارنده مخصوص قرار داده می شود که می توانیم موقعیت دوربین را تغییر دهیم. ربات توسط مرورگر وب (کروم یا فایرفاکس در دسکتاپ ، یا فایرفاکس در تلفن همراه) کنترل می شود ، در مرورگر ، ویدیوی دوربین (با تاخیر تنها 200 میلی ثانیه) دریافت می کنیم و از مرورگر ، می توانیم حرکات خودرو و موقعیت دوربین برای سهولت برقراری ارتباط ، من از سیستم app.remoteme.org استفاده می کنم ، همچنین در جعبه کنترل این نوع ماشین کار می شود ، بنابراین لازم نیست کد خود را بنویسید ، اما البته می توانید اسکریپت ها را تغییر دهید امکانات جدید و غیره

لطفاً قبل از اتصال برق به PCB خود ، همه اتصالات را دوباره بررسی کنید

مرحله 1: برخی اطلاعات درباره App.remoteme.org

این سیستم دارای سه بخش است

  • webapplication - هنگامی که صفحات وب کنترل خود را میزبانی می کنید و تمام ارتباطات را پیوند می دهد
  • برنامه rasbperryPi - برنامه ای که ویدیو ارسال می کند ، اسکریپت های پایتون خود را مدیریت کنید
  • کتابخانه هایی که در آنها کلاس ، توابع را می بینید

Remoteme.org سریع کار می کند شما همه دستگاه های خود را به هم متصل می کنید ، می توانید صفحات وب خود را در آنجا میزبانی کنید ، دستگاه های متصل خود را مشاهده کنید. سیستم Remoteme.org به شما کمک می کند تا پروژه های خود را شروع کنید ، بدون نگرانی در مورد ارتباطات پروتکلی ، ایده اصلی ارسال پیام های دودویی بین دستگاه های مختلف مانند صفحات وب ، RasbeprryPI ، arduino و اسکریپت ها است.

از طرف دیگر Remoteme.org کنترل کامل فایل های خود را در اختیار شما قرار می دهد ، می توانید با نوشتن قابلیت های خود آن را به راحتی تغییر دهید.

در این آموزش به شما نشان خواهم داد که چگونه می توانید بدون نوشتن کد ، پروژه ای عالی انجام دهید.

در پایان این آموزش ، پیوندهای مفیدی را قرار داده ام که به شما کمک می کند سیستم remoteme.org را درک کنید.

مرحله 2: موارد مورد نیاز:

چیزی که لازم است
چیزی که لازم است
چیزی که لازم است
چیزی که لازم است
  • Raspberry PI Zero W
  • دوربین اختصاصی
  • درایور Adafruit 16 -کانالی 12 بیتی PWM/Servo - رابط I2C - PCA9685 یا کلون آن
  • دو مکانیزم سروو سازگار با نگهدارنده دوربین
  • نگهدارنده دوربین
  • باتری - در آموزش دو امکان اتصال
  • H پل TB6612FNG ، برای کنترل حرکت چرخ
  • فایلهای عقاب PCB ساختن روش انتقال حرارتی آسان است DC-DC
  • Step Down Converter Module DC
  • قاب روبات

مرحله 3: اتصالات

اتصالات
اتصالات

مکانیسم سروو کنترل Raspberry pi از طریق ماژول PWM و سرعت موتور توسط H Bridge که به پین های RasbperryPi متصل است ، ورودی PWM به H Bridge توسط همان ماژولی که برای سروها استفاده کردم (که به قسمتهایی که در بالا ذکر کردم نیازی به مبدل منطقی نیست) ایجاد می شود.

مرحله 4: PCB

PCB
PCB
PCB
PCB

شما می توانید فایل های PCB عقاب را از اینجا بارگیری کنید مسیرها چاق هستند بنابراین تهیه آن با روش انتقال حرارتی آسان است

مرحله 5: خروجی های PCB

خروجی های PCB
خروجی های PCB
خروجی های PCB
خروجی های PCB
  1. ورودی PWM برای موتورهای درایو باید به پین 15 و 16 پاور ماژول PWM متصل شود (مستطیل سبز را در تصویر ماژول PWM بررسی کنید)
  2. ورودی برق برای موتورهای محرک (بررسی کنید که موتورهای شما با چه حداکثر ولتاژ می توانند کار کنند)
  3. قدرت RasbperryPi و ماژول PWM - باید دقیقاً باشد
  4. خروجی موتور درایو (دو خروجی وجود دارد زیرا ما موتورهای محرک را جفت می کنیم)
  5. قدرت مکانیسم های سرو - همچنین باید بررسی کنید که ولتاژ برای آنها مناسب است
  6. جهش قدرت فعلی آن از ورودی 5 باعث تغذیه موتورها نیز می شود بنابراین نیازی به اتصال هر چیزی به ورودی 2 نیست
  7. جهش کننده در صورت وجود RasbperryPi از ورودی سوم تغذیه می شود - قبل از اینکه بلوز را در اینجا قرار دهید ، بررسی کنید که آیا اتصالات درست هستند - آیا نمی خواهید RPi خود را بسوزانید
  8. اجازه دهید کابل ها را در اینجا لحیم کنیم زیرا نیازی به مبدل منطقی نداریم

مرحله 6: چگونه کار می کند

در RasbperryPi اسکریپت پایتون وجود دارد که از دو کتابخانه استفاده می کند

  • وارد کردن RPi. GPIO به عنوان GPIO-برای پین های 25-AIN1 ، 8-AIN2 ، 24-BIN1 ، 23-BIN2 (نماد BCM) که به H Bridge متصل هستند
  • Adafruit_PCA9685 را برای ماژول PWM وارد کنید

پین های Rpi به شرح زیر 25-AIN1 ، 8-AIN2 ، 24-BIN1 ، 23-BIN2 (BCM) و حالت کنترل پل H (جلو ، عقب ، توقف ، وقفه کوتاه) متصل می شوند. پل H همچنین به دو سیگنال PWM نیاز دارد تا بتوانیم سرعت یا چرخش موتور را کنترل کنیم. از آنجا که در پروژه ما قبلاً کنترلر PWM (که برای سرو استفاده می شود) داریم ، از آن برای تولید PWM برای H Bridge نیز استفاده خواهیم کرد.

ماژول PWM از پروتکل ارتباطی I2C استفاده می کند. من از تمرین خارج از جعبه Adafruit_PCA9685 استفاده کرده ام. کتابخانه

مرحله 7: مونتاژ خودرو - چرخ

مونتاژ اتومبیل - چرخ
مونتاژ اتومبیل - چرخ
مونتاژ اتومبیل - چرخ
مونتاژ اتومبیل - چرخ

ما از اتصال موتورهای محرکه به قاب خودرو شروع می کنیم. موتورهای سمت چپ/جانبی به هم متصل می شوند ، و هر دو جفت می شوند ، به کابل برق متصل می شوند که بعداً به PCB وصل می شود. نکته مهم هنگام اتصال چرخ موتورها در هر طرف باید در یک جهت بچرخند.

مرحله 8: قدرت (باتری های AA شارژ) گزینه 1/2

قدرت (باتری های AA شارژ) گزینه 1/2
قدرت (باتری های AA شارژ) گزینه 1/2
قدرت (باتری های AA شارژ) گزینه 1/2
قدرت (باتری های AA شارژ) گزینه 1/2
قدرت (باتری های AA شارژ) گزینه 1/2
قدرت (باتری های AA شارژ) گزینه 1/2
قدرت (باتری های AA شارژ) گزینه 1/2
قدرت (باتری های AA شارژ) گزینه 1/2

من دو احتمال قدرت ماشین می نویسم ، اولین مورد از باتری های 10xAA شارژ می شود. در آخرین تصویر من با بلوزهای قرمز رنگی که باید قرار داده شوند ، ترسیم کرده ام.

مرحله 9: قدرت (باتری های Li-Po 7.2V) گزینه 2/2

قدرت (باتری Li-Po 7.2V) گزینه 2/2
قدرت (باتری Li-Po 7.2V) گزینه 2/2
قدرت (باتری Li-Po 7.2V) گزینه 2/2
قدرت (باتری Li-Po 7.2V) گزینه 2/2

و گزینه دوم باتری 7.2 LI-PO است. در این حالت ما 3 ولتاژ دریافت کردیم - 5 ولت برای Rpi و ماژول ، 6 ولت برای سرو و مستقیماً از باتری 7.2 ولت برای موتورهای محرک. مجبور شدم از ماژول های دو مرحله ای پایین استفاده کنم

گزینه 2 با LI-PO بهتر است:

  • ظرفیت باتری ها بیشتر است - ماشین بیشتر رانندگی می کند
  • ولتاژ بیشتر برای موتورهای محرک - ماشین سریعتر حرکت می کند
  • احتمال کمتری وجود دارد که پس از شروع به کار موتورهای محرک ، ما افت ولتاژ زیادی داشته باشیم و RPI راه اندازی مجدد شود.

مرحله 10: لحیم کاری

لحیم کاری
لحیم کاری
لحیم کاری
لحیم کاری
لحیم کاری
لحیم کاری
لحیم کاری
لحیم کاری

من در PCB چند فاصله برای ماژول PWM قرار داده ام. چیزی برای نوشتن وجود ندارد فقط تصاویر نحوه لحیم کردن همه چیز را با هم بررسی کنید

مرحله 11: دوربین

دوربین
دوربین

ما دوربین را وصل می کنیم ، در اینجا نحوه تنظیم وسایل سروو قبل از نصب روی نگهدارنده دوربین نوشته شده است ، اما کوتاه ترین راه این است که حداکثر موقعیت چرخش را به آرامی و به صورت دستی بررسی کنید و سروها را در موقعیت مرکزی تنظیم کنید. این مکانیزم های سروو متمرکز را به نگهدارنده دوربین در موقعیت مرکزی قرار می دهیم (دوربین مستقیماً مانند عکس رو به جلو است)

مرحله دوازدهم: چیدمان قطعات خودروها در کنار هم

کنار هم قرار دادن قطعات خودرو
کنار هم قرار دادن قطعات خودرو
کنار هم قرار دادن قطعات خودرو
کنار هم قرار دادن قطعات خودرو
کنار هم قرار دادن قطعات خودرو
کنار هم قرار دادن قطعات خودرو

برای PCB من میز پلکسی گلاس کوچکی درست کرده ام

مرحله 13: پیکربندی App.remoteme.org

پیکربندی App.remoteme.org
پیکربندی App.remoteme.org

من از سیستم رایگان app.remoteme.org استفاده می کنم که به شما در برقراری ارتباط کمک می کند و در حال حاضر دارای اسکریپت هایی است که ما به آن نیاز داریم

در این دستورالعمل ، من فقط گام به گام نشان می دهم که برای رانندگی با خودرو چه باید کرد (در اینجا جزئیات بیشتری پیدا خواهید کرد)

  • پس از ثبت نام در https://app.remoteme.org بخوانید به طور خودکار وارد سیستم می شوید
  • برگه Token را در سمت چپ باز کنید ، سپس روی "token new" (نام توکن) کلیک کنید و نامی را وارد کنید و روی OK کلیک کنید ، ما فقط توکن جدید ایجاد کردیم (تصویر روی صفحه)
  • در این مثال ، مقدار توکن این است: ~ 1_ & p@+BNnZ@A+x8 (مال شما متفاوت خواهد بود ؛))

مرحله 14: پیکربندی RasbperryPi

پیکربندی RasbperryPi
پیکربندی RasbperryPi

در کنسول بتونه (در اینجا نحوه راه اندازی ارتباط RPi با دوربین I2c روشن می شود)

git clone git: //github.com/remoteme/remoteme.git

سی دی از راه دور

python3.5 install.py

  • Instalator برای همه ما (Y) ها پاسخ می دهد و با [enter] تأیید می کند
  • هنگامی که نصب درخواست توکن می کند ، ما توکن (shift+insert) کپی شده از برنامه را وارد کرده و Enter می کنیم
  • نام به عنوان مثال Rpi
  • deviceId 1 وارد کنید
  • پس از نصب - برنامه را اجرا کنید

./runme.sh

مرحله 15: بررسی اتصالات

بررسی اتصالات
بررسی اتصالات

اجازه دهید به https://app.remoteme.org بازگردیم

در برگه دستگاه ها ما RPi متصل خود را مشاهده می کنیم (نماد پیوند سبز به این معنی است که RPi در حال حاضر متصل است)

مرحله 16: افزودن Python Script

افزودن اسکریپت پایتون
افزودن اسکریپت پایتون
اضافه کردن اسکریپت پایتون
اضافه کردن اسکریپت پایتون

اکنون ما اسکریپت پایتون را اضافه می کنیم ، که قبلاً در قالب ها قرار دارد ، بنابراین لازم نیست چیزی را برنامه ریزی کنیم.

در برگه دستگاه ها ، منوی RasbperryPi را باز کرده و "افزودن اسکریپت خارجی" را انتخاب کنید.

هنگامی که پنجره جدید ظاهر می شود ، اطلاعاتی را مانند تصویر بالا ارائه دهید

فراموش نکنید که قالب "car4wd" را انتخاب کنید. پس از این مراحل ، remoteme.org اسکریپت پایتون را به RasbperryPi ما اضافه کرده و آن را مجدداً راه اندازی می کند

مرحله 17: بررسی اینکه آیا اسکریپت پایتون با موفقیت اضافه شده است یا خیر

بررسی اینکه آیا اسکریپت پایتون با موفقیت اضافه شده است یا خیر
بررسی اینکه آیا اسکریپت پایتون با موفقیت اضافه شده است یا خیر

در برگه دستگاه ها ، دستگاه اسکریپت پایتون جدید باید اضافه شود ، و دستگاه آن 2 است. به این دستگاه صفحه وب Id برای کنترل ماشین پیام ارسال می کند

مرحله 18: افزودن صفحه وب به Control Car

افزودن صفحه وب به Control Car
افزودن صفحه وب به Control Car

در برگه دستگاه ها روی "جدید" و سپس "صفحه وب" کلیک کنید. ما فقط یک دستگاه دیگر اضافه می کنیم - صفحه وب ما از آن برای کنترل ماشین خود استفاده خواهیم کرد. و به دلیل اینکه ما از قالب "car4wdDesktop" در صفحه وب استفاده کردیم ، فایل ها تقریباً آماده استفاده هستند

مرحله 19: دستگاه WebPage Device را برای کنترل 1/2 خودرو پیکربندی کنید

پیکربندی دستگاه وب سایت برای کنترل خودرو 1/2
پیکربندی دستگاه وب سایت برای کنترل خودرو 1/2

صفحه وب را در برگه دستگاه گسترش دهید و index.html و سپس Open را کلیک کنید

مرحله 20: دستگاه WebPage را برای کنترل خودرو 2/2 پیکربندی کنید

پیکربندی دستگاه وب سایت برای کنترل خودرو 2/2
پیکربندی دستگاه وب سایت برای کنترل خودرو 2/2

پنجره ظاهر می شود ، سپس ما باید deviceId اسکریپت python خود را در device case خود ارائه دهیم ID 2 است. بیایید مکان نشان داده شده در تصویر را تغییر دهیم

مرحله 21: مرکز کنترل خودرو را باز کنید

باز کردن مرکز کنترل خودرو
باز کردن مرکز کنترل خودرو
باز کردن مرکز کنترل خودرو
باز کردن مرکز کنترل خودرو

اکنون وقت آن است که صفحه ما را باز کنید و ببینید چگونه کار می کند. در برگه دستگاه روی index.html و سپس "باز کردن در برگه جدید" کلیک کنید تا پیش نمایش ویدیو را دریافت کنید باید از مرورگر کروم یا فایرفاکس استفاده کنید مرورگرهای دیگر webRTC را به طور کامل پشتیبانی نمی کند

مرحله 22: پیکربندی دوربین 1/2

پیکربندی دوربین 1/2
پیکربندی دوربین 1/2

هنگامی که ماوس را در قسمت ویدئویی حرکت می دهیم ، دوربین باید موقعیت خود را تغییر دهد و دقیقاً مانند بازی های FPS عمل کند. احتمالاً به درستی حرکت نمی کند

مرحله 23: پیکربندی دوربین 2/2

پیکربندی دوربین 2/2
پیکربندی دوربین 2/2

script.js را باز کنید (برگه دستگاه ها صفحه وب را گسترش دهید سپس روی script.js کلیک کنید و سپس باز کنید) و محلی را که در صفحه نشان داده ام پیدا کنید

در مرکز مورد من موقعیت 560 و 430 است و دامنه حرکات برای هر دو محور 200 است

شما باید با این اعداد آزمایش کنید تا مرکز موقعیت دوربین و حرکات روان را بدست آورید ، اگر از این آموزش استفاده کرده اید فقط مقادیر داده شده را کپی کنید

مرحله 24: رانندگی 1/2

رانندگی 1/2
رانندگی 1/2

اگر پیکان را روی صفحه کلید فشار داده اید ، سنجه ها باید موقعیت خود را تغییر دهند و ماشین باید رانندگی کند. اگر پیکان "بالا" را فشار دهید و ماشین بچرخد ، باید نقاط منفی روی نقاط صفحه را اضافه یا حذف کنید.

پس از این عملیات پس از ضربه زدن به "پیکان بالا" ماشین باید جلو و ماشین پیکان پایین باید به عقب حرکت کند.

مرحله 25: رانندگی 2/2

رانندگی 2/2
رانندگی 2/2

در حال چرخش - در صورت چرخاندن ماشین به راست به پیکان چپ ضربه بزنید باید کابل ها را ورق بزنید (تصویر بالا را بررسی کنید)

اگر این کابل ها را لحیم کردید می توانید آن را در script.js تغییر دهید ، فقط ترتیب ارسال سرعت موتور را تغییر دهید ،

قبل از:

pos = putByte (ret، pos، carController.getMotorMode (carController.getRightSideSpeed ())) ؛ pos = putByte (ret، pos، Math.abs (carController.getRightSideSpeed ()*255)) ؛

pos = putByte (ret، pos، carController.getMotorMode (-carController.getLeftSideSpeed ())) ؛

pos = putByte (ret، pos، Math.abs (carController.getLeftSideSpeed ()*255)) ؛

بعد از:

pos = putByte (ret، pos، carController.getMotorMode (-carController.getLeftSideSpeed ())) ؛

pos = putByte (ret، pos، Math.abs (carController.getLeftSideSpeed ()*255)) ؛

pos = putByte (ret، pos، carController.getMotorMode (carController.getRightSideSpeed ())) ؛

pos = putByte (ret، pos، Math.abs (carController.getRightSideSpeed ()*255)) ؛

و در حال حاضر شما باید با یک دقیقه قبل بازی کنید تا به درستی کار کند.). همانطور که احتمالاً بعد از ضربه زدن به پیکان متوجه شده اید ماشین با سرعت کامل رانندگی نمی کند تا ماشین سریعتر حرکت کند ، فقط سریع پیکان را در حالت حداکثر قرار دهید. و دوباره فشار دهید و نگه دارید

مرحله 26: چگونه کار می کند

صفحه وب در حال ارسال پیام های 9 بایت به اسکریپت پایتون با فرمت زیر است:

  • 1 بایت یک بایت عدد صحیح 1
  • 2 بایت عدد صحیح X موقعیت دوربین
  • 2 بایت عدد صحیح Y موقعیت دوربین
  • 1 بایت صحیح حالت چپ موتور (3 = عقب ، 1 = جلو ، 2 = توقف)
  • 1 بایت عدد صحیح دور موتور چپ
  • حالت موتور راست 1 بایت (3 = عقب ، 1 = جلو ، 2 = توقف)
  • 1 بایت عدد صحیح دور موتور راست

ارسال پیام در فایل script.js در عملکرد "sendNow ()" انجام می شود

در RasbperryPi python.py در حال دریافت این پیام در عملکرد "onUserMessage" است

می توانید آن را بررسی کنید و کمی بازی کنید تا بدانید چه خبر است.

توضیحات توابع کلاس در اینجا

مرحله 27: تبلت ، فرمان موبایل

تبلت ، فرمان موبایل
تبلت ، فرمان موبایل

ما همانطور که قبلاً افزوده بودیم یک صفحه وب جدید را بی سر و صدا اضافه می کنیم اما اکنون قالب "car4wdMobile" را انتخاب می کنیم

بعد ، ما همه چیز را در script.js پیکربندی می کنیم همانطور که برای صفحه کنترل صفحه دسکتاپ انجام دادیم. قالب پیام دقیقاً یکسان است بنابراین لازم نیست اسکریپت python.py را تغییر دهیم.

مرحله 28: صفحه را در تلفن همراه باز کنید

صفحه را در تلفن همراه باز کنید
صفحه را در تلفن همراه باز کنید
صفحه را در تلفن همراه باز کنید
صفحه را در تلفن همراه باز کنید

به جای ورود به حساب کاربری خود از طریق تلفن همراه ، کافی است آدرس اینترنتی QR هر چیزی را اسکن کنید.

جزئیات QR در اینجا

اگر کنترل تلفن همراه شما زمانی کار می کند که RPi و تلفن همراه از طریق Wi -Fi یکسان باشند اما اگر از اینترنت تلفن همراه استفاده می کنید ، باید سرور نوبت را اضافه کنید ، چگونه این کار را در اینجا انجام داده ام.

مرحله 29: افزودن Turn Server

افزودن Turn Server
افزودن Turn Server
افزودن Turn Server
افزودن Turn Server
افزودن Turn Server
افزودن Turn Server

گاهی اوقات (هنگامی که شما پشت NAT یا برخی از تنظیمات فایروال هستید) نمی توانید ربات خود را از شبکه دیگر متصل کنید و سپس ربات شما متصل است. مشکل بزرگی نیست و سپس باید سرور نوبت را اضافه کنید.

من سرور شرکت XIRSYS را آزمایش کرده ام (برای استفاده توسعه دهندگان رایگان است) و نحوه پیکربندی سرور نوبت با استفاده از سیستم XIRSYS را نشان خواهم داد

ثبت نام:

global.xirsys.net/dashboard/signup

سپس روی "plus" کلیک کنید تا برنامه اضافه شود

در سمت راست زیر "اعتبارنامه های نوبت استاتیک" همه داده های مورد نیاز خود را دارید. آن را در فایل webrtc_streamer.conf کپی کنید تا به این آدرس بروید

گسترش رسپبری پی

روی فایل webrtc_streamer.conf کلیک کنید

باز کردن را کلیک کنید

و اطلاعات را اضافه کنید

turn_server = turn_username =

اعتبار_نوشته =

پس از پایان ویرایش ، باید چیزی شبیه صفحه داشته باشید.

سپس روی Save و راه اندازی مجدد You Rpi کلیک کنید ، با کلیک روی منو در دستگاه RasbperryPi و راه اندازی مجدد را انتخاب کنید

پس از راه اندازی مجدد برنامه RPi ، حتی اگر از اینترنت همراه استفاده می کنید ، می توانید پیش نمایش ویدیو را در تلفن همراه خود مشاهده کنید.

مرحله 30: فرمان موبایل

فرمان موبایل
فرمان موبایل

در دایره 1 انگشت شست چپ ، در 2 راست - نیازی نیست دقیقاً در این نقاط باشید - صفحه وب درست پس از لمس صفحه ، موقعیت صفر را تعیین می کند و با حرکت دادن انگشتان شست (رانندگی چپ ، موقعیت دوربین راست) می توانید کنترل کنید ماشین شما

مرحله 31: خلاصه

امیدوارم این آموزش را دوست داشته باشید ، همانطور که قبلاً در این آموزش نوشتم ، جزئیات بیشتری در مورد نحوه کار در زیر کاپوت است.

چند لینک:

remoteme.org - صفحه اصلی remoteme.org آنجا مستندات و آموزش هایی را می بینید

صفحه FB - صفحه طرفداران فیس بوک جدیدترین اطلاعات مربوط به remoteme.org

یوتیوب - چند فیلم از پروژه ، آموزش ها

به سلامتی،

ماسیک

توصیه شده: