High-performance ESP-IDF driver for FLIR Lepton 3.5 thermal imaging cameras.
- ESP32-Lepton
- Full support for Lepton 3.5 (160x120 resolution)
- VoSPI (Video over SPI) high-speed frame capture
- CCI (Command & Control Interface) via I2C
- AGC (Automatic Gain Control) support
- FFC (Flat Field Correction) control
- Radiometry support (temperature measurement)
- Multiple color palettes (Iron, Rainbow, Whitehot, Blackhot, Amber, Arctic, Lava)
| Camera Model | Resolution | Status |
|---|---|---|
| Lepton 3.0 | 160x120 | |
| Lepton 3.5 | 160x120 | ✅ Tested |
| Lepton 2.x | 80x60 |
Tested ESP32 Platforms:
- ESP32-S3 (Recommended)
- ESP32 (Should work, not extensively tested)
- ESP-IDF: v5.1 or newer
- Hardware:
- ESP32 or ESP32-S3 module
- FLIR Lepton 3.x camera module
- SPI interface (3-wire or 4-wire)
- I2C interface for CCI
- Adequate power supply (≥150mA @ 3.3V for Lepton)
Add to your main/idf_component.yml:
dependencies:
esp32-lepton:
git: https://github.com/Kampi/ESP32-Lepton.git- Clone into your project's
componentsdirectory:
cd your_project/components
git clone https://github.com/Kampi/ESP32-Lepton.gitSee CCI API Status.
# Ubuntu/Debian
sudo apt-get install asciidoctor ruby-asciidoctor-pdf
# macOS
brew install asciidoctor
# Or via Ruby gems
gem install asciidoctor asciidoctor-pdfThe documentation is organized into separate modules:
- index.adoc - Main overview and getting started guide
- lepton.adoc - Main driver API documentation
- lepton_capture.adoc - Frame capture task implementation
- lepton_cci.adoc - High-level CCI commands
- cci.adoc - Low-level CCI protocol implementation
- vospi.adoc - VoSPI (Video over SPI) interface
The documentation uses AsciiDoc format, which provides:
- Rich formatting capabilities
- Code syntax highlighting
- Cross-references between documents
- Professional PDF output
- Easy-to-read source format
- Use clear, concise language
- Include code examples for all API functions
- Add usage examples for complex features
- Document error conditions and return values
- Cross-reference related modules using
link:module.html[Module Name]
cd docs
asciidoctor index.adoc -o index.html
asciidoctor lepton.adoc -o lepton.html
asciidoctor lepton_capture.adoc -o lepton_capture.html
asciidoctor lepton_cci.adoc -o lepton_cci.html
asciidoctor cci.adoc -o cci.html
asciidoctor vospi.adoc -o vospi.htmlcd docs
asciidoctor-pdf index.adoc -o index.pdf
asciidoctor-pdf lepton.adoc -o lepton.pdf
asciidoctor-pdf lepton_capture.adoc -o lepton_capture.pdf
asciidoctor-pdf lepton_cci.adoc -o lepton_cci.pdf
asciidoctor-pdf cci.adoc -o cci.pdf
asciidoctor-pdf vospi.adoc -o vospi.pdfcd docs
for adoc in *.adoc; do
asciidoctor "$adoc" -o "${adoc%.adoc}.html"
asciidoctor-pdf "$adoc" -o "${adoc%.adoc}.pdf"
doneThe documentation is automatically built and deployed via GitHub Actions:
- Trigger: Push to
main/masterbranch or changes indocs/directory - Output: HTML and PDF versions
- Artifacts: Uploaded as GitHub Actions artifacts
- Releases: Nightly documentation releases with tarball and individual PDFs
- Artifacts: Download from GitHub Actions run
- Releases: Check the "nightly" pre-release for latest documentation
- Tarball:
ESP32-Lepton-Docs-nightly.tar.gzcontains all HTML files - Individual PDFs: Available in releases (e.g.,
lepton-nightly.pdf)
Core driver interface with initialization, configuration, and high-level control functions. This is the main entry point for users of the component.
Describes the FreeRTOS task that continuously captures thermal frames from the sensor. Includes VSync interrupt handling and frame buffer management.
High-level CCI commands for sensor configuration (AGC, emissivity, ROI, telemetry, etc.). Wraps low-level CCI functions with device state management.
Low-level I2C protocol implementation for the Lepton CCI interface. Handles command execution, register access, and status polling.
SPI-based video interface for high-speed thermal data acquisition. Implements packet synchronization, frame assembly, and DMA transfers.
Configure via idf.py menuconfig:
Component config → ESP32-LeptonBuilt-in palettes for thermal visualization:
| Palette | Description | Use Case |
|---|---|---|
| Iron | Black → Red → Yellow → White | General thermal imaging |
| Rainbow | Full spectrum blue → cyan → green → yellow → red | High contrast visualization |
| Whitehot | Black → Gray → White (cold to hot) | Standard grayscale imaging |
| Blackhot | White → Gray → Black (cold to hot) | Inverted grayscale imaging |
| Amber | Black → Brown → Orange → Yellow → White | Night vision / security |
| Arctic | Dark blue → Cyan → White | Cold-scene visualization |
| Lava | Black → Purple → Red → Orange → Yellow | Volcanic / high-temp imaging |
Typical Frame Rates:
- Lepton 3.5: ~8.6 Hz (native)
- ESP32-S3 @ 240 MHz: ~9 Hz capture + RGB conversion
See the examples/ directory:
- basic_init: Basic initialization of the Lepton camera
- basic_capture: Basic capture example
This project is licensed under the GNU General Public License v3.0.
See LICENSE for full text.
Daniel Kampert
📧 DanielKampert@kampis-elektroecke.de
🌐 www.kampis-elektroecke.de
Contributions Welcome! Please open issues or pull requests on GitHub.