Micro-robots auto-organisés : Différence entre versions
(→Conception carte électronique) |
|||
(44 révisions intermédiaires par 3 utilisateurs non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
+ | <include nopre noesc src="/home/pedago/pimasc/include/video-MicrorobotsOrganises-iframe.html" /> | ||
+ | __TOC__ | ||
+ | <br style="clear: both;"/> | ||
= '''Présentation générale du projet''' = | = '''Présentation générale du projet''' = | ||
Ligne 168 : | Ligne 171 : | ||
| 11/02 - Conception de la carte et des librairies sous eagle | | 11/02 - Conception de la carte et des librairies sous eagle | ||
|- | |- | ||
− | ! scope="row" | | + | ! scope="row" | Vacances de février |
| X | | X | ||
| Conception de la carte et des librairies sous eagle. Fin du schematic | | Conception de la carte et des librairies sous eagle. Fin du schematic | ||
Ligne 203 : | Ligne 206 : | ||
| Programmation et partie mécanique | | Programmation et partie mécanique | ||
|- | |- | ||
− | ! scope="row" | Vacance | + | ! scope="row" | Vacance d'Avril |
| x | | x | ||
| Soudure et partie mécanique | | Soudure et partie mécanique | ||
| x | | x | ||
+ | |- | ||
+ | ! scope="row" | Semaine 10 | ||
+ | | Programmation | ||
+ | | Fin soudure & Programmation | ||
+ | | x | ||
+ | |- | ||
+ | ! scope="row" | Semaine 11 | ||
+ | | Programmation | ||
+ | | Programmation | ||
+ | | Programmation | ||
|- | |- | ||
|} | |} | ||
Ligne 214 : | Ligne 227 : | ||
== Conception carte électronique == | == Conception carte électronique == | ||
− | Lors des deux premières semaines, nous avons fait essentiellement des recherches sur les composants pour concevoir notre carte et sur les mini robots déjà | + | Lors des deux premières semaines, nous avons fait essentiellement des recherches sur les composants pour concevoir notre carte et sur les mini-robots déjà existants. |
=== Carte électronique === | === Carte électronique === | ||
+ | [[Fichier: Schématic.png|400px|thumb|right| schématic ]] | ||
D'après nos premières recherches, il faudrait que nous options pour une géométrie circulaire pour la base du robot, cette forme nous permet d'avoir l'aire la plus grande avec la forme la plus petite. De plus, Notre robot n'ayant pas besoin de faire beaucoup d'actions, et par besoin de maximiser la place nous allons essayer d'avoir notre carte électronique comme base du robot. | D'après nos premières recherches, il faudrait que nous options pour une géométrie circulaire pour la base du robot, cette forme nous permet d'avoir l'aire la plus grande avec la forme la plus petite. De plus, Notre robot n'ayant pas besoin de faire beaucoup d'actions, et par besoin de maximiser la place nous allons essayer d'avoir notre carte électronique comme base du robot. | ||
Pour la carte électronique, nous avions commencé par chercher des composants traversants, mais étant donné que nous voulons construire un robot le plus petit possible, nous avons modifié tous nos composants par des composants CMS pour optimiser la place. Dans le choix de nos composants, nous avons fait attention aux tensions de sortie afin d'avoir du 3V. Nous avons choisi nos composants de manière à ce qu'ils supportent ces 3V. | Pour la carte électronique, nous avions commencé par chercher des composants traversants, mais étant donné que nous voulons construire un robot le plus petit possible, nous avons modifié tous nos composants par des composants CMS pour optimiser la place. Dans le choix de nos composants, nous avons fait attention aux tensions de sortie afin d'avoir du 3V. Nous avons choisi nos composants de manière à ce qu'ils supportent ces 3V. | ||
− | + | <div style="clear: both;"></div> | |
− | |||
− | |||
===== Le régulateur de tension ===== | ===== Le régulateur de tension ===== | ||
Ligne 229 : | Ligne 241 : | ||
===== Les moteurs vibreurs ===== | ===== Les moteurs vibreurs ===== | ||
− | Pour avoir un mouvement rectiligne, nous devrons positionner nos moteurs à | + | Pour avoir un mouvement rectiligne, nous devrons positionner nos moteurs à égale distance du centre de gravité du robot. Pour ce faire, nous allons créer une pièce à l'imprimante 3D. Cette pièce aura plusieurs utilités, dans un premier temps elle nous permettra de fixer la batterie sur le robot, puis nous disposerons nos moteurs de chaque côté de cette pièce afin qu'il soient à égale distance du centre de gravité de notre carte électronique. |
Ainsi, cette pièce aura donc les dimensions de notre batterie. | Ainsi, cette pièce aura donc les dimensions de notre batterie. | ||
+ | ==== Placement des éléments ==== | ||
+ | [[Fichier:Board.png|500px|thumb|left| schématic ]] | ||
+ | Pour le routage de la carte électronique, certains de nos composants doivent être positionnés à des emplacements bien spécifiques. | ||
+ | Les émetteurs et les récepteurs doivent être positionnés tout autour du robot afin d'obtenir la meilleure communication possible. Nous avons choisi, de positionner nos 4 émetteurs aux différents points cardinaux, et nos récepteurs aux points cardinaux ainsi qu'entre ces derniers. | ||
+ | De plus, pour faciliter l'utilisation des robots, nous plaçons le micro USB au bord de la carte. Une fois, tout ces éléments placés nous avons positionné les autres éléments de manière à optimiser le routage de la carte. | ||
+ | Étant donné que certains de nos composants sont traversants et d'autres en CMS, nous pouvons faire du double face, ce qui nous simplifie un peu le routage. | ||
+ | Cependant, à la fin de ce premier routage, nous nous sommes rendus compte que notre carte était encore un peu grande. Nous avons choisi d'optimiser notre carte en recommençant le routage plutôt que de l'imprimer pour la tester. Certains des composants ont changé de place. Nous obtenons au final une carte électronique carré de 7cm de côté. Idéalement, nous aurions voulu une carte électronique circulaire puisque c'est la forme géométrique qui optimise le mieux l'espace. Étant à mi-parcours du projet, nous préférons rester sur notre carte carré qui optimise déjà un peu plus l'espace. | ||
− | + | <div style="clear: both;"></div> | |
+ | ==== Soudure ==== | ||
− | = | + | [[Fichier:Bavure.jpg|100px|vignette|left|upright=1.25| carte électronique]] |
− | |||
− | |||
− | + | [[Fichier:carte_cms.jpg|100px|vignette|right|upright=1.25| carte électronique]] | |
− | |||
− | |||
− | |||
− | |||
+ | Nous avons reçu notre carte, nos gardes autour des pistes étaient légèrement trop petites et nous avons eu des bavures sur certaines pistes, pour y remédier, nous avons utiliser un scalpel pour creuser les pistes. Puis ayant de nombreux composants CMS, nous avons pris contact avec l'entreprise INODESIGN qui nous a conseillé et nous a permis de souder notre carte dans leurs locaux. | ||
+ | <div style="clear: both;"></div> | ||
+ | Nous avons par la suite souder tous les autres composants, dans cet ordre: | ||
+ | - Les pattes qui permettrons au robot d'avancer. Pour ces pattes, nous utilisons des petites tiges métalliques. Nous soudons ces pattes en premier, car nous avons les émetteurs et les récepteurs à souder des deux côtés de la carte. Cela, nous permet d'avoir la carte surélevée. | ||
+ | - Les émetteurs, les phototransistors sur la face du dessus du robot. Nous plaçons 8 émetteurs à égales distance les uns des autres sur les extrémités du robot. | ||
+ | - Les récepteurs sur la face du dessous du robot. Nous les plaçons de manière a ce qu'ils ne dépassent pas du robot et n'interfèreront pas avec les émetteurs placés sur le dessus du robot. | ||
− | + | - Les via, on utilise les chutes des branches des émetteurs et récepteurs pour les effectuer. | |
− | + | - L'interrupteur ON/OFF, les pins de connections ainsi que les moteurs. | |
− | + | <gallery widths=200px> | |
+ | Fichier:Face_dessus.jpg|Dessus | ||
+ | Fichier:Face_dessous.jpg|Dessous | ||
+ | Fichier:carte_soudee.jpg|Carte | ||
+ | </gallery> | ||
== Communication entre les différents robots == | == Communication entre les différents robots == | ||
Ligne 269 : | Ligne 293 : | ||
==== Test ==== | ==== Test ==== | ||
− | Nous avons choisi comme communication, la communication par infrarouge. Pour cela nous avons | + | |
+ | <gallery widths=200px> | ||
+ | Fichier:Communication.jpg|Test A1 | ||
+ | Fichier:Absence_communication.jpg|Test_A2 | ||
+ | Fichier:Distance absence communication.jpg|Test B2 | ||
+ | Fichier:Distance_communication.jpg|Test B1 | ||
+ | </gallery> | ||
+ | |||
+ | Nous avons choisi comme communication, la communication par infrarouge. Pour cela nous avons utilisé une plaque d'essai afin de vérifier que la communication est possible. Nous plaçons dans un premier temps, un récepteur ainsi qu'un émetteur face à face. Une LED Rouge devra s'allumer lorsque la communication entre ces deux capteurs est interrompue. Ce test va nous permettre de connaître les limites de notre système de communication : angle d'inclinaison, distance. | ||
-- Les tests A permettent de vérifier que cette communication marche correctement | -- Les tests A permettent de vérifier que cette communication marche correctement | ||
-- Les tests B permettent de vérifier la distance | -- Les tests B permettent de vérifier la distance | ||
+ | En conclusion, nous pouvons utiliser cette communication pour nos robots. Il faudra cependant soigner la disposition de nos récepteurs et émetteurs pour qu'ils soient à la même hauteur. Nous avons de plus un angle de communication acceptable pour notre utilisation. En effet, nos robots ne font que vibrer, ils n'auront pas un angle de tangage très important. Nous avons une distance de communication entre nos deux robots d'environ 15 cm. Ce qui nous semble acceptable. | ||
+ | |||
+ | <div style="clear: both;"></div> | ||
+ | |||
+ | == Programmation == | ||
+ | Le contrôleur étant un atmega328p, le robot peut être programmé en C ou en langage Arduino. | ||
+ | La programmation se fait avec les broches ISP du contrôleur. Nous avons utilisé une arduino uno en tant que programmateur ISP. | ||
+ | |||
+ | Dans un soucis d'économie nous voulions que le contrôleur fonctionne avec son horloge interne de 8 MHz. Dans ce mode de fonctionnement le contrôleur n'a pas besoin d'oscillateur à quartz. Ce mode est difficile à mettre en oeuvre car il faut configurer l'atmega328p en 8 MHz à l'aide de l'IDE arduino. | ||
+ | Nous ne sommes pas parvenu à configurer le contrôleur en 8 MHz donc nous avons porté notre système sur une breadboard afin de tester le programme. Nous avons placer des phototransistors selon la même configuration que sur le robot. Les moteurs sont simulés par des LEDs. Ces dernières sont éteintes quand les moteurs sont éteints et allumées quand les moteurs sont allumés. Pour le microcontrôleur nous avons utilisé un atmega328p en traversant. | ||
+ | |||
+ | Nous avons codé notre robot en langage arduino. | ||
+ | |||
+ | [[Fichier:Breadboard.JPG|thumb|center|alt=Texte alternatif|système porté sur la breadboard]] | ||
+ | |||
+ | === Code === | ||
+ | |||
+ | Nous avons programmé le contrôleur de façon à ce qu'il se dirige vers une source de rayonnement infrarouge. A la manière d'un animal vers de la nourriture. | ||
+ | Nous utilisons les phototransistors en interruption. Cependant il n'y a qu'un seul vecteur d'interruption par port. Il est donc nécessaire que le programme d'interruption scrute toutes les broches du port pour savoir laquelle a déclenché l'interruption. | ||
+ | Lorsqu'un phototransistor passe à l'état haut il déclenche un programme d'interruption qui scrute le port C de l'Atmega afin de trouver quel phototransistor a déclenché l'interruption. | ||
+ | |||
+ | Après différents tests nore programme fonctionne de la manière suivante. | ||
+ | |||
+ | Lorsque le phototransistor à l'avant du robot capte des infrarouges, les deux moteurs sont activés pour faire avancer le robot. | ||
+ | |||
+ | Lorsqu'un des phototransistors de gauche capte, un seul moteur tourne pour placer le robot face à la source infrarouge. | ||
+ | |||
+ | Il en va de même pour le côté droit. | ||
+ | |||
+ | Lorsque le phototransistor à l'arrière capte un seul moteur tourne pour retourner le robot. | ||
+ | |||
+ | Quand aucun phototransistor ne capte, les moteurs sont à l'arrêt. | ||
+ | |||
+ | Le port sur lequel sont connectés les phototransistors est utilisé en interruption. C'est dans le programme d'interruption qu'est réalisé la gestion des phototransistors. En dehors du programme d'interruption, le code réalise une boucle sans fin dans laquelle les moteurs sont à l'arrêt. | ||
+ | |||
+ | Voici le code Arduino: | ||
+ | |||
+ | [[Média:CodeArduino_micro_robot.txt]] | ||
+ | |||
+ | == Partie mécanique == | ||
+ | |||
+ | Notre projet nous impose d'avoir un robot le plus petit possible et à bas coût. Nous avons choisi d'utiliser notre carte électronique comme base de notre robot. Comme nos robots doivent vibrer pour avancer, nous placerons des petites pattes métalliques pour que le robot soient surélevés. Pour ces pattes métalliques nous utilisons des connecteurs grande taille que nous soudons aux quatre coins de la carte. | ||
+ | |||
+ | Pour alimenter nos robots, nous devrions avoir des batteries. Ces batteries sont cependant un peu grandes (7 cm de longueur), mais c'était le format le moins cher. Pour fixer les batteries aux robots, nous avons décidé de créer une petite pièce avec l'imprimante 3D du Fablab. Cette solution nous permettra de construire une pièce légère. Par choix, nous simplifions notre pièce, la batterie n'étant toujours pas arrivé (Arrivée le 27 Avril) nous avons trouvé une solution de secours à la batterie (alimentation externe). Nous simplifions notre pièce afin qu'elle ne fasse office que de support moteurs. | ||
− | + | Pour emboîter la carte électronique et notre pièce 3D, nous avons percé la carte électronique à quatre endroits différents lors du routage. Ces quatre trous de fixation ont été placés là où la carte électronique nous le permettait. Nous avons donc construit notre pièce 3D en fonction de ces 4 points de fixation. | |
− | |||
− | |||
+ | Cette pièce est donc utilisé comme support des moteurs vibreurs. Pour la conception, nous devons prendre en compte que les moteurs doivent être placés à égales distance du centre de gravité de la carte. En effet, pour commander une avance en ligne droite du robot, nous devons alimenté nos deux moteurs à condition qu'ils soient placés à égales distance du centre de gravité du robot. Nous supposons donc que le centre de gravité de la carte se trouve au milieu de la carte. | ||
+ | <gallery widths=200px> | ||
+ | Fichier:3D.JPG|Support moteur | ||
+ | Fichier:Robot réel.jpg|Robot | ||
+ | </gallery> | ||
− | |||
− | == | + | = '''Fichier rendu''' = |
− | + | ||
+ | Rapport de projet : [[Fichier:Rapport_P30_Casier_Debock_.pdf]] |
Version actuelle datée du 14 juin 2016 à 08:28
Présentation générale du projet
Objectif
Le but de ce projet est de concevoir et fabriquer des robots mobiles relativement petits, simples et peu coûteux. Les robots devront pouvoir communiquer entre eux par infrarouge. La simplicité et le bas coût de fabrication des robots doit permettre d'en fabriquer en nombre suffisant pour simuler des comportements d'essaim d’insectes.
Cahier des charges
Suite à un échange de mails avec Alexandre Boé, nous sommes parvenu à un premier cahier des charges ainsi qu'a une liste de matériel.
Suite à une entrevue avec notre tuteur Alexandre Boé nous avons remanier notre cahier des charges afin de se rapprocher de l'objectif. En effet notre premier cahier des charges décrivait un robot roulant, lourd et un peu cher. Notre cahier des charges actuel décrit un robot qui se déplace par vibrations.
Partie mécanique
- Par soucis d'économie et de limitation de la masse du robot, le châssis du robot sera constitué de la carte électronique et de cylindres métalliques très fins faisant offices de pattes.
- Le robot se déplacera par des vibrations générées par deux moteurs à courant continu utilisés dans les vibreurs de téléphones ou de manettes.
Partie électronique
- Toute l'électronique (que ce soit la gestion d'énergie, les capteurs ou l'intelligence embarquée) sera placée sur un seul circuit imprimé.
- L'énergie sera fournie par une batterie 5V (la capacité sera à déterminé après estimation de la consommation électrique du robot).
- Un régulateur de tension linéaire fournira l'énergie de la batterie au robot.
- Les moteurs seront commandés par des montages hacheurs constitués d'un transistor et d'une diode.
- La communication infrarouge sera réalisée par plusieurs ensembles émetteurs/récepteurs. Les émetteurs seront des diodes infrarouges et les récepteurs seront des photos transistors.
- Un microcontrôleur ATmega328P-au contiendra l'intelligence du robot.
Liste de matériel nécessaire
Composants | Liens vers fournisseurs | Prix unitaire | Quantité pour 1 robot |
---|---|---|---|
Microcontrôleur Atmega 328P-AU | [1] | 2,74€ | 1 |
Moteur vibreur | [2] | 3,65€ | 2 |
Batterie lithium ion | [3] | 13,06€ | 1 |
Chargeur de batterie lithium ion | [4] | 0,79€ | 1 |
Régulateur de tension | [5] | 0,75€ | 1 |
Cable micro USB / USB | X | X | 1 |
Micro USB - type B connecteur | [6] | 1,76€ | 1 |
Photo transistor | [7] | 0,16€ | 8 |
LED IR | [8] | 0,16€ | 4 |
LED CMS rouge | [9] | 0,19 | 2 |
LED CMS verte | [10] | 0,13 | 1 |
LED CMS bleu | [11] | 0,31 | 1 |
Interrupteur | X | X | 1 |
Transistor NPN | [12] | 0,25€ | 2 |
Diode (roue libre) | [13] | 0,25€ | 2 |
Résistance 470 ohm | [14] | 0,0171€ | 12 |
Résistance 4,7 kohm | [15] | 0,0185€ | 10 |
Liste des tâches
- Spécification des besoins
- Étude de consommation de la carte
- Réalisation de la carte électronique
- Choix des composants (valeurs des résistances, condensateurs)
- Réalisation du PCB
- Dimensionner le corps du robot
- Fabrication d'un premier robot
- Test de la carte
- Fabrication du deuxième robot
- Programmation de l'atmega
Répartition du travail
Avant le début officiel de notre projet nous avons rencontré Mr Boé pour mettre au point notre cahier des charges, notamment sur la technologie à utiliser et la taille des robots.
Lundi 12-14h | Mercredi 14-18h | Jeudi 8-10h | |
---|---|---|---|
Semaine 1 | 25/01 - Choix des actions des robots | 27/01 - Recherche des composants | 26/01 - Début du schéma de la carte |
Semaine 2 | 01/02 - Recherche des composants | 03/02 - Modification des composants (traversants -> CMS) | 04/02 - Conception du schéma de la carte |
Semaine 3 | 08/02 - Conception de la carte sous eagle | 10/02 - Conception de la carte et des librairies sous eagle | 11/02 - Conception de la carte et des librairies sous eagle |
Vacances de février | X | Conception de la carte et des librairies sous eagle. Fin du schematic | X |
Semaine 4 | Modification schematic et librairies | Début routage et librairies | Routage et librairies |
Semaine 5 | Fin des librairies et Routage | Routage et test communication | routage et test communication |
Semaine 6 | Routage | Fin routage puis discution de la taille de la carte | Remaniement du routage pour que la carte soit suffisement petite |
Semaine 7 | Routage | Fin routage et design partie mécanique | Communication |
Semaine 8 | Communication | Communication | Communication |
Semaine 9 | férié | Programmation et partie mécanique | Programmation et partie mécanique |
Vacance d'Avril | x | Soudure et partie mécanique | x |
Semaine 10 | Programmation | Fin soudure & Programmation | x |
Semaine 11 | Programmation | Programmation | Programmation |
Etude préalable
Conception carte électronique
Lors des deux premières semaines, nous avons fait essentiellement des recherches sur les composants pour concevoir notre carte et sur les mini-robots déjà existants.
Carte électronique
D'après nos premières recherches, il faudrait que nous options pour une géométrie circulaire pour la base du robot, cette forme nous permet d'avoir l'aire la plus grande avec la forme la plus petite. De plus, Notre robot n'ayant pas besoin de faire beaucoup d'actions, et par besoin de maximiser la place nous allons essayer d'avoir notre carte électronique comme base du robot.
Pour la carte électronique, nous avions commencé par chercher des composants traversants, mais étant donné que nous voulons construire un robot le plus petit possible, nous avons modifié tous nos composants par des composants CMS pour optimiser la place. Dans le choix de nos composants, nous avons fait attention aux tensions de sortie afin d'avoir du 3V. Nous avons choisi nos composants de manière à ce qu'ils supportent ces 3V.
Le régulateur de tension
Ce régulateur va permettre d'obtenir une tension constante quelque soit l'état de la batterie.
Les moteurs vibreurs
Pour avoir un mouvement rectiligne, nous devrons positionner nos moteurs à égale distance du centre de gravité du robot. Pour ce faire, nous allons créer une pièce à l'imprimante 3D. Cette pièce aura plusieurs utilités, dans un premier temps elle nous permettra de fixer la batterie sur le robot, puis nous disposerons nos moteurs de chaque côté de cette pièce afin qu'il soient à égale distance du centre de gravité de notre carte électronique. Ainsi, cette pièce aura donc les dimensions de notre batterie.
Placement des éléments
Pour le routage de la carte électronique, certains de nos composants doivent être positionnés à des emplacements bien spécifiques. Les émetteurs et les récepteurs doivent être positionnés tout autour du robot afin d'obtenir la meilleure communication possible. Nous avons choisi, de positionner nos 4 émetteurs aux différents points cardinaux, et nos récepteurs aux points cardinaux ainsi qu'entre ces derniers.
De plus, pour faciliter l'utilisation des robots, nous plaçons le micro USB au bord de la carte. Une fois, tout ces éléments placés nous avons positionné les autres éléments de manière à optimiser le routage de la carte.
Étant donné que certains de nos composants sont traversants et d'autres en CMS, nous pouvons faire du double face, ce qui nous simplifie un peu le routage.
Cependant, à la fin de ce premier routage, nous nous sommes rendus compte que notre carte était encore un peu grande. Nous avons choisi d'optimiser notre carte en recommençant le routage plutôt que de l'imprimer pour la tester. Certains des composants ont changé de place. Nous obtenons au final une carte électronique carré de 7cm de côté. Idéalement, nous aurions voulu une carte électronique circulaire puisque c'est la forme géométrique qui optimise le mieux l'espace. Étant à mi-parcours du projet, nous préférons rester sur notre carte carré qui optimise déjà un peu plus l'espace.
Soudure
Nous avons reçu notre carte, nos gardes autour des pistes étaient légèrement trop petites et nous avons eu des bavures sur certaines pistes, pour y remédier, nous avons utiliser un scalpel pour creuser les pistes. Puis ayant de nombreux composants CMS, nous avons pris contact avec l'entreprise INODESIGN qui nous a conseillé et nous a permis de souder notre carte dans leurs locaux.
Nous avons par la suite souder tous les autres composants, dans cet ordre: - Les pattes qui permettrons au robot d'avancer. Pour ces pattes, nous utilisons des petites tiges métalliques. Nous soudons ces pattes en premier, car nous avons les émetteurs et les récepteurs à souder des deux côtés de la carte. Cela, nous permet d'avoir la carte surélevée.
- Les émetteurs, les phototransistors sur la face du dessus du robot. Nous plaçons 8 émetteurs à égales distance les uns des autres sur les extrémités du robot.
- Les récepteurs sur la face du dessous du robot. Nous les plaçons de manière a ce qu'ils ne dépassent pas du robot et n'interfèreront pas avec les émetteurs placés sur le dessus du robot.
- Les via, on utilise les chutes des branches des émetteurs et récepteurs pour les effectuer.
- L'interrupteur ON/OFF, les pins de connections ainsi que les moteurs.
Communication entre les différents robots
Pour la communication de nos robots nous avons eu plusieurs idées. L'idée retenue est que chaque robot émettra à une fréquence propre. Ainsi, nous pourrons faire la différence entre les robots chasseurs et les autres robots.
Notre objectif est de pouvoir construire au minimum deux robots qui communiqueront ensemble. L'un sera le chasseur et essayera d’attraper le deuxième robot qui simulera par exemple une fourmi.
Test
Nous avons choisi comme communication, la communication par infrarouge. Pour cela nous avons utilisé une plaque d'essai afin de vérifier que la communication est possible. Nous plaçons dans un premier temps, un récepteur ainsi qu'un émetteur face à face. Une LED Rouge devra s'allumer lorsque la communication entre ces deux capteurs est interrompue. Ce test va nous permettre de connaître les limites de notre système de communication : angle d'inclinaison, distance. -- Les tests A permettent de vérifier que cette communication marche correctement -- Les tests B permettent de vérifier la distance
En conclusion, nous pouvons utiliser cette communication pour nos robots. Il faudra cependant soigner la disposition de nos récepteurs et émetteurs pour qu'ils soient à la même hauteur. Nous avons de plus un angle de communication acceptable pour notre utilisation. En effet, nos robots ne font que vibrer, ils n'auront pas un angle de tangage très important. Nous avons une distance de communication entre nos deux robots d'environ 15 cm. Ce qui nous semble acceptable.
Programmation
Le contrôleur étant un atmega328p, le robot peut être programmé en C ou en langage Arduino. La programmation se fait avec les broches ISP du contrôleur. Nous avons utilisé une arduino uno en tant que programmateur ISP.
Dans un soucis d'économie nous voulions que le contrôleur fonctionne avec son horloge interne de 8 MHz. Dans ce mode de fonctionnement le contrôleur n'a pas besoin d'oscillateur à quartz. Ce mode est difficile à mettre en oeuvre car il faut configurer l'atmega328p en 8 MHz à l'aide de l'IDE arduino. Nous ne sommes pas parvenu à configurer le contrôleur en 8 MHz donc nous avons porté notre système sur une breadboard afin de tester le programme. Nous avons placer des phototransistors selon la même configuration que sur le robot. Les moteurs sont simulés par des LEDs. Ces dernières sont éteintes quand les moteurs sont éteints et allumées quand les moteurs sont allumés. Pour le microcontrôleur nous avons utilisé un atmega328p en traversant.
Nous avons codé notre robot en langage arduino.
Code
Nous avons programmé le contrôleur de façon à ce qu'il se dirige vers une source de rayonnement infrarouge. A la manière d'un animal vers de la nourriture. Nous utilisons les phototransistors en interruption. Cependant il n'y a qu'un seul vecteur d'interruption par port. Il est donc nécessaire que le programme d'interruption scrute toutes les broches du port pour savoir laquelle a déclenché l'interruption. Lorsqu'un phototransistor passe à l'état haut il déclenche un programme d'interruption qui scrute le port C de l'Atmega afin de trouver quel phototransistor a déclenché l'interruption.
Après différents tests nore programme fonctionne de la manière suivante.
Lorsque le phototransistor à l'avant du robot capte des infrarouges, les deux moteurs sont activés pour faire avancer le robot.
Lorsqu'un des phototransistors de gauche capte, un seul moteur tourne pour placer le robot face à la source infrarouge.
Il en va de même pour le côté droit.
Lorsque le phototransistor à l'arrière capte un seul moteur tourne pour retourner le robot.
Quand aucun phototransistor ne capte, les moteurs sont à l'arrêt.
Le port sur lequel sont connectés les phototransistors est utilisé en interruption. C'est dans le programme d'interruption qu'est réalisé la gestion des phototransistors. En dehors du programme d'interruption, le code réalise une boucle sans fin dans laquelle les moteurs sont à l'arrêt.
Voici le code Arduino:
Média:CodeArduino_micro_robot.txt
Partie mécanique
Notre projet nous impose d'avoir un robot le plus petit possible et à bas coût. Nous avons choisi d'utiliser notre carte électronique comme base de notre robot. Comme nos robots doivent vibrer pour avancer, nous placerons des petites pattes métalliques pour que le robot soient surélevés. Pour ces pattes métalliques nous utilisons des connecteurs grande taille que nous soudons aux quatre coins de la carte.
Pour alimenter nos robots, nous devrions avoir des batteries. Ces batteries sont cependant un peu grandes (7 cm de longueur), mais c'était le format le moins cher. Pour fixer les batteries aux robots, nous avons décidé de créer une petite pièce avec l'imprimante 3D du Fablab. Cette solution nous permettra de construire une pièce légère. Par choix, nous simplifions notre pièce, la batterie n'étant toujours pas arrivé (Arrivée le 27 Avril) nous avons trouvé une solution de secours à la batterie (alimentation externe). Nous simplifions notre pièce afin qu'elle ne fasse office que de support moteurs.
Pour emboîter la carte électronique et notre pièce 3D, nous avons percé la carte électronique à quatre endroits différents lors du routage. Ces quatre trous de fixation ont été placés là où la carte électronique nous le permettait. Nous avons donc construit notre pièce 3D en fonction de ces 4 points de fixation.
Cette pièce est donc utilisé comme support des moteurs vibreurs. Pour la conception, nous devons prendre en compte que les moteurs doivent être placés à égales distance du centre de gravité de la carte. En effet, pour commander une avance en ligne droite du robot, nous devons alimenté nos deux moteurs à condition qu'ils soient placés à égales distance du centre de gravité du robot. Nous supposons donc que le centre de gravité de la carte se trouve au milieu de la carte.
Fichier rendu
Rapport de projet : Fichier:Rapport P30 Casier Debock .pdf