Embedded HMI on ESP32-S3 — LVGL 9.5 + board hardware

ESP32-S3 touch HMI with LVGL 9.5 — display bring-up, widgets, motion, and product-ready UI on Waveshare hardware.

Duration
16 weeks
Certificates
3
CO threshold
75%
Price
₹25,000 (one-time access)

Tagline: ESP32-S3 touch HMI with LVGL 9.5 — display bring-up, widgets, motion, and product-ready UI on Waveshare hardware.

Field Value
Course code ESP-LVGL-A
Duration 16 weeks
Credits 5
Compliance NBA-aligned OBE
Publication published
Price INR 25000
DB snapshot 2026-10-08T15:04:30.783Z

Course objective

Create professional touch HMIs on ESP32-S3 with LVGL: display bring-up, widgets, motion, and product-ready UI systems on Waveshare hardware. Graded Device Bridge labs turn UI ideas into working embedded interfaces you can ship. Prerequisite: C + ESP-IDF familiarity (ESP-IDF-A recommended).

Course outcomes (CO1–CO6)

CO Bloom Weight Statement
CO1 understand 17% Bring up Waveshare V2 over USB-CDC, Device Bridge, and UART-proven app_main firmware (READY) with no LCD required.
CO2 apply 16% Drive the ST7789 panel with SPI DMA blit and UART-proven glass tokens without LVGL.
CO3 apply 16% Use CST3530 as an I2C coordinate sensor and print XY tokens on press.
CO4 apply 17% Build official LVGL 8.3 widgets and events with UART event mirrors (label through choice widgets).
CO5 analyze 17% Structure multi-screen HMI with style, layout engines, and text/table/image widgets under UART contracts.
CO6 evaluate 17% Explain DMA/tick/lock internals and integrate onboard IMU plus I2S speaker into a UART-verified capstone HMI.
CO7 analyze 12% Explain port internals, keep the UI responsive (WDT/FPS), and structure multi-file HMI code.
CO8 evaluate 12% Integrate onboard IMU and I2S speaker with NVS persistence and a UART-verified capstone HMI.

Activity totals (live from platform)

Metric Count
Units / chapters 28
Topics 275
Topic quiz activities 1628
MCQ questions 1628
Practice / board labs 2
Evaluated firmware labs 189
Instructional content blocks 1498

Certificates & earning criteria

Certificate CO scope Evaluated lab quota CO attainment Gate
Glass & port CO1–CO4 ≥ 75% ≥ 75% Glass & port summative (Unit 5)
Widgets & visual system CO1–CO6 ≥ 75% ≥ 75% Widgets & visual system EOC (Unit 17)
Product HMI CO1–CO8 ≥ 75% ≥ 75% Product HMI capstone (Unit 28)

Unit syllabus (unit → topics → activities)

Unit 1 — Bring-up — Waveshare V2, USB-CDC, Device Bridge, READY

Unit totals: 7 topics · 44 MCQ questions · 1 practice · 1 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 The core hardware — ESP32-S3 and Waveshare V2 6 0 0 —
2 Memory map and onboard buses 6 0 0 —
3 The console path — native USB-CDC 7 0 0 —
4 The development pipeline — Build, Bridge, and triage 6 0 0 —
5 Lab — first firmware: print READY 6 0 1 —
6 Practice lab — heartbeat TICK lines 7 1 0 —
7 Unit wrap — HAL gift and LVGL preview 6 0 0 —

Unit 2 — Smallest LVGL 9 program

Unit totals: 8 topics · 48 MCQ questions · 1 practice · 1 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 The four software layers of your HMI 6 0 0 —
2 Project headers and FreeRTOS fundamentals 6 0 0 —
3 The application envelope — start, handle, delay 6 0 0 —
4 Render pipeline and UART verification 6 0 0 —
5 Function walkthrough — APIs before the Hello program 6 0 0 —
6 Lab walkthrough — the first label 6 0 0 —
7 Practice — change label text 6 1 0 —
8 Rebuild the label screen and look ahead 6 0 1 —

