Gsm Modem, آموزش برنامه نویسی ماژول MC60, توصیه شده, کویکتل

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

ساخت ردیاب

در قسمت‌های قبل، بر اساس برد سیسوگ پیش رفتیم و چند برنامه مختلف رو برای اون نوشتیم. حالا توی این قسمت میخوایم برنامه ردیاب mc60 که نوشته بودیم رو کامل‌تر بکنیم (برای ساخت ردیاب خودرو ) و چند قابلیت دیگه از جمله ارسال مکان به صورت آفلاین توسط پیامک و ذخیره مسیرهای پیموده شده به صورت فایل متنی در کارت حافظه رو بهش اضافه کنیم. برای اینکار میخوایم از هدربرد جدیدی استفاده کنیم که توی اون میتونیم از تمام قابلیت‌های ماژول mc60 استفاده کنیم. این امکانات شامل کارت حافظه، ADC،I2C، بلوتوث، GPS، هدفون (میکروفن و اسپیکر)، دو سیم کارت و چند LED هست که کار با ماژول رو راحت‌تر میکنه. تصویر اون رو هم در پایین می‌بینید. (برای اطلاعات بیشتر و خرید برد میتونید به انتهای مطلب برید.)

 

اول از همه کدهای برنامه ردیاب mc60 رو قرار می‌دم و بعد به توضیح هر قسمت می‌پردازیم:

 

توی قسمت دوم طریقه ارسال و دریافت پیامک رو توضیح دادیم و توی قسمت سوم هم دریافت اطلاعات از gps و نحوه ارسال اون توسط GPRS رو، برای همین از توضیح این قسمت‌ها صرف نظر می‌کنیم.

توجه داشته باشید که توی این کد هم مثل قسمت قبل از قابلیت RTOS استفاده کردیم پس این سه خط رو به فایل custom_task_cfg.h اضافه می‌کنیم.

تنظیم کردن ساعت ماژول :

ما میخوایم در ردیاب mc60 اطلاعات مکان رو به صورت روزانه توی یک فایل ذخیره کنیم که اسم هر فایل برابر با روز و ماه جاری باشه، برای این کار میتونیم از دو راه استفاده کنیم، یکی اینکه زمان دقیق رو از GPS دریافت کنیم که خیلی دقیق و خوب هست و برای اینکار میتونیم زمان دقیق رو که توی پارامتر دوم دیتای RMC جی پی اس هست به خونیم و از اون استفاده کنیم، اما اگر توی پروژمون GPS نداشتیم یا هر چیز دیگه، میتونیم از زمان شبکه GSM استفاده کنیم. برای اینکار از دستور AT+QNITZ=1  استفاده میکنیم که یکی از AT COMMAND های ماژول هست. من تابع RIL اون رو توی example هایی که داده بود، پیدا نکردم. برای همین به صورت مستقیم اون رو اجرا کردم و توی خط 84 هست.

همون طور که از اسمش پیداست این تابع کلاً برای ارسال دستورات AT COMMAND به کار میره و میتونید هر دستوری رو باهاش بفرستید.

دستور AT+QNITZ=1  میاد و توی اولین اتصال ماژول به شبکه ساعت داخلی ماژول رو با زمان شبکه تنظیم میکنه. البته این دستور توی حافظه ماژول میمونه و لازم نیست هر بار که ماژول روشن شد اون رو فراخوانی کنیم. (یه نکته ای هم توی پرانتز بگم، اونم اینکه بعضی از اپراتورها از این قابلیت پشتیبانی نمی‌کنند. مثلاً من با سیم کارت رایتل نتونستم زمان رو از شبکه بگیرم، اما همراه اول مشکلی نداشت.)

 

ذخیره اطلاعات در کارت حافظه :

برای استفاده از کارت حافظه اول باید هدر ql_fs.h  رو اضافه کنیم تا توابعش برامون قابل دسترسی بشه.

برای وارد کردن اطلاعات توی یک فایل چند مرحله رو باید طی کنیم اول از همه باید با دستور Ql_FS_Open یک فایل رو باز کنیم، بعد با دستور Ql_FS_Seek انتخاب کنیم که کجای فایل میخوایم بنویسیم (مثلاً اول یا آخر فایل) و بعد از اون با دستور Ql_FS_Write متنی رو به فایل اضافه می‌کنیم و بعد با دستور Ql_FS_Flush تغییراتمون رو توی فایل اعمال می‌کنیم و بعد با دستور Ql_FS_Close فایل رو می‌بندیم و آزاد می‌کنیم و تمام?. البته هر کدوم از این دستورها آپشن های مختلفی دارند که پیشنهاد می‌کنم طریقه استفاده هر کدوم از اونها رو به طور کامل توی داکیومنت Quectel_MC60-OpenCPU_User_Guide بخونید که توی فایل‌هایی که توی قسمت اول قرار دادیم هست.

