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

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

ساخت ردیاب با 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 ثانیه یک بار مختصات به روز می‌شوند. و در نهایت اگر همه چیز به درستی صورت گرفته باشد باید به جواب شکل زیر برسید.

 

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

حمایت از BLO OM

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

BLO OM
BLO OM

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

دیدگاه ها

70 دیدگاه

  • reza
    ۲۱ فروردین ۱۴۰۱

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

    • Zeus ‌
      Zeus ‌
      ۲۲ فروردین ۱۴۰۱

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

      • reza
        ۲۲ فروردین ۱۴۰۱

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

  • حسین
    ۲ اسفند ۱۴۰۰

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

    • Zeus ‌
      Zeus ‌
      ۲۳ فروردین ۱۴۰۱

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

  • رضا
    ۲۲ بهمن ۱۴۰۰

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

    • Zeus ‌
      Zeus ‌
      ۲۴ بهمن ۱۴۰۰

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

      • رضا
        ۲۶ بهمن ۱۴۰۰

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

        • Zeus ‌
          Zeus ‌
          ۲۷ بهمن ۱۴۰۰

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

  • پریسا
    ۲۴ آذر ۱۴۰۰

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

    • Sisoog Os
      Sisoog Os
      ۱۱ دی ۱۴۰۰

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

  • نرگس
    ۲۴ آبان ۱۴۰۰

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

    • Sisoog Os
      Sisoog Os
      ۵ تیر ۱۴۰۱

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

  • نیما
    ۷ مهر ۱۴۰۰

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

    • Sisoog Os
      Sisoog Os
      ۷ مهر ۱۴۰۰

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

  • 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.

    • Zeus ‌
      zeus
      ۴ خرداد ۱۴۰۰

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

  • Hesam Azizi
    hesam azizi
    ۸ اردیبهشت ۱۴۰۰

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

    redefinition of ‘string phone’

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

    • Zeus ‌
      zeus
      ۴ خرداد ۱۴۰۰

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

  • حسام
    ۸ اردیبهشت ۱۴۰۰

    redefinition of ‘String Phone’

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

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

    • Zeus ‌
      zeus
      ۴ خرداد ۱۴۰۰

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

  • حسام
    ۸ اردیبهشت ۱۴۰۰

    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.

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

  • حسام
    ۷ اردیبهشت ۱۴۰۰

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

    • Zeus ‌
      zeus
      ۴ خرداد ۱۴۰۰

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

  • مصطفی
    ۱۱ اسفند ۱۳۹۹

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

    • Sisoog Os
      Sisoog Os
      ۱۲ اسفند ۱۳۹۹

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

  • بابک
    ۱۱ آذر ۱۳۹۹

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

    • Sisoog Os
      Sisoog Os
      ۱۱ آذر ۱۳۹۹

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

  • امیرحسین آقاجانی
    ۱۸ مرداد ۱۳۹۹

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

    • Sisoog Os
      Sisoog Os
      ۲۱ مرداد ۱۳۹۹

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

  • امیر
    ۴ مرداد ۱۳۹۹

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

    • Sisoog Os
      Sisoog Os
      ۱۷ مرداد ۱۳۹۹

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

  • آرین
    ۲۰ خرداد ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۲ تیر ۱۳۹۹

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

  • حسین
    ۲۵ اردیبهشت ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۲۷ اردیبهشت ۱۳۹۹

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

  • محمدرضا
    ۱۶ اردیبهشت ۱۳۹۹

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

    • Zeus ‌
      زئوس Zeus
      ۲۴ اردیبهشت ۱۳۹۹

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

  • محمدی
    ۲۷ دی ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۳۰ دی ۱۳۹۸

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

  • محمدی
    ۲۵ دی ۱۳۹۸

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

  • مهرداد
    ۱۴ دی ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۲۱ دی ۱۳۹۸

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

      • حسام
        ۷ اردیبهشت ۱۴۰۰

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

  • علی
    ۲ دی ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۳ دی ۱۳۹۸

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

      • علی
        ۳ دی ۱۳۹۸

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

        • Zeus ‌
          زئوس Zeus
          ۴ دی ۱۳۹۸

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

          • علی
            ۵ دی ۱۳۹۸

            سلام بفرمایید
            #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);

            }

            }

            0
          • Zeus ‌
            زئوس Zeus
            ۵ دی ۱۳۹۸

            https://paste.ofcode.org/7civrdkrcm4X3tQBq3Gw3Y
            کد بالا رو تست کنید 😐

            0
      • علی
        ۳ دی ۱۳۹۸

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

        • Zeus ‌
          زئوس Zeus
          ۴ دی ۱۳۹۸

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

      • حسام
        ۷ اردیبهشت ۱۴۰۰

        یعنی چه

      • Hesam Azizi
        hesam azizi
        ۹ اردیبهشت ۱۴۰۰

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

  • داود
    ۱۶ آذر ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۱۷ آذر ۱۳۹۸

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

  • ابوالفضل
    ۹ آذر ۱۳۹۸

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

  • ابوالفضل
    ۷ آذر ۱۳۹۸

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

    • Zeus ‌
      زئوس Zeus
      ۸ آذر ۱۳۹۸

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

  • محمد
    ۱۸ مهر ۱۳۹۸

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

    • 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);
      }

  • محمد رضا نکونام
    ۱۸ مرداد ۱۳۹۸

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

    • Sisoog Os
      Sisoog OS
      ۱۸ مرداد ۱۳۹۸

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

  • حسین
    ۲۴ تیر ۱۳۹۸

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

    • BLO OM
      BLO OM
      ۲۵ تیر ۱۳۹۸

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

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

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

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

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

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

      موفق باشید

      • حسین
        ۲۸ تیر ۱۳۹۸

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

        • BLO OM
          BLO OM
          ۲۹ تیر ۱۳۹۸

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

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

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 9 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

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

Zeus ‌ Zeus ‌
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 1 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک