01/12/2015

les robots
/

microcontrôleurs
/

électronique
/

éducation


J’ai assisté à un atelier Nodebots il y a quelques semaines sur BuzzConf, et Charlotte et moi avons monté un ensemble mBot et avons commencé à le programmer.

Mbot avec Amelia et Charlotte

Nous avons fait une piste de course pour mBot avec un peu de corflute avec une piste pour le robot en ruban isolant noir. Le défi était d’écrire un programme qui suivait la ligne rapidement et sans renverser toutes les maisons et les gens!

Le mBot lui-même est un bel appareil, bien emballé et livré avec à peu près tout ce dont vous avez besoin pour commencer, même un tournevis double. Les seules autres choses dont vous avez besoin sont une paire de pinces à aiguilles ou une pince à épiler qui maintiennent les écrous lorsque vous insérez les boulons de montage du moteur et 4 piles AA pour le boîtier de batterie. Tout enfant qui a assemblé des Lego pourra suivre avec un peu d’aide.

Tout cela a une présence joyeuse et non menaçante, ce qui est encourageant pour les enfants.

Carte mCore

Le choix des connecteurs 6P6C est quelque peu inspiré car ils sont bon marché et faciles à utiliser. Sur les cartes que nous avons, il y a 4 prises, et chacune a l’alimentation et la terre, deux propres broches d’E / S et 2 broches pour un I2C / TWI partagé. Les cartes plus modernes semblent avoir un mélange de différents types de portes. Il y a aussi une rangée de 6 trous traversants derrière chaque connecteur qui offrent les mêmes broches de la manière difficile la plus habituelle. Si vous avez déjà d’autres éléments Arduino, vous devrez peut-être combler ces lacunes avec des en-têtes de broches avant d’assembler votre robot.

Il y a également quelques pilotes de pont en H déjà sur la carte pour faire fonctionner les moteurs à courant continu, et un circuit de charge LiPo de 3,7 avec la prise habituelle et quelques LED RVB et une interface USB et ainsi de suite, qui Cela signifie que la mise en service du système est assez simple. Quelques rubriques au dos permettent de connecter un module Bluetooth série.

Périphériques

Le kit MBot est livré avec quelques autres petites cartes … une carte de transducteur à ultrasons et une carte de détecteur de ligne. Ceux-ci se vissent parfaitement au châssis du mBot et se connectent avec de petits câbles 6P6C. Rien de beau, mais tout à fait utilisable.

Les moteurs fournis sont des unités assez petites avec d’assez bonnes roues et pneus en caoutchouc. Ils sont insérés directement dans les ports du moteur de la carte mCore et les roues glissent simplement sur les essieux.

Il y a un boîtier de 4 piles AA inclus, alors prenez des piles alcalines fortes et vous êtes parti. Pour jouer avec la télécommande fournie, prenez une pile au lithium CR2025 lorsque vous êtes en déplacement.

Alors maintenant que vous avez assemblé votre robot, que pouvez-vous en faire?

Nodebots

L’atelier Buzzconf a utilisé NodeBots, que nous avons consciencieusement installés, et à ma grande surprise, cela a plutôt bien fonctionné. J’ai même eu l’interface Bluetooth pour bien jouer avec Linux, miracle des miracles.

Mais je ne suis pas fan de Node malgré (ou peut-être parce que …) pour avoir travaillé avec lui, et je ne suis pas sûr qu’il s’adapte bien au robot. D’une part, vous êtes sûr que si vous allez devoir apprendre un langage de programmation ces jours-ci, cela pourrait aussi bien être Javascript … il est utilisé dans tant de choses.

Par contre, enseigner le Javascript est une expérience plutôt sombre … il y a beaucoup de complexité à digérer au départ et pas beaucoup de cohérence.

mBlockly pour iOS

capture d'écran mblockly

Cette application a été bien chargée sur un iPad récent (iOS 8.1) et a immédiatement trouvé l’interface Bluetooth du robot. (Sur un ancien iPad 2 (iOS 6), il a commencé mais n’a pas pu trouver le robot.) Il a l’air bien, très sympathique et sera immédiatement connu de tous ceux qui ont joué avec des membres de la famille Scratch.

Malheureusement, c’est un peu minime: il n’y a pas de variables et le contrôle du moteur est limité. Vous pouvez régler les moteurs pour avancer ou reculer ou tourner à gauche ou à droite. Vous pouvez faire varier la vitesse totale, mais vous ne pouvez pas contrôler les deux moteurs séparément, par ex. Réglez la gauche pour tourner en avant à 50 et la droite en avant à 100. C’est un peu limitant pour des choses comme le suivi de ligne.

Mais authentique le problème est que c’est sloooooooow. Chaque message fait des va-et-vient entre le robot et le contrôleur de type iPad, et malheureusement, au moment où les messages ping du robot au contrôleur et vice-versa, le robot a déjà quitté la ligne ou heurté le mur ou autre.

Alors j’ai quitté mBlockly pour l’instant …

mBlock

