پروژه آردوینو, آموزش, اینترنت اشیاء, توصیه شده

ساخت ردیاب با GPS و ارسال پیام با ماژولSIM808 و آردوینو

راه اندازی GPS با SIM808

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

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

در این پروژه از سری پروژه های آردوینو می‌خواهیم اطلاعات GPS ماژول SIM808 را توسط آردوینو دریافت و سپس در قالب یک پیام به همراه نقشه گوگل (GoogleMap) به مخاطب ارسال کنیم.

برای انجام این پروژه به موارد زیر نیاز است:

ماژول سیم SIM808

آنتن GPS و GSM

راه اندازی SIM808 با آردوینو

آردوینو UNO

برد آردینو UNO

 

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

کدنویسی ماژول SIM808

توصیه‌ای که می‌کنیم قبل از خواندن این بخش،

مقاله راه اندازی GSM Modem با آردوینو (MC60) را مطالعه کنید.

در این بخش به موارد زیر می‌پردازیم.

  • راه اندازی GPS
  • ارسال پیام
  • دریافت پیام
  • تنظیمات فعال سازی
  • اعلام موجودی
  • شناسایی اپراتور
  • تغییر زبان سیم کارت به انگلیسی
  • دریافت شماره تلفن
  • معرفی تابع فیلتر پیام
  • حذف پیام‌های دریافتی جهت مدیرت حافظه
  • ارسال پیام به همراه مختصات GoogleMap
  • معرفی تابع فیلتر برای بدست آوردن مقادیر GPS
  • معرفی تابع ارسال پیام به همراه داشتن TimeOut و Debug

نکته: تمامی قابلیت‌ها با کمی خلاقیت قابل تعمیم برای تمام میکروکنترلرهای دیگر هم می‌باشد

راه اندازی GPS با SIM808

برای راه‌اندازی این قسمت نیاز است که یک دید کلی نسبت به دیتاشیت این ماژول داشته باشیم تا بتوانیم کار موردنظر خود را انجام دهیم.

دقت کنید که دستورات GPS این ماژول کمی دچار تغییر شده‌اند و این اشتباه را نکنید که دستورات را طبق دیتاشیت‌های قدیمی این ماژول وارد کنید چون به احتمال زیاد دچار خطا خواهید شد. البته این روند برای ورژن های جدید ماژول های این شرکت صادق می‌باشد.

به طور مثال اگر دستور روشن کردن GPS را به صورت AT+CGPSPWR=1 وارد کنید ماژول EEROR را نمایش خواهد داد حال برای رفع این موضوع فقط کافیست که دستور را به صورت AT+CGNSPWR=1 وارد کنید و به طور کلی می‌توان گفت که به جای GPS واژه GNS قرار دهید.

دلیل اینکار هم این است که در سری های قبلی این ماژول‌ها از سیستم GPS پشتیبانی می‌شد اما چند سالی است که ورژن‌های جدید این ماژول ها از سیستم GNSS پشتیبانی می‌کنند و همین امر سبب تغییر برخی از دستورات ماژول شده است.

خب برای راه اندازی GPS ماژول SIM808 به دستورات زیر نیاز داریم.

  • AT+CGNSPWR=1 روشن کردن GPS
  • AT+CGNSPWR=0 خاموش کردن GPS
  • AT+CGNSINF ارسال اطلاعات

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

ارسال پیام در SIM808

این تابع همانطور که از اسمش هم مشخص است صرفا برای ارسال پیام نوشته شده است که عملکرد آن به صورت زیر است.

فعال سازی SIM808

این تابع جهت آماده سازی GSM نوشته شده است و طبق دستوراتی که ارسال می‌شود، اگر ماژول پیامی تحت عنوان CPIN READY دریافت کرد، به این معنی است که ماژول آماده به کار است.

دریافت پیام در SIM808

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

تشخیص اپراتور در SIM808

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

دریافت اعلام موجودی در SIM808

