Welcome

RGX Emulator is a browser-based simulator for the RGX Advanced Kit — an Arduino Nano-based educational controller board designed for students aged 12–17. It is part of the RGX product line by RoboGeeX.

With RGX Emulator you can build virtual circuits, wire components, write Arduino C programs using blocks or code, and simulate everything in real time — all from your browser, with no installation required.

When you are ready, you can compile and upload your sketches to a real Arduino board directly from the browser using Web Serial or WebUSB.

Getting Started

  1. Visit rgxemu.robogeex.com in a modern browser (Chrome, Edge, or Chromium-based recommended).
  2. On your first visit, the app caches all resources for offline use. After that, it works fully offline.
  3. You can install it as a PWA (Progressive Web App) for a native app-like experience — look for the install prompt in your browser's address bar.
Tip: Once loaded, the emulator works without an internet connection. Only Verify and Upload require connectivity.

Interface Overview

RGX Emulator New Save Load Undo Redo Export Run Stop Circuit Code MAIN TOOLBAR (both modes) COMPONENTS RGX Board LED Red LED Green Push Button ... COMPONENT LIB RGX A01 LED CANVAS PROPERTIES Select a component to view details PROPERTIES SERIAL CONSOLE RGX Emulator ready! Try: Wire an LED -> Click Run SERIAL / CONSOLE

The interface is divided into several areas:

Toolbar (top bar)

The main toolbar contains:

Code Toolbar (inside Code mode)

When you switch to Code mode, a secondary toolbar appears with:

Component Library (left sidebar)

A scrollable panel listing all available components organized by category: RGX Board, LED Modules, Switches, Sensors, Monitors, Communication, and Actuators. Drag or double-click/tap a component to add it to the canvas.

Canvas (center area)

The main drag-and-drop workspace where you place components and wire them together. Supports pan and zoom for working with larger circuits.

Properties Panel (right sidebar)

Displays properties and settings for the currently selected component. Allows you to configure values, view pin assignments, and adjust component-specific parameters.

Code Area (Blocks + Code tabs)

Two tabs at the bottom-right: Blocks (Blockly visual editor) and Code (Arduino C text editor). You can switch between them freely.

Serial Monitor & Console (bottom panel)

Shows Serial.print / Serial.println output during simulation. The Console tab displays system messages, errors, and compilation feedback.

Building Circuits

Adding the RGX Board

Drag the RGX Board from the component library onto the canvas, or double-click (tap on mobile) to place it automatically. Every circuit needs exactly one RGX Board.

Adding Modules

Drag any module (LEDs, switches, sensors, actuators, etc.) from the library onto the canvas. You can also double-click or tap a library item to add it at a default position.

Wiring

Step 1: Click a port RGX P1 👆 Step 2: Click module connector A01 LED 👆 Done! Wire connected RGX

Click a port on the RGX Board, then click the connector on a module to create a wire. You can also start from the module connector and click the board port -- wiring is bidirectional.

Wire Routing

Deleting Components

Select a component on the canvas, then press Delete or use the right-click context menu to remove it along with its wires.

Pan and Zoom

Component Library

RGX Board

Controller

Arduino Nano-based controller with 14 RJ11 ports. This is the main board that all modules connect to.

LED Modules (A01)

Output

Single-color LED modules. Connect only to Y-type (Yellow wire) ports.

A01 Red LED
Red LED module, controlled via digitalWrite or analogWrite (PWM).
A01 Green LED
Green LED module with identical pinout to Red.
A01 Blue LED
Blue LED module with identical pinout.
A01 Yellow LED
Yellow LED module with identical pinout.

Switches

Input
C01.1 Push Button
Momentary push button. Returns HIGH when pressed, LOW when released.
C01.2 Latching Switch
Toggle-style latching switch. Stays in its set position.
C02.1 Toggle Switch
On/off toggle switch.
C07 Parallel Connector
Allows parallel connection of multiple modules on a single port.

Sensors