حالا توی خط 189 تا 222 اومدیم و از این دستورات استفاده کردیم، البته اول از همه بررسی کردیم که سال سیستم بزرگ‌تر از 2020 باشه تا مطمئن بشیم که تاریخ ماژول درست هست بعد از اون هم اومدیم و خروجی تقسیم ثانیه رو بر 2 بررسی کردیم که برابر با 0 باشه، این باعث میشه تا این شرط هر 2 ثانیه یکبار اجرا به شه، مثلاً میتونید عدد 15 رو قرار بدید تا هر 15 ثانیه یکبار اجرا بشه.

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

 

ارسال مکان آفلاین با SMS :

توی تابع زیر هم اومدیم و بررسی کردیم اگر پیامکی با محتوای “send loc” برای ردیاب mc60 اومد، اول طول و عرض جغرافیایی رو استخراج کنیم و بعد توی پیامک برای شماره‌ای که توی خط 36 تعریف کردیم بفرسته؛ این یک امکان خیلی خوبی برای یک ردیاب خودرو هست .

 

توی قسمت بعد سراغ ساخت یک MP3 پلیر با ماژول MC60 و همین برد جدید میریم و موزیک‌ها رو از روی کارت حافظه خوانده و با چند تا دکمه وضعیت پخش اون رو کنترل می‌کنیم.

 

خرید برد و ماژول MC60 از فروشگاه سیسوگ:

https://shop.sisoog.com/wp-content/uploads/2022/05/EB_MC60_1-2.png

 

 

 

 

 

 

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

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

80 دیدگاه در “کار با ماژول تمام عیار mc60 – قسمت چهارم – OpenCPU و ساخت ردیاب خودرو

  1. Avatar for سپهر سپهر گفت:

    سلام و تشکر از آموزش خوبتون
    برنامه رو روی ماژول ریختم و آنتن هاشو متصل کردم و زیر آسمان قرارش دادم ولی همچنان لوکیشنی پیدا نمیکنه. با برنامه Qnavigator در حالت دیفالت لوکیشن رو سریع میتونه پیدا کنه. اشکال از چیه؟ از ۵-۶ ساعت تست مداوم تنها یبار لوکیشن دریافت کردم.

  2. Avatar for Sisoog User Sisoog User گفت:

    سلام
    راهی هست که دقت GPS MC60 رو بالا ببریم؟
    GPS روی مود A قرار میگیره و lat و lon هم دریافت میکنم اما لوکیشنی که دریافت میکنم 5 کیلومتری با جایی که هست فاصله داره. آنتن هم بدون هیچ مانعی سمت آسمونه.
    با تشکر از سایت مفیدتون

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

      سلام دوست عزیز
      خیلی پارامترهایی هست که توی دقت GPS تاثیر داره از نویزی بودن ولتاژ ورودی به ماژول تا آمپدانس خطوط انتن و نوع انتن و ….
      در حالت عادی نباید اینقدر اخنلاف جود داشته باشه – فکر میکنم در قدم اول پارامتری اولیه رو چک کنید

  3. Avatar for طاهره طاهره گفت:

    سلام
    من یک ماژول MC60E داشتم. به اشتباه موقع پروگرم کردن به ماژول 5 ولت دادم. به درستی پروگرم شد ولی بعد از اون دیگه led متصل به پایه net light روشن نشد و همچنین پیام های دیباگ که در برنامه تعریف کرده بودم و توسط uart باید ارسال بشه، به صورت نامفهوم بودند یعنی یه سری کاراکتر عجیب غریب. برنامه را روی یک ماژول مشابه تست کردم و به درستی کار کرد. ممکنه بخاطر اون ولتاژ 5 ولت اشتباه که چند لحظه موقع پروگرم کردن به ماژول دادم، بخش هایی از ماژول آسیب دیده باشه و دلیل این رفتار ماژول بوده باشه؟

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام به احتمال زیاد فاتحش خوندست.

  4. Avatar for طاهره طاهره گفت:

    سلام
    من میخوام ردیاب را به گونه ای بسازم که به sd card دیگه احتیاج نباشه و فایل موقعیت مکانی با فرمت RMC داخل خود حافظه flash ماژول ساخته بشه و سپس به سرور ارسال بشه. در دیتاشیت دیدم که حافظه flash ماژول دارای بخشی به نام User File System Space هست. کاربرد این بخش چیه و ایا از این بخش میشه برای این هدف (ذخیره فایل موقعیت مکانی) استفاده کرد؟
    ممنون

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام
      این بخش برای ذخیره اطلاعات کاربر هست.
      توی این آموزش نمونه استفادش برای ذخیره شماره کاربران توضیح داده شده ، میتونید از این آموزش کمک بگیرید (البته این آموزش با M66 هست اما فرقی برای پیاده سازی نداره)

      1. Avatar for سعید ساهور سعید ساهور گفت:

        سلام
        یعنی این حافظه flash و توابع که همراه خود داره برای کارکردن با حافظه داخلی خود ماژول هست ؟ /// و اینکه چقدر حجم داره ؟
        نکته دوم اینه در قسمت توضیحات برنامه نویسی open cpu از حافظه ای تحت عنوان Secure data API که از دو تابع Ql_SecureData_Store و Ql_SecureData_Read برای فراخوانی و رایت کردن دیتاها برای خود ماژول کمک میگره که 13 بلاک از حافظه میده که خیلی نیست (بلوک 13 خوبه)حالا سوال اینه قسمت flash چی میگه آیا باز حافظه ای جداگانه روی خود ماژول یا یکی هستن با ابن حافظه داخلی …
        اگر یکی هستن کمی درباره تفاوت هر دو قسمت توضیح بدید از سردرگمی در بیاییم .
        متشکرییم اقا مهدی .

  5. Avatar for طاهره طاهره گفت:

    سلام وقت بخیر

    من وقتی #define APN را میگذارم MTN Irancell و حتی سیمکارت همراه اول میندازم بازم ردیاب درست کار میکنه و به شبکه GSM وصل میشه. میخواستم بدونم دلیلش چیه و اصلا تنظیم APN چه فایده ای داره ؟
    خیلی ممنون

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

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

  6. Avatar for میثم میثم گفت:

    با سلام و وقت بخیر
    اول از شما بابت قرار دادن آموزش های مفید و پاسخ به سوالات تشکر میکنم
    در مورد کار با http به یه مشکلی بر خوردم ، اون هم اینکه هنگامی که شبکه در دسترس نیست و یا سرور در دسترس نیست ، قسمت مربوط به خواندن RMC از کار می افته و تا برگرداندن ارور که حدود 75 ثانیه طول میکشه اطلاعات GPS خوانده نمیشود ، برای حل این مشکل چه کاری میشه انجام داد؟

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام
      خواهش میکنم

      در مورد همین کدی که ما قرار دادیم صحبت میکنید ؟

      در این کد اینطور نیست و در تابع proc_subtask2 دیتای RMC بروز میشه که جدای از تابع proc_subtask3 هست که مربوط به ارسال به سرور هست
      در واقع مقدار RMC هر یکثانیه یکبار بروز میشه ولی توی proc_subtask3 چاپ میشه و شما میتونید توی همون proc_subtask2 هر یک ثانیه یکبار چاپش کنید

      1. Avatar for میثم میثم گفت:

        بله ، در مورد کد شما هم همین طور هست ، زمانی که سرور در دسترس هست اما متد در دسترس نیست این اتفاق می افته ، مثلا اگر فقط برنامه را دان کنید یا در آدرس url به جای utils بنویسید utils123 جوری که فقط متود در دسترس نباشه این اتفاق می افته ، و حدس میزنم کله دستورات RIL برای حدود 75 ثانیه متوقف می شوند
        آیا راه حلی داره که تایم اوت رو کم کنیم؟

        1. Avatar for Mahdi.h   Mahdi.h   گفت:

          این دیگه بستگی داره به اینکه سرور چه پاسخی میده به شما اگر که آدرس اشتباه فراخوانی بشه
          این رو میشه در سرور تنظیم کرد که چیکار بکنه
          برای تایم اوت هم یکی از توابع ril مقدار timeout داره ، با دقت بررسی کنید ببینید کدوم هست و تنظیمش کنید

  7. Avatar for طاهره طاهره گفت:

    سلام وقت بخیر

    من وقتی #define APN را میگذارم MTN Irancell و حتی سیمکارت همراه اول میندازم بازم ردیاب درست کار میکنه و به شبکه GSM وصل میشه. میخواستم بدونم دلیلش چیه و اصلا تنظیم APN چه فایده ای داره ؟
    خیلی ممنون

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

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

  8. Avatar for طاهره طاهره گفت:

    سلام وقت بخیر
    من یه مشکلی دارم. اینکه بعضی وقتا هنگام اجرای کد ril_ftp_qftpopen(ftp_svr_addr,ftp_svr_port,ftp_user_name,ftp_password,1) با مشکل مواجه میشم و ردیاب نمیتونه فایل موجود در sd card را در سرور اپلود کنه و چند بار دیگه هم تلاش میکنه و نمیتونه و در نهایت ماژول را ریست میکنه. برنامه را طوری تغییر دادم که هر یک دقیقه یکبار فایل را در سرور اپلود کنه. همیشه م اینجوری نمیشه، مثلا یه بار بدون مشکل اپلود میشه چند بار به مشکل میخوره. بنظرتون دلیل این مشکل چی میتونه باشه. ضمنا سیمکارتم اینترنت هم داره.

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام.
      باید دقیق تر بررسی کنید که توی کدوم مرحله مشکل هست.
      مثلا یه تیکه کد بیاد و بررسی بکنه اصلا فایل قابل دسترسی هست ؟ بعد ارتباط با سرور رو چک کنه و بعد آپلود رو چک کنه.
      همچنین ببینید اگر از طریقی دیگه مرتب فایل آپلود کنید سرور شما قبول میکنه و آیا ممکنه مشکل از سرور باشه!

      1. Avatar for طاهره طاهره گفت:

        ممنون از دوستان این سایت و بخصوص این پست که خیلی سریع زحمت میکشن و راهنمایی میکنن. خداقوت 🙂

      2. Avatar for طاهره طاهره گفت:

        سلام .
        من مواردی که فرمودید تست کردم و متوجه شدم مشکل از کجاست.‌اما دلیل ایجاد مشکل را متوجه نمیشم.
        من برنامه را به گونه ای تغییر دادم که ردیاب بتونه ip و username و password سرو را از روی sd card بخونه و توی سه تا رشته جداگانه بریزه و بعد اون سه تا رشته را بده به دستور ril_ftp_qftpopen(ftp_svr_addr,ftp_svr_port,ftp_user_name,ftp_password,1)
        ینی بجای اینکه با دستور پیش پردازنده #define تعریف بشه بصورت رشته تعریف بشه.
        ولی نمیدونم چرا این کار باعث میشه این تابع درست اجرا نشه و نتونه فایلو ب سرور بفرسته. نوع رشته هارو هم unsigned char در نظر گرفتم.
        ممنون

        1. Avatar for Mahdi.h   Mahdi.h   گفت:

          سلام.
          برای پاسخ دادن نیاز هست که اون تیکه کد رو بفرسید تا دقیق تر بشه بررسیش کرد.
          پیشنهاد میشه مشکلتون رو توی انجمن سیسوگ مطرح کنید تا افراد بیشتری بتونند کمکتون کنند
          https://ask.sisoog.com/

  9. Avatar for طاهره طاهره گفت:

    سلام وقت بخیر.
    میخواستم بدونم دستور memset دقیقا چیکار میکنه. من یه جا داخل مثال های دیتاشیت هم دیدم که قبل از دستور ql_fs_read از این دستور استفاده کرده ولی متوجه نشدم چرا؟ ینی بدون این دستور نمیشه از دستور read استفاده کرد؟
    مثال:
    ql_fs_open(dir,ql_fs_read_only)
    ql_memset(buffer,0,100)
    (ql_fs_read(handle,buffer,ql_strlen(buffer)&readedlen
    ql_fs_flush(handle);
    ql_fs_close(handle)

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

      سلام دوست عزیز
      در واقع این دستور همانطور که از اسمش مشخص هست عدد ثابتی رو به تعداد دلخواه در آدرس حافظه مورد نظر می نویسه همین، برای مقداردهی به متغییر مورد استفاده قرار میگیره
      توی مثالی که شما ارسال کردید کارش اینه که بافر شما با صفر پر میکنه به اون هم به طول ۱۰۰ بایت 🙂

  10. Avatar for ُSisoog user ُSisoog user گفت:

    سلام وقت بخیر
    وقتی که برنامه رو توی ایکلیپس build میکنم ، دو تا ارور میده
    make[1]: *** No rule to make target اولیش C:\Users\IDEAL\Downloads\Compressed\MC60_OpenCPU_GS3_SDK_V1.7_Eclipse\ril\inc/ril.h C:\Users\IDEAL\Downloads\Compressed\MC60_OpenCPU_GS3_SDK_V1.7_Eclipse\include/ql_type.h', needed by ril/src/ril_atResponse.o’. Stop.

    make: *** [all] Error 2 دومیش

    ولی وقتی Clean رو میزنم و برنامه build میشه اروری نمیده!
    ماژولم زمان و تاریخ رو درست نمایش نمیده و وقتی پیام send loc رو میفرستی جوابی نمیده
    ممنون میشم راهنمایی کنید

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام برای کامپایل در محیط ایکلیپس میتونید از این آموزش کمک بگیرید:
      https://sisoog.com/2022/01/05/کار-با-ماژول-تمام-عیار-mc60-قسمت-هشتم-کدنو/
      برای تازیخ و زمان هم احتمالا مشکلتون به خاطر استفاده از سیم کارت ایرانسل هست ، با سیم کارت همراه اول چک کنید
      برای دریافت پیام ، ابتدا توی کد شماره همراهتون رو اصلاح کردید؟

      1. Avatar for ُSisoog user ُSisoog user گفت:

        مشکلم حل شد. از سیم کارت بود.

    2. Avatar for طاهره سلسله طاهره سلسله گفت:

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

    3. Avatar for طاهره سلسله طاهره سلسله گفت:

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

  11. Avatar for سعید ساهور سعید ساهور گفت:

    سلام
    فایل شماتیک این ماژول در دسترس نیست؟

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام.
      منظور شماتیک برد هست ؟!
      برد مشکی ؟

  12. Avatar for Ali Ali گفت:

    سلام وقت بخیر
    من میخواستم at command اجرا کنم و نتیجه حاصل از اون به صورت اس ام اس ببینم
    کد هایی که نوشتم به این صورت
    0 if#
    {
    iResult = Ql_RIL_SendATCmd(“AT+CBC”,Ql_strlen(“AT+CBC”),NULL,NULL,0);
    if (RIL_AT_SUCCESS != iResult)
    {
    APP_DEBUG(“Fail to send \”AT+CBC\”, cause:%d\r\n”, iResult);
    return FALSE;
    }
    APP_DEBUG(“\r\n”);
    APP_DEBUG(“data = %d\r\n”, (pDeliverTextInfo->data));
    char text[350];
    Ql_strcpy(text, (pDeliverTextInfo->data));
    if (Ql_strcmp(“battery”, text)==0)
    Ql_sprintf(text, “(pDeliverTextInfo->data));
    SMS_TextMode_Send(aPhNum, text);
    }
    #endif
    جوابی دریافت نمیکنم
    لطف کنید ایراد کار بگید

  13. Avatar for ali saboori ali saboori گفت:

    سلام
    دستور AT+QNITZ=1 برای اپراتور همراه اول و ایرانسل تو تمامی شهرها مشکلی نداره؟
    احیانا اپراتور یدفه از کار نمیندازه یا خطایی داشته باشه و ساعت رو دریافت نکنه؟

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

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

    2. Avatar for طاهره طاهره گفت:

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

  14. Avatar for احمد احمد گفت:

    سلام وقت بخیر
    حداکثر تعداد ماهواره متصل برای GPS روی محصول شما چه تعداد میشه ؟

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

      سلام دوست عزیز
      این محصول ما نیست , ماژول شرکت کویکتل هست که در قسمت اسپک فنی میتونی کلیه موارد مربوط به GPS را مشاهده کنید

      https://sisoog.com/wp-content/uploads/2018/11/Quectel_MC60_GSM_Specification_V1.2.pdf

    2. Avatar for طاهره طاهره گفت:

      سلام
      شما میتونید sdk اصلی را از سایت کویکتل یا لینک دانلود سیسوگ، دانلود کنید و اونو روی ماژول پروگرام کنید. سپس برد ماژول را به کامپیوتر وصل کنید و انتن ها را هم وصل کنید. برنامه qnavigator را باز کنید و connect را بزنید. گزینه gnss در سمت چپ پایین برنامه اضافه میشه. اگر اون گزینه رو بزنید بعد از گذشت مدتی، سیگنال های gnss را دریافت میکنید. زیر این پنجره چند تا گزینه هست که بصورت گرافیکی میتونید تعداد ماهواره هایی که سیگنال اونا داره دریافت میشه را ببینید. این ماژول می‌تونه سیگنال دو مدل ماهواره gps و glonass را بگیره.

  15. Avatar for طاهره طاهره گفت:

    سلام مهندس
    من با دیدن این نکته مفید که فرمودید فقط بعضی سیمکارت ها میتونن زمانو درست ست کنن تونستم مشکل ست شدن زمانو حل کنم. بجز اون مشکل دیر وصل شدن gps هم حل شد و خیلی سریع سیگنالهای gps دریافت شدن. ولی برام عجیب بود که تغییر سیمکارت چرا باید روی سرعت دریافت سیگنال های gps تاثیر داشته باشه. چون قاعدتا نباید ارتباطی داشته باشن و حتی قبلا بدون سیمکارت هم تونستم سیگنال gps دریافت کنم. نظر شما چیه؟

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام
      در واقع gps هیچ ارتباطی نداره به بخش gsm
      اما میشه به کمک بخش gsm سرعت فیکس شدن رو افزایش داد که روش های مختلفی داره (برای اطلاعات بیشتر بخش 3.16 و 3.15 و 3.14 داکیومنت hardware_design رو بررسی کنید) ، حتی شما میتونید بدون gps هم مکانیابی کنید (برای اطلاعات بیشتر در مورد QuecLocator سرچ کنید)

      1. Avatar for طاهره طاهره گفت:

        خیلی ممنونم از راهنمایی تون و وقتی که برای پاسخ به کامنت ها میگذارید. ?

      2. Avatar for طاهره طاهره گفت:

        سلام و عرض ادب
        مهندس شما خودتون با قابلیت Agps کار کردید؟
        من خیلی سعی کردم ازش استفاده کنم تا سرعت فیکس شدن سیگنالهای gps بالا بره اما فرق خاصی با حالت عادی نداشت. من چطور میتونم بفهمم که داده های لوکیشن از سرور EPO دانلود شده و داره برای مکان یابی استفاده میشه؟ آیا تو سرور مربوط ب این تکنولوژی لوکیشن همه کشورها ثبت هست؟
        ممنون

  16. Avatar for Ali Ali گفت:

    سلام ممنون از پاسختون
    من این کد روی ماژول mc65 اپلود کردم
    تغییری هم که دادم خط های برنامه که GPS بود به GNSS تبدیل کردم
    اون قسمت از کد که شرط گذاشتین که اگر A==30کاراکتر باشه
    QNAVIGATOR چک کردم فکر نمیکنم 30 کاراکتر باشه
    اگه بتونید راهنمایی کنین ممنون میشم

  17. Avatar for Ali Ali گفت:

    سلام
    وقت بخیر
    من زمانی که اس ام اس send loc میفرستم هیچ پیامی دریافت نمیکنم
    اما زمانی که هر پیام دیگری میفرستم طول و عرض 0.000000 دریافت میکنم
    با برنامهqnavigatorهم چک کردم لوکیشن میگیرم مشکل کار از کجاست؟
    ممنون

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام دستور شرطی خط 266 اشکالی داشت که برطرف شد
      الان همون send loc رو که بفرستید درست میشه
      در صورت فیکس نبودن هم باید “GPS NOT FIXED YET” رو پیامک کنه ، تغییری توی کد ایجاد کردید که 0 میفرسته ؟!

  18. Avatar for زهرا شکوهی نکو زهرا شکوهی نکو گفت:

    سلام وقت بخیر

    من میخواستم داخل پروژه ام هم از opencpu استفاده کنم
    و هم از at cmd
    ینی یک قسمت هایی رو از توابع QL استفاده کنم
    و ی جاهایی رو از AT CMD

    مشکلی که دارم
    یک سری AT CMD ها جوابشون در لحظه نیست و تاخیر داره
    مثل FTP که وقتی فایل رو اپلود میکنه
    بعد اینکه فایل اپلود شد
    یک پیغامی میده که نسبت به حجم و سرعت اینترنت این زمان ارسال پیغام متفاوته

    این مدل جواب های AT CMD رو میشه دریافت کرد؟

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

      سلام و درود دوست عزیز،
      بله میشه هندل کرد
      در SDK تابعی وجود داره به اسم Ql_RIL_SendATCmd که دستور AT شما رو ارسال میکنه و یک تابع هم به عنوان کال بک میگیره که هر وقت جوابی دریافت شد اون تابع رو صدا میزنه
      این روال تا وقتی ادامه پیدا میکنه که توی تابع کال بک یا خطا برگردانید یا بگید که کار تمام شد به این ترتیب شما میتونید منتظر بمونید تا کار تابع مورد نظر شما انجام بشه
      فکر میکنم توی مثال های کویکتل مثالی برای استفاده ازش وجود داشته باشه

      1. Avatar for زهرا شکوهی نکو زهرا شکوهی نکو گفت:

        داخل تابع at_cmd
        همون لحظه وارد کالبک میشه
        معمولا در جواب هر at cmd همون لحظه ok یا error داده میشه
        ولی اگر در ادامه هم پیغامی در راستای همون atcmd بفرسته
        بازم وارد همون کالبک میشه؟؟

  19. Avatar for طاهره طاهره گفت:

    سلام مجدد خدمت شما
    جناب مهندس، اگر تغذیه هر دو بخش gnss و بقیه ماژول را از خروجی یک رگولاتور مشترک بگیریم، مشکلی پیش نمیاد؟ هدف کاهش حجم برد موردنظر هست.

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      اگر ولتاژ توی رنج هر دو بخش باشه چرا باید مشکلی پیش بیاد
      اما برای کاهش مصرف تغذیه gps جدا هست که در صورت نیاز قطع بشه
      (در ضمن ماژول mc65 که نسخه جایگزین mc60 هست رگولاتور بخش gps رو به صورت داخلی داره)

  20. Avatar for طاهره طاهره گفت:

    سلام
    خیلی عالی. فکر نمیکردم مرجع فارسی برای این ماژول پیدا بشه. خدا قوت ??

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلامت باشید?

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

    سلام وقتتون بخیر باشه
    من با ماژول mc60 آشنا نیستم زیاد. میخواستم بدونم میشه از این ماژول از طریق GPRS/GSM موقعیت فعلی را گرفت؟ داکیومنت های شرکت کوئکتل را که نگاه کردم گرفتن لوکیشن بر اساس GPS را داشت.
    من میخوام با استفاده از ATXMEGA128A1U و MC60، موقعیت فعلی را بگیرم یعنی از قابلیت OPEN CPU نمیخوام استفاده کنم. میشه لطفا راهنماییم کنید و همچنین میشه بگید از کجا میتونم داکیومنت مرتبط رو پیدا کنم. تو سایت های فارسی که فقط سایت شما بود تو سایت های انگلیسی هم مطلبی پیدا نکردم. ممنونم

    1. Avatar for Mahdi.h   Mahdi.h   گفت:

      سلام
      بله ماژول mc60 این قابلیت رو داره. اطلاعات بیشتر رو میتونید در داکیومنت Quectel_QuecLocator_Application_Note_V3.4 پیدا کنید که داخل فایل هایی که در قسمت دوم قرار داده شده موجود هست.

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

        بسیار متشکرم.

  22. Avatar for Morteza Morteza گفت:

    باسلام.
    در پروژه ای مدار شارژر باتری قرار دادم ولی مدت زمانی رو که از باتری 700میلی آمپر استفاده میکنم حدود 5 ساعت است که خیلی کمه.
    اگر دوستان مدار شارژر یا توضیحاتی از مدار power و باتری برای MC60 دارید لطفا راهنمایی کنید.ممنون.

    1. Avatar for Zeus Zeus گفت:

      فکر میکنم مورد بحث شما مدار شارژ نیست
      در واقع شما میزان مصرف mc60 براتون مهمه که مثلا با یه باتری ۷۰۰ میلی امپری ۵ ساعت جواب میگیرید
      برای بیشتر کردن زمان میتونید ماژول را در حالت power save قرار بدید

    2. Avatar for مرطزا مرطزا گفت:

      بهتر هستش از مدار شارژر باتری موتور براوو استفاده کنید تا باتری رو بهتر شارژ کنه

      1. Avatar for سعید ساهور سعید ساهور گفت:

        از ای سی شارژر مثل tp4056 یا mcp استفاده بشه چطور؟

  23. Avatar for امیرحسین امیرحسین گفت:

    سلام خیلی ممنون از توضیحات ارزشمندتون میشه در مورد فعال کردن انواع A-gps در این ماژول به خصوص از طریق از atcommand توضیح بدید؟ آیا نیاز به هماهنگی با اپراتورها دارد
    سوال دیگه ای که از خدمتتون داشتم در مورد پروتکل mqtt است که در اینترنت اشیا خیلی کاربرد داره
    توی توضیحات این ماژول فکر می‌کنم گفته شده امکان ارتباط با پروتکل امنیتی رو داره آیا میشه بدون کتابخانه خاصی از طریق همین محیط opencpu استفاده کرد؟
    ما سعی در تجاری سازی یک ردیاب داریم خیلی لطف میکنید اگر راهنمایی کنید

  24. Avatar for رسول رسول گفت:

    سلام و خسته نباشید خدمت شما.تو مرحله دریافت sms چیزی دریافت نمیکنم ولی مکان انلاین داخل سرورتون نشون میده مشکل از کجاست؟

    1. Avatar for Mahdi.h Mahdi.h گفت:

      باسلام این تکه کد
      if (Ql_strcmp(“send loc”, text))
      باید با
      if (Ql_strcmp(“send loc”, text) == 0)
      جایگزین بشه
      اولین فرصت توی مطلب اصلاح میشه

  25. Avatar for علیرضا علیرضا گفت:

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

  26. Avatar for mmohammadi236 mmohammadi236 گفت:

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

    اگر خواسته باشم mc60از بسته اینترنت سیم کارت استفاده کنه و از شارژ ازاد سیم کارت استفاده نشه باید به چه شکل دستوراتش رو وارد کنم ؟؟؟؟؟؟
    ایا در example های sdk یا در داکیومنت های موجود روشی هست که شما از اون روش استفاده کرده باشین که از بسته اینترنتی سیم کارت استفاده بشود ؟؟؟؟
    ممنون میشم راهنماییم کنید ….

    1. Avatar for Mahdi.h Mahdi.h گفت:

      با سلام
      میتونید از دستور AT+CUSD که از at command های ماژول هست استفاده کنید.
      عملکرد این دستور در mc60 با ماژول های sim800 یکی هست ، توی سایت های داخلی میتونید روش استفاده از اون رو به طور کامل پیدا کنید

  27. Avatar for mmohammadi236 mmohammadi236 گفت:

    سلام وقتتون بخیر
    در قسمت حافظه از IC AT45DB161E استفاده کردیم ایا نحوه ارتباط گرفتنن با این ای سی فرق میکنه با SD ؟؟؟؟
    میشه همین نحوه کد نویسی شمارو روی این ای سی پیاده کرد ؟؟؟
    ممنون میشم توضیح بدین

    1. Avatar for مرتضی مرتضی گفت:

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

      1. Avatar for mmohammadi236 mmohammadi236 گفت:

        میشه یه مقدار توضیح بدین که چطوری میشه اطلاعات رو داخل ای سی بفرستم و. باز در صورت نیاز بخونم اطلاعات رو ؟؟؟؟

        1. Avatar for مرتضی مرتضی گفت:

          ای سی رو وصل میکنیم با دستور save اطلاعات ذخیره و با دستور read اطلاعات رو میخونیم

          1. Avatar for mmohammadi236 mmohammadi236 گفت:

            کد زیر رو نوشتیم برای ارتباط mc60 با ای سی حافظه at45

            u32 rdLen=0;
            u32 wdLen=0;
            u8 spi_write_buffer[]={0x01,0x02,0x03,0x0a,0x11,0xaa};
            u8 spi_read_buffer[]={0x02,0x03,0x04,0x05,0x06,0x07};

            APP_DEBUG(“\r\n\r\n”);
            APP_DEBUG(“\r\n\r\n”,spi_read_buffer[3]);

            ret=Ql_SPI_Init(0,PINNAME_PCM_IN,PINNAME_PCM_SYNC,PINNAME_PCM_OUT,PINNAME_PCM_CLK,0);
            APP_DEBUG(“\r\n\r\n”,ret);
            ret=Ql_SPI_Config(0,1,1,1,1000);
            APP_DEBUG(“\r\n\r\n”,ret);

            wdLen=Ql_SPI_Write(0,spi_write_buffer,6);
            APP_DEBUG(“\r\n\r\n”,wdLen);
            rdLen=Ql_SPI_Read(0,spi_read_buffer,6);
            Ql_Sleep(500);
            APP_DEBUG(“\r\n\r\n”,spi_write_buffer[5]);
            APP_DEBUG(“\r\n\r\n”,spi_read_buffer[3]);

            APP_DEBUG(“\r\n\r\n”,rdLen);

            ret=Ql_SPI_Uninit(0);
            APP_DEBUG(“\r\n\r\n”,ret);

            ولی انگار که داخل حافظه چیزی ذخیره و خوانده نمیشه
            کد داخل داکیومنت mc60 و اطلاعاتی که داده بود همین بود

            اینم محیط دیباگ که ازش لاگ گرفتیم

            Received URC: type: 3
            GSM Network Status:2

            اگر کسی کار کرده ممنون میشم کمکم کنه

          2. Avatar for mmohammadi236 mmohammadi236 گفت:

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

            Received URC: type: 3
            GSM Network Status:2

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

      نهوه اتصال این ایسی به ماژول چطوری هست؟ چون ماژول فقط سه تا پایه داره CMD CLK DATA اما ماژول CS رو ما به 3.3 وصل کنیم بقیه پایه های ایسی چطوریمیشه؟

  28. Avatar for جواد جواد گفت:

    سلام
    خداقوت، ممنون از آموزش عالیتون
    فکر میکنم خط 266 باید تساوی با صفر چک بشود
    if (Ql_strcmp(“send loc”, text) == 0)

    1. Avatar for Mahdi.h Mahdi.h گفت:

      سلام
      باتشکر از توجهتون
      اصلاح میشه?

      1. Avatar for جواد جواد گفت:

        فایل ril.c داخل فایل ها نیست
        از کجا میتونم دانلودش کنم

        1. Avatar for Mahdi.h Mahdi.h گفت:

          در اصل فایلی با نام ril.c وجود نداره
          اکثر توابعی که در فایل ril.h معرفی شدند از نوع extern هستند ، یعنی در جایی دیگه تعریف شدند و غیر اونا چندتا متغیر میمونه

          1. Avatar for جواد جواد گفت:

            سلام
            خروجی توابع Q1 رو از کجا میتونم بدونم چیه؟
            مثلا این تابع Ql_OS_GetMessage

        2. Avatar for Mahdi.h Mahdi.h گفت:

          برای بررسی ورودی و خروجی های توابع و عملکرد اونها میتونید از داکیومنت Quectel_MC60-OpenCPU_User_Guide استفاده کنید

          1. Avatar for جواد جواد گفت:

            ممنون
            ولی این داکیومنت خیلی توضیح نداده که مقادیر خروجی ها چه حالت هایی میتونن باشن
            مثلا تو این تابع از کد شما متوجه شدم خروجی param1 وقتی 3 باشه یعنی پیام مربوط به gsm هست

  29. Avatar for محمود محمود گفت:

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

    1. Avatar for Mahdi.h Mahdi.h گفت:

      باسلام و تشکر از ثابت قدمی شما
      سعی بر این هست که آموزش ها روان و خلاصه باشد تا هر نوع کاربری بتونه ازشون استفاده کنه و خسته کننده نباشه.
      یکسری از مشکلات جوابشون در کامنت ها قابل پاسخ نیست. میتونید از طریق ایمیل در ارتباط باشید تا بیشتر بتونم کمکتون کنم?
      mahdi2001h@gmail.com

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

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