[Tutorial] Building a simple UI with Squareline Studio to use on a microcontroller

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 พ.ค. 2024
  • Thank you so much for watching my video, I hope it was helpful!
    For questions feel free to leave me a comment and I will try getting back to you :)
    📖 Chapters 📖
    00:00 - Intro
    00:29 - Squareline Studio
    01:56 - Configuration
    03:41 - Code
    04:50 - Outro
    🔗 Resources 🔗
    Code (GitHub): github.com/Phlipinator/Tutorials
    Squareline Studio: squareline.io/downloads
    🎵 Music by Panda Beats 🎵
    pandabeatsmusic.com/
    Light The String: open.spotify.com/intl-de/trac...
    #ESP32 #SquarelineStudio #LVGL #GC9A01 #UIDesign #ESP32Tutorial #SquarelineStudioTutorial #ESP32DisplayProject #RoundDisplayESP32 #GC9A01Tutorial #LVGLTutorial #ArduinoIDE #ESP32Programming #GraphicalUserInterface #IoTProjects #ESP32LVGL #UIDevelopment #ESP32TouchDisplay #SquarelineLVGL #ArduinoGraphics #ESP32GUI #IoTInterfaceDesign #MicrocontrollerProjects #ESP32Development #ESP32ScreenTutorial #SquarelineStudioLVGL #ESP32IoTProjects #ArduinoDisplayProject #ESP32EmbeddedDesign

