ModuLab logo ModuLab Build • Play • Explore
Classroom Login Register
Mobile view

Use the Android app

The browser dashboard is built for a desktop or tablet workspace. On a phone, install or open the ModuLab Android app for Bluetooth board control.

Bluetooth setup

If the app is already installed, open it from here. If Android blocks that, use the Play button.

Play

How to Use

First 2 minutes Connect the board, open one panel, try one command.

Use the full help when you need details; this card keeps the live dashboard close.

Collapse
Expand
⋮⋮Move
Run
Stop
Pause
📖Open Notes
Read full dashboard help

Loading ModuLab help…

Build
Log in to save this ModuLab workspace.
Load a Snapshot into the embedded diagram view.
Status Idle
Connection Disconnected
Mode Unknown
Detail
Error
Updated
Columns

Workspace

Your control desk

Picture it: Think of this like the cockpit of your biscuit mission, where you choose speed, tools, and what to test next.

How it works: Workspace settings control how fast the dashboard updates and how quickly edits auto-send to the board, so your testing feels smooth and responsive.

Try this: Set a slower auto-send speed, draw on a display panel, then make it faster and compare how the board reacts.

Telemetry UI Refresh 75 ms
Auto Send Speed 100 ms

LED

Light

Picture it: Like a tiny flashlight you can control with code.

How it works: Sends commands that turn the LED on, off, or blinking on the board.

Try this: Send LED On, then LED Off, and watch how fast the board responds.

Traffic Light

Stop, ready, go lights

Three distinct red, amber, and green LEDs on individual GPIO pins for beginner control logic.

Picture it: Like a mini road signal where your program controls each colour.

How it works: PB12 drives red, PB13 drives amber, and PB14 drives green while a shared cathode ties to ground.

Try this: Switch red, amber, and green one by one, then add timing with automation rules.

LED Matrix

A grid of red lights

LED matrix driver used for displaying text and simple graphics.

Picture it: It works like a mini scoreboard where every square can light up.

How it works: The MAX7219 chip looks after the LEDs. The Bluepill sends rows of data and the driver refreshes the lights fast enough to look steady.

Try this: Send a word to the matrix, then change the bitmap rows to make your own 8 by 8 icon.

Brightness Auto
Progress Bar 50%
fpms (ms) 250 ms
Frame Brightness 8
Preview in Browser
Run on Device
No animation frames yet. Draw a bitmap, then add it as frame 1.

Colourful Matrix

A colour pixel party

Addressable 8x8 colour LED matrix driven from PA8 with timer DMA.

Picture it: Imagine 64 tiny stage lights, and each one can pick its own colour.

How it works: The LEDs are chained together. The Bluepill sends a timed stream of colour numbers, and each LED keeps the colour meant for it.

Try this: Make one pixel red, then fill a row, then animate a rainbow travelling across the grid.

Board Direction Device
Global Brightness 100%
RGB Pie Progress 100%
Pie Color #00FFFF
fpms (ms) 250 ms
Preview in Browser
Run on Device
No RGB frames yet. Paint the panel, then add frame 1.

Games

Play Lab

Browser-side game controls and game telemetry.

Picture it: Like a tiny arcade built into your dashboard.

How it works: Runs game logic in the browser, then streams frames to connected display modules.

Try this: Start Matrix Tetris, then watch score and lines update live.

🏓 Small Screen Pong
Pong Speed 45 ms
Use W/S for left paddle and Arrow Up/Down for right paddle.
🧱 LED Matrix Tetris
Tetris Speed 450 ms
Use arrow keys when Tetris is running.
🌈 RGB Matrix Tetris
Tetris Speed 450 ms
Use arrow keys when Tetris is running.
🧮 Times Table Challenge
Answer Time 8000 ms
Questions Total rounds
Tables Comma list (1-12)
Answer Type and submit
Score 0/0
Shows factors on RGB, then expression on LED matrix. Submit answer before timeout.

Motion Sensor

The balance and wobble sensor

Accelerometer and gyroscope breakout used for tilt and motion sensing.

Picture it: It feels movement a bit like your inner ear helps you know when you tilt.

How it works: The accelerometer senses pull and tilt, while the gyroscope senses turning. The Bluepill reads those numbers over I2C.

Try this: Tilt the board and watch pitch and roll change, then use the tilt to control lights or an animation.

Pitch
Roll
Yaw

Sonar

The echo distance finder

Distance sensor with separate transmitter and receiver transducers on the front face.

Picture it: It measures distance like a bat using echoes.

How it works: One round transducer sends a tiny sound ping. The other listens for the echo, and the Bluepill times how long the trip took.

Try this: Move your hand closer and farther away, then use the distance number to change a light, tone, or display message.

Forward Distance
NearFront of deviceFar
Range

Potentiometer

Knob Input

Analog variable resistor used to dial values from 0 to 100%.

