Dirigeable publicitaire : Différence entre versions

De Wiki d'activités IMA
(Semaine 10)
(Semaine 9)
Ligne 307 : Ligne 307 :
 
Le code approprié:
 
Le code approprié:
 
<pre>
 
<pre>
// définition des broches utilisées
+
// définition des broches utilisées pour chacun des 3 ventilateurs
  
int echo1 = 2;
+
int echo1 = 2;  
 
int trig1 = 3;
 
int trig1 = 3;
  
Ligne 320 : Ligne 320 :
 
int trig3 = 7;
 
int trig3 = 7;
  
 
+
// 3 mesures (1/ventilateur) seront effectuées
 
long lecture_echo1;
 
long lecture_echo1;
 
long lecture_echo2;
 
long lecture_echo2;
Ligne 329 : Ligne 329 :
 
long cm3;
 
long cm3;
  
 +
// déclaration des 3 pins permettant le contrôle des marche/arrêt de chaque ventilateur
 
int cont1 = 8;
 
int cont1 = 8;
 
int cont2 = 9;
 
int cont2 = 9;
Ligne 354 : Ligne 355 :
 
void loop()
 
void loop()
 
{
 
{
 +
// mesure de la distance du capteur1 (relié au ventilateur 1) en cm
 
   digitalWrite(trig1, HIGH);
 
   digitalWrite(trig1, HIGH);
 
   delayMicroseconds(10);
 
   delayMicroseconds(10);
Ligne 361 : Ligne 363 :
 
   Serial.print("Distance1 m : ");
 
   Serial.print("Distance1 m : ");
 
   Serial.println(cm1);
 
   Serial.println(cm1);
 +
// mise en route du ventilateur si la distance mesurée est inférieure à 50cm
 
   if (cm1<50){
 
   if (cm1<50){
 
       digitalWrite (cont1, HIGH);
 
       digitalWrite (cont1, HIGH);
Ligne 399 : Ligne 402 :
 
}
 
}
 
</pre>
 
</pre>
 
  
 
===Semaine 10===
 
===Semaine 10===

Version du 20 avril 2016 à 14:52



Présentation générale du projet

Le but est d'avoir un dirigeable de dimension réduite capable d'évoluer de façon autonome dans le hall de l'école.

Cahier des charges

Objectifs et description du projet

Le but du projet est de créer un dirigeable publicitaire (structure et logiciel) capable de voguer en autonomie. Celui-ci doit éviter les obstacles présents sur sa route.

Nous devrons donc d'abord réaliser la structure tout en prenant en compte le poids maximal que pourra supporter le dirigeable. Dans le même temps, nous devrons concevoir la partie logicielle qui devra assurer le vol du dirigeable.

Choix techniques : matériel et logiciel

Nous aurons besoin de :

  • Un ARDUINO ou Raspberry Pi afin de contrôler le dirigeable.
  • Une enveloppe imperméable à l'hélium pouvant en contenir.
  • Un matériau léger pour la structure du dirigeable (fil de fer, aluminium ...).
  • Environ 1m3 d'hélium pour permettre au dirigeable de voler.
  • Des hélices pour faire avancer le dirigeable (probablement fabriquées à l'aide d'une imprimante 3D). Celles-ci seront soit orientables, soit jumelées avec un gouvernail.
  • Capteurs d'altitude et de proximité (afin d'éviter les chocs).
  • Une publicité à afficher sur le dirigeable.
  • Une batterie pour alimenter l'(es) hélice(s).

Liste de matériel

Matériel Quantité requise Quantité disponible A commander Commentaires
Alimentation Arduino 1 0 1 RS : [1]
Arduino MEGA ADK 1 1 0
Hélium 9m3 0 9m3 Lien du devis : [2]
Ballon 1 1 0 Lien du ballon : [3]
Accessoires de drone HS (hélices, moteurs) 1 1 0 Il s'agit de pièces d'un AR Drone défectueux
Ultrasons SR04 10 0 10 GoTronic : [4]
Connecteur mâle 12 contacts - Pas 1mm 5 0 5 Farnell : [5]
Connecteur mâle 8 contacts - Pas 2mm 10 0 10 Farnell : [6]
Femelle USB-B 2 0 2 Farnell : [7]
Mâle USB-B à sertir 5 0 5 RS : [8]
Connecteur femelle 8 contacts - Pas 2mm 10 0 10 Farnell : [9]
Connecteur femelle 12 contacts - Pas 1mm 10 0 10 Farnell : [10]
Connecteur mâle 5 contacts - Pas 2mm 10 0 10 Farnell : [11]
Connecteur femelle 5 contacts - Pas 2mm 10 0 10 Farnell : [12]
Pin Femelle 2mm SJN 50 0 50 Farnell : [13]
Pin Femelle 2mm SAN 100 0 100 Farnell : [14]
Pin Femelle 1mm SHR 50 0 50 Farnell : [15]

Échanges concernant le projet

Avant le commencement

  • 12/11/2015 Suite à un échange par mail, nous avons obtenu les réponses suivantes :
    • Le dirigeable pourra contenir jusqu'à 2 bouteilles d'hélium vendues dans le commerce.
    • Mr Redon nous a dit qu'il essayait de récupérer une enveloppe d'un ballon sonde météo, pour éviter d'acheter une enveloppe onéreuse dans le commerce.
    • Réaliser les hélices depuis une imprimante 3D semble être une bonne idée.
  • 02/12/2015 Un deuxième échange par mail, nous avons pu affiner notre CDC :
    • L'idée de plusieurs hélices permettant de se diriger dans 3 dimensions paraît plus judicieuse
    • Seule l'enveloppe de ballon pourrait suffire à la conception du dirigeable (sans 'structure' métallique)
    • L'autonomie de notre dirigeable devra être de quelques heures
  • 08/12/2015 Troisième échange en direct, nous avons plus de précisions quant au CDC ainsi qu'aux méthodes que nous allons employer :
    • Notre tuteur, Xavier Redon devrait pouvoir se procurer 1 (ou plusieurs) enveloppes de ballon sonde météo ce qui constituerait l'enveloppe de notre dirigeable
    • Nous avons réfléchi ensemble et opterons pour une nacelle fixée sous l'enveloppe où toute la partie arduino/moteur se situera
    • Nous pourrions, si tout se passe bien, récupérer 3 moteurs ainsi que 3 hélices provenant d'un drone ne fonctionnant plus -> Cela nous évite de les imprimer via l'imprimante 3D
    • L'Arduino sera notre outil clé et non la Raspberry, car ses capacités sont suffisantes à priori pour nos besoins
    • L'idée du gouvernail semble compliquée à mettre en place, c'est pourquoi nous choisirons les 3 hélices (pour la position latérale mais surtout le contrôle de l'altitude)
    • Nous avons pensé également à une multitude de capteurs (ultrasons) afin de capter les obstacles pour ensuite les éviter (sous la nacelle et sur le pourtour de l'enveloppe)
    • Pour finir, notre premier objectif sera de réaliser la nacelle (imprimante 3D, récupération de matériel, ...) qui pourra permettre d’accueillir la totalité de nos composants/carte(s)

Calendrier prévisionnel

Avancement du Projet

Semaine 1

  • Contact avec la société vendeuse d'hélium : attente d'un devis.

Semaine 2

  • 2nd contact avec la société : la demande de devis est transmise au commercial d'Air Liquide.
  • Nous avons pour projet de faire les plans de câblage Arduino sur le logiciel Fritzing.
  • Recherche d'une nouvelle enveloppe pour le ballon.
  • Prise de contact avec Mr Jean SECQ pour gonfler le ballon.
  • Gonflage du ballon avec de l'air afin de prendre des mesures préalables et de vérifier son imperméabilité à l'air premièrement
  • Mesure du ballon gonflé -> 186cm du sommet du ballon à l'embouchure (Afin de vérifier s'il se dégonfle ou pas et de dimensionner la nacelle)
Ballon original, gonflé à l'air
  • Au lendemain de la prise de la photo, la taille du ballon était réduite de moitié --> nous allons devoir trouver une enveloppe de ballon.
  • Nous cherchons également toujours une batterie légère fournissant environ 11V en sortie et 2000mAh afin d'avoir une bonne autonomie
  • Nous devons trouver les références des connecteurs sur la carte mère du drone HS afin de pouvoir réaliser des tests sur les moteurs

Devis pour l'hélium

Nous avons reçu un devis pour l'hélium :

Monsieur DELECROIX,

Suite à notre conversation :


I6020L50R2A001 HELIUM U Grande Bouteille L50 79,80€
Détendeur HEPAL 12 : REF 153608 - Prix HT :307,97 € HT - Remise à déduire FAC et ECOLES : 20% - Frais de port 27,50 €
Délai : 1 semaine

Nous n'avons pas besoin du détendeur (monsieur Jean SECQ pourra nous en procurer un), et la contenance de la bouteille d'hélium est de 9m3, ce qui est amplement suffisant pour nous.

Semaine 3

  • Nous avons reçu le ballon, que nous venons de gonfler :
Ballon final, gonflé à l'air
  • De même, nous avons pu tester un des capteurs ultrasons HC-SR04 fourni par monsieur Redon. Nous l'avons câblé à l'Arduino de la façon suivante :
Câblage du capteur ultrason HC-SR04
  • Le code correspondant pour tester le capteur est :
/* Utilisation du capteur Ultrason HC-SR04 */

// définition des broches utilisées
int trig = 12;
int echo = 11;
long lecture_echo;
long cm;

void setup()
{
  pinMode(trig, OUTPUT);
  digitalWrite(trig, LOW);
  pinMode(echo, INPUT);
  Serial.begin(9600);
}

void loop()
{
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  lecture_echo = pulseIn(echo, HIGH);
  cm = lecture_echo / 58;
  Serial.print("Distancem : ");
  Serial.println(cm);
  delay(1000);
}
  • Nous obtenons les résultats suivants :
Distancem : 26
Distancem : 12
Distancem : 9
Distancem : 10
Distancem : 9
Distancem : 2
Distancem : 5
Distancem : 26
Distancem : 24
Distancem : 24
Distancem : 24
Distancem : 12
Distancem : 11

Ces résultats sont conformes aux distances mesurées.

  • Nous avons également simulé le comportement des moteurs à l'aide de diodes. Lorsque la distance mesurée est supérieure à 50cm, la LED verte s'allume, sinon, c'est la rouge qui s'allume. Les moteurs se comporteront de manière analogue, avec des distances différentes.

Media:Simulation_diode.mp4


Semaine 4

  • Suite à la demande des enseignants, nous avons passé la plupart de notre temps de projet hebdomadaire à créer notre librairie de composants sous Altium (en attendant vérification de M. Alexandre Boé).


Schematic HCSR04
Footprint HCSR04
Schematic USB
Footprint USB


  • Nous avons également pu vérifier que le ballon est toujours gonflé (à l'air) au bout d'environ 2 semaines, il nous restera donc à tester son imperméabilité à l'hélium.

Semaine 5

  • Nous avons réalisé le plan d'une boîte représentant la nacelle sur Inkscape.
  • Nous avons pu faire cette nacelle grâce à la découpeuse laser du Fabricarium. Nous avons prévu les trous afin de laisser passer les ficelles pour la maintenir au ballon. D'autres trous sont présents pour laisser sortir les moteurs (un en dessous pour haut/bas) les 2 autres derrière la nacelle écartés de 90° (pour devant/derrière gauche/droite).
Prototype de la nacelle
  • Nous avons réussi à démonter tout le drone puis nous avons reconstitué l'électronique d'un moteur avec des câbles soudés entre eux afin de pouvoir visualiser la tension, le courant ainsi que les données envoyées à un moteur isolé.

Semaine 6

  • Nous avons essayé de se pencher sur le fonctionnement des moteurs de l'AR Drone, vu le temps restant pour l'avancement du projet, nous optons pour une des deux solutions alternatives suivantes:
- Essayer de diriger la nacelle grâce à des ventilateurs récupérés
- Utiliser des moteurs simple de commande couplés aux hélices de l'AR Drone
  • Nous avons également réussi à faire fonctionner le ventilateur avec la batterie du drone en commandant la marche et l'arrêt depuis l'Arduino avec un transistor.
Schéma avec ventilateur ou moteur


Semaine 7

  • Nous avons effectué un test avec le ventilateur le plus puissant à disposition, fixé à la nacelle elle-même attachée avec de la ficelle en hauteur. Le test s'est avéré peu concluant, en effet le ventilateur ne permettait pas un déplacement de la nacelle assez important afin de pouvoir contrôler celle-ci en cas de présence d'obstacle.
  •  Nous essayons maintenant donc de communiquer avec le moteur de l'AR Drone, cependant celui-ci ne dispose que d'un fil de données (Reception/Emission). Nous essayons donc tout d'abord de communiquer entre 2 Arduinos en reliant tous les TX et RX sur un même ligne de breadboard.

Si nous réussissons cela, nous pourrons donc appliquer cette méthode sur le moteur afin de pouvoir lui envoyer le message de mise sous tension.

Semaine 8

  • Nous avons encore essayé en début de semaine de faire fonctionner le moteur de l'AR Drone mais sans succés.
  • Nous avons réussi à commander un moteur ainsi qu'un ventilateur par le biais d'un relais. Nous avons testé un programme qui déclenche celui-ci lorsque la distance de l'obstacle est inférieure à une distance fixée au préalable.

Nous allons donc créer un shield pour l'Arduino Mega afin de recréer les 3 circuits de gestion des 3 moteurs (ou ventilateurs) proprement, ainsi que regrouper les GND et les +VCC des 6 capteurs ultrasons.

Semaine 9

  • Suite à un mail de monsieur Boé, nous avons essayé de commander les moteurs à l'aide d'un transistor MOSFET. Le principe est le même que pour le relais, mais le montage est plus simple, et surtout plus léger. Après plusieurs recherches, nous avons donc réalisé le montage suivant :
Schéma de contrôle avec MOSFET

Ce montage fonctionne parfaitement, et nous permet donc de contrôler la vitesse de rotation du ventilateur.

  • Nous sommes allés au magasin Sélectronic de Ronchin pour nous procurer des transistors MOSFET IRF540N. Il n'y en avait pas de disponible à Polytech'Lille.


  • En attendant de pouvoir effectuer des tests grandeur nature avec l'hélium et 3 ventilateurs, nous avons réaliser le montage sur une breadboard avant de créer le shield pour s'assurer du bon fonctionnement. Nous avons donc placé 3 capteurs ultrasons, chaque capteur pouvant déclencher la marche ou l'arrêt d'un des 3 ventilateurs. En effet, les ventilateurs tournent lorsque la distance du capteur approprié est inférieure à 50 cm. Le montage sur breadboard est lourd mais il fonctionne, nous allons donc pouvoir réaliser le shield.
Montage avec 3 capteurs 3 ventilateurs

Le code approprié:

// définition des broches utilisées pour chacun des 3 ventilateurs

int echo1 = 2; 
int trig1 = 3;


int echo2 = 4;
int trig2 = 5;


int echo3 = 6;
int trig3 = 7;

// 3 mesures (1/ventilateur) seront effectuées
long lecture_echo1;
long lecture_echo2;
long lecture_echo3;

long cm1;
long cm2;
long cm3;

// déclaration des 3 pins permettant le contrôle des marche/arrêt de chaque ventilateur
int cont1 = 8;
int cont2 = 9;
int cont3 = 10;


void setup()
{
  pinMode(trig1, OUTPUT);
  digitalWrite(trig1, LOW);
  pinMode(trig2, OUTPUT);
  digitalWrite(trig2, LOW);
  pinMode(trig3, OUTPUT);
  digitalWrite(trig3, LOW);
  pinMode(echo1, INPUT);
  pinMode(echo2, INPUT);
  pinMode(echo3, INPUT);
  pinMode (cont1, OUTPUT);
  pinMode (cont2, OUTPUT);
  pinMode (cont3, OUTPUT);
  Serial.begin(9600);
  
}

void loop()
{
// mesure de la distance du capteur1 (relié au ventilateur 1) en cm
  digitalWrite(trig1, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig1, LOW);
  lecture_echo1 = pulseIn(echo1, HIGH);
  cm1 = lecture_echo1 / 58;
  Serial.print("Distance1 m : ");
  Serial.println(cm1);
// mise en route du ventilateur si la distance mesurée est inférieure à 50cm
  if (cm1<50){
      digitalWrite (cont1, HIGH);
  }
  else {
    digitalWrite (cont1, LOW);
   }

  digitalWrite(trig2, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig2, LOW);
  lecture_echo2 = pulseIn(echo2, HIGH);
  cm2 = lecture_echo2 / 58;
  Serial.print("Distance2 m : ");
  Serial.println(cm2);
  if (cm2<50){
      digitalWrite (cont2, HIGH);
  }
  else {
    digitalWrite (cont2, LOW);
   }

  digitalWrite(trig3, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig3, LOW);
  lecture_echo3 = pulseIn(echo3, HIGH);
  cm3 = lecture_echo3 / 58;
  Serial.print("Distance3 m : ");
  Serial.println(cm3);
  if (cm3<50){
      digitalWrite (cont3, HIGH);
  }
  else {
    digitalWrite (cont3, LOW);
   }
 
  delay(500);
}

Semaine 10

  • En début de semaine nous sommes allés chercher des ventilateurs assez puissants afin de pouvoir faire nos tests une fois l'hélium arrivé. ceci étant, il nous manque toujours quelques ventilateurs afin de pouvoir gérer toutes les directions voulues. Nous allons donc devoir nous procurer les ventilateurs restants.
  • Le mercredi, nous avons fait les plans de notre deuxième nacelle, plus grande afin qu'elle puisse comporter l'Arduino, la batterie, ainsi que la breadboard et que les câblages soient plus aisés. Pour le moment, nous voulons essayer la méthode des ventilateurs couplés aux transistors sans Shield, afin de vérifier que cette méthode fonctionne.

Nous avons également pensé à la répartition des 3 constituants de la nacelle, en effet, nous voulons équilibrer le poids afin que cette dernière soit stable. Nous allons donc centrer la batterie (élément le plus lourd dans la nacelle). Nous avons prévu 2 trous par face afin de pouvoir relier la nacelle au ballon (contre 1 seul trou par face lors du dernier prototype ce qui rendait la nacelle un peu instable).

  • Lorsque nous aurons tous les ventilateurs nécessaires au bon fonctionnement, ainsi que l'hélium, nous pourrons tester notre méthode (avec câblages), et si celle-ci se montre viable, nous réaliserons un shield afin de rendre plus propre la nacelle.
  • Pour le moment, nous fixerons directement les ventilateurs aux parois, si l'appel d'air n'est pas assez conséquent, nous percerons alors des trous sur chaque face afin de pouvoir fixer des tiges qui permettront d'éloigner les ventilateurs de la nacelle, ce qui augmenterait les poussées du dirigeable.

Fichiers Rendus