mBlock 2.2 pour Mac

Capture d'écran mblock mac

Nous arrivons maintenant à la partie où nous parlons du juste milieu.

mBlock fonctionne en compilant du code de bloc de type Scratch dans un C ++ arduino, puis en utilisant la chaîne d’outils Arduino pour charger le code sur le robot. Le chargement fonctionne bien via un câble USB, mais je n’ai jamais fait fonctionner correctement le chargeur Bluetooth. Une fois le code chargé, le câble USB peut être déconnecté et le robot continuera à fonctionner indépendamment.

Le code de bloc a des variables et des fonctions, ce qui est génial. Il n’y a pas grand chose à essayer pour apprendre la programmation de base sans eux.

Génération de code Arduino

génération de code mblock

Malheureusement, la génération de code est un peu funky. Il n’y a aucune sorte de fin (tout est un double) et les chaînes ne s’échappent pas toujours. Les noms de fonctions sont tronqués dans l’espace blanc, il vaut donc mieux ne pas définir deux fonctions appelées « dire bonjour » et « dire au revoir ». Parfois, les choses semblent sortir dans un ordre différent de celui qu’elles entrent.

Les messages d’erreur du compilateur C ++ sont affichés à l’utilisateur, et il est difficile d’imaginer qu’un enfant du primaire fasse beaucoup avec:

project U________d11_4.ino.cpp:24:11 error: cannot convert 'StringSumHelper' to 'double' in assignment

C’est une bonne idée, mais elle ne semble pas prête à être utilisée en classe …

Le deuxième problème est qu’il faut du temps pour compiler et télécharger le système Arduino, et une fois téléchargé, il n’y a aucun moyen de faire une seule étape ou de faire échouer le robot. Le dépannage est un énorme avantage pour les programmeurs inexpérimentés, donc cela semble être une mauvaise limitation.

mBlock 3.1 pour Windows

image

mBlock pour Windows a une version plus récente, 3.1.

Je n’ai regardé cela que rapidement. Bien qu’il s’agisse d’une nouvelle version majeure, la génération de code est toujours foutue. C’est assez décevant. Je pense que la génération de code pour Arduino est une bonne approche, mais cela n’a aucun sens s’ils ne la prennent pas au sérieux.

Il existe deux approches opposées ici: la méthode Nodebots / mBlockly pour faire du robot un périphérique sous le contrôle du PC et la méthode mBlock pour créer du code à télécharger sur le robot. Je ne suis vraiment satisfait d’aucun d’entre eux.

Non lié mais déboguable

Il y a des exigences contradictoires ici: je veux que le robot s’exécute sans lien et je veux qu’il soit débogué. Je veux également éviter de laisser le robot exécuter une pile de PC complète, même si les ordinateurs à carte unique comme RPi Zero rendent cela très pratique – cela semble être beaucoup plus complexe.

(En fait, je pourrais être convaincu, dont quelqu’un pouvait insérer un IDE de type Scratch basé sur le Web sur le RPi lui-même, aucune configuration n’était donc nécessaire. Ce serait cool.)

Moniteur à distance

Jeu d'instructions CHIP-8

Une autre alternative serait d’exécuter une sorte de moniteur / interpréteur qui pourrait gérer un comportement en une étape et ainsi de suite. Repéré si vous voulez à l’idée d’interpréter les codes d’octets sur un ATMega328, mais le premier ordinateur de ma maison était un DREAM 6800, qui pouvait exécuter des programmes dans un mini-langage interprété appelé Chip8. C’était un mini-langage très très simple que vous pouvez voir dans la liste d’instructions à droite.

Un bytecode pour Scratch est-il trop difficile à imaginer?

Langue de configuration matérielle

L’autre chose qui serait utile est un «langage de configuration matérielle» pour le robot: De cette façon, vous pouvez définir quelles broches / ports il y a quelles fonctions, et quels paramètres ils acceptent / retournent, et ainsi vous retrouverez avec un format structuré et plus lisible code.

  • Pourquoi le suiveur de ligne renvoie-t-il 0, 1, 2 ou 3?
  • Pourquoi les régimes moteur varient-ils de 0 à 255?
  • Pourquoi le moteur ne se déplace-t-il pas réellement à des vitesses inférieures à 50?

Ce sont des questions simples pour quelqu’un avec des connaissances en robotique, mais pas tellement pour quelqu’un sans connaissances de base.

MBot est un joli petit appareil qui est très convivial pour les enfants à assembler et à commencer à utiliser, et si vous avez quelqu’un à proximité qui connaît quelque chose en programmation, les enfants peuvent s’amuser avec lui.

Mais à mon avis, il reste encore quelques itérations avant d’être prêt à passer la main à un enseignant sans aucune idée de la programmation.

J’ai beaucoup appris sur ESP8266 sur LinuxConf cette année, et l’approche interprétée semble plus réaliste …

Voir aussi Flobot: Un langage graphique pour le flux de données vers les robots pour de nouvelles idées à l’avenir!

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *