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

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

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

این روزها اکثر دستگاه های الکترونیکی کاربرپسند یک رابط گرافیکی دارند (البته همیشه هم لازم نیست?)و بیشتر الکترونیکی ها دنبال راه اندازی یک گرافیک خوب روی محصولاتشان هستند ، اکثرا هم از میکروهای شرکت 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

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

خرید برد توسعه SINUX F1

شما میتونید برد توسعه SINUX F1 رو از طریق پالت تهیه کنید.

 

 

 

3 نفر

پــــســنــدیـده انـد

توجه

Mahdi.h  
Mahdi.h  

علاقه مند به سیستم های امبدد

دیدگاه ها

23 دیدگاه

  • Sarah
    ۱۶ شهریور ۱۴۰۱

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

    • Mahdi.h  
      Mahdi.h  
      ۱۶ شهریور ۱۴۰۱

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

  • Soran
    ۱۸ مرداد ۱۴۰۱

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

    • Mahdi.h  
      Mahdi.h  
      ۲۰ مرداد ۱۴۰۱

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

      • سورا
        ۴ مهر ۱۴۰۱

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

        • Mahdi.h  
          Mahdi.h  
          ۴ مهر ۱۴۰۱

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

          • سورا
            ۵ مهر ۱۴۰۱

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

            0
  • Milad
    ۷ اسفند ۱۴۰۰

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

    • Mahdi.h  
      Mahdi.h  
      ۷ اسفند ۱۴۰۰

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

  • حسینی
    ۶ اسفند ۱۴۰۰

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

    • Mahdi.h  
      Mahdi.h  
      ۷ اسفند ۱۴۰۰

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

  • حسینی
    ۱۳ بهمن ۱۴۰۰

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

    • Mahdi.h  
      Mahdi.h  
      ۱۳ بهمن ۱۴۰۰

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

    • محمد
      ۲۱ بهمن ۱۴۰۰

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

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

      • Mahdi.h  
        Mahdi.h  
        ۲۲ بهمن ۱۴۰۰

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

  • صاحبی
    ۴ بهمن ۱۴۰۰

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

    • Mahdi.h  
      Mahdi.h  
      ۶ بهمن ۱۴۰۰

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

  • Ali Alibalaei
    ali alibalaei
    ۱ بهمن ۱۴۰۰

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

  • َAmir
    ۱ بهمن ۱۴۰۰

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

    • Mahdi.h  
      Mahdi.h  
      ۲ بهمن ۱۴۰۰

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

  • m.h.Yazdani
    ۳۰ دی ۱۴۰۰

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 3 سال پیش
راه اندازی LCD گرافیکی Nokia 1661

راه اندازی LCD گرافیکی Nokia 1661

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش
ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش
همه چیز درباره ریموت کنترل‌های هاپینگ

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش
مسابقه سوم: استخراج داده از رشته ها در زبان C

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش
مسابقه ششم: بزن میکروکنترلر را بسوزون!

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 12 ماه پیش
آموزش قدم به قدم راه اندازی NRF24L01

آموزش قدم به قدم راه اندازی NRF24L01

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

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش
ساخت ماینر با FPGA و ARM

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش
کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش
مسابقه چهارم: کدام حلقه سریع‌تر است؟

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 2 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک