Projets:Lab:2013:Rocket-Plopper
From Electrolab
Contents
Projet : Rocket-Plopper
Conception et réalisation d'un module permettant le déclenchement d'un parachute ainsi que la prise de mesure en vol et leur restitution à terre.
Discussions en cours
- Choix du capteur analogique : Baromètre Vs Accéléromètre
- Choix du µContrôleur : préférence de Limesle pour le MSP430 en autonome sans le launchpad (Poids, conso etc ...)
- Choix d'un boitier étanche(du coup plus facile avec un accéléromètre)
But des mesures :
- Optimiser la charge en eau et la pression du réservoir : accélération, temps de propulsion, altitude atteinte
- Optimiser le parachute avec mesure du taux de chute à chaque essai
Type de communication :
Proof of concept avec une liaison série/USB avec PC Liaison par un module en
- bluetooth
- Pilou Je propose le JY-MCU(voir sur ebay) peut se trouver à 5€ fdpin(ça fait un Rfcomm qui peux causer avec un android/pc)
- Portée limité à 10 mètres mais facile à mettre en place.
- Pilou Je propose le JY-MCU(voir sur ebay) peut se trouver à 5€ fdpin(ça fait un Rfcomm qui peux causer avec un android/pc)
- 433Mhz
- MiWi de Microchip à 868MHz
- ou autre 2.4ghz
pour éviter de manipuler la fusée
BOM
- BMP058 : https://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-05.pdf
- Boitier étanche : http://fr.farnell.com/hammond/1551fgy/boitier-abs-gris-50x35x15mm/dp/1877305
- Module BT : voir plus haut propale Pilou
Réalisation du PCB
Sur une base MSP430G2553 avec BMP085 et micromoteur.
Image à venir
Élargissement
- Réalisation d'un kit à vendre sur le shop
- Codage pour avoir un kit qui valide le record et permet un concours sur le web (Évite la riche ?)
- Codage d'une application Androïd Electrolabellisée pour le recueil des mesures et la participation au concours
- Ajout d'un deuxième étage
- Conception d'un tuyère à ouverture variable.
Bouts de code
Pour une version MSP430 :
// Rocket-Plopper
// Initiated by Limesle for ElectroLab
// a French HackerSpace at Nanterre near Paris
#define led 0
#define ledModeOut P1DIR |= (1<<led)
#define ledOn P1OUT |= (1<<led)
#define ledOff P1OUT &=~ (1<<led)
#define baroSensorPin A5
#define parachutePin 2
#define parachuteLaunch P1OUT |= (1<<parachutePin)
#define parachuteStop P1OUT &=~ (1<<parachutePin)
int baroSensorValue = 0;
int ouverture = 0;
int i=0;
int altitudeSol =0;
int altitude =0;
int altitudeMoy =0;
int altitudeMax =0;
int incomingByte = 0;
void setup() {
ledModeOut;
}
void loop() {
i=3;
altitude=0;
ledOn;
while (i>0) { // On réalise 3 mesures rapprochées dont on fait la moyenne pour éviter tout phénomène ératique
baroSensorValue = analogRead(baroSensorPin);
delay(100);
altitude += baroSensorValue; // Formule à valider
i--;
}
altitudeMoy = altitude/3; // calcul de la moyenne
if (altitudeSol ==0){
altitudeSol = altitudeMoy; // Prise la première mesure
}
if (altitudeMoy > altitudeMax | ouverture==0){ // on continue donc à monter, mais à vérifier : comment cette valeur fluctue ?
altitudeMax = altitudeMoy;
} else {
parachuteLaunch; // On lance le parachute
delay(200); // temps nécessaire pour libérer le parachute
parachuteStop; // On arrête le moteur
ouverture=1; // Le parachute est maintenant ouvert
Serial.begin(9600); // On ouvre le port série
}
if (Serial.available() > 0) {
incomingByte = Serial.read();
if (incomingByte == 115){ // si on reçoit la lettre s dans le port série, le MSP430 répond :
Serial.print("La fusée est montée à : ");
Serial.print(altitudeMax - altitudeSol);
Serial.println("m");
}
}
}