IMA4 2017/2018 P25 : Essaim de Robots : Différence entre versions

De Wiki de Projets IMA
m (Transmission Infrarouge)
m (Transmission Infrarouge)
Ligne 682 : Ligne 682 :
  
 
Nous avions pensé utilisé l'intensité du signal reçu par le capteur afin de déterminer approximativement la distance du robot émetteur. Mais le capteur étant un tout ou rien, nous ne pouvions l'utilisé comme capteur analogique. Malheureusement la carte électronique était déjà partie en production, avec le câblage du récepteur sur une pin analogique. Nous allons donc faire correspondre le programme à cette contrainte, et utiliser la pin analogique comme une pin numérique.
 
Nous avions pensé utilisé l'intensité du signal reçu par le capteur afin de déterminer approximativement la distance du robot émetteur. Mais le capteur étant un tout ou rien, nous ne pouvions l'utilisé comme capteur analogique. Malheureusement la carte électronique était déjà partie en production, avec le câblage du récepteur sur une pin analogique. Nous allons donc faire correspondre le programme à cette contrainte, et utiliser la pin analogique comme une pin numérique.
Si nous avions eu le temps, nous aurions recâblé le récepteur sur une pin numérique et peut-être placé à la place branché une photodiode sur la pin analogique pour localiser approximativement un second robot.
+
Si nous avions eu le temps, nous aurions recâblé le récepteur sur une pin numérique et aurions peut-être branché à la place une photodiode sur la pin analogique pour localiser approximativement un second robot.

Version du 28 mars 2018 à 13:41


Présentation générale

Projet réalisé par : Benjamin Canu et Ganix Etcheguibel.

Description

Dans ce projet nous devons concevoir des mini-robots qui se comportent comme un essaim. Le principe de l'essaim se base sur les règles d'autonomie et de faible intelligence de chaque individu, ainsi que sur un faible de cout de production à l'individu et une robustesse à la variation de ceux-ci dans le groupe :

  • Autonomie énergétique, sensorimotrice et décisionnelle.
  • Faible intelligence : Aucune (ou très peu de communication), aucune connaissance de l'environnement global ou de l'ensemble du groupe, interactions uniquement avec l'environnement local.

Pour notre projet, nous prendrons comme but de réaliser la cartographie d'une pièce intérieure (sol plat et lisse, pas de perturbation).

Objectifs

  • Adaptation du châssis et de la carte électronique fournie à partir d'un ancien projet IMA.
  • Mise en place, sur ce châssis, de capteurs et LEDs.
  • Programmation des algorithmes de calcul des robots pour le maintient de la distance dans l'essaim, et l'évitement des obstacles.
  • Ajout des dispositifs nécessaires à la prise de mesure pour la cartographie.

Analyse du projet

Analyse du premier concurrent

Projet de robots vibrants développé à l’Université d’Harvard, est un ensemble de 1024 robots montés sur des tiges vibrantes, se plaçant sur le sol selon la forme donnée en image-ordre.

Ce groupe de robots permet la réalisation de figures complexes au sol, cependant leur moyen de mobilité fixe une vitesse fortement réduite (11h/forme) et donc n’est pas vraiment adaptée à l’analyse d’une pièce.

https://theconversation.com/thousand-robot-swarm-assembles-itself-into-shapes-30548

Analyse du second concurrent

Projet de drones volants, par GRASP Lab à l’Université de Pennsylvanie est un essaim de drones volants pouvant réaliser des figures, mouvements et organisations complexes.

Les drones permettent, si munis de caméra, de visualiser la pièce grâce à une vue de dessus rapide à mettre en place. Cependant cette vision de la cartographie n’est pas identique, car elle ne donne pas les même informations que les drones roulants (e.g.: un table vue de dessous est quatre pieds, vue de dessus elle est un rectangle). De plus, les drones peuvent cartographier en présence de personnes, si un traitement poussé est effectué en suite, mais il ne peuvent opérer dans une salle où l’air n’est pas stable.

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.423.203&rep=rep1&type=pdf

Scénario d'usage du produit ou du concept envisagé

Ces robots pourront être utilisés pour la cartographie de salles en intérieur.

Leur déploiement permettra ainsi, lors de l’évitement, d’enregistrer la position et la forme des obstacles et différents objets entreposés sans en connaître au préalable les paramètres.

Réponse à la question difficile

Aucune question difficile n'a été abordée lors de la présentation.


Préparation du projet

Choix techniques : matériel et logiciel (Ici pour deux robots)

Description Fabricant Référence Fabricant Fournisseur Quantité Lien fournisseur
Microcontrôleur Atmel ATMEGA328P-MU Mouser 2 https://www.mouser.fr/ProductDetail/Microchip-Technology-Atmel/ATMEGA328P-MU?qs=sGAEpiMZZMvqv2n3s2xjscfa4zIkTHJIR0ZBr3z9ETo%3d
Condensateur 100nF Kemet C0201C104K9PACTU Farnell 16 http://fr.farnell.com/kemet/c0201c104k9pactu/condensateur-mlcc-x5r-100nf-6/dp/1907036?st=Condensateur%20100nF
Condensateur 10uF Wurth Electronik 885012106006 Farnell 2 http://fr.farnell.com/wurth-elektronik/885012106006/condesateur-mlcc-x5r-10uf-6-3v/dp/2495147
Condensateur 22pF AVX 06036A220KAT2A Mouser 4 http://www.mouser.fr/ProductDetail/AVX/06036A220KAT2A/?qs=sGAEpiMZZMs0AnBnWHyRQKdiqyDPVQdATEC6RfUr2zQ%3d
Rectifier Diode Vishay Semiconductors GL34G-E3/83 Mouser 4 http://www.mouser.fr/ProductDetail/Vishay-Semiconductors/GL34G-E3-83/?qs=sGAEpiMZZMutXGli8Ay4kH9ZXA1Qtv9UOwbhSBXDb18%3d
Quartz ECS ECS-160-20-3X-TR Mouser 2 http://www.mouser.fr/ProductDetail/ECS/ECS-160-20-3X-TR/?qs=sGAEpiMZZMvAbnEMxb34PZ9bYWrwSXiB
Servo moteur Olimex Ltd. MS-R-6-40 Mouser 4 https://www.mouser.fr/ProductDetail/Olimex-Ltd/MS-R-6-40?qs=sGAEpiMZZMvuFyKEiodORqSYMvGj9ACrspkI9Ywy%252bNs%3d
Blue LED KingBright APHB1608LVBDZGKC Mouser 4 http://www.mouser.fr/ProductDetail/Kingbright/APHB1608LVBDZGKC/?qs=sGAEpiMZZMseGfSY3csMkcwbVq2rhH5Mu7mYFMpmGAhvgXBy5N%252b7kA%3d%3d
Green LED KingBright APT1608SGC Mouser 4 http://www.mouser.fr/ProductDetail/Kingbright/APT1608SGC/?qs=sGAEpiMZZMseGfSY3csMkeytxqHAv00AcF6Dm1xSW98%3d
Red LED KingBright APHB1608ZGSURKC Mouser 2 http://www.mouser.fr/ProductDetail/Kingbright/APHB1608ZGSURKC/?qs=sGAEpiMZZMseGfSY3csMkdKNYmh3uDipxtOOfF4A5sw%3d
Yellow LED KingBright APT1608SYCK Mouser 2 http://www.mouser.fr/ProductDetail/Kingbright/APT1608SYCK/?qs=sGAEpiMZZMsQtlBhqKq43Wn3QbM4OLG1
Orange LED KingBright APTD1608SECK Mouser 2 http://www.mouser.fr/ProductDetail/Kingbright/APTD1608SECK/?qs=sGAEpiMZZMt82OzCyDsLFNLWq0AjqZj1Bh9swU8LC68%3d
White LED 6200K OSRAM Opto Semiconductors LW L283-Q1R2-3K8L-1-Z Mouser 2 http://www.mouser.fr/ProductDetail/OSRAM-Opto-Semiconductors/LW-L283-Q1R2-3K8L-1-Z/?qs=sGAEpiMZZMsgSGrx0WqTbPUyJ8s29bGV
LED Infrarouge Farnell OP290A Optek technology 4 http://fr.farnell.com/optek-technology/op290a/led-t-1-3-4/dp/1497872
Récepteur Infrarouge Vishay Semiconductors TSOP38238 Mouser 6 http://www.mouser.fr/ProductDetail/Vishay-Semiconductors/TSOP38238/?qs=sGAEpiMZZMvAL21a%2fDhxMtgKho2n4%2fgBkajAZHPY5lE%3d
Circuit d'horloge Texas Instruments NE555 RS Online 2 https://fr.rs-online.com/web/p/timers/0526959/
1kΩ Resistor ROHM Semiconductor ESR03EZPJ102 Mouser 4 http://www.mouser.fr/ProductDetail/ROHM-Semiconductor/ESR03EZPJ102/?qs=sGAEpiMZZMu61qfTUdNhG1IKPAnaLGejvfM9hA7acow%3d
10kΩ Resistor ROHM Semiconductor ESR03EZPJ103 Mouser 4 http://www.mouser.fr/ProductDetail/ROHM-Semiconductor/ESR03EZPJ103/?qs=sGAEpiMZZMu61qfTUdNhG1IKPAnaLGejZIagwiN2IRk%3d
1MΩ Resistor ROHM Semiconductor ESR03EZPJ105 Mouser 2 http://www.mouser.fr/ProductDetail/ROHM-Semiconductor/ESR03EZPJ105/?qs=sGAEpiMZZMu61qfTUdNhG79AcIiSWYOgHx87yIE%2f9KKMdGhl9FJu5g%3d%3d
470Ω Resistor ROHM Semiconductor KTR03EZPJ471 Mouser 2 http://www.mouser.fr/ProductDetail/ROHM-Semiconductor/KTR03EZPJ471/?qs=sGAEpiMZZMu61qfTUdNhGwzMi690UM7UxxZFBtRl4vg%3d
330Ω Resistor ROHM Semiconductor ESR03EZPJ331 Mouser 2 http://www.mouser.fr/ProductDetail/ROHM-Semiconductor/ESR03EZPJ331/?qs=sGAEpiMZZMu61qfTUdNhG1IKPAnaLGejYH%2fBWzzt0Tg%3d
220Ω Resistor ROHM Semiconductor ESR03EZPJ221 Mouser 16 http://www.mouser.fr/ProductDetail/ROHM-Semiconductor/ESR03EZPJ221/?qs=sGAEpiMZZMu61qfTUdNhG1IKPAnaLGejce8FZC1%2fFYU%3d
Switch ALPS SKQGADE010 Mouser 2 http://www.mouser.fr/ProductDetail/ALPS/SKQGADE010/?qs=sGAEpiMZZMsqIr59i2oRcrO5GDYRXDIX6cdtN26xmPE%3d
USB Chip FTDI FT232RL-REEL Mouser 2 http://www.mouser.fr/ProductDetail/FTDI/FT232RL-REEL/?qs=sGAEpiMZZMs5ceO8zL%252bTxyQLQIH6hE7q
USB-C Connector Molex 105450-0101 Mouser 2 https://www.mouser.fr/ProductDetail/Molex/105450-0101?qs=sGAEpiMZZMulM8LPOQ%252byk43rDx%252b4l5FzJ4YNghWv4pnX6X7mot%2f43w%3d%3d
Régulateur 5v Texas Instruments LM1117IMPX-5 Mouser 2 https://www.mouser.fr/ProductDetail/Texas-Instruments/LM1117IMPX-50-NOPB/?qs=X1J7HmVL2ZGGwLlD0uGqKQ%3D%3D
Batteries 9V Panasonic Battery 6LF22XWA/B12 Mouser 2 http://www.mouser.fr/ProductDetail/Panasonic-Battery/6LF22XWA-B12/?qs=sGAEpiMZZMsra%2fh506hF%252bITISQoCasqh1k2eJLis9sg%3d
Roue de balance Alwayse 100613 RS-Online 2 https://fr.rs-online.com/web/p/billes-porteuses/0687770/
Emetteur/Récepteur Ultrason 40 kHz ELECFreaks RB-Elf-143 Robotshop 2 https://www.robotshop.com/ca/fr/module-sonar-hc-sr04-ultra01.html
Pin externe mâle 2
AVR chip 2
Capteur à effet Hall 2
Aimant permanent 2

