هستند پروژههایی که توی اونها دسترسی مستقیمی به برد نداریم ولی لازم هست که اطلاعاتی رو برای بردمون ارسال یا از اون دریافت کنیم. بهترین راه (و شاید تنها راه) برای اینکار استفاده از ماژولهای gsm هست، ماژولهایی که سیمکارت میخورند و میتونند به شبکه تلفن همراه متصل بشند، میشه از طریق پیامک با اونها در ارتباط بود و یا زنگ زد بهشون و دستور بهشون داد یا اون زنگ بزنه به ما و حال و احوالش رو بگه?(خارج از شوخی این توی خیلی پروژهها استفاده میشه و جذاب هم هست)، یا توی یه مرحله بالاتر به یک سرور اینترنتی متصل بشند و دیتاها رو برای سرور ارسال کنند. توی ایران اکثراً ماژولهای gsm رو به ماژول sim800 و همخانواده هاش میشناسند ولا غیر، اما مدت زیادی هست که ماژولهای شرکت کوییکتل هم وارد بازار ایران شدند و امکانات خیلی خوبی هم دارند؛ یکی از اصلیترین این ویژگیها قابلیت OpenCpu بودن این ماژولها هست که به ما این امکان رو میده که کد موردنظرمون رو روی خود ماژول بریزیم و اجرا کنیم و دیگه نیاز به کنترل کننده خارجی نداشته باشیم.
پس با ما همراه باشید.
قابلیت OpenCpu
اگر که دقیق تر به این موضوع نگاه کنیم میبینیم، می بینیم که OpenCpu که خیلی به دردمون میخوره! میتونه هزینمون رو کاهش بده، پیچیدگی طراحی برد رو کم کنه و کدنویسی رو راحت تر کنه (البته اگه بخوبی بتونیم یادش بگیریم) . قبلا توی سایت مطالبی برای کار با ماژول های شرکت کوییکتل نوشته شده که میتونید از اونها استفاده کنید ، یکی از اونها ماژول mc60 بوده که علاوه بر gsm قابلیت gps هم داشته. اما ممکنه توی پروژه ما gps نیاز نباشه ، پس بهتره که از ماژولی که gps نداره و ارزون تر هست استفاده کنیم. توی این سری مطالب میخوایم استفاده از ماژول m66 رو به صورت OpenCpu یاد بگیریم و چندتا پروژه کاربردی هم باهاش انجام بدیم.
نرم افزار QNavigator
قبل از اینکه وارد بحث OpenCpu بشیم باید بگم که اگر میخواید با ماژول به صورت at command ارتباط بگیرید میتونید از نرم افزار 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 رو انتخاب کنید (مثل تصویر پایین).
بعد از اون هم 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 هست).
اول از همه فایل app_image_bin.cfg رو از مسیر \build\gcc انتخاب میکنیم بعد پورت سریال و سپس نوع ماژول رو انتخاب میکنیم. حالا تغذیه ماژول رو وصل کرده و پورت uart main اون رو توسط یک ماژول مبدل سریال به سیستم وصل میکنیم. حالا دکمه استارت رو میزنیم بعد از اون پیغام Waiting… نمایش داده میشه که شما باید دکمه پاور ماژول رو نگه داشته تا نرم افزار از حالت waiting در بیاد و شروع به پروگرام ماژول بکنه حالا میتونیم دکمه پاور رو رها کنیم.
در صورت پروگرام موفقیت آمیز با این پیغام مواجه میشید:
حالا باید تغذیه ماژول رو قطع و دوباره وصل کنیم تا شاهد چشمک زدن سربع 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 رو انتخاب می کنیم.
بعد از اون هم پروژمون رو انتخاب میکنیم
حالا باید چیزی شبیه این داشته باشید:
و اگر ندارید از تون گوشه بالا سمت چپ این گزینه رو انتخاب کنید:
و حالا چند تنظیم دیگه که باید انجام بشه
1- گزینه project -> build configurations -> set Active -> Release رو انتخاب میکنیم (اگر گزینه فعال نیست اول از بخش project explorer پروژتون رو روش کلیک کنید تا انتخاب بشه)
2-تنظیم کامپایلر:
روی پروژتون راست کلیک کرده از properties توی بخش C/C++ Build از قسمت Enviroment محل gcc رو مشخص کنید. (البته اگر محل نصب پیشفرض رو تغییر نداده باشید نیازی نیست کاری بکنید)
کامپایل کردن پروژه
برای اینکار از منوی project گزینه build project رو انتخاب میکنیم.
لازم هست که قبل از آپلود فایل خروجی روی ماژول یکسری اطلاعات هم اضافه بشه به فایل خروجی که برای اینکار باید از منوی project-> make target گزینه build رو انتخاب کنیم.
برای ریختن برنامه روی ماژول باید به همون صورتی که در بالا توضیح داده شد از نرم افزار qflash استفاده کرده و فایل app_image_bin.cfg رو که در پوشه Release هست روی ماژول پروگرام کنیم.
منبع:سیسوگ