Plataforma para coche robot con visión artificial micro: bit Yahboom Tiny:bit Pro
Intenté usar un automóvil robótico "Tiny:bit Pro" que extiende micro:bit proporcionado por Yahboom.
La lista de embalaje incluye: caja de embalaje, manual de instrucciones, placa de extensión para automóvil (con motor y soporte de montaje), neumáticos, control remoto por infrarrojos, batería recargable, mapa de seguimiento, tarjeta TF + lector de tarjetas.
! ! !Nota: Si compras con placa Microbit, tu paquete incluirá la placa Micro:bit. Si compras sin Micro:bit, deberás preparar BBC Micro:bit por tu cuenta.
Tiny:bit Pro tiene dos opciones: Kit estándar / Kit de expansión
Asamblea
1. Retire los tornillos M3*6 mm del módulo K210 e instale el soporte de fijación de los tornillos M3*6 mm en el módulo K210.
2. Instalar rueda universal
3. Instalar Trie
4. Instalar el módulo K210 en el coche Tinybit
5. Insertar la placa Microbit
¡Algo lindo y divertido! ¿Te gusta este "tipo"?
Especificación
Parte delantera: Ultrasónico, sensor de sonido, reflector de alto brillo, receptor de control remoto por infrarrojos, luces RGB de colores programables, interfaz de pinza de cocodrilo, interfaz de puerto serie PH2.0-4PIN.
Parte posterior: Sensor de seguimiento, zumbador, zócalo de motor, interruptor de puerto serie .
Adición del bloque Tiny:bit Pro para MakeCode
Dado que es un automóvil robot que extiende Micro:bit, puede bloquear la codificación con MakeCode.
Cómo agregar el bloque Tiny:bit Pro
- Acceda a continuación y haga clic en "Nuevo proyecto" https://makecode.microbit.org/
- Haga clic en el icono de configuración -> Extensión
- Función básica de la biblioteca Tiny:bit Pro
- https://github.com/YahboomTechnology/Tiny-bitLib
- Función de visión de IA para la biblioteca Tiny:bit Pro
- https://github.com/YahboomTechnology/K210-Module.git
- Se agregó el bloque de Tiny:bit.
A continuación se cargan varios códigos de muestra básicos para Tinybit Pro.
Iluminación con intercambio de luz RGB: https://makecode.microbit.org/_EL3LmqJTwKKT
Control de velocidad del movimiento del automóvil: https://makecode.microbit.org/_9oJaEzErWisY
Ultrasonido-evitar-con-luz-sonido: https://makecode.microbit.org/_P7WYcMXvUTqt
Luz de control por voz: https://makecode.microbit.org/_KDDPHmJcaRut
Peonza: https://makecode.microbit.org/_Wv0dPq5K8bFV
A continuación se cargan varios códigos de muestra de visión de IA para Tinybit Pro.
Reconocimiento de colores - Código de automóvil Microbit: https://makecode.microbit.org/_1p84eJ9VxUkK
Código del módulo de reconocimiento de color K210 :
Importar sensor, imagen, tiempo, lcd
Desde los módulos importar ybserial
tiempo de importación
serie = ybserial()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.skip_frames(tiempo = 100)
sensor.set_auto_gain(Falso)
sensor.set_auto_whitebal(Falso)
reloj = tiempo.reloj()
print("Sostenga el objeto que desea rastrear frente a la cámara en el cuadro.")
print("¡ASEGÚRESE DE QUE EL COLOR DEL OBJETO QUE QUIERE SEGUIR ESTÉ COMPLETAMENTE CERRADO POR LA CAJA!")
# Captura los umbrales de color de lo que estaba en el centro de la imagen.
# 50x50 centro de QVGA.
r = [(320//2)-(50//2), (240//2)-(50//2), 50, 50]
para i en rango(50):
img = sensor.instantánea()
img.draw_rectangle(r)
pantalla lcd(img)
print("Umbrales de aprendizaje...")
umbral = [50, 50, 0, 0, 0, 0] # Valores medios L, A, B.
para i en rango(50):
img = sensor.instantánea()
hist = img.get_histogram(roi=r)
lo = hist.get_percentile(0.01) # ¡Obtenga la CDF del histograma en el rango del 1% (AJUSTE SEGÚN SEA NECESARIO)!
hi = hist.get_percentile(0.99) # ¡Obtenga la CDF del histograma en el rango del 99 % (AJUSTE SEGÚN SEA NECESARIO)!
# Promedio en valores percentiles.
umbral[0] = (umbral[0] + lo.l_value()) // 2
umbral[1] = (umbral[1] + hi.l_value()) // 2
umbral[2] = (umbral[2] + lo.a_value()) // 2
umbral[3] = (umbral[3] + hi.a_value()) // 2
umbral[4] = (umbral[4] + lo.b_value()) // 2
umbral[5] = (umbral[5] + hi.b_value()) // 2
para blob en img.find_blobs([umbral], umbral_píxeles=100, umbral_área=100, combinación=True, margen=10):
img.draw_rectangle(blob.rect())
img.draw_cross(blob.cx(), blob.cy())
img.draw_rectangle(r, color=(0,255,0))
pantalla lcd(img)
print("Umbrales aprendidos...")
print("Iniciar reconocimiento de color...")
mientras(Verdadero):
reloj.tick()
img = sensor.instantánea()
para blob en img.find_blobs([umbral], umbral_píxeles=100, umbral_área=100, combinación=True, margen=10):
img.draw_rectangle(blob.rect())
img.draw_cross(blob.cx(), blob.cy())
x = str(blob.x())
y = str(blob.y())
w = str(blob.w())
h = str(blob.h())
imprimir(umbral)
si len(x)<3 :
i_bandera = 3-len(x)
x = "0"*i_bandera + x
si len(y)<3 :
i_bandera = 3-len(y)
y = "0"*i_flag + y
si len(w)<3 :
i_bandera = 3-len(w)
w = "0"*i_bandera + w
si len(h)<3 :
i_bandera = 3-len(h)
h = "0"*i_bandera + h
enviar_datos="$"+"01"+ x+','+ y+','+ w+','+ h+','+"#"
#print(enviar_datos)
para i en el rango (1,5):
serial.send(enviar_datos)
tiempo.sleep_ms(5)
pantalla lcd(img)
#print(reloj.fps())
Código de automóvil Microbit para control digital escrito a mano : https://makecode.microbit.org/_7e82r50rpfzC
Código del módulo de control digital escrito a mano K210:
Importar sensor, imagen, tiempo, lcd
Desde la importación principal KPU
importar gc
Desde los módulos importar ybserial
tiempo de importación
serie = ybserial()
lcd.init()
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((224, 224))
sensor.skip_frames(tiempo = 100)
reloj = tiempo.reloj()
kpu = KPU()
kpu.load_kmodel("/sd/KPU/mnist/uint8_mnist_cnn_model.kmodel")
mensaje_=""
mientras sea verdadero:
gc.recopilar()
img = sensor.instantánea()
img_mnist1=img.a_escala_de_grises(1)
img_mnist2=img_mnist1.resize(112,112)
img_mnist2.invertir()
img_mnist2.strech_char(1)
img_mnist2.pix_to_ai()
salida = kpu.run_with_output(img_mnist2, obtenerlista=Verdadero)
max_mnist = máx(salida)
índice_mnist = salida.índice(máximo_mnist)
msg_ = str(índice_mnist)
enviar_datos="$"+"11"+ msg_ +','+"#"
tiempo.sleep_ms(5)
serial.send(enviar_datos)
puntuación = KPU.sigmoide(max_mnist)
si index_mnist == 1:
Si la puntuación es > 0,999:
display_str = "num: %d" % índice_mnist
imprimir(display_str, puntuación)
img.draw_string(4,3,display_str,color=(0,0,0),escala=2)
elif índice_mnist == 5:
Si la puntuación es > 0,999:
display_str = "num: %d" % índice_mnist
imprimir(display_str, puntuación)
img.draw_string(4,3,display_str,color=(0,0,0),escala=2)
demás:
display_str = "num: %d" % índice_mnist
imprimir(display_str, puntuación)
img.draw_string(4,3,display_str,color=(0,0,0),escala=2)
pantalla lcd(img)
kpu.deinit()
Caso de demostración de efectos