Unit 3 — Glass: SPI + DMA

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 6 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 What DMA is and why glass needs it 6 0 0 —
2 Glass stack — ST7789, DC, SPI, wiki vs HAL 6 0 0 —
3 Function walkthrough — jupius_panel APIs 6 0 0 —
4 First glass call — panel init 6 0 1 —
5 Pack → blit — how we use DMA 6 0 2 —
6 DMA hello assemble 6 0 1 —
7 Clear/fill + black-screen triage 6 0 1 —
8 Flush bridge + Unit 4 wrap 6 0 1 —

Unit 4 — Touch as a sensor

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 6 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 What touch is and why HMI needs it 6 0 0 —
2 Touch stack — CST3530 @ 0x58 + pins 1/3/4/2 6 0 0 —
3 Function walkthrough — jupius_touch APIs 6 0 0 —
4 I²C probe — TOUCH:OK / FAIL 6 0 1 —
5 INT after reset must be input 6 0 1 —
6 Gate peek + XY while down 6 0 2 —
7 Lift line XY:UP 6 0 1 —
8 Paint + rotation + Unit 5 wrap 6 0 1 —

Unit 5 — First click

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 4 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 What first click is and why HMI needs it 6 0 0 —
2 Tap contract — CLICKED vs press + hit box 6 0 0 —
3 Function walkthrough — button / event / UI APIs 6 0 0 —
4 Hello + OK button 6 0 1 —
5 Click counter on the same button 6 0 1 —
6 One UART line per click 6 0 1 —
7 Hit size + early bg_color 6 0 0 —
8 Certificate 1 wrap — Glass & port SUMM 6 0 1 —

Unit 6 — Binary widgets

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 3 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Binary widgets — sticky CHECKED vs click 6 0 0 —
2 Checkbox vs switch — same event, different tokens 6 0 0 —
3 Function walkthrough — checkbox / switch / state 6 0 0 —
4 Checkbox lab — UI:CB= 6 0 1 —
5 Switch lab — UI:SW= 6 0 1 —
6 Read CHECKED in the callback 6 0 0 —
7 Two controls, two tokens 6 0 1 —
8 Toggle vs button UX + Unit 7 wrap 6 0 0 —

Unit 7 — Slider and bar

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 6 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Range widgets vs binary — what and why 6 0 0 —
2 Slider vs bar — interactive vs firmware-owned 6 0 0 —
3 Function walkthrough — slider / bar / UI:VAL= 6 0 0 —
4 Slider lab — UI:VAL= 6 0 1 —
5 Slider with live label 6 0 1 —
6 Bar set-value + vertical geometry 6 0 2 —
7 Fill a bar from a loop 6 0 1 —
8 Bar RANGE mode + Unit 8 wrap 6 0 1 —

Unit 8 — Arc and spinner

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 6 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Arc gauge — circular range vs slider 6 0 0 —
2 Drag gauge vs loader vs spinner 6 0 0 —
3 Function walkthrough — arc / spinner / scale 6 0 0 —
4 Drag arc — UI:GAUGE= 6 0 1 —
5 Non-clickable arc loader 6 0 1 —
6 Spinner busy + anim params 6 0 2 —
7 Scale + arc on 240×320 6 0 1 —
8 Arc + center label + Unit 9 wrap 6 0 1 —

Unit 9 — Choosing from a set

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 5 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Discrete choice vs continuous range 6 0 0 —
2 Roller vs dropdown vs buttonmatrix 6 0 0 —
3 Function walkthrough — set pickers 6 0 0 —
4 Roller — UI:VAL= 6 0 1 —
5 Dropdown — UI:VAL= 6 0 1 —
6 Buttonmatrix keypad — UI:KEY= 6 0 1 —
7 Roller + key composition 6 0 1 —
8 Dropdown set_dir + Unit 10 wrap 6 0 1 —

Unit 10 — Screens and navigation

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 10 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 One screen, many layouts 6 0 0 —
2 Idle rebuild + Next/Back jobs 6 0 0 —
3 Function walkthrough — screens/nav 6 0 0 —
4 Home → Settings (Next) 6 0 1 —
5 Back navigation round-trip 6 0 1 —
6 Nav wrap + pass roller 6 0 2 —
7 Switch / slider→bar / arc pass 6 0 3 —
8 Dropdown+Back / CB+SW / checkpoint + U11 wrap 6 0 3 —

