Difference between revisions of "Projets:Lab:2013:Rocket-Plopper"
m (→27/11/13 Test du module BMP085 avec Arduino Nano) |
m (→27/11/13 Test du module BMP085 avec Arduino Nano) |
||
Line 43: | Line 43: | ||
=Développement projet= | =Développement projet= | ||
==27/11/13 Test du module BMP085 avec Arduino Nano== | ==27/11/13 Test du module BMP085 avec Arduino Nano== | ||
− | Branchement facile sur le | + | Branchement facile sur le bus I2C : 4 cables : |
#VCC(Orange sur 3.3v) | #VCC(Orange sur 3.3v) | ||
#GND(Bleu) | #GND(Bleu) |
Revision as of 23:18, 27 November 2013
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
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
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)
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.
Développement projet
27/11/13 Test du module BMP085 avec Arduino Nano
Branchement facile sur le bus I2C : 4 cables :
- VCC(Orange sur 3.3v)
- GND(Bleu)
- SDA(Vert en A4)
- SCL (Jaune sur A5)
Pour le test j'ai utilisé le code présent sur cette page : GeeeTech BMP085
On peut lire sur le terminal la température au 10ème de °C et la pression en Pascal. Du fait de la précision de la mesure, la valeur en Pa est très variable, mais si on s'attarde sur les 10 aines de Pa on peut voir une différence notable entre le sol, la hauteur du bureau et au dessus de la tête. Il faudra par contre travailler par moyenne d'une série de mesures pour lisser les petites variations.
J'ai pu en modifiant le code de façon à avoir une altitude "0" et faire des salves de mesures arriver à mesurer la hauteur de déplacement à +/- 50 cm. La précision est donc de l'ordre du mètre.
En prenant un peu de marge on pourra déclencher le parachute à apogée -2 mètres je pense.
A suivre
Avec quelques modification du code on peut prendre la pression initiale et donc calculer l'altitude par rapport au point de référence.
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"); } } }