Skip to the content
2 layers15.8 × 20.3 mmC6WiFI, the printed circuit board in 3D

This is an ESP32 demo project showcasing LVGL v7 with support for several display controllers and touch controllers. The demo application is the lvdemowidgets project from the lvexamples repository.

Size
15.8 × 20.3 mm
Copper layers
2
Thickness
1.6 mm
Parts
26
Nets
39
Pads
131
Tracks, vias
83, 0
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
7 Jun 2025
Updated
2 Sep 2025

Overview

C6WiFI is an open-source printed circuit board by AngeloDuenas, from the AngeloDuenas/SmartwatchProject repository on GitHub, published under the MIT licence. It is a 2-layer board of 15.8 × 20.3 mm with 26 parts on 39 nets, routed with 83 tracks and 0 vias.

It is built around the ESP32-C6, ZL6201A33S3 and SX2M32.768KM20F30TNN. Its parts include 11 capacitors, 6 connectors, 2 crystals, 1 IC and 1 diode. It belongs with the ESP32 and RISC-V boards of this library.

Main components

3

README

README.md

LVGL project for ESP32

This is an ESP32 demo project showcasing LVGL v7 with support for several display controllers and touch controllers. The demo application is the lv_demo_widgets project from the lv_examples repository.

  • Version of ESP-IDF required 4.2. NOTE: We're trying to make this repo backwards compatible, usage of idf.py is encouraged.
  • Version of LVGL used: 7.9.
  • Version of lv_examples used: 7.9.
Table of content

Example demo for TFT displays:

Example GUI_DEMO with ESP32 using LVGL

Monochrome support:

Example_monochrome demo with ESP32 using LVGL

Display and touch controllers

The display and touch (indev) controllers are now into it's own repository, you can find it here. To report any issue or add new display or touch (indev) drivers you can do so in the lvgl_esp32_drivers repo.

Get started

Prerequisites

  • ESP-IDF Framework.

Note

This project tries to be compatible with both the ESP-IDF v3.x and v4.0, but using v4.0 is recommended. Instructions assume you are using the v4.x toolchain, otherwise use the make commands, e.g. instead of running idf.py menuconfig, run make menuconfig.

Build and run the demo.

  1. Clone this project by git clone --recurse-submodules https://github.com/lvgl/lv_port_esp32.git, this will pull this repo and its submodules.

  2. Get into the created lv_port_esp32 directory.

  3. Run idf.py menuconfig

  4. Configure LVGL in Components config->LVGL Configuration. For monochrome displays use the mono theme and we suggest enabling the unscii 8 font.

  5. Configure your display and/or touch controllers in Components config->LVGL TFT Display Configuration and Components config->LVGL TOUCH Configuration.

  6. Store your project configuration.

  7. Build the project with idf.py build

  8. If the build don't throw any errors, flash the demo with idf.py -p (YOUR SERIAL PORT) flash (with make this is just make flash - in 3.x PORT is configured in menuconfig)

Use LVGL in your ESP-IDF project

LVGL now includes a Kconfig file which is used to configure most of the LVGL configuration options via menuconfig, so it's not necessary to use a custom lv_conf.h file.

It is recommended to add LVGL as a submodule in your IDF project's git repo.

