Install
openclaw skills install sphero-miniControl Sphero Mini robot ball via Bluetooth Low Energy. Roll, change colors, read sensors, draw shapes, and play with cats. Uses bleak for cross-platform BLE support (macOS/Windows/Linux).
openclaw skills install sphero-miniControl your Sphero Mini robot ball via Bluetooth Low Energy using Python and bleak.
All platforms:
pip3 install bleak
macOS/Windows: Use the included scan script:
python3 scripts/scan_sphero.py
Look for a device named like "SM-XXXX" (Sphero Mini).
Edit the scripts and replace SPHERO_MAC with your device's address.
python3 scripts/scan_sphero.py
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())
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())
python3 scripts/cat_play.py
Makes Sphero move randomly for 1 minute with color changes - perfect for playing with cats!
# Draw a square
python3 scripts/draw_square.py
# Draw a star
python3 scripts/draw_star.py
# Set specific color
python3 scripts/set_color.py red
python3 scripts/set_color.py 255 0 128 # Custom RGB
# 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
# 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
# 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")
The cat play mode script makes Sphero:
Perfect for entertaining cats! 🐱
sphero_mini_bleak.pyawait sphero.wake() firstawait asyncio.sleep(0.5) between color changesawait sphero.wake()This skill uses:
Note: This library is for Sphero Mini only. For other Sphero models (BB8, SPRK+, Bolt), use pysphero instead.
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)
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)
MIT