Picture it: Like a dimmer knob that smoothly changes a number.

How it works: The SIG pin feeds PA6 ADC input. Firmware converts voltage to raw and percent values.

Try this: Turn the knob slowly and watch raw and percent values rise and fall.

Raw ADC

Clock

Time

Picture it: Like a kitchen timer that keeps track of passing seconds.

How it works: Controls timing modes used by other panel features and board behaviors.

Try this: Start a timed mode and observe how other panels react over time.

Time

Clipboard

Text Display

Words

Picture it: Like a message board where your code writes short notes.

How it works: Sends text commands so connected displays can show words or short status messages.

Try this: Send your name or a short phrase and check it appears correctly.

Text
RGB Char Device
Scroll Speed 100 ms

Live Dashboard

Live Values

Live Dashboard shows real-time values from your board and app so you can drag variables into automation blocks, test ideas faster, and understand what your system is doing right now.

Picture it: Like a spaceship control window that shows speed, direction, and warnings while you fly.

How it works: This panel listens to live data such as distance, pitch, roll, mode, text, and time. Each chip can be dragged into automation expressions so your routines can react to what is happening right now.

Try this: Drag {distance_cm} into an If block and make it trigger a message or animation when distance is less than 20.

Distance
Pitch
Roll
Yaw
Mode
Mode #
Error
Device Text
Text Length
Scroll
Frame
Matrix Frame Cnt.
Animation Interval
Matrix Anim
BT Name
BT Baud
Hour
Minute
Second
24h
Elapsed
Motor A Speed
Motor A Dir
Motor A Mode
Motor B Speed
Motor B Dir
Motor B Mode
Matrix Tetris Score
Matrix Tetris Lines
RGB Tetris Score
RGB Tetris Lines
Abs Yaw
Pot Raw
Abs Roll
RGB Char
Abs Pitch
Pot %
Matrix Chain
Feed Text
RGB Animation Frames
Traffic Light State
Matrix Scroll Speed (ms)

Automation

Auto

Picture it: Like setting up dominoes so one action triggers the next.

How it works: Lets you build trigger and action rules that run without manual button presses.

Try this: Create one simple trigger-action rule and test it with the board connected.

Example Routines
Expression Help
Use plain expressions throughout automation. Quote string literals in actions.
Variables distance_cm, pitch, roll, yaw, mode_number, mode_name, error_code, time_hour, time_minute, time_second, time_hhmm, display_text, display_text_length, scroll_mode, animation_current_frame, animation_frame_count, animation_interval_ms, animation_playing, bluetooth_name, bluetooth_uart_baud, elapsed_ms
Helpers clamp, round, floor, ceil, abs, min, max, int
Condition expressions
abs(pitch)
roll
distance_cm / 10
mode_name
pitch > roll
Action expressions
DISPLAY_ANIMATION_FRAME {{ clamp(round(distance_cm / 10), 0, 7) }}
P {pitch} R {roll}
{mode_name}
HELLO {bluetooth_name}
Automation Routine Add blocks, then run or step through.
Loop Delay 1500 ms

Motor

Spin Power Control

DRV8833 dual H-bridge motor driver (4 PWM input mode)

Picture it: Like a toy car trigger that can gently creep or race, PWM gives the motor tiny bursts of power to control speed.

How it works: A brushed DC motor driver switches power on and off very quickly using PWM. The duty cycle sets average power, so higher duty means faster spin, while direction pins choose forward or reverse through the H-bridge.

Try this: Start at 20% duty, then step to 40%, 60%, and 80% and watch the speed change. Next keep duty at 50% and flip direction to reverse the motor.

Motor A Speed / Direction0%
Motor B Speed / Direction0%

Live Feed

Feed

Picture it: Like a news ticker that turns updates into moving messages.

How it works: Fetches data from selected feeds, formats it into short text, and sends it to matrix display workflows.

Try this: Pick a preset feed, run Execute, and watch the Feed Text update before sending it to the device.

Feed Preset Source
Feed URL URL
Expression Text
Interval (s) 60 s
Class Chat To Displays Send the newest class message to the LED matrix and the poster initial to the RGB matrix.
Latest Poster
Latest Message No classroom chat loaded
Display Status Waiting for chat
Video Feed To RGB 8x8 Sample camera or video into the RGB matrix editor and optionally auto send.
Video Source Input
FPS 5
Idle. Choose source and press Start.
Feed Text
Feed Status Idle

The Terminal

Terminal

Direct command and debug panel for sending firmware commands and reading live board responses.

Picture it: Like a command desk where you type instructions and read replies from the board.

How it works: Contains direct command input, quick debug actions, and output logs for troubleshooting.

Try this: Use GET_STATUS, then compare the returned values in the output log.

Reference

Schema Status: checking...

Click a command name to fill the Raw Command box. Bitmap rows use eight uppercase hexadecimal values, one per display row. Animation frame indexes start at 0.