Marketing & SalesDocumentedScanned

sphero-mini

Control Sphero Mini robot ball via Bluetooth Low Energy.

Share:

Installation

npx clawhub@latest install sphero-mini

View the full skill documentation and source below.

Documentation

Sphero Mini Control

Control your Sphero Mini robot ball via Bluetooth Low Energy using Python and bleak.

Features

  • 🎨 LED Control - Change main LED color and back LED intensity
  • 🎯 Movement - Roll in any direction at variable speeds
  • 🎲 Random Mode - Cat play mode with unpredictable movements
  • 📐 Draw Shapes - Squares, stars, circles with programmable patterns
  • 🔋 Power Management - Wake, sleep, and check battery status
  • 🧭 Heading Control - Reset and control orientation
  • 🖥️ Cross-platform - Works on macOS, Windows, and Linux (uses bleak, not bluepy)

Setup

1. Install Dependencies

All platforms:

pip3 install bleak

2. Find Your Sphero Mini's MAC/UUID

macOS/Windows:
Use the included scan script:

python3 scripts/scan_sphero.py

Look for a device named like "SM-XXXX" (Sphero Mini).

3. Update MAC Address

Edit the scripts and replace SPHERO_MAC with your device's address.

Quick Start

Scan for Sphero Mini

python3 scripts/scan_sphero.py

Change Color

import asyncio
from sphero_mini_bleak import SpheroMini

async def change_color():
    sphero = SpheroMini("YOUR-MAC-ADDRESS")
    await sphero.connect()
    await sphero.wake()
    
    # Set to red
    await sphero.setLEDColor(255, 0, 0)
    await asyncio.sleep(2)
    
    await sphero.disconnect()

asyncio.run(change_color())

Roll Forward

import asyncio
from sphero_mini_bleak import SpheroMini

async def roll_forward():
    sphero = SpheroMini("YOUR-MAC-ADDRESS")
    await sphero.connect()
    await sphero.wake()
    
    # Roll forward at speed 100
    await sphero.roll(100, 0)
    await asyncio.sleep(3)
    
    # Stop
    await sphero.roll(0, 0)
    await sphero.disconnect()

asyncio.run(roll_forward())

Pre-built Scripts

🐱 Cat Play Mode (Random Movement)

python3 scripts/cat_play.py

Makes Sphero move randomly for 1 minute with color changes - perfect for playing with cats!

📐 Draw Shapes

# Draw a square
python3 scripts/draw_square.py

# Draw a star
python3 scripts/draw_star.py

🎨 Color Control

# Set specific color
python3 scripts/set_color.py red
python3 scripts/set_color.py 255 0 128  # Custom RGB

Common Commands

Movement

# Roll (speed: 0-255, heading: 0-359 degrees)
await sphero.roll(speed=100, heading=0)    # Forward
await sphero.roll(100, 90)                  # Right
await sphero.roll(100, 180)                 # Backward
await sphero.roll(100, 270)                 # Left
await sphero.roll(0, 0)                     # Stop

LED Control

# Main LED color (RGB values 0-255)
await sphero.setLEDColor(red=255, green=0, blue=0)      # Red
await sphero.setLEDColor(0, 255, 0)                     # Green
await sphero.setLEDColor(0, 0, 255)                     # Blue
await sphero.setLEDColor(128, 0, 128)                   # Purple

# Back LED brightness (0-255)
await sphero.setBackLED(255)  # Full brightness
await sphero.setBackLED(0)    # Off

Power Management

# Wake from sleep
await sphero.wake()

# Go to sleep (low power, BLE still on)
await sphero.sleep()

# Check battery voltage
voltage = await sphero.getBatteryVoltage()
print(f"Battery: {voltage}V")

Tips

  • Wake Sphero: Shake it to wake from deep sleep before connecting
  • Connection timeout: If connection fails, shake Sphero and try again
  • Finding Sphero: After scripts finish, Sphero is set to white for easy visibility
  • Cat safety: Use soft surfaces when playing with cats to avoid damage

Example: Cat Play Mode

The cat play mode script makes Sphero:

  • Move in random directions (40-120 speed)

  • Change colors randomly (6 vibrant colors)

  • Stop unpredictably (30% chance for brief pauses)

  • Run for exactly 1 minute

  • End with white color so you can find it


Perfect for entertaining cats! 🐱

Troubleshooting

Cannot Connect

  • Shake Sphero to wake it up

  • Ensure it's not connected to the Sphero Edu app

  • Check MAC/UUID address is correct

  • Try increasing timeout in sphero_mini_bleak.py
  • Sphero Doesn't Move

  • Call await sphero.wake() first

  • Wait 1-2 seconds after waking

  • Check battery level
  • Colors Don't Change

  • Add await asyncio.sleep(0.5) between color changes

  • Ensure you called await sphero.wake()
  • Library Credits

    This skill uses:

    • [sphero_mini_win]() by trflorian - Sphero Mini control library using bleak

    • [bleak]() - Cross-platform Bluetooth Low Energy library


    Note: This library is for Sphero Mini only. For other Sphero models (BB8, SPRK+, Bolt), use [pysphero]() instead.

    Advanced Usage

    Custom Patterns

    Create your own movement patterns:

    async def figure_eight():
        # Draw a figure-8 pattern
        for i in range(2):  # Two loops
            for heading in range(0, 360, 10):
                await sphero.roll(80, heading)
                await asyncio.sleep(0.1)

    Color Cycling

    async def rainbow():
        colors = [
            (255, 0, 0), (255, 127, 0), (255, 255, 0),
            (0, 255, 0), (0, 0, 255), (75, 0, 130), (148, 0, 211)
        ]
        for r, g, b in colors:
            await sphero.setLEDColor(r, g, b)
            await asyncio.sleep(1)

    Documentation

    • SKILL.md — This file
    • references/api.md — Complete API reference
    • references/troubleshooting.md — Common issues and solutions
    • scripts/ — Ready-to-use example scripts
    MIT