Information sur le projet

Microprocesseur

Le microprocesseur étant la "tête pensante" de notre futur robot, nous avons d’abord hésité entre une Raspberry Pi et une Atmega 328p (Arduino). Comme notre projet est orienté matériel bas niveau, l’Arduino s’est révélé plus optimal. Plutôt que la raspberry plutôt orienté haut niveau (flux vidéo, wifi, etc)

Nos robots devant faire plusieurs tâches en “simultané”, il fallait implanter un ordonnanceur dans l’Arduino. Pour cela, nous avons choisi FreeRTOS, un mini OS pour Arduino.

Ce microprocesseur choisi, nous pouvions alors passer à sa programmation en AVR, et à quelques tests avec des composants. Nous avons d’abord décidé de nous attarder sur l’émission de l’identifiant du robot au travers d’une LED infrarouge, puis nous avons tenté de programmer la modulation et la transmission du signal contenant l’identifiant.


Infrarouge

Pour la transmission en infra-rouge, chaque robot enverra son identifiant à intervalle aléatoire. Pour assurer au maximum l'intégrité du message reçu, on y intègre des bits de stuffing (une inversion de bits tous les n bits similaires de suite), ainsi qu'un bit de parité en fin.

Au fur et à mesure du codage de l’émission de l’infrarouge, nous nous sommes rendus compte qu’on allait se confronter à plusieurs problèmes, tel que la corruption du signal infrarouge par l’émission d’autres robots. Pour palier à cela, nous avons décidé d’utiliser des bits de stuffing: Tous les n bits similaires on ajouter un bit contraire afin de vérifier de la non corruption du message. Ainsi, si il y a n+1 bits à l’état haut à la suite, cela signifie qu’on reçoit deux signaux en même temps. Donc on arrête de lire le message en cours, corrompu. Comme les robots émettent régulièrement leurs identifiants, on peut se permettre d’en rater quelques-uns. Second problème, que se passe-t-il si on commence à lire un message alors qu’on est à la moitié du message émis? On se retrouve alors avec des identifiants faux. Donc on a rajouté n+1 bits de start. Comme cela, on est sûr qu’on est au début du mot.

