کار با ماژول M66 – قسمت اول – کار با OpenCpu

0
247
کار با ماژول M66 – قسمت اول – کار با OpenCpu
M66-OpenCpu

هستند پروژه‌هایی که توی اونها دسترسی مستقیمی به برد نداریم ولی لازم هست که اطلاعاتی رو برای بردمون ارسال یا از اون دریافت کنیم. بهترین راه (و شاید تنها راه) برای اینکار استفاده از ماژول‌های gsm هست، ماژول‌هایی که سیم‌کارت می‌خورند و میتونند به شبکه تلفن همراه متصل بشند، میشه از طریق پیامک با اونها در ارتباط بود و یا زنگ زد بهشون و دستور بهشون داد یا اون زنگ بزنه به ما و حال و احوالش رو بگه?(خارج از شوخی این توی خیلی پروژه‌ها استفاده میشه و جذاب هم هست)، یا توی یه مرحله بالاتر به یک سرور اینترنتی متصل بشند و دیتاها رو برای سرور ارسال کنند. توی ایران اکثراً ماژول‌های gsm رو به ماژول sim800 و هم‌خانواده هاش می‌شناسند ولا غیر، اما مدت زیادی هست که ماژول‌های شرکت کوییکتل هم وارد بازار ایران شدند و امکانات خیلی خوبی هم دارند؛ یکی از اصلی‌ترین این ویژگی‌ها قابلیت OpenCpu بودن این ماژول‌ها هست که به ما این امکان رو می‌ده که کد موردنظرمون رو روی خود ماژول بریزیم و اجرا کنیم و دیگه نیاز به کنترل کننده خارجی نداشته باشیم.

پس با ما همراه باشید.

 

قابلیت OpenCpu

اگر که دقیق تر به این موضوع نگاه کنیم میبینیم، می بینیم که OpenCpu که خیلی به دردمون میخوره! میتونه هزینمون رو کاهش بده، پیچیدگی طراحی برد رو کم کنه و کدنویسی رو راحت تر کنه (البته اگه بخوبی بتونیم یادش بگیریم) . قبلا توی سایت  مطالبی برای کار با ماژول های شرکت کوییکتل نوشته شده که میتونید از اونها استفاده کنید ، یکی از اونها ماژول mc60 بوده که علاوه بر gsm قابلیت gps هم داشته. اما ممکنه توی پروژه ما gps نیاز نباشه ، پس بهتره که از ماژولی که gps نداره و ارزون تر هست استفاده کنیم. توی این سری مطالب میخوایم استفاده از ماژول m66 رو به صورت OpenCpu یاد بگیریم و چندتا پروژه کاربردی هم باهاش انجام بدیم.

نرم افزار QNavigator

قبل از اینکه وارد بحث OpenCpu بشیم باید بگم که اگر میخواید با ماژول به صورت at command ارتباط بگیرید میتونید از نرم افزار QNavigator استفاده کنید که در پایین محیط این نرم افزار رو میبینید.

نرم افزار QNavigator
QNavigator

با کمک نرم افزار qnavigator تست دستورات at command خیلی راحت هست و به تست شما سرعت میده. در پایین مطلب هم لینک داکیومنت های ماژول m66 قرار داده شده که لیست at command ها هم جزو اون هست.

برای کار با OpenCpu در M66 (و مابقی ماژول های کویکتل) شما دوتا روش رو میتونید استفاده کنید. یکی استفاده مستقیم از کامپایلر هست که در این صورت شما IDE ندارید و باید دستورات کامپایل رو در ترمینال وارد کنید و از ادیتور دلخواه خودتون برای ویرایش کدها استفاده کنید ؛ روش دوم استفاده از IDE ایکلیپس هست که میتونید راحت تر کد رو دیباگ و کامپایل کنید ، اما در نهایت هر دو روش یک فایل خروجی به شما میدند که باید اون رو با کمک نرم افزار QFlash و توسط رابط سریال روی ماژول بریزید.

 

