Plateforme de voiture robotisée Yahboom Tiny:bit Pro micro:bit AI Vision
J'ai essayé d'utiliser une voiture robotique "Tiny:bit Pro" qui étend micro:bit fourni par Yahboom.
La liste d'emballage comprend : boîte d'emballage, manuel d'instructions, carte d'extension de voiture (avec moteur et support de montage), pneus, télécommande infrarouge, batterie rechargeable, carte de suivi, carte TF + lecteur de carte.
! ! !Remarque : si vous achetez avec la carte Microbit, votre colis comprendra la carte Micro:bit. Si vous achetez sans Micro:bit, vous devez préparer BBC Micro:bit vous-même.
Tiny:bit Pro propose deux options : kit standard / kit d'extension
Assemblée
1.Retirez les vis M3*6 mm du module K210. Et installez le support de fixation à vis M3*6 mm sur le module K210.
2. Installer la roue universelle
3. Installer Trie
4. Installer le module K210 sur la voiture Tinybit
5. Insérer la carte Microbit
Achèvement Quelque chose de mignon et de drôle ! Aimez-vous ce « mec » ?
Spécification
Avant : ultrasons, capteur sonore, projecteur haute luminosité, récepteur de télécommande infrarouge, lumières RVB colorées programmables, interface pince crocodile, interface de port série PH2.0-4PIN.
Arrière : Capteur de suivi, buzzer, prise moteur, commutateur de port série .
Ajout du bloc Tiny:bit Pro pour MakeCode
Puisqu'il s'agit d'une voiture robot qui étend Micro:bit, elle peut bloquer le codage avec MakeCode.
Comment ajouter un bloc Tiny:bit Pro
- Veuillez accéder ci-dessous et cliquer sur « Nouveau projet » https://makecode.microbit.org/
- Cliquez sur l'icône de configuration -> Extension
- Fonction de base pour la bibliothèque Tiny:bit Pro
- https://github.com/YahboomTechnology/Tiny-bitLib
- Fonction de vision AI pour la bibliothèque Tiny:bit Pro
- https://github.com/YahboomTechnology/K210-Module.git
- Le bloc Tiny:bit est ajouté.
Divers exemples de codes de base pour Tinybit Pro sont téléchargés ci-dessous.
Éclairage par échange de lumière RVB : https://makecode.microbit.org/_EL3LmqJTwKKT
Contrôle de la vitesse de déplacement de la voiture : https://makecode.microbit.org/_9oJaEzErWisY
Éviter les ultrasons avec la lumière et le son : https://makecode.microbit.org/_P7WYcMXvUTqt
Contrôle vocal de la lumière : https://makecode.microbit.org/_KDDPHmJcaRut
Toupie : https://makecode.microbit.org/_Wv0dPq5K8bFV
Divers exemples de codes de vidéo AI pour Tinybit Pro sont téléchargés ci-dessous.
Reconnaissance des couleurs - Code de voiture Microbit : https://makecode.microbit.org/_1p84eJ9VxUkK
Code du module de reconnaissance des couleurs -K210 :
importer un capteur, une image, une heure, un écran LCD
à partir des modules importer ybserial
heure d'importation
série = ybserial()
LCD.init()
capteur.reset()
capteur.set_pixformat(capteur.RGB565)
capteur.set_framesize(capteur.QVGA)
capteur.skip_frames(temps = 100)
capteur.set_auto_gain(Faux)
capteur.set_auto_whitebal(Faux)
horloge = heure.horloge()
print("Tenez l'objet que vous souhaitez suivre devant la caméra dans la boîte.")
print("ASSUREZ-VOUS QUE LA COULEUR DE L'OBJET QUE VOUS SOUHAITEZ SUIVRE EST ENTIÈREMENT ENCLAVÉE PAR LA BOÎTE !")
# Capturez les seuils de couleur pour tout ce qui se trouvait au centre de l'image.
# 50x50 centre du QVGA.
r = [(320//2)-(50//2), (240//2)-(50//2), 50, 50]
pour i dans la plage (50) :
img = capteur.snapshot()
img.draw_rectangle(r)
écran LCD (img)
print("Seuils d'apprentissage...")
seuil = [50, 50, 0, 0, 0, 0] # Valeurs moyennes L, A, B.
pour i dans la plage (50) :
img = capteur.snapshot()
hist = img.get_histogram(roi=r)
lo = hist.get_percentile(0.01) # Obtenez le CDF de l'histogramme dans la plage de 1 % (AJUSTEZ SI NÉCESSAIRE) !
hi = hist.get_percentile(0.99) # Obtenez le CDF de l'histogramme dans la plage de 99 % (AJUSTEZ SI NÉCESSAIRE) !
# Moyenne en valeurs de centiles.
seuil[0] = (seuil[0] + lo.l_value()) // 2
seuil[1] = (seuil[1] + hi.l_value()) // 2
seuil[2] = (seuil[2] + lo.a_value()) // 2
seuil[3] = (seuil[3] + hi.a_value()) // 2
seuil[4] = (seuil[4] + lo.b_value()) // 2
seuil[5] = (seuil[5] + hi.b_value()) // 2
pour blob dans img.find_blobs([seuil], pixels_threshold=100, area_threshold=100, merge=True, margin=10) :
img.draw_rectangle(blob.rect())
img.draw_cross(blob.cx(), blob.cy())
img.draw_rectangle(r, couleur=(0,255,0))
écran LCD (img)
print("Seuils appris...")
print("Démarrer la reconnaissance des couleurs...")
tandis que(Vrai) :
horloge.tick()
img = capteur.snapshot()
pour blob dans img.find_blobs([seuil], pixels_threshold=100, area_threshold=100, merge=True, margin=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())
imprimer(seuil)
si len(x)<3 :
i_flag = 3-len(x)
x = "0"*i_flag + x
si len(y)<3 :
i_flag = 3-len(y)
y = "0"*i_flag + y
si len(w)<3 :
i_flag = 3-len(l)
w = "0"*i_flag + w
si len(h)<3 :
i_flag = 3-len(h)
h = "0"*i_flag + h
send_data = "$"+"01"+ x+','+ y+','+ w+','+ h+','+"#"
#print(envoyer_données)
pour i dans la plage (1,5) :
serial.send(envoyer_données)
temps.sleep_ms(5)
écran LCD (img)
#print(horloge.fps())
Contrôle numérique manuscrit - Code de voiture Microbit : https://makecode.microbit.org/_7e82r50rpfzC
Code du module de contrôle numérique manuscrit K210 :
importer un capteur, une image, une heure, un écran LCD
de maix importer KPU
importer gc
à partir des modules importer ybserial
heure d'importation
série = ybserial()
LCD.init()
capteur.reset()
capteur.set_pixformat(capteur.RGB565)
capteur.set_framesize(capteur.QVGA)
capteur.set_windowing((224, 224))
capteur.skip_frames(temps = 100)
horloge = heure.horloge()
kpu = KPU()
kpu.load_kmodel("/sd/KPU/mnist/uint8_mnist_cnn_model.kmodel")
msg_ = ""
tant que Vrai :
gc.collect()
img = capteur.snapshot()
img_mnist1=img.to_grayscale(1)
img_mnist2=img_mnist1.resize(112,112)
img_mnist2.invert()
img_mnist2.strech_char(1)
img_mnist2.pix_to_ai()
sortie = kpu.run_with_output(img_mnist2, getlist=True)
max_mnist = max(sortie)
index_mnist = sortie.index(max_mnist)
msg_ = str(index_mnist)
send_data = "$"+"11"+ msg_ +','+"#"
temps.sleep_ms(5)
serial.send(envoyer_données)
score = KPU.sigmoid(max_mnist)
si index_mnist == 1:
si score > 0,999 :
display_str = "num: %d" % index_mnist
imprimer(display_str, score)
img.draw_string(4,3,display_str,couleur=(0,0,0),échelle=2)
elif index_mnist == 5:
si score > 0,999 :
display_str = "num: %d" % index_mnist
imprimer(display_str, score)
img.draw_string(4,3,display_str,couleur=(0,0,0),échelle=2)
autre:
display_str = "num: %d" % index_mnist
imprimer(display_str, score)
img.draw_string(4,3,display_str,couleur=(0,0,0),échelle=2)
écran LCD (img)
kpu.deinit()
Effet de cas