AI Hub Controller
LEGO Spike Prime + Teachable Machine
Načítání role...
VYBERTE ROLI ZAŘÍZENÍ
Zapojte více telefonů a počítačů do jedné interaktivní hry
Řídící Stanice
Hlavní počítač připojený k LEGO Hubu přes Bluetooth. Spouští AI kameru, vyhodnocuje pravidla a posílá stav ostatním.
SPUSTIT STANICI
Dálkový Ovladač
Ideální pro mobily. Umožňuje na dálku sledovat hodnoty ze senzorů LEGO hubu a ručně spouštět motory, zvuky nebo LED.
SPUSTIT OVLADAČ
Veřejná Tabule
Fullscreen obrazovka pro projektor nebo velkou tabuli. Ukazuje stav AI kamery a vizuální stav všech zapojených prvků.
SPUSTIT TABULI
LEGO SPIKE PRIME Odpojeno
Simulační režim (bez hubu)
PŘIPOJENÁ HARDWARE
Hub automaticky detekuje zařízení na portech A až F.
Načítání portů...
AI MODEL Z TEACHABLE MACHINE
Zadejte odkaz na model rozpoznávání obrázků.
Kamera není aktivní
Detekovaná třída:
-
Třídy a jistota detekce
Zadejte URL adresu a načtěte AI model.
GAMEMAKER EDITOR AKCÍ
Pravidla vyhodnocovaná Stanicí v reálném čase.
Žádná pravidla. Vytvořte nové pravidlo tlačítkem níže!
MICROPYTHON KÓD PRO LEGO HUB
# Pybricks Spike Prime Controller Script
from pybricks.hubs import PrimeHub
from pybricks.pupdevices import Motor, ColorSensor, UltrasonicSensor
from pybricks.parameters import Port, Color, Button
from pybricks.tools import wait
from pybricks.iodevices import PUPDevice
from usys import stdin
from uselect import poll
from uerrno import ENODEV
import ujson
hub = PrimeHub()
devices = {}
ports = {
"A": Port.A, "B": Port.B, "C": Port.C,
"D": Port.D, "E": Port.E, "F": Port.F
}
keyboard = poll()
keyboard.register(stdin)
MOTOR_IDS = [1, 2, 38, 47, 48, 75, 76]
COLOR_IDS = [61, 63]
DISTANCE_IDS = [62]
def scan_devices():
global devices
for name, port in ports.items():
try:
pup = PUPDevice(port)
dev_id = pup.info()["id"]
if dev_id in MOTOR_IDS:
if name not in devices or not isinstance(devices[name], Motor):
devices[name] = Motor(port)
elif dev_id in COLOR_IDS:
if name not in devices or not isinstance(devices[name], ColorSensor):
devices[name] = ColorSensor(port)
elif dev_id in DISTANCE_IDS:
if name not in devices or not isinstance(devices[name], UltrasonicSensor):
devices[name] = UltrasonicSensor(port)
else:
devices[name] = pup
except OSError as e:
if e.args[0] == ENODEV:
if name in devices:
del devices[name]
scan_devices()
scan_counter = 0
input_buffer = ""
while True:
scan_counter += 1
if scan_counter >= 40:
scan_devices()
scan_counter = 0
if keyboard.poll(0):
char = stdin.read(1)
if char == "\n":
try:
cmd = ujson.loads(input_buffer)
action = cmd.get("action")
if action == "motor":
p = cmd.get("port")
s = cmd.get("speed", 0)
if p in devices and isinstance(devices[p], Motor):
if s == 0:
devices[p].stop()
else:
devices[p].run(s)
elif action == "led":
color_name = cmd.get("color", "none")
color_map = {
"red": Color.RED, "green": Color.GREEN, "blue": Color.BLUE,
"yellow": Color.YELLOW, "orange": Color.ORANGE, "purple": Color.PURPLE,
"white": Color.WHITE, "none": Color.NONE
}
hub.light.on(color_map.get(color_name.lower(), Color.NONE))
except Exception as e:
print("ERROR:", e)
input_buffer = ""
else:
input_buffer += char
state = {}
for name, device in devices.items():
try:
if isinstance(device, Motor):
state[name] = {"type": "motor", "speed": device.speed(), "angle": device.angle()}
elif isinstance(device, ColorSensor):
state[name] = {"type": "color", "color": str(device.color()), "ambient": device.ambient(), "reflection": device.reflection()}
elif isinstance(device, UltrasonicSensor):
state[name] = {"type": "distance", "distance": device.distance()}
except:
pass
pressed = hub.buttons.pressed()
state["buttons"] = {
"left": Button.LEFT in pressed,
"right": Button.RIGHT in pressed,
"center": Button.CENTER in pressed
}
print(ujson.dumps(state))
wait(50)
SYSTÉMOVÝ LOG
// Systém inicializován. Čekání na spojení...
Stav LEGO Hubu
Synchronizováno se Stanicí
Senzory a Tlačítka
LEGO Hub není připojen k hlavní stanici.
Dálkové Ovládání (Akce)
Motory
Žádné zapojené motory.
LED na Hubu
Zvuky v prohlížeči Stanice
AKTUÁLNÍ AI DETEKCE
JISTOTA: -
Třída: -
Analyzováno kamerou na řídící stanici
LEGO SENSOR DASHBOARD
Čekání na data z hlavní stanice...
AKTIVITY LOG (UDÁLOSTI)
// Spusťte hru a akce se zobrazí zde.