From your project's root directory:

  1. Create a directory named components (if you don't have one already) with mkdir -p components.
  2. Clone the lvgl repository inside the components directory with git submodule add https://github.com/lvgl/lvgl.git components/lvgl
  3. Run idf.py menuconfig, go to Component config then LVGL configuration to configure LVGL.

Use lvgl_esp32_drivers in your project

It is recommended to add lvgl_esp32_drivers as a submodule in your IDF project's git repo.

From your project's root directory:

  1. Create a directory named components (if you don't have one already) with mkdir -p components.
  2. Clone the lvgl_esp32_drivers repository inside the components directory with git submodule add https://github.com/lvgl/lvgl_esp32_drivers.git components/lvgl_esp32_drivers
  3. Run idf.py menuconfig, go to Component config then LVGL TFT configuration and LVGL TFT Display configuration to configure lvgl_esp32_drivers.

Platformio support

Using the lv_platformio project add the following lines to platformio.ini file:

text
[env:esp32]
platform = espressif32
framework = espidf
board = esp-wrover-kit

Change the default environment to default_envs = esp32.

Modify the main.c like this:

c
#include "lvgl.h"

// #include "driver.h"


#include "demo.h"

int app_main(void)
{
    lv_init();

    /* Initialize your hardware. */
    
    /* hw_init(); */

    demo_create();

    /* Create the UI or start a task for it.
     * In the end, don't forget to call `lv_task_handler` in a loop. */

    /* hw_loop(); */

    return 0;
}

For more information see: platformio with espidf framework compability.

ESP32-S2 Support

Support for ESP32-S2 variant is Work In Progress. Smaller displays (e.g. 320x240) work fine, but larger ones need testing.

Background

ESP32-S2 has less on-chip SRAM than its predecessor ESP32 (520kB vs. 320kB). This causes problems with memory allocation with large LVGL display buffers as they don't fit into the on-chip memory and external PSRAM is not accessible by DMA.

Moreover, static allocation to external PSRAM is not yet supported (see GitHub issue).

At this momement, the buffers are dynamicaly allocated with DMA capabilty and memory allocator handles the rest.

Parts

26
QtyValueFootprintReferences
51ufCapacitor_SMD:C_0402_1005MetricC1, C2, C7, C8, C10
222pFCapacitor_SMD:C_0402_1005MetricC4, C6
222pfCapacitor_SMD:C_0402_1005MetricC3, C5
23.3pFCapacitor_SMD:C_0201_0603MetricC12, C13
2Conn_01x04Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ4, J6
2Conn_01x08Connector_PinHeader_1.27mm:PinHeader_1x08_P1.27mm_VerticalJ2, J3
2TestPointTestPoint:TestPoint_Pad_D1.5mmTP1, TP2
12.2nHInductor_SMD:L_0201_0603MetricL1
12016-4P 40MHzCrystal:Crystal_SMD_2016-4Pin_2.0x1.6mmY1
1Conn_01x04Connector_PinHeader_1.27mm:PinHeader_1x04_P1.27mm_VerticalJ5
1Conn_01x06Connector_PinHeader_1.27mm:PinHeader_1x06_P1.27mm_VerticalJ1
1ESP32-C6Package_DFN_QFN:QFN-40-1EP_5x5mm_P0.4mm_EP3.6x3.6mmMCU1
1SOD-523 GeneralDiode_SMD:D_SOD-523D1
1SX2M32.768KM20F30TNNCrystal:Crystal_SMD_2520-4Pin_2.5x2.0mmY2
1WIFI_ANTRF_Antenna:Texas_SWRA117D_2.4GHz_LeftANT1
1ZL6201A33S3Package_TO_SOT_SMD:SOT-23U2

More from AngeloDuenas/SmartwatchProject

1
  • 2 layersSmartwatchProject, the printed circuit board in 3D

    SmartwatchProject

    AngeloDuenas/SmartwatchProject

    This is an ESP32 demo project showcasing LVGL v7 with support for several display controllers and touch controllers. The demo application is the lvdemowidgets project from the lvexamples repository.

    7 partsMIT

Similar boards

  • 4 layers15 × 29.2 mmFuimini V2, the printed circuit board in 3D

    Fuimini V2

    Zipra1/Fuimini-V2

    nRF flavoured SlimeVR-compatible trackers. Now with higher volume production in mind!

    62 parts3CERN-OHL-S-2.0
  • 4 layers85.6 × 54 mmMinUS, the printed circuit board in 3D

    MinUS

    kelu124/minus

    Minimal ultrasound platform

    126 parts3
  • 2 layers17.8 × 30.5 mmPICO Z, the printed circuit board in 3D

    PICO Z

    MAHESH-THILAK-K/ADDITIONAL-PROJECT

    41 parts1Apache-2.0
  • 6 layers84 × 20.9 mmSYNC VT, the printed circuit board in 3D

    SYNC VT

    SunnyYoshimitsu/CelestiCall

    An attempt at making a somewhat modern smartphone with many functions.

    115 parts1
  • 2 layers100 × 55 mmWellD, the printed circuit board in 3D

    WellD

    kinggh0stee/WellD

    ESP32-C6 Zigbee well monitor — reads a 4–20 mA pressure transducer and DS18B20, reports water level, temperature, and battery to Zigbee2MQTT with OTA update support

    122 parts2MIT
  • 2 layers27 × 43.4 mmDevboard, the printed circuit board in 3D

    Devboard

    ImShyMike/C6dev

    A tiny and low power dev board for the ESP32-C6

    53 parts1MIT
  • 4 layers35.5 × 52.5 mmLedify, the printed circuit board in 3D

    Ledify

    notaroomba/ledify

    A super small addressable LED controller with USB-C PD up to 100W, a switchable 5V/12V output and Bluetooth!

    80 parts1
  • 6 layers30 × 50 mmESP32-C6 Controller, the printed circuit board in 3D

    ESP32-C6 Controller

    j-alloy/ESP-C6_Custom

    To develop a Custom ESP32-C6 for study

    54 parts

Questions

How big is the C6WiFI PCB?

It measures 15.8 × 20.3 mm and has 2 copper layers, 1.6 mm thick.

What parts does the C6WiFI use?

26 parts, built around the ESP32-C6, ZL6201A33S3 and SX2M32.768KM20F30TNN. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the C6WiFI KiCad files?

From the AngeloDuenas/SmartwatchProject repository on GitHub, at the commit this page was made from: the board is CustomWiFi/CustomWiFi - Copy/C6WiFI.kicad_pcb and its schematic CustomWiFi - Copy/CustomWiFi - Copy/C6WiFI.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the C6WiFI design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).