سلام به همه دوستان سیسوگی!
اگر تا حالا روی پروژههای اینترنت اشیا (IoT) یا ارتباط ماشین با ماشین (M2M) کار کرده باشید، احتمالاً با ماژولهای سلولار سروکار داشتهاید. معمولاً یک میکروکنترلر یا یک برد لینوکسی مثل رزبریپای، با فرمانهای AT به ماژول میگوید چه کار کند: به شبکه وصل شو، پیامک بفرست، اینترنت را برقرار کن و…
اما اگر بگویم داخل خود ماژول سلولار یک پردازنده ARM با سیستمعامل لینوکس نشسته که میتوانید برنامه خودتان را روی آن اجرا کنید چه؟ یعنی در خیلی از پروژهها اصلاً به آن میکروکنترلر یا برد جانبی نیازی ندارید!
در این مجموعه مقالات قرار است با هم سراغ ماژول EC25-EUX از شرکت کوئکتل (Quectel) و راهکار QuecOpen آن برویم. از معرفی ماژول شروع میکنیم و قدمبهقدم تا راهاندازی، برنامهنویسی و بررسی لایههای داخلی آن پیش میرویم. سعی کردهام مطالب طوری باشد که هم دوستانی که تازه وارد این حوزه شدهاند استفاده کنند و هم مهندسانی که میخواهند جزئیات فنی را عمیقتر بشناسند.
در قسمت اول، با خود ماژول، قابلیتهایش و مفهوم QuecOpen آشنا میشویم.
کوئکتل EC25 یک سری از ماژولهای LTE است، نه یک ماژول تکی. طبق دیتاشیت رسمی، این سری 14 نسخه دارد که همه از نظر ابعاد، پایهها و نرمافزار تقریباً یکساناند. تفاوت اصلیشان در باندهای فرکانسی است، چون هر منطقه از دنیا باندهای خودش را دارد. به همین دلیل نسخههایی مثل EC25-E، EC25-EU، EC25-A (برای آمریکای شمالی)، EC25-J (برای ژاپن)، EC25-AU (برای آمریکای لاتین و استرالیا) و نسخه موردنظر ما یعنی EC25-EUX وجود دارند.
نسخه EUX برای منطقه اروپا، خاورمیانه و آفریقا (EMEA) و همچنین تایلند طراحی شده و نکته جالبش این است که علاوه بر باندهای FDD، از باندهای TDD هم پشتیبانی میکند. در ادامه میبینیم که این قابلیت در شبکههای داخل ایران هم به کار میآید.
چند مشخصه کلی ماژول:
شاید در مشخصات ماژولهای سلولار زیاد عبارت «Cat 4» یا «Cat 1» را دیده باشید. رده تجهیزات کاربر (UE Category) در استانداردهای 3GPP تعریف شده و مشخص میکند یک دستگاه حداکثر چه نرخ دادهای را میتواند پشتیبانی کند و از چه امکاناتی برخوردار است.
ماژول EC25-EUX از رده Cat 4 است و طبق دیتاشیت بر پایه فناوری LTE نسخه Rel-11 از 3GPP ساخته شده است. اعدادش اینها هستند:
| حالت | دانلود (DL) | آپلود (UL) |
|---|---|---|
| LTE-FDD | 150 مگابیت بر ثانیه | 50 مگابیت بر ثانیه |
| LTE-TDD | 130 مگابیت بر ثانیه | 30 مگابیت بر ثانیه |
این 150 مگابیت از کجا میآید؟
نکته مهم این است که EC25 تجمیع حامل (Carrier Aggregation) را پشتیبانی نمیکند. یعنی همه این سرعت روی یک حامل به دست میآید. در لینک بالا (Uplink) ماژول فقط یک جریان ارسال میکند، برای همین سقف آپلود 50 مگابیت است.
چرا در حالت TDD سرعت کمتر است؟ چون در TDD دانلود و آپلود روی یک فرکانس انجام میشوند و زمان بین این دو تقسیم میشود. در FDD هر جهت فرکانس مستقل خودش را دارد.
ماژول از پهنای باندهای 1.4، 3، 5، 10، 15 و 20 مگاهرتز پشتیبانی میکند، پس با تقریباً همه پیکربندیهای رایج شبکهها سازگار است.
یک ماژول صنعتی نباید فقط به 4G وابسته باشد. در خیلی از مناطق، بهخصوص بیرون شهرها، هنوز پوشش 3G یا 2G قابلاعتمادتر است. EC25-EUX در این شرایط بهصورت خودکار به نسلهای قبلی بازگشت (Fallback) میکند:
| فناوری | دانلود | آپلود |
|---|---|---|
| DC-HSPA+ | 42 مگابیت بر ثانیه | 5.76 مگابیت بر ثانیه |
| WCDMA | 384 کیلوبیت بر ثانیه | 384 کیلوبیت بر ثانیه |
| EDGE | 296 کیلوبیت بر ثانیه | 236.8 کیلوبیت بر ثانیه |
| GPRS | 107 کیلوبیت بر ثانیه | 85.6 کیلوبیت بر ثانیه |
این جدول، باندهای پشتیبانیشده در نسخه EUX را نشان میدهد:
| فناوری | باندها |
|---|---|
| LTE-FDD | B1 / B3 / B7 / B8 / B20 / B28A |
| LTE-TDD | B38 / B40 / B41 |
| WCDMA | B1 / B8 |
| GSM / EDGE | B3 (1800) / B8 (900) |
یک تجربه عملی: وقتی با فرمان AT+QOPS (فرمان اسکن اپراتورها در ماژولهای کوئکتل) شبکههای اطراف را اسکن کردم، علاوه بر سلولهای باندهای B1، B3، B7 و B20، سلولهایی با شماره کانال (EARFCN) حدود 38750 تا 39350 هم پیدا شدند. این شمارهها مربوط به باند B40 یعنی TDD در 2300 مگاهرتز هستند. پس پشتیبانی EUX از باندهای TDD فقط یک ویژگی روی کاغذ نیست و در عمل هم به درد میخورد.
یک نکته مهم: قبل از انتخاب هر ماژول سلولار برای یک محصول، باندهای آن را با باندهای اپراتورهای منطقه هدف مقایسه کنید. ماژولی که باند مناسب نداشته باشد، هر قدر هم قوی باشد، به شبکه وصل نمیشود!
یکی از جذابترین قابلیتهای EC25، گیرنده سامانه ماهوارهای ناوبری جهانی (GNSS) داخلی آن است. این گیرنده بر پایه فناوری Qualcomm IZat Gen8C Lite ساخته شده و از پنج منظومه ماهوارهای پشتیبانی میکند:
| منظومه | فرکانس (مگاهرتز) |
|---|---|
| GPS (آمریکا) | 1575.42 (L1) |
| GLONASS (روسیه) | 1597.5 تا 1605.8 |
| BeiDou (چین) | 1561.098 |
| Galileo (اتحادیه اروپا) | 1575.42 (E1) |
| QZSS (ژاپن) | 1575.42 (L1) |
چرا پشتیبانی از چند منظومه مهم است؟ چون هرچه گیرنده ماهوارههای بیشتری ببیند، زمان رسیدن به اولین موقعیت (TTFF: Time To First Fix) کوتاهتر میشود و دقت بالاتر میرود. این مزیت بهخصوص در شهرهای بزرگ که ساختمانها بخشی از آسمان را میپوشانند، خودش را نشان میدهد.
از نظر نرمافزاری کار با GNSS ساده است:
AT+QGPS=1 گیرنده روشن میشود.برای سختافزار هم ماژول یک پایه آنتن مستقل برای GNSS دارد. پس در طراحی برد باید برایش آنتن جداگانه در نظر بگیرید.
ترکیب LTE و GNSS در یک ماژول یعنی ساخت ردیاب (Tracker)، سامانه مدیریت ناوگان یا هر دستگاهی که باید هم موقعیتش را بداند و هم آن را گزارش کند، بدون نیاز به ماژول GPS جداگانه.
EC25-EUX فقط یک مودم نیست و طبق دیتاشیت، این رابطهای جانبی (Peripheral Interfaces) را در اختیار طراح قرار میدهد:
| رابط | تعداد | کاربرد |
|---|---|---|
| USB 2.0 پرسرعت (High-Speed) | 1 | رابط اصلی ارتباط با میزبان؛ انتقال داده اینترنت و پورتهای فرمان AT، GNSS و عیبیابی |
| UART | 2 | ارتباط سریال اصلی و عیبیابی (Debug) |
| PCM | 1 | رابط صوتی دیجیتال برای اتصال به مبدل صوتی (Audio Codec) |
| I2C | 1 | سنسورها و تراشههای جانبی |
| SDIO | 1 | کارت حافظه و تراشههای جانبی |
| SGMII | 1 | اتصال به لایه فیزیکی اترنت (Ethernet PHY) |
| ADC | 2 | مبدل آنالوگ به دیجیتال برای اندازهگیری ولتاژ |
| (U)SIM | 1 | رابط سیمکارت، با قابلیت تشخیص اتصال سیمکارت |
برخلاف بعضی نسخههای دیگر خانواده EC25، نسخه EUX طبق دیتاشیت رابط Wi-Fi و بلوتوث ندارد.
قابلیتهای صوتی ماژول هم کامل است: کدکهای گفتار HR، FR، EFR، AMR و AMR-WB، حذف اکو (Echo Cancellation) و کاهش نویز (Noise Suppression)، پشتیبانی از DTMF و بهصورت اختیاری VoLTE (صدا روی LTE).
از قابلیتهای دیگری که در دیتاشیت آمده:
یک نکته طراحی: این اعداد مربوط به حالتهای کممصرف هستند. هنگام ارسال داده، بهخصوص در شبکه GSM، جریان لحظهای ماژول بالاتر میرود. منبع تغذیه را با توجه به جریان پیک طراحی کنید، نه جریان میانگین.
قلب EC25-EUX تراشه Qualcomm MDM9207 است. وقتی سراغ جزئیات این تراشه میروید، به یک نکته کلیدی میرسید: داخل آن عملاً دو پردازنده مستقل وجود دارد.
این دو بخش از طریق حافظه مشترک (Shared Memory) و پروتکلهای مخصوص کوالکام با هم در تماس هستند.
بخش مودم برای ما یک جعبه سیاه است. کد آن امضای دیجیتال دارد و قابل تغییر نیست، و ما فقط از طریق فرمانهای AT یا رابطهای نرمافزاری با آن ارتباط میگیریم. اما بخش لینوکسی ماجرا، یعنی پردازنده Cortex-A7، میتواند در اختیار خود ما باشد. این دقیقاً همان چیزی است که QuecOpen را ممکن میکند.
برای اینکه این اعداد فقط روی کاغذ نمانند، بیایید مستقیم از خود ماژول بپرسیم. لینوکس اطلاعات مقیاسگذاری فرکانس پردازنده (CPU Frequency Scaling) را از طریق فایلهای مسیر /sys در اختیار ما میگذارد. این خروجی روی ماژول من گرفته شده است. (نحوه دسترسی به خط فرمان ماژول را در قسمتهای بعدی یاد میگیریم.)
همه اعداد بر حسب کیلوهرتز هستند. یعنی:
چرا پردازنده همیشه با حداکثر سرعت کار نمیکند؟ جواب در خط آخر است: سیاستگذار فرکانس (Governor) از نوع interactive.
این سیاستگذار که ریشه در دنیای اندروید دارد، بار پردازنده را دائم زیر نظر دارد:
نتیجه، مصرف انرژی و تولید حرارت کمتر است؛ چیزی که برای ماژولی که در یک جعبه بسته و گاهی با باتری کار میکند، اهمیت زیادی دارد. در قسمتهای بعدی میبینیم که اگر لازم باشد، میتوان این رفتار را تغییر داد. مثلاً میشود برای کاهش مصرف، سقف فرکانس را پایین آورد.
خب، رسیدیم به جذابترین بخش ماجرا!
QuecOpen پلتفرم توسعه Quectel برای اجرای برنامه کاربر روی خود ماژول است؛ چیزی که در دنیای ماژولهای سلولار به آن پردازنده باز (Open CPU) هم میگویند. ایده ساده است: بهجای اینکه یک میکروکنترلر (MCU) جداگانه کنار ماژول بگذاریم تا با فرمانهای AT آن را کنترل کند، برنامه را مستقیماً روی پردازنده داخلی خود ماژول اجرا میکنیم. به این ترتیب ماژول دو نقش را همزمان بازی میکند: هم وظایف ارتباطی مثل LTE، GNSS و صدا را انجام میدهد، و هم یک کامپیوتر کوچک است که برنامه ما رویش اجرا میشود.
حذف پردازنده جانبی چند مزیت مهم دارد:
نکتهای که خیلیها را گیج میکند این است که QuecOpen بسته به مدل ماژول، روی دو نوع سیستمعامل کاملاً متفاوت ساخته شده است:
| ماژولهایی مثل EC25 | ماژولهایی مثل EC200U | |
|---|---|---|
| سیستمعامل | لینوکس نهفته (Embedded Linux) | سیستمعامل بلادرنگ (RTOS) |
| زبان برنامهنویسی | C/C++ | C |
| حالوهوای توسعه | شبیه برنامهنویسی روی یک برد لینوکسی کوچک: پردازهها، سیستم فایل، سوکتها و ابزارهای آشنای لینوکس | شبیه برنامهنویسی میکروکنترلر: تسکها، صفها و APIهای اختصاصی SDK |
در نسخههای قدیمیتر مستندات، از QuecOpen لینوکسی با نام OpenLinux هم یاد شده است. پیشوند ql-ol در پوشههای SDK ماژول EC25 یادگار همین نام است. پس اگر در اینترنت دنبال منابع میگردید، حواستان باشد مطلبی که میخوانید مربوط به کدام دنیاست. مثالها و APIهای این دو اصلاً به هم شبیه نیستند!
برای کار با ماژول در این مجموعه، از برد ارزیابی EC25-EUX LTE EVB (A) V2 استفاده میکنم که از فروشگاه سیسوگ تهیه کردهام. یک برد ارزیابی (Evaluation Board) این امکان را میدهد که بدون طراحی سختافزار، ماژول را به کامپیوتر وصل کنید و همه قابلیتهایش را آزمایش کنید.

