Intelligence embarque IMA5 2022/2023 G2 : Différence entre versions

De Wiki d'activités IMA
(Maquette)
(Maquette)
Ligne 95 : Ligne 95 :
  
  
[[Fichier:IMA5sc 2022 23 G2 piece en bois.jpg|thumb|center|400px|Pièces en bois pour maquette]]
+
[[Fichier:IMA5sc 2022 23 G2 maquette1.jpg|thumb|center|400px|Pièces en bois pour maquette]]
[[Fichier:IMA5sc 2022 23 G2 piece en bois.jpg|thumb|center|400px|Pièces en bois pour maquette]]
+
[[Fichier:IMA5sc 2022 23 G2 maquette2.jpg|thumb|center|400px|Pièces en bois pour maquette]]

Version du 28 novembre 2022 à 16:42

Choix du projet

Nous avons décidé, d'utiliser dans la détection de problème dans le calibrage d'une machine

Contexte

De nos jours, la fabrication des engins de transports dans de nombreux domaines (e.g l'aéronautique, ferroviaire) sont réalisées par des machines. Et le calibrage de ces machines doit être précis pour fixer les éléments. Cependant, lorsque les moteurs commencent à être usés, le calibrage de ce dernier peut être imprécis. Une fluctuation de calibrage peut générer une longue erreur de production (ceci est grave pour l'entreprise de production en chaîne), il est alors nécéssaire de détecter ces erreurs de calibrage pour adopter une solution.

Idée

Le capteur sera monté sur un bras. On veut détecter la présence de trous sur des pièces afin d'y fixer des rivets. Ainsi, on peut mesurer la taille et profondeur des trous. Il y aura d'autres forme de détection : pronfondeur des trous, nombre de trous, etc

STMCubeIDE

Premier programme : Blink

Pour se familiariser avec STMCubeIDE, on essaye de faire fonctioner la carte Nucleo-F401RE, la LED utilisateur LD2 est situé sur le pin PA5 (GPIOA, GPIO_PIN_5) Pour se faire :

  • On crée un nouveau projet STM
  • On vérifie la configuration des GPIO et Clock
  • On clique sur Device Generation Tool Code Generation
  • On ouvre main.c et on ajoute ce code dans la boucle loop:
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 1);
  HAL_Delay(1000);
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5, 0);
  HAL_Delay(1000);
  • On build et on run le debug

Pour plus de détail, suivre sur ce lien

Premier pas avec le capteur NUCLEO-53L5A1

On récupère le projet sur ce fichier : Fichier:Ai4industry-master.zip

On ouvre ce projet sur l'IDE, puis on configure un utilitaire port série (par exemple minicom) :

  • Baud rate : 460800
  • 8N-1
  • Par défaut l'écoute sur /dev/ttyACM0

Le programme initial du projet nous affiche les valeurs sur un tableau 4*4, nous pouvons modifier cette variable pour avoir toute les valeurs dans un tableau 8*8 : Profile.RangingProfile = RS_PROFILE_8x8_CONTINUOUS;

Maintenant on essaye de récupèrer les valeurs vers un fichier csv, on modifie la fonction print_result pour afficher les valeurs séparées d'une virgule :

  static void print_result(RANGING_SENSOR_Result_t *Result)
  {
    int8_t j, k, l;
    uint8_t zones_per_line;
  
    zones_per_line = ((Profile.RangingProfile == RS_PROFILE_8x8_AUTONOMOUS) ||
           (Profile.RangingProfile == RS_PROFILE_8x8_CONTINUOUS)) ? 8 : 4;
  
    for (j = 0; j < Result->NumberOfZones; j += zones_per_line)
    {
      for (l = 0; l < RANGING_SENSOR_NB_TARGET_PER_ZONE; l++)
      {
        /* Print distance and status */
        for (k = (zones_per_line - 1); k >= 0; k--)
        {
   	   if((l!=0) || (k!=(zones_per_line - 1)) || (j!=0)){
   	       	   printf(",");
   	 }
          if (Result->ZoneResult[j+k].NumberOfTargets > 0)
            printf("%ld",(long)Result->ZoneResult[j+k].Distance[l]);
          else
            printf("0");
        }
      }
    }
    printf("\r\n");
  }

Puis on récupère les donénes dans un fichier csv : cat /dev/ttyACM0 >> data.csv


Liste des problèmes et résolutions

  • Impossible de télécharger le firmware de la carte
    • Résolution : Configurer le proxy (mettre en manuel et non native et configurer HTTP et HTTPS et tout cocher)


  • Erreur lors du débug : Could not determine GDB version using command: arm-none-eabi-gdb --version
    • Résolution : Lancer sur un terminal : sudo apt-get install libncurses5:amd64 source

Maquette

On réalise 4 pièces en bois pour simuler une pièce à fixer avec différents trous :

Pièces en bois pour maquette

Puis on réalise notre maquette, on fixe le capteur de distance sur un support vertical, on place les pièces sur un autre support à même hauteur du capteur pour simuler le fait que la pièce arrive devant le bras fixeur (ou le capteur de distance)


Pièces en bois pour maquette
Pièces en bois pour maquette