آموزش کار با تراشه F1C100S, امبدد لینوکس, توصیه شده

کار با تراشه F1C100S – قسمت چهارم – طراحی رابط گرافیکی با lvgl

کار با تراشه F1C100S – قسمت چهارم

این روزها اکثر دستگاه های الکترونیکی کاربرپسند یک رابط گرافیکی دارند (البته همیشه هم لازم نیست?)و بیشتر الکترونیکی ها دنبال راه اندازی یک گرافیک خوب روی محصولاتشان هستند ، اکثرا هم از میکروهای شرکت stm استفاده میکنند اما مدتی است که قیمت این میکروکنترلر ها بسیار افزایش داشته  و غیر از آن بعضی جاها اصلا جوابگو نیستند یا اصلا دلیلی ندارد که از یک میکروکنترلر که شامل بخش های جانبی زیادی (منظور تایمر یا adc و dac و … ) است برای کارها استفاده کنیم که اصلا نیازی به آنها نداریم. پس بهتراست که برای هر کاری سراغ چیزی که باید برویم! در قسمت قبل نحوه ساخت ایمیج لینوکس و اجرای آن روی تراشه F1C100S را آموزش دادیم و در این قسمت هم میخواهیم سراغ راه اندازی یک رابط گرافیکی با کتابخانه lvgl و اجرای آن روی برد sinux f1 برویم پس با سیسوگ همراه باشید.

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

LVGL

LVGL یک رابط گرافیکی اُپن سورس است که از تاچ اسکرین هم پشتیبانی میکند و دارای کامپوننت های مختلفی مثل windows, buttons, labels, lists, charts و … است که قابل ویرایش نیز هستند. افکت های مختلفی مثل شفافیت ، سایه، انیمیشن های مختلف و … هم از امکانات دیگر این کتابخانه هستند.

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

حال لازم است که فایل‌های زیر را در پوشه اصلی خود کپی کرده و نام‌های آن را تغییر دهیم:

و تغییرات زیر را درفایل  lv_drv_conf.h قرار دهیم  :

در خط 10:

در خط 275:

 

و تغییرات زیر را درفایل  lv_conf.h اعمال می کنیم:

در خط 10:

در خط 275:

 

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

نوبت کامپایل برنامه هست! لازم است که در ابتدا فایلی با نام Makefile ساخته و کدهای زیر را در آن بریزیم، باید در خط 4 مسیر کامپایلر خود را مشخص کنیم که من در اینجا مسیر کامپایلر buildroot را دادم و شما باید مسیر را بر اساس سیستم خود تغییر دهید.

 

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

یک فایل خروجی با نام myGUI تولید می‌شود که برنامه گرافیکی ماست.

وقتی داریم با سیستم‌های امبدد کار می‌کنیم معمولاً پردازنده هدف، سخت‌افزار ضعیفی دارد و کامپایل کردن روی آن زمان‌بر و در برخی موارد غیرممکن است پس‌روی سیستم خودمان کامپایل کرده و خروجی را روی سخت‌افزار خود انتقال داده و اجرا می‌کنیم مثل کاری که در بالا انجام دادیم.

 

برنامه UMTPRD

حالا نکته‌ای که می‌خواهیم در باره ی آن صحبت کنیم همین‌جاست!

آن هم برای انتقال دادن فایل خروجی روی سخت‌افزار، اکثر چیپ‌های لینوکسی که با آنها کار می‌کنیم دارای شبکه هستند یا به‌صورت lan و یا به‌صورت  Wifi و برای انتقال فایل از بستر شبکه استفاده می‌کنیم و با دستور scp یا دستورات مشابه فایل‌ها را انتقال می‌دهیم، اما F1C100S این‌طور نیست و ما شبکه را در آن نداریم (البته که توی برد sinux f1 ماژول Wifi رو اضافه کردیم اما اکثر بردهایی که f1c100s دارند یا بردی که ممکنه در آینده بزنید احتمال زیاد دارای ماژول Wifi نیست پس ما این رو در نظر نمی‌گیریم ولی راه دیگری که با کمک برنامه UMTPRD  بردمان را با یک کابل usb به سیستم وصل کرده که در آن برد ما به‌عنوان یک دستگاه ذخیره‌سازی شناخته می‌شود و به فایل‌های ما در سیستم دسترسی پیدا می‌کند.

کانفیگ buildroot که در قسمت قبل نحوه استفاده از آن را آموزش دادیم این پکیج را هم در ایمیج ما نصب میکند و میتوانید از آن استفاده کنید فقط لازم است که سوییچ usb و کلید otg برد sinux f1 را روی حالت device قرار دهیم و با یک کابل usb آن را به سیستم متصل کنیم.

حال فایل myGUIرا روی برد در مسیر /root/ کپی میکنیم و با دستور زیر آن را اجرا میکنیم:

(دستورات بالا همونطور که میدونید باید در ترمینال برد اجرا بشه?)

 

در زیر میتوانید خروجی برنامه را مشاهده کنید:

 

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

مشخصات lcd:

-4.3 Inch TFT LCD Module
– With 24-bit RGB interface (standard 40PIN interface), compatible with most current true color Interface 4.3
– Resolution 480×272

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

 

دانلود رایگان شماتیک و PCB برد توسعه SINUX F1

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

 

sisoog sinux f1 board buy

 

 

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

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

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

35 دیدگاه در “کار با تراشه F1C100S – قسمت چهارم – طراحی رابط گرافیکی با lvgl

  1. علی گفت:

    سلام
    این قطعه چه lcd هایی رو ساپورت میکنه؟
    LVDS یا TTL

    1. Mahdi.h   گفت:

      سلام. lvds ساپورت نمیکنه در قسمت اول آموزش بخش “بخش سوم – تاچ و ال سی دی” دقیقتر میتونید بررسی کنید

  2. Manikandan Ranganathan گفت:

    Hi brother!
    I’m really happy to see your training. This training will have really helped me to forward completing my own project.

    thanks a lot for your training.

    1. Sisoog Admin گفت:

      Hi there, glad to see that we helped you competing your project

    2. Mahdi.h   گفت:

      Hi
      Your Welcome 🙂

  3. جواد گفت:

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

  4. جواد گفت:

    نگاه کردم مثل اینکه MIPI پشتیبانی نمی کنه درسته؟
    طبق شماتیک شما فکر کنم از ال سی دی RGB666 استفاده کردین ..من یک ال سی دی RGB565 دارم و 40 پین هم هست، برای این کد رو چه جوری باید تغییر بدم ؟
    ممنون

    1. Mahdi.h   گفت:

      بله، پشتیبانی نمیشه.
      نیاز به تغییری نیست ، میتونید استفاده کنید از 565

  5. جواد گفت:

    ُسلام با تشکر از آموزش عالی و بی نظیرتون
    قسمت تنظیمات نمایشگر که گفتین چه جوری میتونم یک ال سی دی MIPI متصل کنم؟
    ممنونم

    1. Mahdi.h   گفت:

      خواهش میکنم.
      پشتیبانی نمیشه mipi

  6. علی گفت:

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

    1. Mahdi.h   گفت:

      سلام. خواهش میکنم. احتمالا در آینده این آموزش هم تهیه میشه ، اما شما میتونید با کمک این لینک و این دو خطی که در قسمت قبل بهش اشاره شد :
      export TSLIB_TSDEVICE=/dev/input/event0
      ts_print_raw
      خودتون پیش برید

  7. Sarah گفت:

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

    1. Mahdi.h   گفت:

      لطف دارید ، خواهش میکنم?

  8. Soran گفت:

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

    1. Mahdi.h   گفت:

      سلام
      خواهش میکنم
      میتونید از این لینک کمک بگیرید
      https://github.com/nminaylov/F1C100s_LVGL

      1. سورا گفت:

        سلام خدمت شما.
        اولا خیلی ممنون بابت آموزش خوبتون… روزهای زیادی توی صفحات انگلیسی برای چنین چیزی می‌گشتم که آب در کوزه بود و ما تشنه لبان می‌گشتیم…
        دوما، بنده به شدت مبتدی هستم… توی این لینکی که گذاشتید گفته که باید با دستور
        fatload mmc 0:1 80000000 firmware.bin
        go 80000000
        برنامه رو توی آی سی بریزیم… ولی خب… از کجا و چطور ذکر نشده و گفته نشده که آیا نیاز هست ایمیج و کرنل و سایر مخلفات ساخته بشه یا نه…
        می‌خواستم بپرسم می‌شه یه راهنمایی بفرمایید که دقیقا چه بلایی باید سر فایل .bin بیاریم تا توی آی سی ریخته بشه؟
        خیلی ممنون.

        1. Mahdi.h   گفت:

          سلام.
          آموزش جدیدی در سایت سیسوگ منتشر شده که نحوه استفاده از این کتابخانه را توضیح داده
          https://sisoog.com/2022/09/11/f1c100s-baremetal/
          پیشنهاد میکنم شبکه های اجتماعی سیسوگ را دنبال کنید که این مطالب رو از دست ندید?

          1. سورا گفت:

            خیلی ممنون.
            پس اونجا زیاد مزاحمتون می‌شم.
            چشم.

  9. Milad گفت:

    سلام با تشکر از مطلب خوبتون
    در مورد F1c100s ، شما مورد مشابه این آی سی که اترنت هم داشته باشه رو میشناسید؟

    1. Mahdi.h   گفت:

      سلام خواهش میکنم.
      از چیپ V3S میتونید استفاده کنید. برد های licheepi zero از این چیپ استفاده میکنند.

      1. Milad گفت:

        ممنون از شما

  10. حسینی گفت:

    میشه برای f1c100s برد رو جوری طراحی کرد که از lcd های ۵۰ pin پشتیبانی کنه؟

    1. Mahdi.h   گفت:

      بله. از لحاظ دیتا نمایشگرهای 50 پین با 40 پین تفاوتی ندارند که و با یه برد مبدل ساده میشه 40 پین رو به 50 پین تبدیل کرد.
      توی سایت کویرالکترونیک هم نمونه مبدل هاش موجود هست.

  11. حسینی گفت:

    سلام.ممنون بابت اموزش خوبتون
    حداکثر اندازه lcd و تاچ اسکرینی که میشه به این برد وصل کرد چقدره؟
    7 اینچ هم میشه وصل کرد (با رزولوشن های مرسوم)؟

    1. Mahdi.h   گفت:

      سلام.
      در قسمت اول در “بخش سوم – تاچ و ال سی دی” رزولوشن های مختلفی که هر اینترفیس ساپورت میکنه رو قرار دادیم.
      بله ، رزولوشن معمول ال سی دی های 7 اینچی 800*480 هست که توی قسمت قبل نحوه کانفیگش رو گفتیم

    2. محمد گفت:

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

      سوال ۱: آیا میشه با QT برای این بورد اپلیکیشن نوشت؟
      سوال ۲: تراشه f1c200s دو برابر این تراشه رم داره، اگه با این تراشه جایگزین بشود لازمه که چیز دیگری تغییر کند؟

      1. Mahdi.h   گفت:

        سلام خواهش میکنم ?
        بله میشه با qt هم نوشت ولی چون سخت افزار نسبتا ضعیفی داره بهتره که با همین lvgl که سبک تر هست باهاش کار بکنید.
        نیاز به هیچ تغییری نیست هر بردی که f1c100 بوده رو میشه بجاش f1c200 مونتاژ کرد.

  12. صاحبی گفت:

    با سلام و سپاس از شما، انشاا… وقت شود و به صورت سخت افزاری هم بتونم در اولین تعطیلات پیش رو خروجی موارد آموزشی شما رو هم تست کنم. سپاس از شما و تیم حرفه‌‎ای سیسوگ

    1. Mahdi.h   گفت:

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

  13. ali alibalaei گفت:

    مثل همیشه عالی

    1. Mahdi.h   گفت:

      ممنون از شما ???

  14. َAmir گفت:

    سلام
    اگ ممکنه یه آموزش هم برای پورت کردن کتابخونه LVGL روی میکروهای STM32 بزارین
    ممنون

    1. Mahdi.h   گفت:

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

  15. m.h.Yazdani گفت:

    لطفا در مورد روشهای حفاظت از برنامه در برابر کپی برداری هم بنویسید.
    واقعا نمیدونم دیوایس لینوکسی تا چه حد تو این زمینه قابل اعتماد هستند

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

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