ESP32 Guide

ESP32 is Espressif’s family of low-cost, low-power system-on-chip devices, commonly used for IoT projects, smart homes, and wearable devices. Wi-Fi and Bluetooth support depend on the model.

This page collects the English versions of my ESP32 development articles. It is a set of project notes, not a complete course. Check each article’s hardware, framework and version before following it.

Choose a goal

  1. Connect without Wi-Fi: start with PPPoS and a 4G modem, then try remote JPG display. You need an ESP32-C3, a PPP-capable modem and stable power. Verify IP assignment and DNS before adding application traffic.
  2. Display pictures on a monochrome screen: compare dithering in your browser, then follow the ESP32 / ST7305 implementation. Basic C/C++ and display-driver knowledge help turn the experiment into hardware output.
  3. Build a variable-font GUI: start with FreeType in a PC simulator, continue with the ESP32 port, then font-weight animation. Check LVGL versions, display models and font storage before copying APIs.
  4. Add HomeKit control: begin with servo light control and environment setup. Verify local control before provisioning and pairing.

When debugging, separate hardware and power issues from framework configuration and application logic. Different routes require different hardware; you do not need every board to get started.

Article index

GUI development: LVGL and FreeType variable fonts

This series starts with a simulator, then ports font rendering and dynamic font weights to a physical display.

PartArticleTopics
1Variable fonts in LVGLFreeType basics and dynamic font weight in a Windows simulator
2Porting LVGL and FreeType to ESP32PlatformIO setup and TFT_eSPI display drivers
3Animating font weightsLoading fonts from an SD card and animating weight changes

Networking and communication

ArticleTopics
Displaying a remote JPG on ESP32HTTP, AsyncTCP chunks, and Content-Length parsing
ESP32 and a 4G modem using PPPoSUsing AT commands for setup, then carrying Socket traffic through PPP
Streaming a PC screen to ESP32Python frame capture, a custom TCP protocol, and DMA rendering
Remote desktop streaming on M5Stack CardputerPSRAM upgrades and H.264 streaming

Smart home: HomeKit

ArticleTopics
Controlling lights with an ESP32 and a servoA non-invasive modification and servo PWM control
Setting up ESP32 HomeKit development in WSLBuilding and flashing esp-homekit-demo
Combining HomeKit and servo controlBringing the pieces together for Siri control
Adding a Xiaomi Yeelight monitor light bar to HomeKitTeardown and controller replacement

Development notes and fixes

ArticleTopics
ESP32 development tipsAsync HTTP, light-sleep PWM, GIF playback, and SPIFFS OTA
ESP-IDF embed_txtfiles notesEmbedding resources, certificates, and HTML
SPI LCD versus parallel LCDMeasured results for 60 MHz SPI and an 8-bit parallel interface

Image processing: Ditherpunk

ArticleTopics
Ditherpunk, part 1Gamma correction, Bayer matrices, error diffusion, and live JavaScript demos
Ditherpunk, part 2: ESP32 and a monochrome displayAn ST7305 1.54-inch display driver and dithering on hardware

External resources

Contact and feedback

For questions or suggestions, email support@chaosgoo.com, or find me on GitHub.

This index is updated as new ESP32 articles are published.