L’identifiant à l’émission paramétré, il faut à présent coder la réception. Ainsi on vérifie qu’on reçoit bien les n+1 bits de start. Puis à chaque bit similaire on incrémente un compteur, on vérifie qu’à chaque fois qu’on a n bits similaire, le bit suivant est inversé. Si c’est le cas, on passe le bit de stuffing puis on continue à lire le message, sinon on arrête la lecture.

Pour pouvoir tester la réception, il nous faut utiliser un capteur IR TSOP, donc modulé à 38kHz. Contrainte occasionnée, moduler notre signal pour qu’il soit lu par le capteur. Au début, on utilisait la fonction _delay_ms d’AVR pour pouvoir effectuer une modulation. Mais il s’avérait que cette fonction n’avait pas une résolution assez fine. Donc on passe à présent par les TIMERS de l’Arduino. Pour pouvoir visualiser le signal émis par les LED IR, on a placé en série des LED classiques. A l’émission, on observe bien un signal modulé mais il est impossible de savoir si il est bien à 38kHz, d’autant plus que la LED reliée au capteur n’a pas l’air de s’allumer. Donc on peut supposer que la fréquence du signal n’est pas bonne. Pour cela, on utilisera un oscilloscope afin de visualiser le signal et voir si c’est à l’émission qu’on a un problème.

Carte Électronique

L’étude de la carte électronique s’est réalisée péniblement, du fait qu’aucun de nous deux n’étions à l’aise avec la conception de circuits électroniques. Cependant avec l’aide de M. Redon, nous avons pu avoir accès à un modèle déjà réalisé pour des projets de PEIPs. Cette carte contenant alors la plupart des composants nécessaires n'était pas optimisée pour la fonction d’un robot en essaim. Nous avons du alors la retravailler et enlevant ou ajoutant certaines parties.

D’abord nous avons remarqué la présence de moteurs électriques. Désirant utiliser des servomoteurs, nous avons alors remplacé cette partie ainsi que le routage sur le microprocesseur.

De plus, le traitement des récepteurs infrarouges se faisait par alternance d’alimentation et par lecture sur une seule pin de l’Atmega. Avec la suppression des moteurs, nous avons alors pu utiliser deux pins de plus afin d’alimenter les TSOPs en continu et donc les lire sur trois pins différentes.

Le châssis du robot permettant la mise en place des capteurs à distance de la carte, il a aussi fallu revoir les empreintes afin de permettre l’accès au travers de connecteurs externes, autant sur la face supérieures pour les capteurs infrarouges ou ultrasons, que sur la face intérieure pour les moteurs ou la pile.

