آردوینو آردوینو Arduino Uno سیم کارت GSM - GPRS پروژه های آردوینو

کنترل وسایل برقی با اینترنت GPRS ماژول SIM808 با قابلیت ردیابی آنلاین

relay-control-with-sim808-gprs-internet-and-arduino-digispark
نوشته شده توسط معین صابری

ارسال و دریافت داده در بستر اینترنت، سال هاست که جزو روزمره زندگی ما شده است. امروزه به لطف پیشرفت این فناوری قادر هستیم تا اشیا را از راه دور کنترل نماییم. در این آموزش، بر خلاف آموزش پیشین که اتصال به اینترنت از طریق ماژول وای فای ESP8266 صورت گرفت، به کمک ماژول SIM808 به اینترنت متصل شده و امکان کنترل وسایل برقی با اینترنت GPRS فراهم خواهد شد. ماژول SIM808 که قابلیت ارسال و دریافت پیامک و برقراری تماس تلفنی را در خود جای داده، می تواند به شبکه اینترنت متصل شده و همانند ماژول وای فای، به ارسال و دریافت داده بپردازد. در کنار موارد ذکر شده، این ماژول دارای گیرنده GPS بوده و می تواند موقعیت مکانی را تعیین نماید. در مورد ارسال آنلاین موقعیت مکانی به سرور، همکارم در این آموزش، به طور مفصل به این موضوع پرداخته است. در این آموزش هم، ما به کمک برد آردویینو UNO و ماژول SIM808، با ارسال موقعیت مکانی به سرور، برای اولین بار در سطح آموزشی محتوای فارسی، از وب سایتی که پیشتر به همین منظور طراحی کرده ایم، فرمان فعال یا عدم فعال سازی را  به کمک اینترنت ماژول SIM808 دریافت خواهیم نمود.  در نظر داشته باشید که در این آموزش از هیچ یک از کتابخانه های آماده ماژول SIM808 استفاده نشده و خود اقدام به طراحی توابعی در جهت ارتباط با ماژول، نموده ایم. در ادامه با مرجع تخصصی آردوینو به زیان فارسی دیجی اسپارک همراه باشید.

 

لینک اجرای این آموزش در لایو اینستاگرام

 


کنترل وسایل برقی با اینترنت


در سال‌های اخیر با رشد تکنولوژی الکترونیک امکان فرمان به وسایل برقی از روش‌های مختلف صورت گرفته است. منظور از کنترل وسایل برقی، یعنی بدون نیاز به حضور انسان، امکان اجرای درخواست فراهم باشد. این درخواست میتواند روشن کردن کتری برقی، باز شدن در پارکینگ و یا خاموش و روشن کردن روشنایی باشد. طی یکی دو سال اخیر با توسعه و فراگیر شدن بردهای امبدد Embedded Systems امکان پیگیری درخواست‎های پیچیده هم فراهم شده است. کنترل وسایل برقی با روش‌ها و متدهای مختلف صورت گرفته است. در موضوع اینترنت اشیا علاوه بر مشخص بودن و تعیین کردن وضعیت دستگاه‌های مختلف امکان مدیریت و کنترل آن‌ها هم فراهم است. در این آموزش با ماژول سیم کارت و اتصال به شبکه اینترنت ۲G اقدام به کنترل وسایل برقی با اینترنت می‌کنیم.

 


شماتیک و قطعات مورد استفاده


در این آموزش، از یک برد آردویینو uno و یک ماژول sim808 استفاده نموده ایم. مهم ترین مسئله در مورد ماژول های سیم کام، بحث تامین تغذیه این نوع از ماژول های مخابراتی است. از آنجاییکه این ماژول ها در هنگام اتصال به شبکه جریان بالایی در حدود دو آمپر را نیاز دارند، بنابراین می بایست از یک منبع تغذیه مناسب برای این ماژول ها، استفاده گردد. از آنجاییکه ولتاژ تغذیه ماژول sim808 بین ۳٫۴ الی ۴٫۴ بوده و ولتاژ کمتر از حداقل باعث خاموش شدن ماژول و بیشتر از حداکثر سبب سوختن آن خواهد شد و از طرفی دیگر، معمولا تغذیه های در دسترس ۵ ولت هستند، از ماژول سیم کارت Sim808 به اضافه آنتن GSM و آنتن GPS استفاده شده است. این ماژول با تغذیه ۵ ولت بهترین کاربری را خواهد داشت. دقت نمایید برای راه اندازی برد معرفی شده، تنها از تغذیه ۵ ولت با توان حداقل دو آمپر استفاده نمایید. برای قسمت پردازش نیز، همانطور که پیشتر گفته شد، از برد آردویینو uno استفاده شده است. لیست قطعات مورد نیاز این پروژه را در زیر مشاهده می نمایید.

ماژول SIM808 با قابلیت GPS

آنتن GSM

آنتن GPS

برد آردویینو UNO (تغذیه برد آردویینو از همان کابل تامین می شود)

مقاومت ۱k اهم

ماژول رله

ماژول رله تک کانال Relay Module - دیجی اسپارک

 


تغدیه ماژول sim808


در صورتیکه آداپتور ۵ ولت ندارید، می توانید از آداپتور ۱۲ ولت زیر استفاده نموده و سپس به کمک یک مبدل ولتاژ سوییچینگ، ولتاژ ۱۲ را به ۵ ولت بکاهید. آداپتور و یا مبدل کاهنده ولتاژ را تهیه کنید. بر روی مبدل کاهنده ولتاژ، یک مولتی ترن وجود دارد که پیش از اتصال آن به ماژول، می بایست با چرخاندن آن، ولتاژ را به ۵ ولت برسانید. در زیر نمایی از شماتیک مدار را مشاهده می نمایید.

 


مدار کنترل وسایل برقی با اینترنت


در این پروژه از ماژول SIM808 به عنوان درگاه استفاده از سیم کارت برای ارتباط با شبکه مخابراتی استفاده می‌کنیم. به همین دلیل روش اتصالات و تغذیه این برد بسیار اهمیت دارد. همانطور که پیشتر اشاره شده است. این ماژول سیم کارت از طریق رابط سریال با برد آردوینو ارتباط برقرار می‌کند. به همین دلیل علاوه بر اتصالات بخش تغذیه ماژول سیم کارت Sim808 بایستی ارتباط سریالی با برد آردوینو هم برقرار شود. به تصویر زیر دقت کنید. پایه شماره ۱۰ آردویینو به پایه TX ماژول متصل گردد.

پایه شماره ۱۱ ماژول به یک طرف مقاومت R1 متصل شود، یک طرف پایه مقاومت R2 به زمین متصل شود، سپس پایه های باقی مانده از هر مقاومت پس از اتصال به یکدیگر، به پایه RX ماژول متصل شود. دلیل این امر کاهش ولتاژ ۵ ولتی پایه آردویینو به ۲٫۵ است(تقسیم مقاومتی)، چراکه پایه RX ماژول SIM808 نهایتا تحمل ۲٫۸ ولت را دارد. توجه داشته باشید که  هرکدام از مقاومت های R1  و  R2، ظرفیتی برابر با ۱K اهم دارند.

شماتیک اتصالات ماژول سیم کارت Sim808 به برد آردوینو - دیجی اسپارک

 

نکته‌ی بسیار مهم: دقت داشته باشید که پایه GND ماژول علاوه بر GND تغذیه، به GND آردویینو متصل گردد. در این پروژه برای کنترل وسایل برقی از ماژول رله Relay به عنوان فرمان دهنده به وسایل برقی استفاده می‌کنیم. خروجی های رله و اتصال لامپ به شرح زیر است.

-پایه شماره ۴ آردویینو به پایه IN

-پایه GND رله به GND آردویینو

-پایه VCC رله به پایه ۵V آردویینو

 

هشدار: درصورتیکه آشنایی کافی با سیم کشی و برق ۲۲۰ ولت ندارید، این قسمت را حتما زیر نظر یک آگاه به امر، انجام دهید.

 

مطابق تصویر درج شده در شماتیک، پس از قرارگیری لامپ در سرپیچ و سیم کشی آن، یک سیم از سرپیج لامپ را به یک سیم از برق ۲۲۰ متصل نمایید. سپس سیم دیگر برق ۲۲۰ را به پایه com ماژول رله و سیم دیگر لامپ را به پایه nc ماژول رله متصل نمایید. توجه داشته باشید که در اینجا، لامپ مورد استفاده، یک لامپ ۱۰۰ وات رشته ای است. مجددا تاکید می گردد که در این بخش، حفظ ایمنی و دقت، ضروری بوده و در صورت عدم آشنایی کافی با نکات مربوط به برق ۲۲۰ ولت شهری، حتما از یک  فرد خبره کمک بگیرید. بدیهی است که مسئولیت عدم رعایت نکات فنی و ایمنی، بر عهده شخص خاطی خواهد بود.

راه اندازی ماژول سیم کارت Sim808 با برد رزبری پای - دیجی اسپارک

 


کد کنترل وسایل برقی با اینترنت


در این قسمت، به کدهای به کار رفته در پروژه، می پردازیم. همانطور که پیشتر ذکر گردید، در این پروژه از کتابخانه های موجود برای ماژول sim808 استفاده نشده و توابع لازم جهت دریافت اطلاعات GPS، ارسال داده به سرور با متد POST و دریافت فرمان از سرور، توسط خود ما، طراحی شده است.

 

جهت دسترسی به این بخش، اشتراک اسپارکر پلاس تهیه کنید.

 

در ادامه، با توجه به آموزش طراحی وب سایت جهت دریافت موقعیت و ارسال فرمان به رله، با آپلود کدهای وب سایت بر روی آن، می توانید از طریق وب سایت و بدون هیچ محدودیت فاصله، به رله فرمان ارسال نموده، پیام متنی برای آردویینو فرستاده و همچنین موقعیت آردویینو را به صورت لحظه ای، ردیابی نمایید.

 


تحلیل کدهای پروژه


در طراحی این سامانه، از کتابخانه سریال نرم افزاری استفاده شده است؛ به طوریکه پایه ۱۰ آردویینو به عنوان پایه RX آردویینو و پایه شماره ۱۱ آردویینو به عنوان پایه TX آردویینو در نظر گرفته می شود. همچنین به عنوان پایه فرمان، پایه ۴ آردویینو به عنوان خروجی در نظر گرفته شده است. روال اجرای این پروژه، بر روی دوش ۴ تابع اصلی، قرار می گیرد:

جدول توابع کدنویسی ماژول سیم کارت Sim808 با آردوینو - دیجی اسپارک

 

در نهایت با اجرای برنامه، در سریال مانیتور آردویینو می توانید عملکرد برنامه را مشاهده نمایید:

وضعیت ماژول سیم کارت در سریال مانیتور آردوینو - دیجی اسپارک

 


جمع بندی


در این آموزش، برای اولین بار در سطح محتوای فارسی، پروژه کنترل اینترنتی رله به کمک اینترنت GPRS ماژول SIM808، به طور کامل شرح داده شد.  از دیگر قابلیت های این پروژه، می توان به ارسال موقعیت مکانی به سرور (live location) اشاره نمود؛ این در حالیست که کار با ماژول های شرکت سیم کام و قرارگیری آن در پروژه های عملی و و اقعی، چالش های فراوانی را در بر میگیرد. به عنوان نمونه، یکی از مهم ترین چالش های آن، بحث صحت سنجی از عملکرد آن و کنترل وضعیت اتصال این ماژول به شبکه است که در این آموزش به طور مفصل، راجع به آن بحث شده است.

 

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

 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

معین صابری

کارشناسی ارشد رشته معماری سیستم های کامپیوتری

