Skip to main content

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.