این تابع موجودی سیمکارت را برمی‌گرداند، که عملکرد آن همانطوری که مشخص شده است یک کد USSD برای اپرتور ارسال می‌کند در صورتیکه زبان اپراتور به زبان انگلیسی تعییر کرده باشد به راحتی موجودی سیمکارت را برای مخاطب موردنظر ارسال می‌کند.

تغییر زبان اپراتور به زبان انگلیسی در SIM808

این تابع زبان اپراتور را به زبان انگلیسی جهت دریافت موجودی سیم ‌کارت تغییر می‌دهد، تا در قسمت تابع دریافت موجودی مشکلی پیش نیاید.

دریافت شماره تلفن در SIM808

این تابع کار دریافت شماره تلفن‌های ورودی را برعهده دارد به طوریکه هر شماره‌ای که بخواهد پیام دهد، ابتدا توسط این تابع شماره ورودی دریافت می‌شود.

ارسال پیام توسط نقشه GoogleMap

برای این کار نیاز داریم که لینک گوگل را پیدا کنیم که دقیقا با چه فرمتی نوشته شده است و دقیقا همان فرمت را پیاده سازی کنیم.

اگر به خط بالا دقت کنید می‌بینید که دارای مقادیر مختلفی است حالا این اعداد چه چیزی را بیان می‌کنند؟

این اعداد دقیقا همان طول و عرض جغرافیایی هستند، کاری هم که ما باید انجام دهیم دقیقا بدست آوردن همین مقادیر است و در نهایت جایگزین کردن مقادیر بدست آمده در مختصات GoogleMap.

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

فرمت صحیح به صورت خط زیر می‌باشد:

 

تابع GPS

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

تابع ارسال پیام به همراه داشتن TimeOut و Debug

یکی از مهم‌ترین توابعی که می‌توان گفت از اهمیت بسیار بالایی برخوردار است، همین تابع است.

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

نحوه اتصال برد آردوینو به SIM808

نحوه اتصال SIM808 به آردوینو

کد نهایی

خب حالا وقت تلفیق کدها با یکدیگر رسیده است که تمامی آپشن‌ها را در قالب یک کد پیاده سازی کنیم.

نکته‌ای که حائز اهمیت است، این مقاله صرفا آموزشی است و به روش‌های بسیار ساده کدنویسی شده است تا خوانایی کد برای تمامی خوانندگان واضح باشد. کد را میتوانید از اینجا دانلود کنید.

دقت داشته باشید که ماژول SIM808 جریان زیای را برای اتصال به شبکه همراه نیاز دارد، بنابراین از یک منبع تغذیه کمک بگیرید، همچنین موازی کردن یک خازن 1000nf با منبع تغذیه میتواند به جریان کشی ابتدایی ماژول کمک کند. همچنین دقت داشته باشید که ماژول بدون آنتن GPS و GSM ممکن است به درستی عمل نکند.

 

طبق کد بالا هر 1 ثانیه یک بار مختصات به روز می‌شوند. و در نهایت اگر همه چیز به درستی صورت گرفته باشد باید به جواب شکل زیر برسید.

 

امیدواریم که این آموزش هم برای شما مفید واقع شده باشد. با سیسوگ همراه باشید.

author-avatar

درباره BLO OM

«السَّلَامُ عَلَیْکَ یَا أَبَا عَبْدِ اللَّهِ، السَّلَامُ عَلَیْکَ وَ رَحْمَهُ اللَّهِ وَ بَرَکَاتُهُ».

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

74 دیدگاه در “ساخت ردیاب با GPS و ارسال پیام با ماژولSIM808 و آردوینو

  1. Avatar for علی علی گفت:

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

  2. Avatar for reza reza گفت:

    سلام
    یک سوال داشتم
    من داخل پروژه ای از sim800c استفاده کردم و برای استعلام شارژ از ussd استفاده میکنم. این استعلام شارژ دائمی هستش و پس از ارسال چند اس ام اس یا برقراری تماس انجام میشه. حالا اگه سیمکارت دائمی باشه این عملیات استعلام شارژ چون موفقیت آمیز نیست میافته توی لوپ.
    راهی هست که تشخیص بدم سیمکارت دائمی هست یا اعتباری؟

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

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

      1. Avatar for reza reza گفت:

        خیلی ممنون
        میتونم تنظیمی قرار بدم که کاربر نوع سیمکارت رو خودش وارد کنه ولی دنبال راهکاری برای اتوماتیک کردن این مورد بودم.
        ممنون از راهنماییتون.

  3. Avatar for حسین حسین گفت:

    با سلام
    برنامه فعال سازی sim808 رو آپلود کردم میگه ک رو برد آردینو مگا ۲۵۶۰ کامپایل نمیشه
    چیکار کنم؟

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      باید ببینید به کدام بخش از کد داره خطا میده و اون مشکل رو حل کنید

  4. Avatar for رضا رضا گفت:

    سلام مشکل اتصال به سایتهای با پروتکل امن رو دارم تمامی مراحل اتصال رو به درستی رفتم ولی زمان اتصال ERROR 606 میده لطفا کمک کنید
    مدل SIM: Revision:1418B04SIM808M32

    1. Avatar for Zeus ‌ Zeus ‌ گفت:

      سلام دوست عزیز
      منظور شما از پروتکل امن چه پروتکلی هست و بر اساس چه داکیومنتی پیش رفتید

      1. Avatar for رضا رضا گفت:

        سلام پرتکل ssl برای اتصال به https که متاسفانه متصل نمیشه و از داکیومنت
        SIM800 Series_SSL
        application Note
        استفاده شده

        1. Avatar for Zeus ‌ Zeus ‌ گفت:

          سلام و دورد دوست عزیز
          من با ماژٰول های SIM800 مدت زیادی هست که کار نکردم، ولی توی ارتباط SSL اولین چیزی که اهمیت داره اینه که شما درخواست هاتون رو میخوان HTTPS ارسال کنید یا با SSL Socket و مرحله بعد دقت به این مهم هست که آیا کلیدها رو با فرمتی که برای ماژول قابل خوندن هست قرار می‌دید یا نه و آیا میتونید کلیدها رو توسط خود ماژول وریفای کنید یا نه و ….
          توصیه می‌کنم از ماژول های کویکتل استفاده کنید مثلا ماژولی مثل MC60 با مدل‌های دیگه- خودم به شخصه SSL این ماژول‌ها رو راه اندازی کردم و اگر مشکلی بود میتونم کمک کنم

  5. Avatar for پریسا پریسا گفت:

    سلام وقتتون بخیر
    من با ماژول sim808 کار می کنم. تقریبا هفته ی گذشته به دستور AT+CGNSPWR=1 و AT+CGPSPWR=1 جواب میداد و ok بر میگردوند ولی امروز کلا بهشون جواب نمیده. به نظرتون مشکل چیه و چکار کنم درست بشه؟

    1. Avatar for Sisoog Os Sisoog Os گفت:

      سلام اگر کلا جواب AT کامند نمیده ببنید LED ها چشمک میزنه یا نه
      اگر LED هاش هم چشمک نمیزنه شاید مشکل سخت افزاری پیدا کرده بردتون یا جتی ماژولتون اسیب دیده

  6. Avatar for نرگس نرگس گفت:

    با سلام
    من سیمکارتم ایرانسل هستش. پاور هم اوکیه و مشکلی نداره. این برنامه رو run کردم ولی شبکه رو not recognized میده و انگار به شبکه ای متصل نمیشه. لیست شبکه های ماژول رو هم چک کردم ایرانسل رو ندیدم توی لیست
    برای اینکه شبکه رو بشناسه باید کاری انجام بدم؟

    1. Avatar for Sisoog Os Sisoog Os گفت:

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

  7. Avatar for نیما نیما گفت:

    سلام من sim900a دارم و دارم روی پروژه ساخت gps کار میکنم میخواستم ببینم ایا کد های sim808 که بالا قراردادین به sim900 میخوره یا خیر ؟ و اگه نخوره من از کجا میتونم کمک بگیرم برای کد نویسی ؟

    1. Avatar for Sisoog Os Sisoog Os گفت:

      سلام SIm900A فقط GSM هست ولی SIM808 هم جی پی اس داره و هم GSM
      کامندهای جی اس ام ها عالبا یکسان هستند و دیتاشیت هر کدوم بهترین رفرنس برای کمک گرفتن هست

      1. Avatar for مصطفی مصطفی گفت:

        ببخشید sim800l چطور؟؟

        1. Avatar for Zeus ‌ Zeus ‌ گفت:

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

  8. Avatar for امیر امیر گفت:

    سلام
    ممنون از پروژه خوبتون
    من بستم مدارو دقیق و کد رو بارکذاری کردم ولی متاسفانه در قسمت سریال مانیتور ارور
    Starting …
    Not Recognized رو دریافت میکنم و روی خود برد سیم 808 بعد از زدن دکمه ایستاده ال ای دی قرمز چندبار چشمک میزنه و مجدد خاموش میشه

    اتصالات رو چک کردم و شماره رو هم قرار دادم صحیح
    بیزحمت راهنمایی کنید

  9. Avatar for hesam azizi hesam azizi گفت:

    سلام کد رو وارد کردم و دوتا خطا اشت اون ها روهم درست کردم ولی هنوز یه خطا میده میشه راهنمایی کنید
    exit status 1

    ‘sendData’ was not declared in this scope

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    1. Avatar for zeus zeus گفت:

      این خطایی که دارید میگیرید به این دلیله که تایع sendData رو پیدا نمی کنه

  10. Avatar for hesam azizi hesam azizi گفت:

    سلام خسته نباشید من کد رو وارد کردم ولی این خطا رو میده

    redefinition of ‘string phone’

    میشه اشکالش رو بگین

    1. Avatar for zeus zeus گفت:

      میگه شما دوبار (یا چند بار ) شماره تلفن رو وارد کردید 😐

  11. Avatar for حسام حسام گفت:

    redefinition of ‘String Phone’

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    سلام خسته نباشید برای من ارور میاد یعنی چه

    1. Avatar for zeus zeus گفت:

      به این دلیله خطا که ظاهرا Phone رو چند بار توی برنامه تعریف کردید.

  12. Avatar for حسام حسام گفت:

    Arduino: 1.8.13 (Windows 7), Board: “Arduino Uno”

    sketch_apr28a:8:8: error: redefinition of ‘String Phone’

    String Phone = “0903584226” ; // like a 0938*****75

    ^~~~~

    C:\Users\SAJAD\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino:6:8: note: ‘String Phone’ previously declared here

    String Phone= “090********”;

    ^~~~~

    C:\Users\SAJAD\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino: In function ‘void setup()’:

    sketch_apr28a:17:6: error: ‘sendData’ was not declared in this scope

    sendData(“AT+CGNSPWR=1”,1000,DEBUG);

    ^~~~~~~~

    C:\Users\SAJAD\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino:17:6: note: suggested alternative: ‘data’

    sendData(“AT+CGNSPWR=1”,1000,DEBUG);

    ^~~~~~~~

    data

    sketch_apr28a:22:15: error: ‘Ooperator’ was not declared in this scope

    Operator= Ooperator();

    ^~~~~~~~~

    C:\Users\SAJAD\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino:22:15: note: suggested alternative: ‘Operator’

    Operator= Ooperator();

    ^~~~~~~~~

    Operator

    sketch_apr28a:28:16: error: ‘Operator_Setting’ was not declared in this scope

    Operator_Setting(Operator);

    ^~~~~~~~~~~~~~~~

    C:\Users\SAJAD\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino:28:16: note: suggested alternative: ‘Operator’

    Operator_Setting(Operator);

    ^~~~~~~~~~~~~~~~

    Operator

    sketch_apr28a:29:16: error: ‘GSM_Initilaize’ was not declared in this scope

    GSM_Initilaize();

    ^~~~~~~~~~~~~~

    sketch_apr28a:30:24: error: ‘balance’ was not declared in this scope

    Balance=balance(Ooperator());

    ^~~~~~~

    C:\Users\SAJAD\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino:30:24: note: suggested alternative: ‘Balance’

    Balance=balance(Ooperator());

    ^~~~~~~

    Balance

    sketch_apr28a:33:15: error: ‘Send_Message’ was not declared in this scope

    Send_Message(Phone, “Welcome to SIM808”);

    ^~~~~~~~~~~~

    C:\Users\SAJAD\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino: In function ‘void loop()’:

    sketch_apr28a:47:24: error: ‘receive_message’ was not declared in this scope

    String Read_Message = receive_message();

    ^~~~~~~~~~~~~~~

    C:\Users\SAJAD\Documents\Arduino\sketch_apr28a\sketch_apr28a.ino:47:24: note: suggested alternative: ‘Read_Message’

    String Read_Message = receive_message();

    ^~~~~~~~~~~~~~~

    Read_Message

    sketch_apr28a:51:17: error: ‘Get_PhoneNumber’ was not declared in this scope

    String phones = Get_PhoneNumber(Read_Message);

    ^~~~~~~~~~~~~~~

    sketch_apr28a:55:2: error: ‘sendTabData’ was not declared in this scope

    sendTabData(“AT+CGNSINF”,1000,DEBUG);

    ^~~~~~~~~~~

    Multiple libraries were found for “SoftwareSerial.h”

    Used: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SoftwareSerial

    Not used: C:\Users\SAJAD\Documents\Arduino\libraries\EspSoftwareSerial

    exit status 1

    redefinition of ‘String Phone’

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    سلام خسته نباشید برای من ارور میاد یعنی چه

  13. Avatar for حسام حسام گفت:

    سلام این کد بالا خرابه ؟

    1. Avatar for zeus zeus گفت:

      این کد اینقدر کامنت گرفته فردا به همکارم میگم کد رو کامل کنه و فایل رو به شکل زیپ قرار بده که مشکل دوستان حل بشه

  14. Avatar for مصطفی مصطفی گفت:

    سلام میشه یک متن خاص ارسال کرد مثلا عدد یک و موقعیت برای ارسال کننده عدد یک ارسال بشه
    ممنون

    1. Avatar for Sisoog Os Sisoog Os گفت:

      سلام مطمئنا امکان پذیر هست

  15. Avatar for بابک بابک گفت:

    با سلام
    دقت GPS این ماژول چقدر است؟

    1. Avatar for Sisoog Os Sisoog Os گفت:

      سلام دقت ماژولهای GPS در حالت عادی و البته بهترین کارکرد ذکر میشه کمتر از دو نیم متر

  16. Avatar for امیرحسین آقاجانی امیرحسین آقاجانی گفت:

    ممنون از آموزش خیلی خوبتون..
    چطوری میشه به جای ارسال به شماره موبایل،
    مثلا یه سایت طراحی کرد که… ( طراحی سایت با خودم، من برنامه نویس وب و بکند php هستم و یه چنتا برنامه gps نوشتم که میاد لوکیشن های مختلف رو روی نقشه نشون میده: مثلاً: https://amirhossein.dev/narmafzaran/mapline.php?loc_id=5 )
    آردوینو فقط بیاد چنتا مشخصه مثه Latetude و Longitude و یه چنتا متغیر ثابت رو به یه API ارسال کنه..
    با اینترنت..
    ممنون میشم راهنماییم کنین.

    1. Avatar for Sisoog Os Sisoog Os گفت:

      خواهش میکنم دوست عزیز
      لازمه شما با دستورات Get یا Post متغیرها را پاس بدید به ادرسی که میخاهید
      AT+Command های SIM8080 مربوطه را نگاه کنید نحوه استفاده از دستورات کاملا مشخص هست

  17. Avatar for امیر امیر گفت:

    سلام
    امکان انجام پروژه با شما وجود داره در زمینه GPS ؟

    1. Avatar for Sisoog Os Sisoog Os گفت:

      در صورتیکه درخواست انجام پروژه دارید RFQ خودتون را به ادرس Prj At sisoog.com بفرستید حتما بررسی و نتیحه را اعلام خواهیم کرد

  18. Avatar for آرین آرین گفت:

    سلام برنامه ها باید با چه ترتیبی نوشته بشن اول باید راه اندازی GPS نوشته بشه ؟لطفا به ترتیب توضیح بدین؟

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سعی میکنیم انتهای مطلب لینک دانلود پروژه رو قرار بدیم.

  19. Avatar for حسین حسین گفت:

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

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

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

  20. Avatar for محمدرضا محمدرضا گفت:

    با سلام
    من عین مدار شما را شبیه سازی کردم ولی GPS و چراغ سبز رنگ آن به هیچ عنوان روشن نمی شه حتی برق 5 ولت 2 آمپر نیز به آن وصل کردم و همین طور برق 9 ولت ولی باز تغییری حاصل نشد ممنون میشم کمک کنید

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      این که شبیه سازی کردید یعنی دقیقا چکار کردید
      خیلی عوامل داخل کار کرد یا عدم کار کرد یه مدار میتونه تاثیر داشته باشه – مهم ترین مساله هم بحث پاور مدار هست مخصوصا در استفاده از ماژول های مخابراتی

  21. Avatar for محمدی محمدی گفت:

    سلام میتونید بگید که کدوم کد هارو زیر void setup بنویسیم وکدوم زیر void loop

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      خوب خیلی بستگی به خودتون داره آخه
      تابع setup یک بار بعد از روشن شدن و به کار افتادن آردینو اجرا خواهد شد و تابع لوپ به شکل مداوم صدا زده میشه

  22. Avatar for محمدی محمدی گفت:

    سلام کد هارو باید زیر void setup نوشت یا زیرvoid loop نوشت

  23. Avatar for مهرداد مهرداد گفت:

    سلام دوستان . من این برنامه را برای کار با آردوینو نانو دانلود کردم و در همان ابتدا خطای costumer , Phone خطا میگیرد.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      دیگر دوستان هم همین مشکل رو داشتند
      کامنت ها رو مطالعه کنید احتمالا جوب سوالتون رو پیدا کنید.

      1. Avatar for حسام حسام گفت:

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

  24. Avatar for علی علی گفت:

    سلام چرا رو خط String Phone= costumer; گیر میده؟
    متن خطا ‘costumer’ was not declared in this scope

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز شما به جای costumer باید شماره همراه رو وارد کنید مثلا به این شکل “09xxxxxxxx” که برنامه خطا نگیره

      1. Avatar for علی علی گفت:

        invalid digit “9” in octal constant
        سلام الان اینو میده بعد اگه خط رو پاک کنم رو sendData(“AT+CGNSPWR=1”,1000,DEBUG); اروری مشابه قبلی میده
        این کد کتابخونه ای نداره؟
        بعد چرا دوتا string phone داره یکی چنتا x دادین بهش یکی هم که costumer قضیش چیه؟

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

          احتمالا اونجا یادش رفته – منظور این بوده که شماره دلخواه خودتون رو وارد کنید دوست عزیز
          الان کدی که تغییر دادید و خطا دریافت میکنید رو می شه برام بفرستید

          1. Avatar for علی علی گفت:

            سلام بفرمایید
            #include
            #define DEBUG true
            SoftwareSerial mySerial(10,11 );// RX, TX
            String data[5];
            String state,timegps,latitude,longitude;
            String Operator,Balance;
            String Phone = “***********”; // like a 0938*****75

            void setup() {
            Serial.begin(9600);
            mySerial.begin(9600);
            mySerial.println(“AT&F”);
            delay(100);
            mySerial.println(“AT+CMGF=1”);
            mySerial.setTimeout(100);
            sendData(“AT+CGNSPWR=1″,1000,DEBUG);
            delay(50);

            while(1){

            Operator= Ooperator();
            if(Operator==”nothing”){
            Serial.println(Operator);
            }// end if operator
            else{
            Serial.println(Operator);
            Operator_Setting(Operator);
            GSM_Initilaize();
            Balance=balance(Ooperator());

            // Send_Message(Phone, Balance);
            Send_Message(Phone, “Welcome to SIM808”);

            Serial.println(Balance);

            return;
            }
            }// end while

            } // end of Main

            void loop() {

            String Read_Message = receive_message();

            if(Read_Message != “0”){

            String phones = Get_PhoneNumber(Read_Message);

            delay(100);

            sendTabData(“AT+CGNSINF”,1000,DEBUG);
            delay(300);
            if (state !=0) {
            Serial.println(“State :”+state);
            Serial.println(“Time :”+timegps);
            Serial.println(“Latitude :”+latitude);
            Serial.println(“Longitude :”+longitude);
            }

            delay(1000);

            //send_sms(Phone , “http://maps.google.com/maps?q=loc:”+latitude+”,”+longitude);
            Serial.println(“http://maps.google.com/maps?q=loc:”+latitude+”,”+longitude);

            }

            }

          2. Avatar for زئوس Zeus زئوس Zeus گفت:

            بله درست میتونه باشه! 😐

      2. Avatar for علی علی گفت:

        اگه موردی نداره از طریق any desk یه ارتباط بگیریم

        1. Avatar for زئوس Zeus زئوس Zeus گفت:

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

      3. Avatar for hesam azizi hesam azizi گفت:

        من این کار رو کردم ولی یه خطای دیگه داد

  25. Avatar for داود داود گفت:

    سلام.ببخشید چرا به دستور sendData(“AT+CGNSPWR=1”,1000,DEBUG);
    گیر میده ؟؟؟ متن خطا ‘sendData’ was not declared in this scope

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام
      تابع sendData در قسمت «تابع ارسال پیام به همراه داشتن TimeOut و Debug» از مقاله تعریف شده است متونید کپی کنید توی متنتون

  26. Avatar for ابوالفضل ابوالفضل گفت:

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

  27. Avatar for ابوالفضل ابوالفضل گفت:

    سلام خدمت شما اگه بخواهم چند رله به اردوینو وصل کنم و با ارسال پیام رله ها روشن بشه باید چیکار کنم میشه راهنمایی کنید و برنامشو بهم بدید

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      احتمالا با یه سرچ کوچولو میتونید نمونه سورس کد رو پیدا کنید 😐

  28. Avatar for محمد محمد گفت:

    با سلام و خسته نباشید.
    word_filter در قسمت تشخیص اپراتور یه متده؟ کتابخونه خاصی داره یا خودتون ساختید؟ چون من جایی پیداش نکردم و اردوینو گیر میده بهش ارور میده.

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

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

      String word_filter(String str,String start,String end)
      {
      int Word1 = str.indexOf(start);
      int Word2 = str.lastIndexOf(end);
      retrun str.substring(Word1 , Word2);
      }

  29. Avatar for محمد رضا نکونام محمد رضا نکونام گفت:

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

    1. Avatar for Sisoog OS Sisoog OS گفت:

      سلام
      دوست عزیز اکثر اینها یک پروتکل ارتباطی دارند که اون را از فروشنده بخاهید و بعد از اون میتونید با تنظیم ای پی و پورت و نوشتن یک برنامه روی سرور خودتون داشته باشید
      حتی نرم افزارهای اپن سورسی هم هستند که اکثر پروتکلها را پشتیبانی میکنند و فقط کافیه شما اون را روی سرور نصب کنید و اطلاعات کامل خیلی راحت روی دیتابیس سرور شما میشینه
      مثل
      https://www.traccar.org/

  30. Avatar for حسین حسین گفت:

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

    1. Avatar photo BLO OM گفت:

      سلام دوست عزیزم
      در مورد بخش اول سوالتون: همونطوری که می‌دونید در برنامه ما یک طول و عرض جغرافیایی رو از GPS دریافت می‌کنیم و در نهایت توی این مقاله اونا رو نمایش میدیم اما برای اینکه بیاد روی نقشه گوگل اگر دقت کنید یک لینکی رو برای شما قرار دادم که مربوط به گوگل مپ هستش توسط این لینک اگر شما طول و عرض رو داخل این لینک قرار بدید و سپس ارسال پیام رو انجام بدید اتفاقی که میفته یک لینک گوگل مپ به همراه طول و عرض جغرافیایی رو دریافت می‌کنید که اگر روی اون بزنید به صورت خودکار وارد گوگل مپ میشه و نقطه رو میبینید.

      بخش دوم سوالتون که چطور اونو روی گوشی بیارید
      در بخش اول توضیح دادم که با ارسال پیام این کار صورت میگیره اما فکر میکنم منظور شما تحت اپلیکیشن هست.
      برای اینکار شما نیاز به نوشتن یک نرم‌افزار اندروید یا IOS دارید بسته به نوع گوشیتون حالا اتفاقی که میفته
      شما باید تابعی رو بنویسید (همون تابع فیلتری که معرفی کردم برای دریافت پیام) برای اندروید که این قابلیت رو داشته باشه دیتای دریافتی رو از هم تفکیک کنه یعنی چی؟ یعنی اینکه فرض کنید شما پیامی با عنوان لینک گوگل + طول جغرافیایی + عرض جغرافیایی برای گوشی ارسال می‌کنید حالا توی نرم‌افزار باید بتونید این رو فیلتر کنید چطور؟ به این روشی که میگم خدمتتون اول پیامتون مثلا BLOOM+ لینک گوگل + طول جغرافیایی + عرض جغرافیایی +bloom برای گوشی ارسال کنید و توی نرم‌افزاری که نوشتید تابع فیلتری رو که گفتم پیاده سازی کنید و تعریف کنید زمانی که پیامی داشتید اولش BLOOM , bloom بود رو تشخیص بده و پس از اینکه تشخیص داد به روی کلید مدنظرتون کلیک کنید و در نهایت به صورت خودکار وارد گوگل مپ خواهد شد

      بخش سوم سوالتون
      بله برای PC هم کاملا امکان پذیره فقط مستلزم اینه که شما شما یک نرم‌افزار دقیقا طبق توضیحاتی که دادم مجددا بنویسید
      البته مدل پیشرفته ترش اینکه شما توسط یک وب سایت که نوشتید پیاده سازی کنید که این مسله هم چیز سختی نیست چون تقریباکسی نرم‌افزاری رو برای PC نمی‌نویسه بلکه همه سعیشون بر اینکه اونو توسط یه وب سایت پیاده سازی کنند.

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

      بخش پنجم سوالتون
      برای اینکه این تنظیمات را انجام دهیم نیازی به تنظیمی از طرف گوشی نیست که فکر کنید باید تنظیم خاصی رو انجام بدید فقط تنها چیزی که باید ان را انجام دهید روشن کردن دیتاتونه البته اگر اینترنت هم روشن نباشه میتونید مختصات رو ذخیره کنید توی یه SD CARD و در نهایت نقط رو چک کنید و بسیاری از اپشن های دیگر که کاملا ممکنه بسته به سلیقه شما متفاوت باشه

      امیدوارم توضیحاتی رو که دادم مفید واقع شده باشه برای شما.

      موفق باشید

      1. Avatar for حسین حسین گفت:

        سلام .
        مرسی . لطف کردید توضیحات کاملی بود . جواب سوالاتم رو گرفتم .

        1. Avatar photo BLO OM گفت:

          سلام دوست عزیز
          خواهش میکنم وظیفه بود
          موفق باشید.

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

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *