Traceur de choc

De Wiki de Projets IMA


Vidéo HD


Présentation du projet



Le but de ce projet est de réaliser une carte permettant de mesure l'accélération,intégrant un GPS et transmettant les données à une montre communicante TI. D'une manière plus explicite, cette carte devrait nous permettre dans un premier temps de tracer par exemple la position d'un colis. Grace au GPS nous devrions être capable de donner la position du colis à tout moment (Géolocalisation) mais par contre en cas de perte du signal, nous devrions passer par l’accéléromètre pour estimer à nouveau la position du colis. Dans un second temps, nous devrons enregistrer dans une carte SD les différentes valeurs des accélérations afin de savoir ou d'estimer si il y a eu un choc ou pas(par exemple).Enfin, nous devrons être capable de transmettre en temps réel ces données à la fin à une montre TI via Liaison radio.

Matériel Requis



  • Un Arduino UNO
  • Un Module GPS(NMEA GPS)
  • Un Accéléromètre(ADXL3xx)
  • Un afficheur LCD(Shield LCD couleur)
  • Une Carte SD


1ère séance: 04/02/2013


Cette première séance a été mise à profit afin de mieux cerner le projet:

  • Contact des encadrants du projet.
  • Présentation du projet par M. Alexandre Boé.
  • Discussion autour des différentes parties du projet.


2ème séance: 07/02/2013


Dans cette deuxième séance, nous avons pris la peine de bien défini et hiérarchisé notre projet pour pouvoir bien déléguer les rôles pour chaque étape. Nous avons donc vu que le projet était constitué de 2 parties essentielles(La partie arduino et la partie réalisation de la carte) et qu'il était pas judicieux d'évoluer tout les 2 sur une même partie.

Nous nous sommes donc répartis les tâches: Une personne qui travaillera sur la partie Arduino et une autre qui travaillera sur la partie carte électronique.

Ensuite nous avons pris connaissance des outils avec lesquelles nous devions travailler. Pour la partie carte, nous avons décidé d'utiliser le logiciel Eagle pour la réalisation de notre Schematic et notre PCB car nous avons remarqué que pour chaque Shield arduino nous pouvions facilement avoir le schematic Eagle correspondant.


3ème séance: 11/02/2013


Partie Carte

Prise en main du logiciel Eagle et auto-formation à l'aide d'un tutoriel car c'était un logiciel qu'on ne connaissait pas du tout.

Partie Arduino

Au cours de la 3e séance nous nous sommes intéressé au module GPS, que nous avons eu un peu de mal a faire marcher.

schema de connection:

Cablage Arduino+GPS aduino+GPS

Le schéma de montage ci-dessus vous présente comment nous avons connecté notre GPS à l'arduino. Maintenant concernant la partie logicielle pour que le GPS communique avec le GPS, nous avons utilisé la bibliothèque tinygps. A partir d'un code exemple nous avons donc programmer notre GPS mais a la fin de cette séance nous n'avons pas pu obtenir de résultat.

4ème séance: 14/02/2013


Partie Carte

Le but de la réalisation de la carte étant de rendre plus petit et plus compact notre système réalisé sur arduino, il était donc question de réfléchir sur les différents composants que nous devions utilisés sur notre carte électronique. Donc durant cette séance, nous avons télécharger dans un premier temps le schématic eagle de notre arduino Uno et nous avons essayé de réfléchir sur ce qu'il y avait a viré ou a gardé pour notre projet.

Partie Arduino

N’ayant pas obtenu les résultats voulu a la seance précédente, nous avons cherché a bien comprendre comment se faisait la communication entre l'arduino et le GPS. Nous avons donc compris que le GPS utilisait bien le protocole RX/TX mais les broches de communication dépendaient de la position de l'interrupteur UART/DTLINE sur le Shield GPS comme le montre le schéma ci-dessous (Option 2):

Option Shield GPS

L'option 2 est l'interrupteur de sélection de l'UART: Si l'UART est sélectionné, le GPS communiquera avec l'arduino directement avec les broches 0 et 1 . si DTLINE est sélectionné, le GPS sera connecté par défaut aux broches 2 et 3. DLINE doit donc être d'abord sélectionné pour téléverser le programme dans l'arduino car le mode UART utilise les même broches utilisées pour programmer l'arduino. si le mode UART est sélectionné et que par la suite nous téléversons le code, nous aurons des erreurs dans l'IDE de l'arduino qui signalera un Conflit de bus.

Pour éviter à chaque fois d’être confronté ace problème, nous étions un peu obligé de trouver comment émuler d'autres ports séries pour la communication entre le GPS et l'Arduino comme çà les broches 0 et 1 seront utilisées seulement pour la communication entre le PC et l'Arduino. Nous avons donc vu que la bibliotheque SoftwareSerial permettait de le faire. Donc finnallement à la fin de cette séance , nous avons pu faire fonctionner le GPS.

NB:

Le GPS à besoin de quelques minutes pour pouvoir détecter un satellite et ensuite nous donner des valeurs. Donc faut être très patient.

5ème et 6ème séance: Semaine du 25/02/2013


Partie Carte

nous avons jugé judicieux de concevoir notre traceur de choc sous forme de plusieurs cartes (couches) superposées,chaque couche comportant un seul module : (1) microprocesseur (2) module GPS (3) accéléromètre (4) micro SD la pièce principale de notre prototype étant le microprocesseur, nous avons décidé de concevoir entièrement la couche "microprocesseur" avant de débuter la conception des autres couches. Sachant bien dans entendu que lors de la conception de cette dernière nous devrons prévoir assez de broches entrées-sorties pour communiquer avec les modules d’étages supérieurs et le circuit d'alimentation. voici le schematic de la couche "microprocesseur"

Option Shield GPS


Partie Arduino

Lors de cette séance, nous avons pu faire fonctionner l'accéléromètre(ADXL345). tout d'abord, nous avons cherché le protocole utilisé par ce dernier et nous avons vu qu'il pouvait utiliser soit le protocole I2C soit le protocole SPI. Pour ce projet, nous avons décidé d'utiliser le protocole I2C qui nécessite d'inclure la bibliothèque Wire.h dans le code. Le schéma de câblage est le suivant:

Option Shield GPS

comme on peut le voir ci-contre le brochage est le suivant:

  • CS ->3V3
  • SDO -> GND
  • SDA ->A4
  • SCL -> A5
  • VCC ->3V3
  • GND -> GND

A la fin de cette séance nous avons donc pu recueillir les valeurs des accélérations sur les axes x,y et z.

7ème et 8ème séance: Semaine du 04/03/2013

Partie Arduino

Au cours de cette séance, nous nous sommes concentré sur l'écran LCD (Shield LCD) et sur la carte SD. Comme nous avons fait avec les autres shields, nous avons tout d'abord cherché le protocole de communication utilisé par chaque module.

==>Pour l'Ecran LCD nous avons vu qu'il utilisait le protocole SPI le schema de cablage est le suivant:

shield lcd+arduino

les broches de communication pour ce mode sont:

  • Reset (RES)-->8
  • Chip-select-->9
  • Data in/out (DIO)-->11
  • Serial Clock (SCK)-->13


==> Pour la carte SD, nous avons donc vu que la carte SD utilisait le protocole SPI pour communiquer avec l'arduino et les broches utilisées sont :

  • Reset (RES)-->12
  • Chip-select-->4
  • Data in/out (DIO)-->11
  • Serial Clock (SCK)-->13

8ème et 11ème séance: Semaine du 11/03/2013

Au cours de cette séance, ayant déjà vu que tous les modules arduino marchaient indépendamment, nous avons voulu les mettre ensemble. Nous avons donc commencé par mettre ensemble le GPS et l’Accéléromètre (GPS+ Accéléromètre). Nous avons fait notre programme arduino que nous avons par la suite envoyé dans l'arduino! mais malheureusement rien ne marchait!! A la fin de la semaine, nous n'avons donc pas pu avoir les résultats que nous étions censés obtenir.

12ème et 13ème séance: Semaine du 18/03/2013

Au début de cette semaine, nous nous sommes fixés comme objectifs de résoudre le problème que nous avions la dernière fois et pour cela, nous avons décidé de tester différentes combinaisons entre modules (différents ensembles) pour voir d'où provenait le problème. Nous avons donc décider d'essayer l'ensemble GPS + Ecran LCD. Au terme de le 1ère séance de cette semaine, nous avons pu faire fonctionner le GPS et l'Ecran ensemble. nous avons pu afficher sur l'écran LCD les informations provenant du GPS (latitude, longitude, heure, date).Donc une chose est sure c'est que notre GPS et notre écran sont bien compatibles. A la prochaine séance, nous avons décider d'essayer cette fois ci l'ensemble: ["Ecran LCD + Accéléromètre" ]. Le but était d'afficher les valeurs des accélérations x,y et z sur l'écran LCD mais à la fin de la séance, nous n'avons pas réussi à afficher ces valeurs. A chaque fois nous avions un écran noir!! ce qui nous semblait bizarre car chaque module fonctionnait indépendamment. Finalement a la fin de cette séance, nous n'avions pas toujours su la source du problème et nous étions toujours bloqué au même niveau.