استفاده مستقیم از GCC

اول از همه لازم هست که کامپایلر رو از این لینک دانلود و نصب کنیم . اگر که ویندوز 10 داشته باشید احتمالا هنگام نصب کامپایلر با ارور مواجه میشید که لازم هست مراحل زیر رو قبل اون طی کنید:

اول روی اون راست کلیک کرده و گزینه properties رو انتخاب کنید ، بعد از اون توی تب compatibility بخش compatibility mode تیک Run this program in compatibility mode for رو بزنید و ویندوز 7 رو انتخاب کنید (مثل تصویر پایین).

استفاده مستقیم از GCC
mc60_eclipse_gcc

بعد از اون هم next next و تمام…

با اجرای دستور زیر در cmd میتونید مطمئن بشید که کامپایلر به درستی نصب شده.

arm-none-eabi-gcc --version

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

  • build/gcc : فریمور ساخته شده توی این پوشه قرار میگیره
  •  custom/main.c : کدها رو داخل این فایل وارد میکنیم
  • example : این پوشه شامل نمونه کد های مختلفی هست که میتونید از اونا استفاده کنید
  • و پوشه های دیگه ای که کاربردشون از اسمشون مشخص هست

برای تست اول کد زیر رو داخل فایل main.c قرار میدیم تا یه چشمک زن ساده داشته باشیم.

#ifdef __CUSTOMER_CODE__

#include "ql_system.h"
#include "ql_gpio.h"


void proc_main_task(s32 taskId)
{
// Specify a GPIO pin
Enum_PinName gpioPin = PINNAME_NETLIGHT;

// Initialize the GPIO pin (output high level, pull up)
Ql_GPIO_Init(gpioPin, PINDIRECTION_OUT, PINLEVEL_HIGH, PINPULLSEL_PULLUP);
while (TRUE)
{
// Set the GPIO level to low after 500ms.
Ql_Sleep(100);
Ql_GPIO_SetLevel(gpioPin, PINLEVEL_LOW);

// Set the GPIO level to high after 500ms.
Ql_Sleep(100);
Ql_GPIO_SetLevel(gpioPin, PINLEVEL_HIGH);
}
}

#endif

برای کامپایل فایل MS-DOS رو باز کنید تا یک ترمینال براتون باز بشه حالا دستورات زیر رو وارد کنید تا کامپایل انجام بشه

make clean && make new

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

...
- Building build\gcc\obj/custom/fota/src/fota_http.o
- Building build\gcc\obj/custom/fota/src/fota_http_code.o
- Building build\gcc\obj/custom/fota/src/fota_main.o
----------------------------------------------------
- GCC Compiling Finished Sucessfully.
- The target image is in the 'build\gcc' directory.
----------------------------------------------------

اما اگر با این پیغام مواجه نشدید ارور کامپایلر رو میتونید در مسیر build\gcc\build.log مشاهده کنید.

برای آپلود فریمور نرم افزار qflash رو باز میکنیم (فایل نرم افزار داخل پوشه tools در پوشه sdk هست).

qflash

اول از همه فایل app_image_bin.cfg رو از مسیر \build\gcc انتخاب میکنیم بعد پورت سریال و سپس نوع ماژول رو انتخاب میکنیم. حالا تغذیه ماژول رو وصل کرده و پورت uart main اون رو توسط یک ماژول مبدل سریال به سیستم وصل میکنیم. حالا دکمه استارت رو میزنیم بعد از اون پیغام Waiting… نمایش داده میشه که شما باید دکمه پاور ماژول رو نگه داشته تا نرم افزار از حالت waiting در بیاد و شروع به پروگرام ماژول بکنه حالا میتونیم دکمه پاور رو رها کنیم.

در صورت پروگرام موفقیت آمیز با این پیغام مواجه میشید:

qflash_m66_programming

حالا باید تغذیه ماژول رو قطع و دوباره وصل کنیم تا شاهد چشمک زدن سربع led نت لایت باشیم.

برای استفاده از example هایی که توی sdk هست لازم هست که فایل make/gcc/gcc_makefile رو باز کرده و مقدار متغیر C_PREDEF رو تغییر بدید ، مثلا میتونید از این مقدار برای نمونه کد sms استفاده کنید

C_PREDEF=-D __EXAMPLE_SMS__

 

استفاده از eclipse برای OpenCpu ماژول M66

مرحله اول نصب JRE

اول از همه باید jre یا Java Runtime Environment رو نصب کنیم که بتونیم از ایکلیپس که توسط جاوا نوشته شده استفاده کنیم. برای اینکار نسخه 32 بیتی اون رو دانلود میکنیم ، دقت کنید 32 بیتی به دلیل اینکه نسخه ایکلیپس ما هم 32 بیتی هست. با سرچ “دانلود jre 8 32bit” میتونید از سایت های داخلی اون رو دانلود کنید.

بعد از نصب جاوا با اجرای دستور

java --version

در cmd میتونیم از نصب اون مطمئن بشیم .

 

مرحله دوم نصب کامپایلر

به صورتی که در بالا توضیح داده شد کامپایلر رو نصب میکنیم

 

مرحله سوم نصب Eclipse

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

ایکلیپس نیازی به نصب نداره و فقط کافیه فایل زیپ رو توی یه پوشه استخراج کنید ، چه بهتر که اون رو توی پوشه Program Files (x86) قرار بدید و یک شورتکات برای استفاده ازش درست کنید.

 

مرحله چهارم پیکربندی Eclipse

بعد از باز کردن نرم افزار پروژه خودمون رو ایمپورت میکنیم (فایل پروژه رو از این لینک میتونید دانلود کنید) ، برای اینکار از منوی file گزینه import رو انتخاب کرده و بعد از قسمت general گزینه Existing project into Workspace رو انتخاب می کنیم.

مرحله چهارم پیکربندی Eclipse
پیکربندی Eclipse

بعد از اون هم پروژمون رو انتخاب میکنیم

import

حالا باید چیزی شبیه این داشته باشید:

 

Eclipse

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

و حالا چند تنظیم دیگه که باید انجام بشه

1- گزینه project -> build configurations -> set Active -> Release رو انتخاب میکنیم (اگر گزینه فعال نیست اول از بخش project explorer پروژتون رو روش کلیک کنید تا انتخاب بشه)

2-تنظیم کامپایلر:

روی پروژتون راست کلیک کرده از properties توی بخش C/C++ Build از قسمت Enviroment محل gcc رو مشخص کنید. (البته اگر محل نصب پیشفرض رو تغییر نداده باشید نیازی نیست کاری بکنید)

تنظیم کامپایلر
تنظیم کامپایلر

کامپایل کردن پروژه

برای اینکار از منوی project گزینه build project رو انتخاب میکنیم.

کامپایل کردن پروژه
کامپایل کردن پروژه

 

لازم هست که قبل از آپلود فایل خروجی روی ماژول یکسری اطلاعات هم اضافه بشه به فایل خروجی که برای اینکار باید از منوی project-> make target گزینه build رو انتخاب کنیم.

project> make target

برای ریختن برنامه روی ماژول باید به همون صورتی که در بالا توضیح داده شد از نرم افزار qflash استفاده کرده و فایل app_image_bin.cfg رو که در پوشه Release هست روی ماژول پروگرام کنیم.

 

 

 

 

منبع:سیسوگ

مطلب قبلیآموزش STM32 با توابع LL قسمت پانزدهم: راه‌اندازی واحد ADC و گرفتن اطلاعات توسط DMA
مطلب بعدیباگ جدید سخت افزاری در چیپ میلیون ها دستگاه وای فای و بلوتوث که امکان سرقت اطلاعات را می دهد!

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید