Micro:Bit by BBC
From classroom gadget to robot controller
Load Synthiam's EZB firmware onto a micro:bit and ARCx or ARC can switch its pins, read its analog pads and buttons, and dim LEDs over a USB cable. Students build and program with robot skills and Blockly in a web browser.
How the micro:bit works with Synthiam. ARC and ARCx do not use the micro:bit's default programs. Instead, the micro:bit runs a small program called firmware that tells it how to talk to Synthiam software and how to respond to commands like reading a pin or setting an output. You upload that firmware once, from an Arduino sketch, and then connect over USB with the Ezb Connection robot skill in ARCx (or EZB Connection in ARC) at 57600 baud. We recommend ARCx: it runs on Windows, Ubuntu and Raspberry Pi, and a whole class can use it from their own browsers.
What is the BBC micro:bit?
The BBC micro:bit is a small, beginner-friendly microcontroller board (a tiny computer on a circuit board) created for teaching programming and electronics. It is about half the size of a credit card.
The micro:bit typically includes:
- ARM Cortex-M0 processor (runs your program or firmware)
- 25-LED display (a 5×5 LED matrix you can light up)
- Two buttons (Button A and Button B)
- Motion sensor (accelerometer) and compass (magnetometer)
- USB for power, programming and communicating with ARCx or ARC
- Bluetooth for wireless projects
- Power options: USB or an external battery pack
- GPIO pins, inputs and outputs for connecting electronics
micro:bit at a glance
| Type | Educational microcontroller board (DIY EZB with Synthiam firmware) |
|---|---|
| Maker | BBC |
| Processor | ARM Cortex-M0 (Nordic nRF51 on the original micro:bit) |
| Connection | USB (serial), 57600 baud with the EZB firmware |
| Power | USB or battery pack |
| EZB ports | D3–D16 digital and PWM; ADC on pins 0–4 |
| Synthiam uses it for | Classroom robotics, simple I/O and sensors |
| Website | microbit.org |
What you can do with a micro:bit in Synthiam
Digital in and out
Turn LEDs, buzzers and relays on and off, and read buttons and switches on D3–D16. Watch and toggle them live in Digital Monitor.
Buttons A and B
Button A is on pin 5 and Button B on pin 11, so a script or skill can read them as digital ports D5 and D11 and make the robot react to a press.
Analog sensors
Read light sensors, potentiometers and other analog sensors on the big pads 0, 1 and 2 (and pins 3 and 4) with Adc Monitor, or chart them with Ez Chart.
PWM
Dim an LED or vary a buzzer with PWM duty from 0% to 100% using the Pwm Slider or PWM.set(d8, 50).
Blockly for students
Snap blocks together in the Script robot skill to read a pad and light an LED, then convert the program to JavaScript or Python when students are ready.
A whole class at once
ARCx is used from a browser, so several students can watch and use the same robot project from their own laptops or tablets.
What the firmware does not do. The v1 firmware handles digital, PWM, servo and analog commands. It does not read the on-board motion sensor or compass, draw pictures on the LED display, use Bluetooth, or provide I2C, UART or ultrasonic commands. Servos need extra hardware (see the limitations below).
micro:bit pins and EZB ports
GPIO stands for General Purpose Input/Output. These are the pins on the edge of the micro:bit that let you connect LEDs, buttons, sensors, servos (with extra hardware), buzzers and more.
The easiest pins to use are the three large ring pads labeled P0, P1 and P2, designed for alligator clips without soldering. A micro:bit breakout board (an accessory that expands the edge connector into easy-to-use pins) gives convenient access to the other GPIO pins.
Important: many micro:bit pins are shared (also called multiplexed) with the 5×5 LED display and the buttons. A pin may control the LED matrix or an external device, but not both at the same time. If you notice strange behavior, use pins that are not shared with the LED matrix or buttons.
In Synthiam's v1 firmware, digital port numbers match the micro:bit pin numbers (D8 is pin 8), from D3 to D16. Analog ports ADC0–ADC4 read pins 0–4.
| Pin | EZB port (v1 firmware) | Shared functions | Recommended |
|---|---|---|---|
| #0 | ADC0 | Large pad, analog in | Yes |
| #1 | ADC1 | Large pad, analog in | Yes |
| #2 | ADC2 | Large pad, analog in | Yes |
| #3 | D3, ADC3 | Analog in, also used for LED matrix (column 1) | |
| #4 | D4, ADC4 | Analog in, also used for LED matrix (column 2) | |
| #5 | D5 | Also used for Button A | |
| #6 | D6 | Also used for LED matrix (column 9) | |
| #7 | D7 | Also used for LED matrix (column 8) | |
| #8 | D8 | — | Yes |
| #9 | D9 | Also used for LED matrix (column 7) | |
| #10 | D10 | Analog in (no ADC port in the firmware), also used for LED matrix (column 3) | |
| #11 | D11 | Also used for Button B | |
| #12 | D12 | — | Yes |
| #13 | D13 | Also available as SPI clock | Yes |
| #14 | D14 | Also available as SPI MISO | Yes |
| #15 | D15 | Also available as SPI MOSI | Yes |
| #16 | D16 | — | Yes |
| #19 | — | Also available as I2C clock | Yes |
| #20 | — | Also available as I2C data | Yes |
Recommended pins (beginner friendly)
To use the on-board buttons and LED display while also connecting external devices, choose pins that are less likely to conflict: #0, #1, #2, #8, #12, #13, #14, #15, #16, #19 and #20. With the v1 firmware, #0–#2 are analog inputs only, #8 and #12–#16 are digital ports, and #19 and #20 are not reachable.
Limitations of the v1 firmware
- Digital ports start at D3, so pads 0–2 cannot be used as digital outputs.
- A servo position is sent as a PWM duty proportional to the position, not as a standard hobby-servo pulse. Test a servo before you build around it, or use extra servo hardware.
- Pin 10 is analog-capable but has no ADC port.
Program the micro:bit firmware and connect ARCx
The ARCx and ARC compatible firmware for the micro:bit is an Arduino sketch. You compile it in the Arduino IDE and upload it to the micro:bit over USB.
- Install the Arduino IDE on your computer from arduino.cc.
- Add micro:bit board support so the Arduino IDE knows how to compile for the micro:bit. Follow Adafruit's micro:bit with Arduino guide to install the micro:bit tools and board support.
-
Download the firmware source. DJ's Microbit v1 Firmware source code (Feb 7, 2019), the Arduino sketch that connects the micro:bit to ARC and ARCx. Extract it and open
EZ-Micro-Bit.ino. - Compile and upload the sketch to the micro:bit over USB. The tutorial to compile and upload the firmware shows the steps for Arduino boards; the process is the same once the micro:bit board is selected.
- Install ARCx and add the Ezb Connection robot skill (Communication category). In its configuration, select EZB 0, open Connection and set Baud rate to 57600 (the default is 9600). Save.
-
Connect. Pick the micro:bit's serial port and press the green connect button.
Windows: COM3 (check Device Manager for the number) Linux: /dev/ttyACM0 - Try it. Add Digital Monitor and watch D5 change when you press Button A, or clip an LED (with a resistor) to pin 8 and toggle D8. Add Adc Monitor to read pad 0.
Using ARC instead?
Plug the micro:bit into USB, open ARC, press Config on the connection control, set the baud rate to 57600 on the Settings tab, save, choose the micro:bit's COM port and press Connect.
Both work, ARCx is recommended for classrooms
| ARCx Recommended | ARC | |
|---|---|---|
| Runs on | Windows 10/11 x64, Ubuntu 24.04 x64 and ARM64, Raspberry Pi 4/5 with Ubuntu 24.04 | Windows |
| User interface | Any web browser, several people at once | Windows desktop application |
| Connection skill | Ezb Connection | EZB Connection |
| Programming | Blockly, JavaScript, Python | Blockly, EZ-Script, JavaScript, Python |
| AI agents | Built-in MCP server | Through ARC robot skills |
If something does not work
dialout group, then log out and back in:
sudo usermod -aG dialout $USER
Frequently asked questions
Bring the micro:bit into robotics class
Upload the firmware, install ARCx, add the Ezb Connection skill, and let students program real hardware from their browsers.