Unit 11 — Lists, scroll, and chrome

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 6 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Lists vs one-screen nav 6 0 0 —
2 Scroll, nest, and chrome jobs 6 0 0 —
3 Function walkthrough — lists and chrome 6 0 0 —
4 List item click — UI:LIST= 6 0 1 —
5 Scroll container — SCR:scroll 6 0 1 —
6 Tabview — SCR:tab0 / SCR:tab1 6 0 1 —
7 Tileview — SCR:tile 6 0 1 —
8 Menu, window, and list detail 6 0 2 —

Unit 12 — Style, theme, fonts

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 7 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Parts and states on glass 6 0 0 —
2 Local style vs theme jobs 6 0 0 —
3 Function walkthrough — style and theme 6 0 0 —
4 Local style card — SCR:style 6 0 1 —
5 Font swap — UI:THEME= 6 0 1 —
6 Theme toggle — UI:THEME= 6 0 1 —
7 Spangroup — UI:TEXT= 6 0 1 —
8 Compose style+OK / theme+SW / styled list 6 0 3 —

Unit 13 — Style, theme, fonts

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 10 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Manual place vs layout engines 6 0 0 —
2 Flex and Grid jobs on 240×320 6 0 0 —
3 Function walkthrough — Flex and Grid 6 0 0 —
4 Flex COLUMN + grow — SCR:flex / SCR:grow 6 0 2 —
5 Flex ROW + Grid 2×2 — SCR:row / SCR:grid 6 0 2 —
6 Flex fit on V2 — SCR:fit 6 0 1 —
7 Flex + slider / switch 6 0 2 —
8 Grid+OK / Flex+roller / Flex nav 6 0 3 —

Unit 14 — Images

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 7 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why PNG/FS stay off in this seed 6 0 0 —
2 Image and imagebutton jobs on 240×320 6 0 0 —
3 Function walkthrough — image and imagebutton 6 0 0 —
4 RAM image — SCR:image 6 0 1 —
5 Image in Flex — SCR:image 6 0 1 —
6 Imagebutton + states — UI:IBTN= 6 0 2 —
7 Compose: image + OK 6 0 1 —
8 Flex+ibtn / ibtn nav + Unit 15 wrap 6 0 2 —

Unit 15 — Motion

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 6 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why motion needs lv_anim_t 6 0 0 —
2 Motion jobs on 240×320 6 0 0 —
3 Function walkthrough — animation 6 0 0 —
4 Duration + path — SCR:anim 6 0 1 —
5 Fade a label — SCR:anim 6 0 1 —
6 Spinner + SCR:anim stage 6 0 2 —
7 Compose: anim + OK 6 0 1 —
8 Flex + anim wrap → Unit 16 6 0 1 —

Unit 16 — Charts

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 7 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why charts need LV_USE_CHART 6 0 0 —
2 Chart jobs on 240×320 6 0 0 —
3 Function walkthrough — chart 6 0 0 —
4 LINE chart + point count 6 0 2 —
5 Slider feeds the chart 6 0 1 —
6 Style chart parts (+ vs bar) 6 0 1 —
7 Compose: Flex + chart + OK 6 0 2 —
8 Chart stream wrap → Unit 17 6 0 1 —

Unit 17 — Text, table, keyboard, calendar

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 7 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why text needs LV_USE_KEYBOARD 6 0 0 —
2 Text jobs on 240×320 6 0 0 —
3 Function walkthrough — text 6 0 0 —
4 Textarea + keyboard link 6 0 2 —
5 Submit reads textarea (OK) 6 0 1 —
6 Table 3×3 + calendar 6 0 2 —
7 Flex + textarea 6 0 1 —
8 Certificate 2 EOC + Unit 18 wrap 6 0 1 —

Unit 18 — Port internals: DMA, tick, tasks

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 7 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why the port map matters 6 0 0 —
2 Port jobs on the HAL 6 0 0 —
3 Function walkthrough — port 6 0 0 —
4 Port label + handle-before-PORT 6 0 2 —
5 Lock around label 6 0 1 —
6 Main stack + DMA literacy 6 0 1 —
7 Flex + port + OK 6 0 2 —
8 Port rebuild + Unit 19 wrap 6 0 1 —

