Quectel کویکتل, توصیه شده

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

ساخت ردیاب

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

 

استفاده از RTOS

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

برای اینکه بتونیم تابع‌هایی رو که میخوایم به صورت موازی اجرا بشند رو معرفی کنیم به کامپایلر از فایل “custom/config/custom_task_cfg.h” استفاده می‌کنیم که به این شکل هست:

 

حالا ما میایم و تابع‌های خودمون رو بهش اضافه می‌کنیم که به این صورت میشه:

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


تست دریافت از GPS

برای ساخت ردیاب ما میخوایم بدونیم موقعیت GPS پیداشده یا نه، به همین خاطر اون رو با یک led روی ماژول مشخص می‌کنیم. برای همین اون پین رو مشخص می‌کنیم و بعد از اون اولین کار این هست که بعد از آماده شدن RIL بخش GPS ماژول را روشن کنیم (خط 18). این تابع اصلیمون هست:

همچنین متغیر stable رو در زمانی که بخش GPRS آماده بود 1 می‌کنیم (خط 33).

 

اینجا هم میتونید لیست پین‌ها و اینکه کدوم میتونند GPIO یا نوع دیگه ای باشند رو ببینید ما پین 35 رو استفاده می‌کنیم.

 

مدیریت زیر وظیفه‌ها

حالا اولین subtask (زیر وظیفه‌) رو به خوندن از سریال اختصاص میدیم.

 

دومی رو برای به‌روزرسانی اطلاعات مکانی. در ابتدا یک وقفه 1 ثانیه داریم که اطلاعات ما هر 1 ثانیه بروز بشوند.

سپس بررسی می‌کنیم که بخش RIL آماده هست یا نه؟

 

اگر RIL آماده بود، اطلاعات رو با فرمت RMC میخونیم که جزئیاتش رو میتونید توی تصویر ببینید:

بعد از اون چک می‌کنیم که اگر کاراکتر 30ام برابر A بود (به معنی به‌دست آمدن موقعیت) LED دو بار چشمک بزند و در غیر این صورت فقط یک‌بار.

 

و سومین تسک رو برای ارسال دیتاها به سرور استفاده می‌کنیم که در ابتدا مقدار پارامتر location رو برابر مکان به‌دست اومده میکنه و اون رو توی یک متغیر می‌ریزیم و با تابع HTTP_Program اون رو به سرور به صورت post ارسال می‌کنیم.

 

این هم تابع خواندن سریال که دستورات رو میتونیم توش مشخص کنیم. به طور مثال با فرستادن دستور GPSOff بخش GPS رو خاموش می‌کنیم یا با location آخرین موقعیت رو می‌خونیم.

 

این هم از کدها به صورت کامل:

دقت کنید که آدرس سرور رو در متغیر HTTP_URL_ADDR (خط 30) قرار دادیم.


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

حالا میریم سراغ سرور

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

در ابتدا بررسی میشه که آیا مقداری توسط post به صفحه ارسال شده یا نه، اگر شده باشه اطلاعات رو بر اساس, جدا می‌کنه و توی یک آرایه می‌ریزه.
بعد از اون نیاز هست که ما یک تبدیل واحد برای طول و عرض جغرافیایی داشته باشیم که تابع convert اینکار رو انجام می‌ده.

سپس طول و عرض جغرافیایی با آدرس مپ گوگل ترکیب می‌شه و توی یک فایل ذخیره می‌شه.

حالا اگر ما با مرورگر به همین صفحه بیایم چون‌که مقدار post ارسال نمی‌کنیم شرط اول اجرا میشه و مارا به آدرسی که توی فایل ذخیره شده هدایت میکنه که آخرین نقطه فرستاده شده هست.

دقت کنید که جایی که این فایل رو در سرور یا هاست ذخیره می‌کنید در کنارش یک فایل خالی با نام “loc.txt” بسازید.

 

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

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

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

نوشته های مشابه

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

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

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

  1. Iman199229 علیرضا گفت:

    من وقتی برنامه با Qflash آپلود کردم دیگه نه کلید خاموش روشنش کار میکنه نه جی اس ام !
    روی سیم کارت هم که زنگ میزنم خاموشه !
    قبلش با نرم افزار qnavigator که با ATcommand کار میکردم همه چیش اوکی بود !

    1. Sisoog Os Sisoog Os گفت:

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

      1. Iman199229 علیرضا گفت:

        مرسی
        درست شد
        برنامه روش آپلود کردم
        ولی متاسفانه اطلاعاتی به سرور ارسال نمیکنه !
        آنتن جی پی اس بهش متصله و همچنین جی اس ام
        تماس هم میگیرم با شماره بوق میخوره
        سیم کارت هم شارژ داره
        APN هم همون mcinet همراه اول هستش ( توی کد عوضش نکردم)

        این سریال مانیتورش هستش که همینطور تکرار میشه :
        START SEND TO SERVER

        READ SERVER RESPONSE (dataLen=16)

        1. Iman199229 علیرضا گفت:

          این سریال مانیتورش هستش که همینطور تکرار میشه :
          START SEND TO SERVER

          READ SERVER RESPONSE (dataLen=16)

          1. Iman199229 عایرضا گفت:

            گویا توی کامنت سریال مانیتور حذف میشه !
            START SEND TO SERVER
            Set GPRS APN, ret=0
            Open PDP context, ret=0
            Set http server URL, ret=0
            Send post-request, ret=0
            Data coming on http, total len:16
            READ SERVER RESPONSE (dataLen=16)
            Close PDP context, ret=0

          2. اینکه داده دریافتی 16 کاراکتر داره مشخصه که به سرور ارسال شده
            اما مثل اینکه با اروری از سمت سرور مواجه میشه چون باید طول داده در یافتی مطابق پیام “Data logged” یازده کاراکتر داشته باشه (البته اگه کد رو تغییر نداشته باشید)
            یک بار به صورت دستی ارسال کنید به سرور داده رو ببینید ارور نداشته باشه

  2. محمد احمدلو محمد گفت:

    با سلام
    در هنگام کار کردن با قسمت GNSS وقتی دستور AT+QGNSSRD برای UART اصلی فرستاده میشود تا اطلاعات GPS دریافت شود. خطا میدهد و error شماره 7103 میدهد…!!!
    اشکال از کجاست ؟؟؟

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

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

    2. سلام
      دقت کنید که قبل از ارسال دستور خواندن ، دستور روشن کردن GPS رو توسط AT+QGNSSC=1 رو ارسال کنید
      حتی اگه از پایه enable برای تغذیه GPS استفاده نمیکنید.

  3. محمد گفت:

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

    1. سلام
      میتونید از فایل Quectel_MC60-OpenCPU_User_Guide_V1.1.pdf
      کمک بگیرید.
      به طور مثال شرح تابعی که گفتید در صفحه 75 همین فایل موجود هست.

  4. مهدی رهی mahdi89 گفت:

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

    ” گذاشتین که حالت های مختلف کاری برای هر پایه رو توضیح داده توی کدوم دیتاشیت اومده؟ برای m66 هم همچین اطلاعاتی هست؟

    1. Sisoog Os Sisoog Os گفت:

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

  5. محمود گفت:

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

    به امید موفقیت

  6. محمد صادق جعفری محمد صادق گفت:

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