Projet CanSat : Différence entre versions

De Wiki de Projets IMA
(Choix des composants)
(Présent :)
Ligne 19 : Ligne 19 :
 
  <li>Carte Arduino Uno</li>
 
  <li>Carte Arduino Uno</li>
 
  <li>Montre TI eZ430 chronos</li>
 
  <li>Montre TI eZ430 chronos</li>
<li>Module Zigbee</li>
+
<li>Capteur de température : [http://www.analog.com/en/mems-sensors/digital-temperature-sensors/tmp36/products/product.html TMP36]</li>
<li>Capteur de température TMP 36</li>
+
<li>Capteur de pression [http://www.freescale.com/files/sensors/doc/data_sheet/MPXHZ6400A.pdf MPXHZ6400A]</li>
<li>Acceleromètre</li>
+
<li>Accéléromètre [https://www.sparkfun.com/products/10121? ADXL345]</li>
<li>Capteur de pression</li>
+
<li>Module Zigbee Pro </li>
 
</ul>
 
</ul>
  

Version du 21 mars 2013 à 10:18

Présentation du projet

Encadrants :

Alexandre Boé / Nicolas Defrance / Thomas Vantroys

Binôme :

Céline Burtaire / Robin Gouenard

Objectif :

Réaliser un prototype permettant de participer à la compétition CanSat

Les dates d'inscriptions pour participer à la compétition 2013 étant antérieures au début du projet, cette année nous nous concentrerons sur les fonctions récurrentes (vitesse, altitude...).

Plus d'informations sur la compétition :

Liste du matériel

Présent :

  • Carte Arduino Uno
  • Montre TI eZ430 chronos
  • Capteur de température : TMP36
  • Capteur de pression MPXHZ6400A
  • Accéléromètre ADXL345
  • Module Zigbee Pro

A acheter :


Avancement du projet

Introduction

Le CanSat est une sonde embarquée dans un volume équivalent à une canette de soda. Cette sonde est lancée en fusée pour atteindre jusqu'à 800 mètres d'altitude ou en ballon pour atteindre une altitude de 150 mètres. Différentes informations doivent être transmises en temps réel:

  • Températures
  • Altitudes
  • coordonnées GPS
  • ...

Nous avons choisis ce projet car il permet une grande liberté. En effet, les fonctionnalités du "satellite" doivent être définies au début du projet. De plus, il est pluridisciplinaire puisqu'il faut des connaissances en informatique, électronique mais aussi en physique et mécanique.

Séances après séances

Analyse du problème

(Jusqu'au 25 Février 2013)


Nous avons pris du temps pour analyser nos problèmes et les solutions plausibles. Nous avions décider de tester la montre TI eZ430 chronos car elle possède déjà un altimètre et un capteur de température, ainsi qu'un système de transmission. Cependant, après avoir fait quelques tests, la distance de transmission n'est pas assez grande (on souhaite un minimum de 150m).

Nous avions donc le choix entre commander des capteurs et les programmer via arduino, ou récupérer les informations de la montre. Nous avons choisis la première option car elle semble plus accessible.

Choix des composants

( 25 Février)

  • Capteur de température : TMP36
  • Module Zigbee Pro


27 Févirer

Le capteur de température a été testé avec l'arduino et nous avons commencé à configuré le XBee Pro par liaison USB.

Nous avons réfléchis à la mise en place du module XBee sur notre montage. Afin de procéder aux premiers tests nous utilisons un shield arduino, cependant, nous devons commander / construire deux connecteurs femelles avec le bon pas pour ensuite le monter sur notre carte.

28 Févirer

Architecture



Début de la configuration des Zigbee.

L'architecture du Cansat sera idéalement réalisée en 3 cartes rondes. Les capteurs et l'antenne sont aux extrémités pour avoir un accès plus direct avec l’extérieur. Ce modèle n'est cependant pas fixé mais nous aide à structuré nos tests. Nous attendrons de réaliser les tests sur un montage complet avant de corriger les erreurs de placements éventuelles ou de voir si tout pourrait tenir sur une seule carte.







4-6 Mars

Nous avons testé une utilisation simple des modules Zigbee afin de simuler la transmission de données du CanSat vers un ordinateur distant. La transmission s'effectue de la façon suivante : un arduino envoi un message en boucle sur son port série (broches RX/TX). Deux Zigbee XB24 sont configurés à l'aide de commandes AT avec un PC et le logiciel X-CTU, l'un des Xbee est relié au RX/TX de l'arduino et l'autre au PC. On visualise alors sur l'ordinateur les données reçues.

Nous avons alors eu un problème. En effet, les données arrivaient de manière aléatoire, quelques fois reçues, quelquefois non, et ce sans changer le programme ou la configuration. Nous avons d'abord pensé à un dysfonctionnement matériel (shield Zigbee, arduino, ...) et nous avons donc essayer de changer un par un ces éléments. Le problème persistait et ce malgré le fait que les deux Xbee communiquaient bien entre eux (réponse positive à la commande ATND). Nous avons tenté de remplacer la communication arduino-PC par une communication arduino-arduino, changé le protocole de communication, mis à jour les firmwares des XB24, mais la transmission était toujours aléatoire. Finalement nous sommes parvenu à régler ce problème en laissant de coté l'émission série à l'aide des broches RX/TX au profit d'un port série virtuel (librairie Software Serial).


Durant la semaine 10, nous avons testé l’accéléromètre ADXL345 (carte sparkfun). Cette carte communique avec le protocole I2C. N'ayant jamais utilisé un tel capteur, nous avons tout d'abord téléchargé et testé le programme fournit sur le site du fabricant (bildr Tutorial - Stable Orientation). Ce programme nous servira de base pour avoir un exemple de communication avec le bus I2C et savoir où chercher les données souhaitées.


7 Mars

Test avec capteur de t°

La communication entre les ZigBees fonctionne. Nous l'avons testée en réalisant un montage avec le capteur de température (voir photo).


Code de test:
/* En C (norme ISO) */

.#include <SoftwareSerial.h>
const int rxpin = 10;            // Software Serial RX
const int txpin = 11;                  // Software Serial TX
SoftwareSerial mySerial(rxpin, txpin); // RX, TX
int temperaturePin = 0; // Relevé de température sur la broche analogique 0 

void setup()  
{
  mySerial.begin(9600); // initialisation du Software Serial
  mySerial.println("Debut du programme");
}

float getVoltage(int pin) // convertit la valeur de la tension du capteur en température
{
 return (analogRead(pin) * .004882814);
}

void loop()
{
float temperature = getVoltage(temperaturePin);
temperature = (temperature - 0.5) * 100;
mySerial.println(temperature);           
delay(1000);
}





Prochaines étapes

prochaine séance

  • Tester l’accéléromètre et extraire les bonnes données
  • Trouver le type d'alimentation pour la carte
  • Programmer l'ATMEGA directement en C

ensuite

  • Traitement des données
  • Assembler le montage complet (arduino, labdec, capteurs, modules ZigBee) et tester
  • Réaliser le typon
  • Montage de la carte
  • Test simple (salle de cours, distance faible, conditions connues)
  • Test sur avion (hauteur, distance, vibration)
  • Test en chute libre