نمای کلی برد EC25-EUX LTE EVB (A) V2

نمای کلی برد EC25-EUX LTE EVB (A) V2 – 2
برای اولین آشنایی با ماژول، نرمافزار QNavigator کوئکتل ابزار بسیار خوبی است. این نرمافزار یک رابط گرافیکی روی پورت فرمان AT ماژول است و اطلاعاتی مثل مشخصات ماژول، وضعیت سیمکارت، کیفیت سیگنال و وضعیت شبکه را بدون نیاز به تایپ دستی فرمانها نمایش میدهد. برای کسی که تازه کار با ماژول را شروع کرده، QNavigator بهترین نقطه شروع است: قبل از اینکه سراغ برنامهنویسی برویم، مطمئن میشویم ماژول، سیمکارت و آنتنها درست کار میکنند.
جمعبندی و نقشه راهدر این قسمت دیدیم که EC25-EUX یک ماژول LTE Cat 4 با سرعت دانلود تا 150 مگابیت بر ثانیه است که از باندهای FDD و TDD، بازگشت به 3G و 2G، قابلیتهای صوتی کامل و یک گیرنده GNSS چندمنظومهای پشتیبانی میکند. مهمتر از همه دیدیم که داخل این ماژول یک پردازنده ARM با لینوکس وجود دارد و QuecOpen به ما اجازه میدهد برنامه خودمان را روی همین پردازنده اجرا کنیم.
در قسمتهای بعدی این مجموعه سراغ این موضوعات میرویم:
اگر سؤالی دارید یا موضوع خاصی هست که دوست دارید در این مجموعه به آن پرداخته شود، در بخش نظرات بنویسید. تا قسمت بعد، خدانگهدار!
مهندس تحقیق و توسعه نرمافزار نهفته (R&D Embedded Software Engineer)، فعال در حوزه اینترنت اشیا، شبکههای سلولار و سیستمهای نهفته
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.