Skip to content

This project allows remote control of motors and servos using a Micro:bit via Bluetooth. Commands like "up", "down", "left", "right", "stop", and "servo" are sent over Bluetooth to control motion and servo angles in real-time.

Notifications You must be signed in to change notification settings

ALNezar/Microbit-bluetooth-car

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Micro:bit Motor Control

Bluetooth Motor & Servo Control with BBC Micro:bit

Platform: Micro:bit Language: TypeScript Hardware: DC Motors Hardware: Servo Bluetooth License

Built for UQD10801 – ROBOCON I coursework


What This Does

This project lets you control DC motors and a servo wirelessly using a BBC Micro:bit. Send commands over Bluetooth ("up", "down", "left", "right") and the Micro:bit converts them to PWM signals that drive the motors. I built this for a robotics course and it works well for small RC vehicles or prototype robots.

Features
  • Bluetooth UART for wireless command input
  • PWM motor control for variable speed and direction
  • Servo positioning for angle control
  • Real-time response suitable for mobile platforms

Hardware Setup

Here's the wiring setup I used. The motor driver connects to the Micro:bit pins and handles the actual current for the DC motors. The servo runs off pin P0.

Wiring diagram

Motor driver wiring with starter kit components

Prototype vehicle

The assembled prototype


Parts List

Component Notes
BBC Micro:bit Main controller board
DC Motors (2x) Left and right drive motors
Hobby Servo For steering or other angle control
Motor Driver Module H-bridge driver to control motor direction and speed
Bluetooth Device Phone app or another Micro:bit for sending commands

Getting Started

To run or modify this code:

  1. Go to MakeCode for Micro:bit
  2. Click Import → Import URL
  3. Paste: https://github.com/alnezar/kart-microbit-motor-control
  4. The project opens in the browser editor

Command Reference

Command Result
up Move forward
down Move backward
left Turn left
right Turn right
stop Stop motors
c Set servo range

Code Overview

The main logic listens for UART data over Bluetooth and maps commands to motor control functions. Each direction function sets the appropriate pin states for the motor driver.

let recvievestring = ""

// Motor control functions
function Forward() {
    pins.analogWritePin(AnalogPin.P4, 1023)
    pins.digitalWritePin(AnalogPin.P5, 1)
    pins.digitalWritePin(AnalogPin.P6, 0)
    pins.analogWritePin(AnalogPin.P10, 1023)
    pins.digitalWritePin(AnalogPin.P11, 0)
    pins.digitalWritePin(AnalogPin.P12, 1)
}

function Backword() {
    pins.analogWritePin(AnalogPin.P4, 1023)
    pins.digitalWritePin(AnalogPin.P5, 0)
    pins.digitalWritePin(AnalogPin.P6, 1)
    pins.analogWritePin(AnalogPin.P10, 1023)
    pins.digitalWritePin(AnalogPin.P11, 1)
    pins.digitalWritePin(AnalogPin.P12, 0)
}

// Bluetooth event handlers
bluetooth.onBluetoothConnected(function () {
    music.play(music.builtinPlayableSoundEffect(soundExpression.sad), 
               music.PlaybackMode.UntilDone)
})

bluetooth.onUartDataReceived(serial.delimiters(Delimiters.NewLine), function () {
    recvievestring = bluetooth.uartReadUntil(serial.delimiters(Delimiters.NewLine))
    if (recvievestring == "up") Forward()
    if (recvievestring == "down") Backword()
    if (recvievestring == "right") Right()
    if (recvievestring == "left") Left()
    if (recvievestring.charAt(0) == "c") {
        servos.P0.setRange(0, 180)
    }
})

// Setup
music.play(music.stringPlayable("C D E F G A B C5 ", 120), 
           music.PlaybackMode.UntilDone)
led.enable(false)
bluetooth.startUartService()
servos.P0.setRange(0, 180)
stop()

Tech Stack

  • Platform: Microsoft MakeCode
  • Language: TypeScript
  • Hardware: BBC Micro:bit, DC motors, hobby servo, motor driver

About

This project allows remote control of motors and servos using a Micro:bit via Bluetooth. Commands like "up", "down", "left", "right", "stop", and "servo" are sent over Bluetooth to control motion and servo angles in real-time.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published