Enfin il a fallu travailler le routage pour éviter toute erreur de RDC telles que des câbles se chevauchant (ou trop proches) tout en évitant les angles droits ou de trop nombreuses connections entre les deux faces de la carte.

La mise en place de la liaison USB à travers la puce FTDI et le connecteur USB-C n’a pas été à refaire, cependant son étude à été inévitable afin de vérifier les connections aux différentes pins. L'intégration d’un programmeur AVR ISP à aussi été nécessaire afin de permettre la programmation du robot monté.

Afin de réaliser les fonctions désirées, la carte électronique se compose donc :

-d'un microprocesseur Atmega328p.
-de 3 capteurs Infra-rouge (TSOP) ainsi que d'un capteur à effet Hall et d'un émetteur-récepteur ultrason afin de repérer les autres robots ainsi que les obstacles.
-d'une LED infra-rouge afin d'être visible.
-de deux servomoteurs pour assurer les déplacements.
-d'une alimentation par une pile 9V.
-d'une partie gérant la liaison USB


PCB finale du robot. PCB finale du robot (vue schématique).


Composants

ServoMoteurs : Pour réaliser la fonction du mouvement, nous avons choisi des servomoteurs afin de permettre un déplacement précis ainsi qu’une économie d’électronique car celui-ci ne nécessite que d’une seule commande du microprocesseur pour commander le sens et la vitesse de rotation.


Capteurs : Nous souhaitons réaliser une fonction de détection des autres robots, ainsi que de l’environnement proche. Pour le premier nous avons décidé de placer une LED infrarouge sur l’arrière du châssis ainsi que de détecteurs sur les trois autres côtés. A travers cette communication, nous pourrons ainsi communiquer l’identifiant propre au robot et décider des placements pour un train de véhicule, par exemple. Nous avons aussi imaginé un dispositif de capteur à effet Hall lié à un aimant permanent accroché au châssis afin de détecter l’approche à très faible distance d’un robot sans pour autant avoir à lire son identifiant. Pour la détection de l’environnement, la mise en place d'émetteur-récepteurs ultrasons à l’avant permettra sa réalisation pour des obstacles proches.


Modélisation 3D

Afin de réaliser ce robot, nous avons eu l’idée de concevoir un châssis réalisable en impression 3D. Pour cela nous avons utilisé le logiciel en ligne Onshape très utilisé dans ce domaine. Nous avons alors laissé parler notre imagination ainsi que la praticité de conception, quelque peu aidé par certains modèles réalisés à l'École ou ailleurs, afin de créer une coque permettant de maintenir en place les moteurs par vissage, ainsi que les différents capteurs, sans oublier la carte électronique. Le modèle a donc d’abord été réalisée sans dimensions précises, nous n’avions que des approximations sur les précédents modèles de mini-robots, et ne pouvions qu’estimer les emplacements des différents trous et poteaux, ainsi que la forme concrète. Cependant nous voulions valider certains points :


Tout d’abord la mise en place de la pile à l’opposé des moteurs, donc au dessus de la roue de balance, afin que le robot ne se renverse pas lors d'accélération brèves, pour cela nous avons donc définit que les moteurs soient à l’avant, et la roue folle ainsi que la pile à l’arrière pour permettre à la compensation du couple réalisé par l’avance ou le recul du robot.


De plus, nous souhaitions réaliser un robot disposant de plusieurs étages. Cela offre un confort de lisibilité (et une classe non négligeable), ainsi qu’un espace libre aux capteurs, autant pour l’activité réalisée que pour les tests. Malgré ces avantages, nous avons pu intuiter la réduction de la facilité de montage ainsi que d’accès à la carte électronique. Nous avons cependant préféré continuer dans cette lancée, les dimensions du robot n’étant, pas critiquement grandes, laissant ainsi la possibilité d’augmenter l’espace entre les étages.

Première version du châssis imprimé
Deuxième version de conception du châssis


