Getting Started
Flibbert lets you write code for ESP32 microcontrollers using multiple programming languages. Write your code in the browser, and it automatically compiles and runs on your connected ESP32 devices.
What You Can Do
- Write code in your preferred programming language
- Test instantly on real ESP32 hardware
- Manage device fleets - deploy to multiple ESP32s simultaneously
- Update remotely - push code changes to all connected devices
- Develop locally - use VS Code with devcontainers for your favorite language
- Control hardware like LEDs, sensors, and motors
- Connect to internet for IoT applications
Supported Hardware
- ESP32 (all variants)
- ESP32-S3 (with and without PSRAM)
- ESP32-C3
- ESP32-C6
- ESP32-P4
Programming Languages
You can write applications in:
- C/C++ - Traditional embedded programming
- Rust - Modern systems programming
- AssemblyScript - TypeScript-like syntax
- TinyGo - Go for embedded systems
- Zig - Modern alternative to C
- JavaScript - Familiar web language
- WebAssembly Text - Direct WebAssembly programming
Hardware Features
Your code can control ESP32 features:
- GPIO pins for digital input/output
- I2S for audio processing
- SPI for sensor communication
- HTTP requests for web connectivity
- File system for data storage
- Multiple tasks for concurrent programming
Example Application
Here's a simple GPIO blink example in C:
#include <stdint.h>
#include "env.h"
int main() {
// Configure GPIO pin 2 as output (mode 2)
gpio_set_direction(2, 2);
// Blink LED forever
while (1) {
gpio_set_level(2, 1); // Turn on LED
delay(1000); // Wait 1 second
gpio_set_level(2, 0); // Turn off LED
delay(1000); // Wait 1 second
}
return 0;
}
The same functionality in Rust:
#![no_std]
#![no_main]
mod env;
mod gpio;
use env::{delay};
use gpio::{GpioMode, gpio_set_direction, gpio_set_level};
use core::panic::PanicInfo;
#[no_mangle]
fn main() {
// Configure GPIO pin 2 as output (mode 1)
gpio_set_direction(2, GpioMode::Output);
// Blink LED forever
loop {
gpio_set_level(2, 1); // Turn on LED
delay(1000); // Wait 1 second
gpio_set_level(2, 0); // Turn off LED
delay(1000); // Wait 1 second
}
}
#[panic_handler]
fn panic(_info: &PanicInfo) -> ! {
loop {}
}
Requirements
To flash the ESP32 firmware, you need:
- USB-to-serial driver for your ESP32 board
- Web browser for the dashboard interface
- Internet connection for compilation and deployment
See: Establish Serial Connection with ESP32 for driver installation.