Bienvenue sur le site de l'équipe Poivron

Ici nous vous informerons des dernières nouvelles concernant l'avancement de nos projets et autres !

Bonne lecture !

Suivez notre évolution par flux RSS logo RSS

Dernières nouvelles

Et si on parlait de l’USB

7 juillet 2025

Après plusieurs participations, nous avons observé des problèmes de communication I2C entre nos cartes équipées de Raspberry Pi Pico. Nous avions deux choix :

  • Continuer à analyser le problème côté logiciel pour rétablir la communication en cas de coupure ;
  • S’assurer qu’il n’y ait plus de coupure de communication.

Nous avions tenté, avec plus ou moins d’acharnement et pas trop de succès, le premier choix. La difficulté résidant dans la reproduction du défaut. On peut toujours débrancher un fil, mais le débranche-t-on le bon fil ? au bon moment ? Bref, nous n’avons rien produit de concluant.

Pour la seconde solution, nous faisons l’hypothèse que les problèmes de communication viennent des perturbations électromagnétiques. Alors qu’est-ce qui permettrait de se protéger des perturbations électromagnétiques ?

  • Un protocole qui utilise une paire différentielle ;
  • Un câble blindé ;
  • Un connecteur qui relie le blindage à la masse proprement.

Et quel protocole (relativement) bien supporté par tout microcontrôleur moderne coche ces cases ? Devinez... L’USB !

Des notions d’USB

De son nom, Universal Serial Bus, nous pourrions croire que le protocole se rapproche d’une liaison UART un peu évoluée, mais il n’en est rien. Le protocole est organisé autour d’un "hôte" (host) et des périphériques (devices). La norme USB décrit un empilement de protocoles, de la définition du 0 et du 1 sur le bus à la définition des classes de périphériques (Devices class) qui vont jusqu’à spécifier, de manière flexible, les cas d’utilisation de l’USB.

Ces classes de périphérique permettent de prendre en charge un grand nombre de périphérique différents sans développer de pilote spécifique à chaque fois. Quelques exemples de classes :

  • Video device class : pour les webcam, autorisant des flux élevés de données mais avec de potentielles pertes de débit
  • Mass Storage class (MSC) : pour les systèmes de stockage tels que les clés USB, les disques USB. C’était aussi utilisé sur les vieux téléphones portables
  • Media storage class : pour les systemes de stockage qui vont gérer les permissions sur les fichiers indépendamment de l’hôte USB. C’est ce qui est actuellement utilisé sur les téléphones portables pour transférer des photos ou des vidéos. Vous n’avez accès qu’à ce que le téléphone vous propose.
  • Communication device class (CDC) : pour tout ce qui émule une liaison série. Si vous mettez un composant pour convertir votre UART en liaison USB, ce composant se déclarera certainement en CDC. C’est ainsi que le Raspberry Pi Pico (et probablement les autres microcontrôleurs) communique avec l’ordinateur par défaut
  • Human interface device (HID) : pour les claviers, les souris, mais aussi les manettes de jeux, et entrées de simulateurs (cockpits d’avion, volants et pédales de voiture).

Pour une liste plus complète, wikipédia en anglais propose quelque chose de compréhensible.

Vouloir utiliser l’USB sans utiliser l’une des classes existante demande un effort considérable ! Bref, nous ne le conseillons pas !

La flexibilité du protocole USB en fait sa force mais crée une complexité qui fait que, même si nous maîtrisions parfaitement le protocole, nous ne pourrions le résumer en un billet de blog. Le meilleur résumé que nous pouvons vous proposer en ligne est USB in a Nutsheel. En français, j’ai le souvenir d’une revue qui présentait l’USB à travers une série d’articles, mais je n’en trouve pas la trace.

Et nos microcontrôleurs, dans tout ça ? La plupart des cartes pour développer sur microcontrôleur proposent un port USB, mais nous les classerons en 3 familles :

  • Celle où le microcontrôleur sort les données en UART et les envoie à un composant qui les adapte pour l’USB
  • Celle où le microcontrôleur supporte nativement l’USB, mais pour la partie "périphérique" seulement
  • Celle où le microcontrôleur supporte nativement l’USB, la partie "hôte" et la partie "périphérique"

Les 2 premières familles peuvent envoyer des données sur le bus USB sans soucis. La première sera restreinte à la classe CDC, tandis que la seconde sera plus flexible et pourra, par exemple, émuler un clavier ou une souris.