Unit 19 — Keep the UI alive

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 5 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why return-fast + idle_cb matter 6 0 0 —
2 Alive jobs on the desk 6 0 0 —
3 Function walkthrough — alive 6 0 0 —
4 Idle-safe rebuild (SCR:alive) 6 0 1 —
5 FPS + MEM (+ WDT literacy) 6 0 1 —
6 Fast OK callback (UI:BTN_OK) 6 0 1 —
7 Alive nav (+ main-loop literacy) 6 0 1 —
8 Alive rebuild + Unit 20 wrap 6 0 1 —

Unit 20 — Multi-file UI

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 5 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why main vs ui_*.c split 6 0 0 —
2 Multi-file jobs on the desk 6 0 0 —
3 Function walkthrough — multi-file 6 0 0 —
4 Two-file Mod (main + ui.c) 6 0 1 —
5 Home module (ui_home.c) 6 0 1 —
6 Settings module (+ build contract) 6 0 1 —
7 Four-file nav (home → settings) 6 0 1 —
8 Multifile rebuild + Unit 21 wrap 6 0 1 —

Unit 21 — IMU talks to widgets

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 5 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why six-axis + configure before glass 6 0 0 —
2 IMU jobs on the desk 6 0 0 —
3 Function walkthrough — IMU register→HAL→glass 6 0 0 —
4 Configure / init → IMU:OK 6 0 1 —
5 Human SHOW on glass (idle label) 6 0 1 —
6 Full tilt UI (+ complementary literacy) 6 0 1 —
7 Map ±45° pitch → bar 0..100 6 0 1 —
8 IMU rebuild + FAIL literacy → Unit 22 6 0 1 —

Unit 22 — I2S speaker

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 5 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why I2S for the speaker (vs SPI / I2C) 6 0 0 —
2 Audio jobs on the desk 6 0 0 —
3 Function walkthrough — audio HAL → glass 6 0 0 —
4 jupius_audio_init → AUDIO:OK 6 0 1 —
5 Beep tap UI:BEEP (+ tone vs MP3) 6 0 1 —
6 Slider → set_tone + UI:VAL= 6 0 1 —
7 Arc → UI:GAUGE= 6 0 1 —
8 Audio rebuild + Unit 23 NVS wrap 6 0 1 —

Unit 23 — Persistence + fail screen

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 5 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why persist last SCR: id (RAM dies on reboot) 6 0 0 —
2 NVS jobs on the desk 6 0 0 —
3 Function walkthrough — NVS 6 0 0 —
4 jupius_nvs_init → NVS:OK + SCR:nvs 6 0 1 —
5 load/seed home → NVS:OK + SCR:home 6 0 1 —
6 SCR:fail (+ RAM vs flash literacy) 6 0 1 —
7 Show error → OK → UI:MSG= + SCR:msg 6 0 1 —
8 NVS rebuild + Unit 24 backlight wrap 6 0 1 —

Unit 24 — Board leftovers

Unit totals: 8 topics · 48 MCQ questions · 0 practice · 2 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Why PWM brightness vs GPIO on/off 6 0 0 —
2 Board leftover jobs on the desk 6 0 0 —
3 Function walkthrough — backlight 6 0 0 —
4 Slider → set_percent + BL:PWM= 6 0 1 —
5 PCF85063 RTC awareness (not graded) 6 0 0 —
6 microSD / TF awareness (not graded) 6 0 0 —
7 HAL vs vendor demo / when owned C wins 6 0 0 —
8 BL rebuild + Unit 25 wrap 6 0 1 —

Unit 25 — Builders vs owned C · take HAL home

Unit totals: 9 topics · 30 MCQ questions · 0 practice · 0 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 SquareLine as export tool awareness 6 0 0 —
2 XML/UI builder vs owned C 6 0 0 —
3 What we grade (tokens not designer files) 6 0 0 —
4 MCQ: pick owned C path 6 0 0 —
5 MCQ: when builder helps prototyping 6 0 0 —
6 What you take home (HAL pack) 0 0 0 —
7 ESP-IDF drop-in layout 0 0 0 —
8 First desk build offline 0 0 0 —
9 License and before capstone 0 0 0 —

Unit 26 — Capstone Project 1