14ème et 15ème séance: Semaine du 25/03/2013

L'objectif de cette semaine était de résoudre a tout pris notre problème. A travers les différentes combinaisons entre modules que nous effectués la semaine dernière, nous supposions que le problème venait de l'accéléromètre car à chaque fois qu'on l'associe à un autre module, le programme ne fonctionne plus! A l'aide de l'explication de nos tuteurs, et grâce à nos camarades ayant obtenus le même problème que nous et aux recherches sur internet, nous avons donc finalement pu identifier le problème. Le problème était en fait une incompatibilité de bibliothèque entre Wire.h et Softwareserial.


16ème et 17éme séance: Semaine du 01/04/2013

Au cours de cette semaine, nous avons réfléchi au moyen de pouvoir contourner cet incompatibilité de bibliothèque. Nous avons donc décider de ne plus utiliser la bibliothèque SoftwareSerial. Mais le fait de ne plus l'utiliser nous handicapait beaucoup. On ne pouvait plus utiliser le Moniteur série du pc en même temps que le GPS, car comme nous vous l'avions expliqué plus haut, ces derniers utilisent les même broches pour communiquer à savoir les broches RX et TX(0 et 1). A la fin de la séance, nous avons donc pu afficher cette fois ci les données fournies par le GPS(latitude, longitude, date, heure) sur l'écran LCD sans problème. Dans un second temps, nous avons donc essayer de faire communiquer 3 modules en même temps à savoir LED + GPS + Accéléromètre. Cette fois ci, nous n'avons eu aucun problème. Nous avons bien réussi à afficher les valeurs des accélérations et les données du GPS sur la l'écran LCD.

18ème et 19éme séance: Semaine du 08/04/2013

Au cours de cette semaine, il était question d'utiliser la carte SD pour essayer d'enregistrer les valeurs des accélérations et les données à l'intérieur. Mais cet fois çi, on a été a nouveau confronté à un nouveau problème, celui du dépassement de la mémoire RAM. A l'aide de la commande avr-size nous avons bien vérifié que le problème que nous avions provenait bel et bien d'un dépassement de la mémoire de l'arduino UNO (32kb). Nous avons compris que, vu que nous utilisons plusieurs modules simultanément, nous sommes obligé d'inclure plusieurs librairies pour les faire fonctionner or celles ci, misent ensemble, font rapidement exploser la taille du programme. Aussi, lorsque nous faisons un programme utilisant des chaines de caractère à stocker comme c'est le cas dans ce projet, la taille du programme peut facilement augmenter. Il était donc question de trouver une solution à ce problème.


Travaux Supplémentaires: Vacances de printemps

Durant ces vacances nous avons trouvé une solution pour résoudre notre problème de dépassement de mémoire et notre problème d'incompatibilité en les bibliothèques Softwareserial et Wire.h. Nous avons donc décidé de récupérer au retour des vacances un arduino ATMEGA2560 car nous avons qu'il y avait 256kb de RAM dessus et que nous pourrions émuler plusieurs ports séries dessus car il dispose de plusieurs broches RX et TX. Nous avons durant ces vacances, pris le temps de calibrer notre accéléromètre pour savoir quand il y aura choc ou pas.

20ème et 21éme séance: Semaine du 29/04/2013

Au cours de cette séance, nous avons donc récupérer notre arduino ATMEGA et nous avons modifier notre programme de tel sorte que chaque module puisse fonctionner indépendamment sur un ATMEGA2560 car les broches de communication avaient changé.

Ensuite une fois que nous avons vérifier que chaque module fonctionnait indépendamment, nous avons réaliser l'ensemble complet final, c'est à dire GPS + ECRAN LCD + ACCÉLÉROMÈTRE + CARTE MICROSD et nous avons vérifié que le comportement attendu était bien ce que nous voulions.


Dernière Semaine: Semaine du 06/05/2013

Nous avons réalisé la vidéo de notre projet en expliquant son fonctionnement.


Version Finale Rapport: media:Rapport_Projet_2013_V5.pdf‎

Code Arduino: media:Traceur.zip