Mais seuls les microcontrôleurs appartenant à la 3e famille peuvent coordonner le bus USB. La solution "simple" est de laisser un ordinateur embarqué assurer ce rôle. Mais ce n’est pas notre souhait. Le Raspberry Pi Pico, basé sur le RP2040 est de la 3e famille, qui support hôte et périphériques. Notons qu’ayant qu’un seul port, un seul des rôles USB (hôte ou périphérique) peut être actif à un moment donné.

Hôte USB

Pour tester la fonctionnalité hôte USB, nous utilisons le code de démonstration fourni dans pico-example : host_cdc_msc_hid.

L’exemple de la fondation RaspberryPi marche bien. Ce qui nous a pris du temps :

  • Compiler l’exemple dans un projet indépendant ;
  • Avoir le bon câble, de type MicroUSB OTG (lien boutique) ;
  • S’installer pour récupérer les retours du microcontrôleur hôte.

Câble micro USB OTG

Si le port USB est pris, il faut récupérer les informations par un autre moyen. Nous utiliserons la liaison UART avec un convertisseur UART / RS232 puis un second convertisseur RS232/USB (parce que nous avions ceci sous la main).


Montage pour tester l’USB hôte

Note : sur le montage ci-dessus, il manque encore un câble USB pour l’alimentation...

L’exemple permet de gérer 4 types de périphériques USB :

  • HUBs ;
  • HID (Claviers, souris, manettes) ;
  • CDC (Communication type série) ;
  • MSC (Mass storage : clé USB, disque USB).

Pour tester, nous commençons par relier un Raspberry Pi Pico avec un bête code printf("exemple\n") toutes les secondes à notre hôte USB. La connexion est détectée et les informations sont bien reçues !

Sortie du programme TinyUSB Host CDC MSC HID Example # Branchement d'un Rapsberry Pi Pico CDC Interface is mounted: address = 1, itf_num = 0 Baudrate: 115200, Stop Bits : 0 Parity : 0, Data Width: 8 A device with address 1 is mounted # Echo des données reçues Exemple Exemple Exemple # Déconnection du Raspberry Pi Pico A device with address 1 is unmounted CDC Interface is unmounted: address = 1, itf_num = 0 # Branchement d'un hub USB A device with address 1 is mounted # Branchement d'un Rapsberry Pi Pico sur le hub CDC Interface is mounted: address = 2, itf_num = 0 Baudrate: 115200, Stop Bits : 0 Parity : 0, Data Width: 8 A device with address 2 is mounted # Echo des données reçues Exemple Exemple Exemple # Déconnection du Raspberry Pi Pico A device with address 2 is unmounted CDC Interface is unmounted: address = 2, itf_num = 0 # Déconnection du hub USB A device with address 1 is unmounted

0 commentaire


Après la Coupe 2025

29 juin 2025

Voilà un mois que la coupe 2025 s’est terminée. C’était pour nous une coupe très particulière. En effet, nous étions grandement impliqués dans les deux équipes "Riombotique", au point d’avoir décidé de ne pas réaliser de robot pour Poivron Robotique cette année. C’est une expérience totalement différente avec énormément de trucs chouettes et quelques écueils qui nous ont fait mal.

L’une de nos conclusions, c’est que nous aimons notre équipe "Poivron Robotique". Mais Poivron Robotique c’est quoi ? Notre équipe n’est pas la seule à se poser ce genre de questions existentielles, vous avez Les Karibou qui présentent leurs réflexions à ce sujet.

En très bref, Poivron Robotique est bâti sur deux axes : maîtriser les technologies que nous utilisons et écrire des articles les présentant. Le détail de nos réflexions se trouve sur notre page Présentation.

La suite

Poivron Robotique sera probablement présent à la coupe de France de Robotique 2026. Nous travaillons toujours - bien qu’avec moins d’acharnement - sur nos articles sur le déplacement d’un robot.

Après des échanges avec différentes équipes, nous allons troquer notre bus de communication I2C pour un bus USB. Ce qui amènera probablement un ou plusieurs articles sur l’USB. Nous cherchons également à stocker nos logs, pour enregistrer massivement ce que se passe sur le robot. Enfin, nous cherchons un moyen de mieux comprendre l’environnement du robot à partir des capteurs VL53L8CX. Nous avons bien quelques idées mais rien d’abouti pour l’instant.

L’été s’annonce chargé et j’espère que nous reprendrons le rythme de publication que nous avions les années précédentes !

0 commentaire


Bonne année 2025

15 février 2025