Liste des tâches à effectuer

  • Étude Électronique
    • Étude de la communication infrarouge
      • Évaluation de la faisabilité.
      • Étude de la modulation/démodulation.
      • Détermination du circuit électronique correspondant.
    • Création de la carte Électronique.
  • Étude informatique : programmation en C
    • Communication infrarouge
      • Émission des trames d’identification.
      • Réception des trames et analyse.
    • Programmation en C
      • Implémentation de FreeRTOS dans l'Arduino.
      • Contrôle des moteurs.
      • Algorithmie primaire (suivre, s'orienter..).
    • Programmation sur un moteur de jeu pour simulation (Unity3D : C#, ou Godot).


Feuille d'heures

Tâche Prélude Heures S1 Heures S2 Heures S3 Heures S4 Heures S5 Heures S6 Heures S7 Heures S8 Heures S9 Heures S10 Total
Analyse du projet 6 4 / / / / / / / / / 10
Étude de la communication infrarouge et des moteurs / 6 / 1 / / / / / / / 7
Implémentation de FreeRTOS dans l'Arduino / / 2 / 3 / / / / / / 5
Développement en C de la communication infrarouge / 3 2 4 1 4 4 8 8
Programmation du contrôle des moteurs / / 3 / / / / / /
Programmation de l'algorithmie des robots / / 3 / / / / / / /
Étude et Conception de la carte électronique / / / 1 5 4 6 3 4 / / 23
Modélisation 3D du robot en CAD / / 5 2 2 1 1 1 4 4
Tests et montage du robot / / / / / / / / / 2
Programmation pour simulation / / 6 / / / / / / / / 6
Total


Déroulement du projet

Semaine 2

Lors de cette première partie du projet, nous avons choisis de débuter avec la programmation du robot, ainsi que la modélisation du chassis déstiné à l'impression 3D et la modélisation de l'algorithmie sur Unity3D. En particulier, nous avons débuté le développement de l’émission infrarouge et de l’algorithmie, ainsi que du contrôle des servomoteurs.

Arduino

La communication étant une partie importante du Projet, la programmation de l'envoi en série de l'identifiant du robot nous a paru prioritaire. Ici, nous avons testé en émettant bit par bit sur la LED L de la carte Arduino.


L'implantation d'un OS pour l'Atmega était aussi important afin de traiter les differentes tâches que le robot devra réaliser. Pour cela nous avons choisit FreeRTOS.

Moteurs et Algorithmie

Nous voulions aussi débuter la mise en place du programme de contrôle des moteurs et d'une base de programmation pour les robots, cependant peu de temps y a été accordé car nous avons vite réalisé qu'il faudra se concentrer sur la partie électronique afin de fixer les paramètres liés aux différents composants.

Modélisation 3D

La conception du châssis du robot s'est fait sur le logiciel de CAD Onshape.
Cette semaine nous avons réalisé une ébauche afin de définir certaines règles de montage telles que la mise en place d'étages fonctionnels : Le premier étant permettant le montage des moteurs et de la roue folle ainsi que de la pile. Le deuxième accueillant la carte électronique. Le dernier maintenant les différents capteurs.

Ébauche de modélisation 3D du robot








Nous avons alors réalisé l’augmentation de la difficulté de montage ainsi que de la fragilité du robot. Cependant nousa vons préféré continuer et le vérifier par les tests, au risque de modifications ultérieures.


Simulation

Le développement d'une simulation des robots et de leur comportement afin de les modéliser sous Unity3D est une idée qui nous a beaucoup plu a première vue.
Cependant nous nous sommes rendus compte rapidement que cela n'apporterait qu'une visibilité virtuelle, et peu d'avantages sur le plus pratique, le but final étant de réaliser les robots et non de les modéliser.
L'idée a donc été mise à l'écart.


Semaine 3

La semaine 3 a été dans la continuité de la semaine 2. Nous avons ainsi avancé sur la programmation de la communication, mettant en place les bases de la création de la carte électronique PCB.

Arduino

Une fois que l’émission a été réalisée, la programmation de la réception en série de l'identifiant semblait nécessaire.
L'ajout de bits de stuffing dans le message envoyé a aussi été choisi afin d'améliorer la lecture.

PCB

Afin de bien débuter la création de la PCB, nous avons d'abord récupérer le fichier existant pour pouvoir l'analyser et l'optimiser dans le cadre de notre projet. Pour cela nous avons donc dans un premier temps mis en place de l'environnement logiciel Fritzing.


Semaine 4

Arduino

La semaine 4 à montré les premiers vrais problèmes liés à l'Atmega et son OS, il a donc fallu corriger l'implémentation de FreeRTOSa afin que le microcontrolleur puisse fonctionner correctement.

PCB

Une fois que l'étude de la carte électronique a été mise en place, la semaine 4 s'est révélé être le début des modifications. Il a donc fallu commencer à l'analyser afin de comprendre sa configuration pour ensuite la comparer à nos besoin avant de la modifier petit à petit.

Carte électronique existante













Semaine 5

Arduino

Retour sur le développement de la transmission par infrarouge avec la synchronisation de émission et de la réception des trames de données au travers des sémaphores.


Semaine 8

La semaine 8 s'est révélée être une semaine de finalisation. En effet, autant la carte électronique que la modélisation 3D du chassis on pu être validées sous leur première forme et créées physiquement. Côté programmation il est aussi temps de passer à la pratique avec des tests des futurs composants du robot sur les programmes.

Arduino

On teste la transmission du signal Infrarouge :

Pour la réception, d'abord , il nous faut utiliser un capteur IR TSOP. Le capteur étant limité à 38kHz, nous avons donc la contrainte de modulation du signal afin qu’il puisse être lu par le capteur. La fonction _delay_ms d’AVR a d'abord été choisie pour effectuer la modulation. Cependant il s’est avéré que cette fonction avait une résolution trop faible pour pouvoir atteindre les 38kHz. Nous sommes donc passés par les TIMERS de l’Arduino. Sachant que le TIMER 1 est utilisé par FreeRTOS, on utilise le TIMER 0.

Pour pouvoir visualiser le signal émis, nous avons choisi de placer des LEDs classique en série avec les LEDs infrarouges. A l’émission, on observe bien un signal modulé mais il est impossible de savoir si il est à 38kHz, d’autant plus que la LED reliée au capteur ne semble pas s’allumer. Nous avons donc supposé que la fréquence du signal n’est pas bonne. Pour cela, nous allons donc utiliser un oscilloscope afin de visualiser le signal émis et reçu et ainsi savoir d'où vient le problème.

PCB

Au cours des dernières semaines, la modification de la carte a été une étape importante. Cette semaine marque la fin de l'étude PCB et sa validation. Le but ayant été d'optimiser la carte au fonctionnement d'un robot en essaim, nous avons retravaillé certaines parties telles que, par exemple, la séparation du câblage des TSOP, afin d’accéder à leur valeur en continu ainsi que de réduire les différenciations d'alimentation. Nous avons aussi supprimé la partie moteur afin d'obtenir un gain de place et de ne garder que les servomoteurs. Nous obtenons ainsi la version finale de la carte.

Carte PCB finale











Dans les semaines à venir, nous pourrons donc réaliser des tests afin de savoir si cette validation est définitive.


Modélisation 3D

Au niveau du châssis, la première "version finale" a aussi été validée. Les cours de Mécatronique (filière SA) étant basés sur la modélisation 3D sur Onshape, le projet à été retravaillé intégralement afin d'offrir plus de possibilité. L'impression au FabLab sera réalisée au cours de la prochaine semaine afin de vérifier la solidité et la bonne conception de la pièce, ainsi que la facilité de montage, par exemple au travers des dimensions.

Premier test de conception du chassis





Sur cette image, nous pouvons donc observer la présence des trois étages, avec au bas les trous de vis afin de fixer les moteurs et la roue folle, ainsi que les maintiens de la pile 9V (à gauche), et de l'aimant (à droite). Au deuxième étape la forme de la plaque à été adaptée à la taille de la carte PCB et arrondie afin de permettre aux broches placées sur la face intérieure d'être accessibles. Sur la haut du robot, des emplacements ont été réalisés afin de maintenant les 3 TSOP, à l'avant (sur la droite de l'image) et sur les deux cotés, aisni qu'un bloc de fixation pour le sonar (surélevé pour qu'il ne soit pas gêné par le capteur infrarouge à l'avant). Enfin un mur à été érigé à l'arrière afin de dirigé le flux de la LED infrarouge uniquement vers l'arrière.

La taille du robot est ainsi de 80x80x80cm. Nous devons ainsi vérifier que cela ne pose pas de problème de montage, mais aussi d'équilibre. La pile étant à l'arrière et les moteurs à l'avant, le robot ne devrait pas se renverser, mais nous devons nous en assurer par l’expérience.


Semaine 9

La semaine 8 a été basée sur les tests. En effet, ayant pu imprimer en 3D la première version du robot, les dimensions de montage ont pu être vérifiées, et une deuxième version a pu être développée.

Modélisation 3D et premiers tests de montage

La première version du châssis du robot ayant été imprimée en semaine 8, le nettoyage des plastiques de support a été réalisé durant la semaine 9, permettant ainsi une vision claire de la pièce créée sur Onshape. Cela fait, nous avons pu vérifier certaines dimensions et fonctions du châssis.

Première version du châssis imprimé











Par exemple l'emplacement de la pile ou la netteté de la fabrication approximative à cause des supports ainsi que l'emplacement des vis pour la PCB. Originellement prévue avec deux poteaux la maintenant en largeur, et deux barre fines en longueur (voir image semaine 8). Cependant cette configuration permettais une fixation parfaite de la pile, mais ne laissait aucune place pour son montage... Nous avons donc réalisé la difficulté de création d'une pièce aussi petite. Nous avons aussi pu vérifier la solidité de la pièce, qui paraissait fragile. Celle-ci montre une grande résistance pour un poids faible malgré sa composition de plastique non plein. Nous avons donc pu valider cette méthode de réalisation par rapport à des montages en pléxiglass, souvent peut solide du fait des nombreuses vis et liaisons pas réellement fixe, créant beaucoup de point sensibles sur la structure.


Afin de corriger le problème de montage de la pile, le "poteau" arrière (coté gauche sur la photo) à été remplacé par une barre fine de même type que les latérales, et l'emplacement de la pile à été légèrement creusé afin de la maintenir.

Les problèmes de support ont été réglés suite à une réévaluation complète de la pièce et de sa modélisation. Les parties nécessitant du support ont donc été retravaillées.

Par exemple, le premier étage a subi une réduction drastique de matière superflue de sorte à ne pas encombrer le dessous et réduire le poids total. Les structures de fixation verticales ont aussi été pensées afin de supporter cet étage au travers de demi-arches de maximum 20° d'orientation (angle à partir duquel l'imprimante 3D pose du support afin de maintenir la structure en place).