Input
S01.1 Potentiometer
Analog rotary knob. Outputs 0–1023 via analogRead.
S01.2 LDR
Light Dependent Resistor. Analog value varies with light intensity.
S06.1 DHT11
Temperature and humidity sensor. Digital output.
S08 Water Level
Analog water level detection sensor.
S04 Ultrasonic Distance
HC-SR04 style ultrasonic sensor. Measures distance in centimeters.
S10 Rain Sensor
Analog rain detection sensor.
S09 Soil Moisture
Analog soil moisture detection sensor.
S02 Line Tracker
Infrared line following sensor. Digital output (HIGH/LOW).
S03.2 Sound Sensor
Detects sound levels. Analog output.
S05 PIR Motion
Passive Infrared motion detection. Digital output.
S03.1 Flame Sensor
Detects fire/flame presence. Digital or analog output.

Monitors

Output
M01 LCD 1602
16x2 character LCD with I2C interface. Connects to port P4 (SDA/SCL).

Communication

Input
S07 IR Receiver
Infrared receiver for remote control signals.

Actuators

Output
A02 Buzzer
Piezo buzzer for generating tones via tone() or digitalWrite.
C05 MOSFET
MOSFET power switch for driving higher-current loads.
SG90 Servo
Micro servo motor. Controllable from 0 to 180 degrees.
A04 Motor Driver
L298N-style dual H-bridge motor driver for DC motors.
DC Motor
Standard DC motor. Requires a motor driver (A04) to operate.

Programming

Blocks Tab (Blockly Visual Editor)

The Blocks tab provides a Blockly-based visual programming environment. Drag and snap blocks together to build your Arduino program without writing code. Categories include Logic, Loops, Math, Text, Variables, Functions, and Arduino-specific blocks for I/O, Serial, and more.

Code Tab (Arduino C Text Editor)

The Code tab features a professional code editor (powered by Ace Editor) with:

When you switch from the Blocks tab to the Code tab, the code is automatically generated from your blocks. You can also write code manually or load .ino files.

Warning: Switching from Code back to Blocks will regenerate code from the blocks, discarding any manual edits. A confirmation dialog will warn you before this happens.

File Menu

Examples

Eight pre-wired example projects, each loading a complete circuit with wiring, code, and blocks:

Blink
Classic blinking LED sketch.
Button + LED
Read a push button to control an LED.
PWM Fade
Fade an LED in and out using analogWrite.
Buzzer
Generate tones with a piezo buzzer.
Servo
Control a servo motor position.
Analog Read
Read analog sensor values and print to Serial.
Distance
Measure distance with an ultrasonic sensor.
LCD 1602
Display text on an I2C LCD screen.

Load

Save

Board

Running Simulations

Click the Run button in the toolbar to start the simulation, and Stop to halt it.

How it works

Verify & Upload

Your Code void setup(){ pinMode(13, OUTPUT); } Cloud Compile arduino-cli Google Cloud Run HEX Binary 936 bytes :10000000... :10001000... Flash via USB Web Serial (desktop) WebUSB (Android) STK500v1 protocol 1. Write 2. Compile 3. Binary 4. Upload

Verify

Compiles your sketch on a cloud server and reports success or errors, along with the binary size. Requires an internet connection.

Upload

Compiles your sketch on the cloud server, then flashes the resulting binary to a real Arduino board connected via USB.

PlatformAPINotes
Windows / Mac / Linux Web Serial API Works with any USB chip, no driver issues.
Android WebUSB API Requires an OTG cable and Chrome browser.
iOS Not supported Apple does not implement WebUSB or Web Serial.

Auto-Detection

The uploader automatically detects the board by trying multiple baud rates:

It also reads the chip signature to confirm the target device.

Supported USB Chips

CH340 / CH340G, CP2102, FTDI FT232R / FT232X

Board Override

If auto-detection is not working correctly, select Arduino Uno under File > Board to skip auto-detect and target the Uno directly.

Hardware Serial Monitor

The serial monitor panel has two modes, selectable from the dropdown at the top of the panel:

Using Hardware Mode

  1. Select Hardware from the serial mode dropdown.
  2. Pick a baud rate (9600, 115200, 57600, 19200, or 4800).
  3. Click Connect and select your Arduino from the browser dialog.
  4. Incoming serial data from the Arduino will appear in the monitor.
  5. Type in the input box and press Enter to send data to the Arduino.

Platform Support

PlatformAPI UsedNotes
Windows / Mac / Linux Web Serial API Same API used for uploading on desktop.
Android WebUSB API Uses the same OTG transport as Upload (via createTransport()).
iOS Not supported Apple does not implement WebUSB or Web Serial.

Important Notes

Offline Mode

Works Offline Circuit building & wiring Blockly + code editor Simulation, save/load, examples 100% cached by service worker Needs Internet Verify (cloud compile) Upload (compile + flash) Cloud server required

After your first visit, a service worker caches the entire application for offline use.

Works offline

Requires internet

The app auto-updates when you are online. Scripts use a network-first caching strategy, so you always get the latest version when connected.

RGX Port Map

The RGX Board has 14 RJ11 ports. Each wire color maps to a specific Arduino pin:

Port Yellow Pin Red Pin Black Pin Type
P1D13Y
P2A1A2YR
P3A3R
P4A4 (SDA)A5 (SCL)I2C
P5A6R
P6A7R
P7D2Y
P8D4A0YR
P9D3 (PWM)D5YB
P10D6 (PWM)D11YB
P11D7Y
P12D8Y
P13D9 (PWM)D10YB
P14D12Y
Tip: LED modules can only connect to ports that have a Yellow wire (Y, YR, YB, or I2C type). On YR ports, the LED uses the Yellow pin.

Supported Arduino Features

FeatureStatus
setup() / loop()Supported
User-defined functionsSupported
Arrays (byte arr[] = {...})Supported
sizeof()Supported
delay() with true timingSupported
#define macrosSupported
for / while / do-whileSupported
switch / case / breakSupported
Bitwise operators (>> << & | ^ ~)Supported
Ternary operator (? :)Supported
Serial.print / Serial.printlnSupported
digitalWrite / digitalReadSupported
analogWrite / analogReadSupported
random() / map() / constrain()Supported
String methodsSupported
char arrays / strcpySupported
Pointers / structs / classesNot supported

Keyboard Shortcuts

ShortcutActionMode
Ctrl + ZUndoCircuit
Ctrl + YRedoCircuit
Ctrl + SSave projectBoth
Ctrl + EnterRun simulationBoth
Delete / BackspaceRemove selected componentCircuit
RRotate selected componentCircuit
EscapeCancel wiring / deselectCircuit
Space + dragPan canvasCircuit
Mouse wheelZoom in / out on canvasCircuit
Tab (in code editor)Insert 2 spaces (auto-indent)Code
Ctrl + Shift + FAuto-indent entire fileCode
Ctrl + DDuplicate current lineCode
Ctrl + /Toggle line commentCode
Ctrl + FFind in codeCode
Ctrl + HFind and replaceCode

Troubleshooting

"Access denied" on Windows

The Web Serial API handles port access automatically. If you still see this error, make sure no other program (Arduino IDE, serial monitor, etc.) has the COM port open.

Upload fails on Android

Blocks glowing after save

This visual glitch has been fixed. If it still occurs, refresh the page to clear the state.

"You are offline" message

Verify and Upload require an internet connection for cloud compilation. Connect to the internet and try again. All other features work offline.

iOS devices

Upload is not supported on iOS because Apple does not implement the WebUSB or Web Serial APIs. Use a computer (Windows, Mac, or Linux) or an Android device to upload sketches.

Sketch compiles but upload fails

Try pressing the Reset button on your Arduino board just before clicking Upload. This puts the bootloader into a ready state for receiving the new firmware.

Note: If none of the above resolves your issue, try using a different USB cable (some cables are charge-only and do not support data transfer).