Nous profitons de cette nouvelle année pour présenter, tardivement, nos meilleurs vœux pour cette année 2025.
Après une année 2023-2024 bien chargée, nous levons un peu le pied, ce qui explique cette activité éditoriale bien plus faible.
Cependant, plus faible ne veux pas dire inexistante ! Nous préparons une série d’articles sur le déplacement des robots qui sera publiée sur ce site quand elle sera prête, et pas avant. Si vous êtes curieux, ou que vous souhaitez participer à la rédaction de ces articles, notre bouillon (qui commence à prendre forme) est en ligne sur ce le wiki Eurobot.

Nos projets se concentrent sur les activités du club robotique de Riom. Ces activités nous amèneront probablement à publier des articles mais pas les points d’avancement que nous partagions habituellement sur ce site...

Bref, nous sommes toujours là, mais moins actifs ici !

0 commentaire


La coupe de France de Robotique 2024 - le bilan

19 mai 2024

Après une participation à la Coupe de France de robotique puis une participation à la Coupe d’Île de France, la fin du projet appelle un bilan et comme tous les ans, nous terminons ce projet avec une sensation d’inachevé.

Notre projet était ambitieux et supposait que nous partions d’une base solide - notre robot de l’année précédente.

Globalement, le travail réalisé cette année manquait de fiabilité :

  • La prise des pots était délicate et comptait énormément sur l’odométrie du robot. En l’absence de capteur dédié, le robot ne pouvait que supposer qu’il avait attrapé un pot.
  • La prise des plantes a gagné en fiabilité, ajustement après ajustement, mais avait parfois encore des ratés
  • Même la dépose des plantes ou relâcher un pot n’était pas fiable à 100%

Le robot de l’an dernier avait bien un ou deux soucis, tels que :

  • un plantage de la communication I2C ;
  • un plantage dans la lecture du gyroscope.

Nous avons observé ces soucis sur le robot de cette année également, dans une moindre mesure, certes, mais ces problèmes sont toujours présents. Et cette année, en plus, le robot pouvait redémarrer de manière "aléatoire". Nous ne l’avons observé que quelques rares fois en essais, mais une fois à notre dernier match de la coupe d’Île de France.


Vue arrière du robot (mars 2024)

Côté PAMI, c’est un peu le même constat. Nous sommes partis du code de déplacement du robot principal. Ceci nous a montré à quel point le code était réutilisable - et ça nous a fait vraiment plaisir ! Par contre, quand vous réglez l’asservissement la veille de la compétition, évidemment que le robot manque un peu de maturité. Nous nous sommes fait avoir par :

  • les boutons de sélection de couleur qui ont lâché les uns après les autres. Probablement à cause des efforts sur les contacts dû au manque de place sur le PAMI ;
  • la gestion des multiples tirettes et le départ différé. Un faux contact et votre PAMI s’enclenche. Au bout de 90s, il ne bouge pas, car il y a un autre PAMI devant lui. Quand les autres PAMIs partent, ils restent coincés derrière celui qui a fait un faux départ.
  • la gestion des piles. Nous avons limité nos essais pour ne pas vider nos batteries puis à la coupe d’Île de France, nous avons remarqué que notre chargeur de piles rechargeables était défectueux.

Les PAMIs juste avant le départ

Donc, oui, il y a des raisons d’être insatisfaits de nos robots.

Et de l’autre côté, nous avons rempli nos objectifs :

  • la manière d’attraper les pots était unique et n’était accessible qu’à un robot holonome ;
  • le robot a offert un vrai spectacle sur les tables de matchs ;
  • peindre le bois a rendu le robot plus lisible ;
  • nos PAMIs sont trop mignons - objectivement ;
  • les trajectoires courbes de nos PAMIs étaient classes.

Bref, nous espérons avoir quand même vendu du rêve, car c’était un de nos buts !

Alors pour fêter ça, voici une vidéo des meilleures actions du robot :


BestOf 2024 - 720p (18Mo).

0 commentaire


La coupe de France de Robotique 2024 - la compétition

19 mai 2024

 Compétition - J1 - Mercredi

Nous arrivons donc à la compétition avec un robot qui pourrait marcher mais qui ne marque pas forcément de points et un PAMI non-homologable.

Nous travaillons d’abord sur le PAMI, et relativement rapidement nous obtenons un PAMI homologable (tirette, bouton de couleur, ajustement de l’asservissement).

L’après-midi sera consacrée à l’activation des panneaux solaires avec un bras tenant un pot. Vers 15h30, nous nous dirigeons vers l’homologation. 15h40, nous sommes homologués.

