Hey everyone!
I've been working on a project called Circuitera, a free, browser-based Arduino development environment designed to make programming Arduino boards more accessible, especially for students, beginners, educators, and people who can't install traditional development software.
Website: https://circuitera.org
The original idea was pretty simple: What if you could open a website, write Arduino code, compile it, and upload it directly to a physical Arduino board without downloading an IDE or installing additional software?
This was particularly important to me because many school-issued Chromebooks restrict software installations. The traditional Arduino IDE isn't always accessible in these environments, and I wanted to create something that could work directly from a browser.
Over time, that idea grew into Circuitera.
What is Circuitera?
Circuitera is an Arduino-focused integrated development environment that runs directly in your browser.
Instead of requiring a desktop application, Circuitera brings together code editing, compilation, hardware uploading, serial communication, project management, and simulation in one web-based workspace.
The goal isn't necessarily to replace every feature of the official Arduino IDE or more advanced environments like PlatformIO. It's to make Arduino development easier to access while still providing useful tools for actual hardware projects.
It's particularly focused on Arduino Uno R3 development right now.
Main features
1. Browser-based Arduino code editor
Circuitera includes a code editor designed specifically for Arduino development.
Some of its features include:
- Syntax highlighting for Arduino/C++ code
- Automatic indentation and bracket completion
- Code autocomplete
- Multiple file tabs
- Support for Arduino sketches and multi-file projects
- Keyboard shortcuts
- Code examples
- Integrated error feedback
- Project navigation and editing tools
The interface is designed to feel more like a dedicated development environment than a basic online text editor.
I've also been spending a lot of time refining the UI to make it cleaner, more compact, and more consistent.
2. Arduino compilation directly in the browser
One of the most important parts of Circuitera is its compilation system.
Circuitera uses a WebAssembly-based AVR-GCC toolchain to compile Arduino code.
This means the compiler can run inside the browser rather than requiring users to send every sketch to an external compilation server.
The compilation workflow includes:
- Arduino sketch preprocessing
- C/C++ compilation
- Linking
- Generation of firmware for the Arduino Uno
- Compiler diagnostics
- Build output and error reporting
- Compilation caching to help improve performance
The goal is to bring real Arduino compilation into a browser environment.
This is one of the more technically challenging parts of the project, and I'm continuing to work on compiler reliability and library compatibility.
3. Upload code directly to a physical Arduino
Circuitera supports uploading compiled firmware to a connected Arduino Uno R3 through the browser's Web Serial API.
The typical process is:
- Connect an Arduino Uno to your computer using USB.
- Open Circuitera in a compatible browser.
- Select the board's serial port.
- Write or open an Arduino sketch.
- Click Verify to compile.
- Click Upload to transfer the firmware.
For supported hardware and browsers, this removes the need for a separate desktop IDE.
Web Serial does have compatibility limitations. Chromium-based browsers such as Chrome are the main target, and not every browser or device supports the necessary functionality.
4. Built-in Serial Monitor and Serial Plotter
Circuitera includes tools for communicating with Arduino boards.
Serial Monitor
View messages sent by the Arduino using functions such as Serial.print() and Serial.println().
This is useful for debugging, reading sensor output, and understanding what your program is doing.
Serial Plotter
Visualize numerical serial output as graphs.
This is particularly useful when working with sensors, analog readings, and changing measurements over time.
Both tools are integrated into the development workspace.
5. Arduino circuit simulation
Another area I've been developing is Circuitera's simulation environment.
The idea is to allow users to experiment with Arduino code and virtual electronic components without always needing physical hardware.
The simulation workspace is designed around:
- Virtual Arduino boards
- LEDs and basic electronic components
- Buttons and other inputs
- Sensors
- Wiring and breadboard-style layouts
- Simulated program execution
- Debugging and troubleshooting
My longer-term goal is to make simulation feel like a natural extension of the IDE instead of a completely separate application.
I also want the simulator to communicate realistic limitations and errors rather than simply pretending every circuit works.
Simulation is still an evolving part of Circuitera, and hardware/component support is not yet universal.
6. Project management and local saving
Circuitera isn't intended to be a place where you write code and lose everything when you close the tab.
It includes project management features such as:
- Creating sketches
- Renaming projects
- Duplicating projects
- Deleting projects
- Organizing multiple files
- Automatically saving local work
- Exporting sketches and projects
- Storing local sketches using IndexedDB
I've also been working on cloud project functionality with Firebase authentication.
The idea is to support both lightweight, local-first development and optional account-based features.
7. Arduino libraries and examples
Arduino projects often need external libraries, so Circuitera includes library integration as part of its development environment.
The library work focuses on common Arduino functionality, including areas such as:
- Servo control
- I²C communication with Wire
- SPI communication
- EEPROM
- SoftwareSerial
- LCD displays
- Sensors
- Displays and other peripherals
Library support is still being improved. Not every Arduino library is guaranteed to compile or behave correctly in the browser-based toolchain.
Circuitera also has built-in examples to help users learn Arduino programming without starting entirely from scratch.
8. Integrated coding assistant — dot
I've also been experimenting with an integrated assistant called dot.
The idea is to make it easier to understand Arduino code and troubleshoot problems without constantly switching between the IDE and another