De plus, nous avons aussi choisi de fabriquer le deuxième étage à part afin de le monter plus tard grâce à un ensemble vis-écrou, ce dernier encré et collé dans une empreinte spécialement creusé dans les poteaux de structure.

Les vis de maintient de la carte PCB ont été replacés par des tiges coupées afin de permettre une modularité accrue. Une empreinte creusée a aussi été réalisée pour bloquer la carte de façon plus précise et propre.

Deuxième version de conception du châssis

Transmission Infrarouge

Nous avons donc effectué les tests avec l'oscilloscope afin de visualiser le signal de la LED infrarouge, et plus précisément la fréquence de la porteuse.

Copier Image Oscilloscope

Nous observons que la LED émet bien le bon signal. Donc nous en avons en déduit que le problème venait du récepteur. D'après la doc technique, nous devions imposer un courant de 0,35 mA dans le récepteur. Le soumettant à une tension de 5V, il nous fallait donc placer une résistance de 14kΩ. Cependant après une étude du circuit interne du composant, il s'est avéré qu'une résistance était déjà installée. Nous avons donc enlever notre résistance qui limitait trop le courant dans le récepteur. De plus, la résistance interne est montée en pull-up, donc on devait s'attendre à avoir '1' en sortie quand le capteur ne captait pas de signal et '0' quand il en percevait un.

Après réglage du capteur, nous obtenions finalement une réception du message. Il a fallu inverser la lecture des bits afin de les faire correspondre au comportement prévu préalablement. Nous avons ensuite rajouté les bits de stop et de stuffing dans le message envoyé. Nous avons également essayer d'évaluer la fréquence de la tâche d'envoi de message ainsi que celle de réception. Finalement, on obtient un identifiant correct toutes les 5 secondes environs.

Copier image led + resultat minicom

Nous avions pensé utilisé l'intensité du signal reçu par le capteur afin de déterminer approximativement la distance du robot émetteur. Mais le capteur étant un tout ou rien, nous ne pouvions l'utilisé comme capteur analogique. Malheureusement la carte électronique était déjà partie en production, avec le câblage du récepteur sur une pin analogique. Nous allons donc faire correspondre le programme à cette contrainte, et utiliser la pin analogique comme une pin numérique. Si nous avions eu le temps, nous aurions recâblé le récepteur sur une pin numérique et aurions peut-être branché à la place une photodiode sur la pin analogique pour localiser approximativement un second robot.