Il nous reste donc du temps pour travailler sur le robot ! Et ça tombe bien car nous avons du travail ! Les servomoteurs nous posent toujours des soucis et nous découvrons que celui de la pince chauffe. Nous sortons alors notre scie à chantourner et nous installons un gros servomoteur à la place du petit qui actionnait la pince.

Rappelez-vous, notre grappin ressemblait à ça :


Le grappin !

Maintenant, c’est moins élégant, mais plus fonctionnel :


Grappin avec un gros servomoteur

Grappin avec un gros servomoteur

Le fonctionnement global des servomoteurs semble s’améliorer à partir de ce moment.

 Compétition - J2 - Jeudi

Nous attaquons notre premier match avec sérénité. Le robot ne va pas faire des merveilles, nous le savons. Nous sommes du côté Jaune, celui sur lequel nous ne nous sommes quasiment pas entraînés.

Le robot n’attrape que 3 pots sur les 5. Il tente de pousser les panneaux solaires avec un pot, les rate tous puis en tourne un en allant chercher une plante. Le robot attrape une plante et la met sur un bras qui n’avait pas attrapé de pot. Au deuxième essai, le robot n’arrive pas à attraper la plante et rentre déposer ses pots. Il embarque par hasard une plante violette qui restera debout dans la zone de dépose. Il traverse ensuite le terrain pour aller se recharger. Notre PAMI parcourt nominalement ses 80 cm.

Nous marquons 41 points face à Ze Crazy Team (66 points - leur robot était bien abouti, bravo à eux !).

  • 1 plante : 3 points
  • 1 panneau solaire : 5 points
  • Zone de recharge : 10 points
  • Estimation du score : 17 points
  • PAMI : 5 points
  • non forfait : 1 point.


Match 1 - 720p (61Mo) ou sur Youtube : Match 1

Nous profitons du temps entre les matchs pour homologuer les PAMIs 2 et 3.

Pour ce deuxième match, nous mettons 3 PAMIs sur la table en plus du robot. Le robot attrape parfaitement les pots, pousse avec succès les 3 panneaux solaires, tente d’attraper une plante - sans succès - puis dépose ses pots avant d’aller en zone de recharge. Le PAMI 1 fonctionne bien, le 2 a fait grève et le troisième s’est retrouvé bloqué par le 2e.

Pour le deuxième match, nous marquons 51 points face à AREM (qui ne quitte pas sa zone de départ).

  • 3 panneaux solaires : 15 points
  • Zone de recharge : 10 points
  • Estimation du score : 20 points
  • PAMI : 5 points
  • non forfait : 1 point.


Match 2 - 720p (18Mo) ou sur Youtube : Match 2

Nous finissons le match vers 16h30. Il nous reste toute la soirée pour atteindre notre objectif : attraper une plante et la mettre dans un pot. Et quitte à modifier la stratégie, autant en profiter pour évacuer le robot du chemin des PAMIs. Car actuellement, si le robot rencontre un obstacle sur le chemin de la recharge, il se dirigera vers la zone proche des PAMI.

La soirée sera longue :

  1. Changement de la zone de départ avec re-calibration de l’attrapage des pots
  2. Modification de l’asservissement du robot sur les plantes, nous divisons par deux la vitesse d’approche, ce qui améliorera nettement la chance d’attraper une plante
  3. En cas d’échec, le robot ne rentre plus directement à la zone de dépose, il tente sa chance sur d’autres zones contenant des plantes

 Compétition - J3 - Vendredi

Notre troisième match sera un match en demi-teinte. Le robot attrape ses deux pots avants et seulement un pot à l’arrière. Il va ensuite attraper une plante dans la première zone. En fait, il en attrape deux. L’une tombe dans le pot, l’autre devant le robot et se couche. Rapidement, le robot détecte qu’il ne pourra pas attraper une seconde plante dans cette zone et va tenter sa chance vers une autre zone de plantes. Il attrape une 2e plante puis échange ses pots avants avec ses pots arrières. Il va chercher sa troisième plante, l’attrape, mais la pose dans le bras qui n’a pas de pot, la plante se couche devant le robot. Le robot semble tenter d’aller à la troisième zone, mais la plante est bloquée devant le capteur, il rentre à sa zone de dépose.

Mais il ne dépose pas ses plantes !

Le code de fin de match s’enclenche et le robot abandonne son action pour aller vers la zone opposée, laissant ainsi la place aux PAMIs. S’il marque les points de la zone de recharge, ce n’est que grâce à un bras déplié. Les PAMIs de leur côté cafouillent. Le premier part comme s’il était de la couleur opposée, les suivants ne bougent pas.

En termes de mouvement, c’est un match magnifique, notre plus belle action réussie, un robot en mouvement jusqu’à la dernière seconde. En termes de points, c’est juste la déprime totale :

  • Zone de recharge : 10 points
  • Estimation du score : 10 points
  • non forfait : 1 point.


Match 3 - 720p (32Mo) ou sur Youtube : Match 3

Évidemment, un point pareil, nous le réglons avant le prochain match ! Ce temps entre les matchs sera pour nous l’occasion de faire homologuer un 4e PAMI.

Le quatrième match sera assez similaire au 3e, à 3 détails près :

  1. Le robot dépose sa récolte dans la zone de dépose
  2. Le robot tente de traverser le terrain, mais n’arrive pas à sa zone de recharge avant les 90s. Il s’arrête à 10 cm du but
  3. Les 4 PAMIs partent et marquent des points

Nous marquons 37 points :

  • 2 plantes dans leur pot : 8 points
  • Zone de recharge - échec : 0 point
  • Estimation du score : 8 points
  • PAMI : 20 points
  • non forfait : 1 point.


Match 4 - 720p (32Mo) ou sur Youtube : Match 4

C’est bien, c’est le premier match où nous marquons des points avec des plantes ! Nous avons grandement fiabilisé le robot, rajouté des PAMIs sur la table et marqué moins de points qu’au match 1 ou qu’au match 2.

Là, c’est le conseil de guerre ! Nous avons largement de quoi marquer 70 points sur la table et nous n’avons à peine fait la moitié. Nous relisons le règlement, faut-il vraiment arrêter le robot à 90s ? Réponse : non !

La soirée, puis la nuit, seront longues :

  • Nous changeons aussi la fin de la stratégie. Plus question de traverser la table, nous restons sur notre demi-table
  • Nous tentons d’activer les panneaux solaires en fin de match, dans la séquence de dépose des plantes.
  • Nous rajoutons un recalage pour assurer notre précision lors de l’activation des panneaux solaires.

Nous allons nous coucher après avoir testé le robot sur trois tables d’essai différentes.

 Compétition - J4 - Samedi

Pour la première fois, le robot attrape une troisième plante pour la mettre dans son pot. C’est peut-être un détail pour vous - 4 points, ce n’est pas énorme - mais pour nous, ça veut dire beaucoup ! Cette troisième plante justifie d’attraper plus que les 2 premiers pots, cette troisième plante justifie cette séquence d’inversion des pots... Bref, c’est un peu l’accomplissement de notre projet.

La suite sera un peu moins glorieuse. Nous avions calibré le robot sur les tables d’essai où il glissait plus que sur les tables de match. Il ratera ses 2 premiers panneaux solaires et frôlera le troisième (assez pour marquer les points). Les PAMIs vont encore se planter. Le premier atteint son objectif tandis que les quatre suivants vont se pousser, suffisamment pour qu’un second arrive à la jardinière la plus proche, mais ce sera bien par chance.

Nous marquons 57 points face à ARC :

  • 3 plantes dans leur pot : 12 points
  • Zone de recharge : 10 points
  • 1 Panneau solaire : 5 points
  • Estimation du score : 19 points
  • PAMI : 10 points
  • non forfait : 1 point.


Match 5 - 720p (32Mo) ou sur Youtube : Match 5

Un petit mot sur les PAMIs. S’ils n’ont pas brillé cette année, c’est pour plusieurs raisons :

  1. Le démarrage par tirette posait souci. C’est le même système que le gros robot, mais ces PAMIs sont bien plus légers, ils avaient tendances à être soulevés par la tirette.
  2. 1 tirette, ça va, 5, bonjour les dégâts. En partant en ligne, sur les derniers matchs seul le premier PAMI avait une tirette, les autres détectaient le départ du PAMI précédent.
  3. Le départ l’un après l’autre garantissait un effet boule de neige en cas de problème. Mais c’était plus pratique et surtout plus joli !
  4. Le bouton "couleur" - ou de sélection de l’équipe - a dysfonctionné sur 4 des 5 PAMIs.

Au classement, nous finissons 39e sur 97 équipes homologuées et avant-dernier des équipes Légendes 15e sur 16. C’est donc pour nous la fin de la compétition !

Quel bilan en tirons-nous ? Vous le saurez dans notre prochaine brève !

0 commentaire

page précédente 1 2 3 4 5 6 7 8 9 ... 36

Copyright "POIVRON" 2011-2023, tous droits réservés
Administration du site