Unit totals: 25 topics · 150 MCQ questions · 0 practice · 19 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Pick industry brief 6 0 0 —
2 Line monitor screen map 6 0 0 —
3 Skeleton + splash 6 0 1 —
4 Line home 6 0 1 —
5 Status + KPI 6 0 1 —
6 Alarms list 6 0 1 —
7 Alarm detail 6 0 1 —
8 Trend chart 6 0 1 —
9 I/O + batch 6 0 1 —
10 Maintenance 6 0 1 —
11 Tilt (IMU) 6 0 1 —
12 Horn test 6 0 1 —
13 Config hub 6 0 1 —
14 Operator + about + lock 6 0 1 —
15 Backlight 6 0 1 —
16 Diagnostics 6 0 1 —
17 NVS restore 6 0 1 —
18 Fail + msgbox 6 0 1 —
19 Ops screens in the factory script 6 0 0 —
20 Diagnostics and PORT:OK 6 0 0 —
21 Operator lock and UI:KEY= 6 0 0 —
22 Complete factory script contract 6 0 0 —
23 Cross-nav wiring 6 0 1 —
24 Rebuild checkpoint 6 0 1 —
25 Project 1 factory EOC 6 0 1 —

Unit 27 — Capstone Project 2

Unit totals: 25 topics · 150 MCQ questions · 0 practice · 19 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Brief confirm (bench SKU) 6 0 0 —
2 Bench screen map + widget mandate 6 0 0 —
3 Skeleton + splash 6 0 1 —
4 Bench home (flex hub) 6 0 1 —
5 Arc level meter 6 0 1 —
6 Meter input range 6 0 1 —
7 Scope trace 6 0 1 —
8 Measure tabview 6 0 1 —
9 Presets scroll list 6 0 1 —
10 Preset filter + detail 6 0 1 —
11 Preset options 6 0 1 —
12 Tone control 6 0 1 —
13 Audio path test 6 0 1 —
14 Audio route + peak 6 0 1 —
15 Bench level (IMU) 6 0 1 —
16 Calibration steps + entry 6 0 1 —
17 Cal confirm + setup tab 6 0 1 —
18 User, service, NVS, fail 6 0 1 —
19 Bench factory script design 6 0 0 —
20 Widget composition acceptance 6 0 0 —
21 Audio + cal in acceptance 6 0 0 —
22 Complete bench EOC contract 6 0 0 —
23 Cross-nav wiring 6 0 1 —
24 Rebuild checkpoint 6 0 1 —
25 Project 2 bench EOC 6 0 1 —

Unit 28 — Capstone Project 3

Unit totals: 25 topics · 150 MCQ questions · 0 practice · 19 evaluated labs

# Topic MCQs Practice Evaluated Preview
1 Brief confirm (appliance SKU) 6 0 0 —
2 Panel screen map + widget mandate 6 0 0 —
3 Skeleton + splash 6 0 1 —
4 Home hub (flex) 6 0 1 —
5 Usage energy bar 6 0 1 —
6 Usage chart 6 0 1 —
7 Schedule calendar 6 0 1 —
8 Usage day/week tabview 6 0 1 —
9 Modes menu + tileview 6 0 1 —
10 Mode detail roller 6 0 1 —
11 Mode options matrix 6 0 1 —
12 Orient IMU init 6 0 1 —
13 Orient tilt readout 6 0 1 —
14 Orient cal + confirm 6 0 1 —
15 Chime audio path 6 0 1 —
16 Chime volume + pick 6 0 1 —
17 Chime test + prefs tab 6 0 1 —
18 User, service, NVS, fail 6 0 1 —
19 Appliance factory script design 6 0 0 —
20 Widget composition acceptance 6 0 0 —
21 Chime + orient in acceptance 6 0 0 —
22 Complete appliance EOC contract 6 0 0 —
23 Cross-nav wiring 6 0 1 —
24 Rebuild checkpoint 6 0 1 —
25 Product HMI capstone EOC 6 0 1 —

Counts are from the live course catalog. MCQs = questions in topic checkpoint quizzes. Practice = formative run-only or SQL practice lane. Evaluated = submit-graded labs that count toward progress and certificates.

← All paid courses · LLM site guide