ความคิดเห็น • 51

  • @saulh.Barajas2025
    @saulh.Barajas2025 9 วันที่ผ่านมา +1

    You are the first one who give a very good and easy tutorial thank you so much!!

    • @PhilippThalhammer
      @PhilippThalhammer  9 วันที่ผ่านมา +1

      Thanks for saying that. It means a lot :)
      Glad it helped. I absolutely know what you mean. It took me quite a while to figure this out because noone gave a proper explanation 😄

    • @saulh.Barajas2025
      @saulh.Barajas2025 8 วันที่ผ่านมา

      I'm subscribed to your channel keep creating ✌️

  • @disane1987
    @disane1987 หลายเดือนก่อน

    Thank you! It really helps me to get started quickly with my new project :)

  • @hydrocarbon8272
    @hydrocarbon8272 หลายเดือนก่อน +1

    Thank you! Of all the vids I watched & forum posts read, your vid was the only one that made any sense of how Squareline works - specifically it's bizzare template saving BS. That was the worst part, but with your template in place it all clicked. Nobody else wanted to share their files.
    I specifically used an ESP32-C3 and configured it to use pin 4 for SCLK, 5 for DC, 6 for MOSI, 7 for CS, 10 for RST, then 0 & 10 for I2C's SDA & SCL.

    • @PhilippThalhammer
      @PhilippThalhammer  หลายเดือนก่อน +1

      I‘m glad it helped!
      I know exactly what you mean 😄
      I spent a lot of time on trying to figure out how everything works, because no one shared all necessary information.
      I was so frustrated by that, that once I made it work, I decided to do a tutorial on it 😄

  • @TOMTOM-nh3nl
    @TOMTOM-nh3nl 3 วันที่ผ่านมา

    Thank You

  • @dfgdfg_
    @dfgdfg_ หลายเดือนก่อน +1

    Thank you

  • @richonguzman
    @richonguzman 2 หลายเดือนก่อน

    nice!
    maybe I will have to get into Squareline Studio as I wanted to do a small TFT control of Lilygo T-deck :P

    • @PhilippThalhammer
      @PhilippThalhammer  2 หลายเดือนก่อน +1

      I haven’t tried doing more advanced stuff with squareline studio, as it does feel really janky and unfinished in my opinion, but I found it to be a shortcut for small projects.
      Would love to see the results if you try!

    • @richonguzman
      @richonguzman 2 หลายเดือนก่อน +2

      @@PhilippThalhammer sadly beside this there is no easy (doh!) way of programing the TFT screen

    • @PhilippThalhammer
      @PhilippThalhammer  2 หลายเดือนก่อน

      Yep, thats true…
      I mean you could go with LVGL from scratch, but I quickly lost motivation when I tried 😅

  • @goodn1051
    @goodn1051 2 หลายเดือนก่อน +1

    hope you make more......

    • @PhilippThalhammer
      @PhilippThalhammer  2 หลายเดือนก่อน +2

      More tutorials? :)
      Initially I wasn’t going to, but seeing the response to this one kinda changed my mind 😂
      I am currently working on one about rotary (ring) encoders, because there seems to be little to no resources about that. Maybe also a showcase on how to use them together with these round displays, as they go great together.
      Is there anything specific you would like to see? :)

    • @goodn1051
      @goodn1051 2 หลายเดือนก่อน +2

      @@PhilippThalhammer if you could also do one with cheaper and readily avaliable oled displays e.g these ili9341 displays it would be great

    • @goodn1051
      @goodn1051 2 หลายเดือนก่อน

      sorry tft displays

    • @PhilippThalhammer
      @PhilippThalhammer  2 หลายเดือนก่อน +1

      It should be very analogue with other tft displays, if you just follow the steps I outlined with this one.
      I don't really want to make another video about more or less the same topic 😅
      Also the one I am using is about 7€😁
      If you have problems feel free to ask though :)
      Maybe I will also create a discord server for stuff like this in the future 🤔

  • @ronakvaishnav-yi3xw
    @ronakvaishnav-yi3xw 2 หลายเดือนก่อน +3

    Nice video
    Just one suggestion, increase your voice volume, it's so hard to hear you even with headphones on (on full volume)

    • @PhilippThalhammer
      @PhilippThalhammer  2 หลายเดือนก่อน

      I think that might be an issue on your side 🤔
      I just double checked on my PC and smartphone and its quite loud on both devices.
      Thank you for the suggestion anyways :)

    • @quirinschweigert7794
      @quirinschweigert7794 2 หลายเดือนก่อน

      @@PhilippThalhammerit‘s definitely an issue with this video. I also noticed it right away.

    • @nulnul7050
      @nulnul7050 2 หลายเดือนก่อน

      It is a bit quiet on my phone too

    • @PhilippThalhammer
      @PhilippThalhammer  2 หลายเดือนก่อน

      Thats wierd. I don’t understand why its not an issue on my devices then 🤔

    • @PhilippThalhammer
      @PhilippThalhammer  2 หลายเดือนก่อน

      Do you mean the volume on the video in total is low?
      Could you check with one of my other videos if the problem persists there as well?
      If thats no trouble for you of course.

  • @VINICIUSBH100
    @VINICIUSBH100 หลายเดือนก่อน +1

    Does it also suporte microphyton ??? Thank you for sharing it with us😊

    • @PhilippThalhammer
      @PhilippThalhammer  หลายเดือนก่อน

      There seems to be support for micropython within Squareline Studio, however I am not sure how everything works exactly.
      I have only tried out Arduino so far 🤔
      Glad you like the video :)

  • @aymentertag6615
    @aymentertag6615 หลายเดือนก่อน

    I see that you added a potensiometer to interact with UI but I didn't see you defining the pin in the code, you wired it with pin 25 on the ESP32 board

    • @PhilippThalhammer
      @PhilippThalhammer  หลายเดือนก่อน +1

      I did not define it as a set pin, instead I just read it directly in the loop function at the end :)
      It is in line 117 where it says „analogRead(25)“

    • @aymentertag6615
      @aymentertag6615 หลายเดือนก่อน +1

      @PhilippThalhammer it makes sense now thank you.

  • @AdilKhan-jp7hn
    @AdilKhan-jp7hn หลายเดือนก่อน

    Thank you. I have built the circuit and programmed it with Arduino IDE. The dial works but I am unable to make the needle move. The lvgl library I used is 8.3.6 and it shows the error:
    exit status 1
    Compilation error: exit status 1

    • @PhilippThalhammer
      @PhilippThalhammer  หลายเดือนก่อน +1

      Did you rename your asset in Squareline studio? This only works if you use the correct name.
      Maybe it could also be helpful to check out the GitHub repository I linked in the description. I have uploaded the example project there :)

    • @AdilKhan-jp7hn
      @AdilKhan-jp7hn หลายเดือนก่อน

      @@PhilippThalhammer No I did not rename the asset. I downloaded your code from the GitHub and compiled it. It gives me this error:
      exit status 1
      Compilation error: 'lv_draw_buf_t' does not name a type; did you mean 'lv_draw_ctx_t'?
      I am using LVGL library 8.4.0 but have tried all the libraries for example 8.3.0 through 9.1.0 but does not work.

    • @AdilKhan-jp7hn
      @AdilKhan-jp7hn หลายเดือนก่อน

      Here are all the error from compiling:C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino:13:8: error: 'lv_draw_buf_t' does not name a type; did you mean 'lv_draw_ctx_t'?
      static lv_draw_buf_t draw_buf;
      ^~~~~~~~~~~~~
      lv_draw_ctx_t
      C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino:28:82: error: expected constructor, destructor, or type conversion before ';' token
      my_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
      ^
      C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino:28:80: error: ISO C++ forbids declaration of 'my_disp_flush' with no type [-fpermissive]
      my_disp_flush( lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p )
      ^
      C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino: In function 'void setup()':
      C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino:87:29: error: 'draw_buf' was not declared in this scope
      lv_disp_draw_buf_init( &draw_buf, buf, NULL, screenWidth * screenHeight / 10 );
      ^~~~~~~~
      C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino:95:25: error: invalid conversion from 'int (*)(lv_disp_drv_t*, const lv_area_t*, lv_color_t*)' {aka 'int (*)(_lv_disp_drv_t*, const lv_area_t*, lv_color16_t*)'} to 'void (*)(_lv_disp_drv_t*, const lv_area_t*, lv_color_t*)' {aka 'void (*)(_lv_disp_drv_t*, const lv_area_t*, lv_color16_t*)'} [-fpermissive]
      disp_drv.flush_cb = my_disp_flush;
      ^~~~~~~~~~~~~
      C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino:97:25: error: cannot convert 'lv_disp_drv_t*' {aka '_lv_disp_drv_t*'} to 'lv_fs_drv_t*' {aka '_lv_fs_drv_t*'}
      lv_fs_drv_register( &disp_drv );
      ^~~~~~~~~
      In file included from c:\users\adilu\onedrive\documents\arduino\squarelineround\projectfolder\libraries\lvgl\src\draw\lv_img_decoder.h:20,
      from c:\users\adilu\onedrive\documents\arduino\squarelineround\projectfolder\libraries\lvgl\src\draw\lv_draw.h:20,
      from c:\users\adilu\onedrive\documents\arduino\squarelineround\projectfolder\libraries\lvgl\src/hal/lv_hal_disp.h:21,
      from c:\users\adilu\onedrive\documents\arduino\squarelineround\projectfolder\libraries\lvgl\src/hal/lv_hal.h:16,
      from c:\users\adilu\onedrive\documents\arduino\squarelineround\projectfolder\libraries\lvgl\lvgl.h:33,
      from c:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\libraries\lvgl\src/lvgl.h:17,
      from C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino:1:
      c:\users\adilu\onedrive\documents\arduino\squarelineround\projectfolder\libraries\lvgl\src\misc\lv_fs.h:131:39: note: initializing argument 1 of 'void lv_fs_drv_register(lv_fs_drv_t*)'
      void lv_fs_drv_register(lv_fs_drv_t * drv);
      ~~~~~~~~~~~~~~^~~
      C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino:102:15: error: 'lv_fs_drv_t' {aka 'struct _lv_fs_drv_t'} has no member named 'type'
      indev_drv.type = LV_INDEV_TYPE_POINTER;
      ^~~~
      C:\Users\adilu\OneDrive\Documents\Arduino\SquareLineRound\ProjectFolder\ui\ui.ino:103:25: error: invalid conversion from 'void (*)(lv_indev_drv_t*, lv_indev_data_t*)' {aka 'void (*)(_lv_indev_drv_t*, lv_indev_data_t*)'} to 'lv_fs_res_t (*)(_lv_fs_drv_t*, void*, void*, uint32_t, uint32_t*)' {aka 'unsigned char (*)(_lv_fs_drv_t*, void*, void*, unsigned int, unsigned int*)'} [-fpermissive]
      indev_drv.read_cb = my_touchpad_read;
      ^~~~~~~~~~~~~~~~
      exit status 1
      Compilation error: 'lv_draw_buf_t' does not name a type; did you mean 'lv_draw_ctx_t'?

    • @PhilippThalhammer
      @PhilippThalhammer  หลายเดือนก่อน

      Have you set you sketchbook-folder correctly in the Arduino IDE?
      Other than that I am not really sure what the problem seems to be. It looks like the library is not found correctly, and that normally happens when you dont relocate your sketchbook.

    • @AdilKhan-jp7hn
      @AdilKhan-jp7hn หลายเดือนก่อน +1

      @@PhilippThalhammer OK, I will try this again and report to you. Thank you for the suggestion and help.

  • @BDog-qu8vv
    @BDog-qu8vv หลายเดือนก่อน +1

    Does squareline work on raspberry pi 5 ?

    • @PhilippThalhammer
      @PhilippThalhammer  หลายเดือนก่อน +1

      Haven't tried it yet. But I would assume yes, as Squareline Studio does support python (as far as I know) and Raspberry PIs can run python scripts just fine.
      Depending on what you are trying to do, it could be a little overkill to use a PI 5 however 😁
      I just started my own discord-community. I would love to hear what you are making over there :)

    • @BDog-qu8vv
      @BDog-qu8vv หลายเดือนก่อน

      @@PhilippThalhammer I am planning on using a pi 4 but don’t know what format file to use from SLS?(vsc with sdl or which format from SLS I need to pick for it to work) I am creating a GUI which would incorporate sensors that input values into scrollboxes

    • @PhilippThalhammer
      @PhilippThalhammer  หลายเดือนก่อน +1

      The eclipse SDL does support linux (see github.com/lvgl/lv_port_pc_eclipse ). So I guess it would be fine to install rasbian or something similar on your PI and run it there.
      However, thats just a guess. As I said I haven't tried it before 🤔

  • @hilfsbereit1437
    @hilfsbereit1437 หลายเดือนก่อน

    Ich habe eine Frage, woher weiß der Aufruf lv_img_set_angle( ui_Pointer,... ), dass pointer gedreht werden soll und nicht gauge? Gefunden. Leider fehlt der Schritt mit dem Beschriften der image 1 und image2.

    • @PhilippThalhammer
      @PhilippThalhammer  หลายเดือนก่อน +1

      1. Das weiß der Aufruf, weil es oben deklariert wird ;)
      2. Das Beschriften habe ich beim Aufnehmen vergessen, aber ich habe dafür Text eingeblendet um darauf hinzuweisen (siehe 1:49).