مالي که ز تو کس نستاند، علم است
حرزي که تو را به حق رساند، علم است
جز علم طلب مکن تو اندر عالم
چيزي که تو را ز غم رهاند، علم است
(شیخ بهایی)

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۶ دیدگاه

  • با عرض سلام وخسته نباشید با تشکر از آموزش های خوب شما
    من ما ژول sim808 رو راه اندازی کردم و اطلاعاتی نظیر موقیت GPS و دما رو با فرمت HTTP (مد GET یا POST) به یکی از پلتفرم های اینترنت اشیا میفرستم با توجه به اینکه هر ۵ ثانیه داده ها به سایت ارسال میشوند ولی آپدیت داده ها در سایت حدود هر ۲۰ ثانیه میباشد با سرچ در اینترنت متوجه شدم که connection بعد از هر بار ارسال close میشود و باید آن را keep alive کرد ولی at comman آن را پیدا نکردم ممنون میشم راهنمایی کنید
    و اینکه شما از at command های CIP برای ارسال استفاده کردید ولی من از HTTP استفاده کردم دستوراتی زیر:
    “AT+HTTPINIT”
    “AT+HTTPPARA=\”CID\”
    “……………….AT+HTTPPARA=\”URL\
    “AT+HTTPACTION=1”
    “AT+HTTPTERM”

    • عرض سلام خدمت شما
      بابت لطف شما سپاسگزارم
      در مورد موضوع شما، چند نکته را می بایست در نظر داشته باشید.
      ۱-ابتدا در نظر بگیرید که همواره داده ها را به کمک POST ارسال نمایید، چراکه متد POST برخلاف متد GET، عمل cach دیتا در سرور را انجام نداده و تنها بروزترین داده ها در سرور دخیره می گردند.
      ۲-در رابطه با رفرش ۲۰ ثانیه ای، به احتمال قریب به یقین این تاخیر به دلیل زمان رفرش در پلتفرم شماست، نه تاخیر در ارسال توسط ماژول. به عبارت دیگر، پلتفرم شما هر ۲۰ ثانیه یکبار اقدام به نمایش داده های جدید می نماید.
      ۳- در رابطه با فرامین AT، تفاوتی بین دستورات من و شما وجود ندارد. دستورات شما در حقیقت فرم ساده تر شده دستورات استفاده شده در این پروژه است. برای keep alive بودن ارتباط، پس از هر ارتباط، شما نباید ارتباط را با دستور AT+CIPCLOSE قطع نمایید. شما می بایست به طور متوالی اقدام به ارسال داده نموده و پس از اینکه ارتباط قطع شد، مجددا ارتباط را متصل نمایید. تشخیص قطع شدن اتصال در کدهای این پروژه در تابع send_data صورت پذیرفته است.
      در پایان، به نظر نمی رسد که مدت زمان keep alive قابل تنظیم توسط کلاینت باشد، این مورد در وب سرور قابل تنظیم است، به عنوان مثال، در وب سرور آپاچی با ورژن ۱٫۱، این زمان ۱۵ ثانیه به صورت پیشفرض است.

  • سلام
    بعضی از رله ها اپتوکوپلر داره و بعضی هم نداره/ اگر بدون اپتو استفاده کنیم در عملکرد مدار تاثیر دارد؟؟

    • سلام
      بستگی به تجهیزی دارد که به رله متصل می نمایید. به عنوان مثال، بارهای ضعیف مثل لامپ، خیر نیازی نیست. اما در بارهای سنگین، مثل موتورهای الکتریکی، بهتر است از اپتو استفاده شود، چراکه موتورها بارهای سلفی شدید تولید می کنند.

  • سلام خسته نباشید توضیحات کامل بود فقط آیا استفاده از مفاومت اجباری است برای این گفتم که در صورتی که مدار برای مکان خاصی بخوام ممکنه اتصال مقاومت ها پیجیده باشه

    • سلام
      وجود مقاومت ها در بلند مدت سبب افزایش طول عمر ماژول SIM808 میگردد. با توجه به اینکه ولتاژ روی پایه RX این ماژول نباید بیشتر از ۲٫۸ یا نهایتا ۳ ولت باشد، و از طرفی دیگر ولتاژ پابه TX اردویینو ۵ ولت است، وجود مقاومت ها ولتاژ ۵ را به ۲٫۵ کاهش داده و مانع از آسیب دیدگی ماژول در دراز مدت خواهد شد.

  • سلام
    وقت بخیر
    سپاس از وبسایت و توضیحات خوبتون.
    من قصد دارم که با در اختیار داشتن این سیستم بتوانم قسمت مربوط به سرور آن را توسعه دهم.
    اما با توجه به تجربه خیلی کم در زمینه کار عملی می‌خواستم ببینم امکانش هست با هزینه بتونم یک سیستم آماده از شما تهیه بکنم؟
    ممنون می‌شم اگر راه ارتباطی به من پیشنهاد دهید تا در این باره بیشتر توضیح بدم.

    • با سلام خدمت شما
      بله، دپارتمان فنی دانشجو کیت که وب سایت دیجی اسپارک زیر مجموعه آن است، آماده انجام پروژه می باشد. برای این منظور، ابتدا به وب سایت دانشجو کیت به آدرس زیر، مراجعه نمایید:
      وب سایت دانشجوکیت-کلیک کنید
      در این وب سایت، بر روی گزینه پرتال پشتیبانی کلیک نمایید. در ادامه، در منوی ظاهر شده، بر روی گزینه راهنمایی و مشاوره قبل ازخرید محصولات کلیک نمایید. در این قسمت، بخش تیکت را دپارتمان پشتیبانی و در منوی پایین آن، روی خدمات فنی ویژه کلیک نمایید. در ادامه، عنوان و متن درخواست خود را نوشته و بر روی گزینه ارسال، کلیک کنید. پس از دریافت درخواست شما، روند کار و اجرای آن، آغاز خواهد شد.

  • سلام اقای مهندس وقت بخیر ممنون بابت اموزش خوبتون
    من اردواینو و ماژول sim800L را دارم و می خوام رله را از طریق gprs فعال کنم ایا از این کد پرژه شما میتونم استفاده کنم؟ میشه راهنمایی کنید

    • سلام و سپاس از لطف شما
      همانطور که پیشتر هم عرض شد، بله، کاملا قابلیت اجرایی دارد. تنها تفاوت ماژول SIM800L و SIM808، وجود GPS بر روی SIM808 است. در این دو ماژول، دستورات اینترنت کاملا یکسان بوده و برنامه از این جهت، کاملا قابلیت اجرا را بدون نیاز به تغییر خاصی، برای SIM800L خواهد داشت.

      • سلام اقای مهندس صابری خسته نباشید
        چند تا سوال داشتم ممنون میشم راهنمایی بفرمایید
        سوال اول:من کد را کپی کردم و ارتباط sim800l و اردو اینو برقرار شد در سریال مانیتور WAITING TO CONNECT TO NETWORK نوشته میشه و بعد دیگه اتفاقی نمیافته؟چرا
        سوال دوم:ایا دستور AT+CCALR همان دستور کانکت شدن sim800l به gprs و اینترنت هستش؟
        سوال سوم؟در تابع void loop با توجه به اینکه ماژول بنده sim800l می باشد تابع get_gps_data() عملا کار نخواهد کرد؟ پس دستور بعدیکه مربوط ارسال دیتا از وب سرور if ( send_data(“example.com”, “/data_st.php” , “tmp=” + gps_data) != -1) به ماژول هست چه طور امکان پدیر میشه؟
        پیشاپیش از راهنماییتون ممنونم

        • سلام و متشکرم از لطف شما
          ۱- این قسمت مربوط به کنترل اتصال ماژول به شبکه GSM است. در اینجا دقت کنید که سیم کارت به درستی در ماژول قرار گرفته شده باشد، و تغذیه ماژول SIM800L به درستی تامین شده باشد. چانچه ماژول به شبکه متصل نشود، برنامه جلو نخواهد رفت. همچنین دقت کنید که اتصالات RX/TX به درستی صورت پذیرفته باشد و پایه gnd ماژول و برد یکی باشد.
          ۲- خیر، این دستور اتصال ماژول به شبکه GSM را کنترل می کند.
          ۳-خروجی این تابع خالی و یا خطا خواهد بود، چراکه SIM800L GPS ندارد. این مقدار خطا و یا خالی نیز در تابع send_data به سرور ارسال خواهد شد. شما می توانید به جای متغیر gps_data، موارد دیگر نظیر دمای اندازه گیری شده از یک سنسور و یا خروجی تابع millis را قرار دهید.
          خواهش میکنم، لطفا موارد فوق را بررسی و تست کرده و نتیجه را از همین طریق اطلاع رسانی نمایید تا مشکل هرچه زودتر برطرف گردد.

  • باسلام من مشکل عدم برقراری ارتباط با شبکه در ماژول sim808 را دارم. از پاور بانک که خروجی ۲٫۵ آمپر ۵ولت دارد استفاده کردم و از سیم کارتی که در گوشی خودم بوده و مشکلی برای ارتباط با شبکه ندارد استفاده میکنم و از انتن ipx و هم انتن gsm استفاده کردم.
    اول چراغ سبز رنگ ۶ بار چشمک میزنه رو هفتمی یکم میمونه بعد دوبار ۶ تا چشمک و همینطور ادامه داره و هیچ وقت چشمک چراغ کند نمیشه که یعنی اتصال برقرار شده. لطفا راهنمایی بفرمایید که کجای کار مشکل داره. ممنون

    • سلام
      این حالت چشمک زن مربوط به ضعف تغذیه است. از چه کابلی برای تغذیه برد استفاده کرده اید؟
      آیا برد شما مثل برد همین آموزش است؟

      • کابلی که استفاده میکنم کابل تک رشته ای یا مفتولی هست. مشکل از همین کابله بنظرشما؟
        بله برد من هم دقیقا همین برد هست.

        • سیم باید به صورت تک رشته ای خشک باشد. مثل سیم تلفن که در کابل کشی ساختمان ها استفاده می شود.

          • با تشکر. مشکل از کابل بود. کابل رو تعویض و کوتاه کردم مشکل حل شد. نکته جالبی که داشت با کابل یکسان وقتی طول کابل بلند بود ماژول کار نمیکرد ولی وقتی کابل کوتاه استفاده کردم ماژول فعال و به شبکه متصل شد. سپاس از راهنمایی.

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

  • با سلام و خسته نباشید
    ممنون از آموزش خوبتون با توجه به این آموزش،اگر وب سرویسی اماده کنیم که تعداد کاربران آن زیاد باشد نمیتوان به این سادگی از ان استفاده کنیم. توی این حالت باید چکار کرد
    مثلا فرض کنید ۱۰۰تا کاربر داریم،ارسال و دریافت اطلاعات سرور را زیاد مشغول نمیکند؟
    فایل های txt ساخته شده را چطوری باید هندل کرد زیرا پیام هر کاربر و وضعیت رله ان متفاوت از کاربر دیگر است

    • سلام و ممنونم از شما
      در این حالت، منابع سرور نظیر پردازنده، ترافیک داده و حجم حافظه باید افزایش یابد. در این حالت ارسال و دریافت داده در سطح بالا ممکن خواهد شد. در کنار این، جهت تفکیک وضعیت هر رله با رله دیگر، می توان از شماره IMEI هر ماژول سیم کارت استفاده نمود. از آنجاییکه IMEI هر ماژول منحصر به فرد و یکتا است، لذا می توان از این طریق به تبادل و تفکیک داده پرداخت.

      • سلام مجدد جناب مهندس صابری،من میخوام لامپ رو با دستوری که از وب ارسال میشه روشن کنم،اما ایده ای که دارم اینجوریه که دستگاه همیشه در حال آماده به کار باشد و به محض اینکه دستور از نت دریافت کرد دستور را پردازش کند و سپس لامپ را روشن کند، در این حالت به محض تغییر در اطلاعات سرور، سرور باید یک پیام به دستگاه ما ارسال کند( ،ip دستگاه هم استاتیک هست)، اینطوری به نظرم هم ترافیک وب سرویس کاهش پیدا میکنه،هم نیاز به کنترل فایل های متنی نیست،
        نحوه ارسال درخواست از وب سرویس به سیم۸۰۸ چطوریه؟ خیلی گشتم اما نتونستم چیز بدرد بخوری را پیدا کنم

        • برای این مورد نیاز به پیاده سازی سرویس push notification دارید، سرویسی که نیاز به سیستم عامل دارد. اما فکر می کنم بتوان شبیه به این مورد را با سرویس MQTT پیاده سازی کرد. در این رابطه تحقیق کنید و لطفا نتیجه را در کامنت بعدی اعلام کنید.

          • بله حتما نتیجه رو به اشتاک میگذارم، فقط ببخشید یک سوالی نتیجه lastIndexOf برای -۱ برمیگردونه، با اینکه وقتی استرینگ پاسخ رو نگاه میکنم n\ حتما داره