Horloge Lunaire

De Les Fabriques du Ponant
Aller à : navigation, rechercher

Dans le cadre du Gasthon, nous, étudiants et étudiantes de l'ENIB avons du réaliser un projet durant deux jours, et voici notre histoire.

Logo-enib.png

Description du Projet

Notre projet a pour but de simuler une lune et son cycle dans l'année, jour après jour.

Vous ne pouvez pas voir la lune a cause du ciel Brestois ? Utilisez notre horloge lunaire et découvrez son cycle !


Phase1.jpg Phase 2.jpg Phase3.jpg Phase4.jpg

Les Objectifs

Durant les deux jours du Gasthon les étudiants et étudiantes de l'ENIB auront pour but de mettre en application leurs compétences techniques autour du numérique (arduino, mais aussi soudure, utilisation de découpeuse laser...). Pour créer un objet loufoque (dont l'utilité laisse à désirer donc) amusant à utiliser, et reproductible pour les grands comme pour les petits.

La conception

Etapes de concpetion

Plans

Plan1.jpg Plan2.jpg

Fabrication de la lune

  • LE SOCLE

Dans un premier lieu, il nous fallait un socle pour positioner la lampe-lune. Nous avons penser le faire à la découpeuse laser (en bois). Mais par manque de temps, nous avons décidé de le faire en carton.

Avant tout nous avons découpé un cercle de 15 cm de rayon dans du carton,puis 6 demi-cercles de 15 cm de rayon. Par la suite nous avons coupé dans l'un des demi-cercles 5 encoches de 10 cm de long aux angles suivants 30°, 60°, 90°, 120° et 150°. Nous avons ensuite inséré les 5 autres demi cercles dans les différentes encoches de façon à former une demi-sphère. Puis, après avoir planté des piques en bois dans le demi-cercle à encoches, nous avons pu le fixer au cercle complet sur le quel la demi-sphère se pose. A la fin nous avons obtenu quelque chose de semblable à ceci :


Socle.jpg


Les différents demi-cercles coupent la demi-sphère en 6 'quartiers' dans lesquels les rubans LED seront cachés derrière la lune.

  • LA LUNE

Pour frabriquer la lune nous avons décidé d'utiliser notre socle en tant que moule. Nous l'avons donc recouvert de cellophane, puis nous avons étalé sur la surface de la colle à papier cléopatre, sur laquelle nous avons ensuite disposé des lambeaux de papier essuis-tout. Nous l'avons fait séché, puis nous avons recouvert la première couche par une seconde. Et ainsi de suite, nous avons fait d'autre couche une fois la précédente séchée, et ceci jusqu'à obtenir une surface suffisament épaisse.


Lune1.jpg Bandelettes.jpg Sechage lune.jpg

  • L'éclairage

Pour l'éclairage, nous avons choisi d'utiliser un ruban LED. Il a fallu dans un premier temps découper différentes bandelettes de LEDs. Il faut simplement couper avec des ciseaux à la longueur désirée en suivant les pointillés.

Bande Leds.jpg

Il faut retirer la protection plastique pour pouvoir accès à la zone de soudure. Nous avons donc souder un fil rouge sur l'alimentation 5V, un vert sur la patte DIN, et un fil noir pour la masse (GND : ground). Prendre soins de se protéger des vapeurs dégagées par l'étain lors de la soudure. Il faut ensuite mettre du ruban isolant pour protéger cette zone. Nous n'en avions pas.

Code

Le code ci dessous permet d'allumer une a une chaque led dans un intervalle de 4 secondes


#include <Adafruit_NeoPixel.h> // Charge la librairie Neo Pixel d'Adafruit utilisé pour piloter le ruban de LED

#define PIXEL_PIN6 6 // On définit le pin où est connecté la patte DATA du bandeau
#define PIXEL_PIN5 5
#define PIXEL_PIN4 4
#define PIXEL_PIN3 3
#define PIXEL_PIN2 2
#define PIXEL_PIN1 1
#define PIXEL_COUNT 3 // On définit le nombre de LED compris sur le Ruban de LED soit 150 pour le ruban de 5m50

Adafruit_NeoPixel strip1 = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN1, NEO_GRB + NEO_KHZ800); // Paramètre l'objet strip qui correspond à toute les LED du ruban
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN2, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip3 = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN3, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip4 = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN4, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip5 = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN5, NEO_GRB + NEO_KHZ800);
Adafruit_NeoPixel strip6 = Adafruit_NeoPixel(PIXEL_COUNT, PIXEL_PIN6, NEO_GRB + NEO_KHZ800);

int phase=1;
void setup() {
   strip1.begin(); // Lance la connection
   strip1.show(); // Initialise toute les led à 'off'
   strip2.begin(); // Lance la connection
   strip2.show(); // Initialise toute les led à 'off'
      strip3.begin(); // Lance la connection
   strip3.show(); // Initialise toute les led à 'off'
      strip4.begin(); // Lance la connection
   strip4.show(); // Initialise toute les led à 'off'
      strip5.begin(); // Lance la connection
   strip5.show(); // Initialise toute les led à 'off'
      strip6.begin(); // Lance la connection
   strip6.show(); // Initialise toute les led à 'off'
}

void led(int phase)
{

  if(phase==1)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,0,0,0);
    strip2.setPixelColor(i,0,0,0);
    strip3.setPixelColor(i,0,0,0);
    strip4.setPixelColor(i,0,0,0);
    strip5.setPixelColor(i,0,0,0);
    strip6.setPixelColor(i,0,0,0);
    }
    }

  if(phase==2)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,255,255,255);
    strip2.setPixelColor(i,0,0,0);
    strip3.setPixelColor(i,0,0,0);
    strip4.setPixelColor(i,0,0,0);
    strip5.setPixelColor(i,0,0,0);
    strip6.setPixelColor(i,0,0,0);
    }
  
  }


if(phase==3)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,255,255,255);
    strip2.setPixelColor(i,255,255,255);
    strip3.setPixelColor(i,0,0,0);
    strip4.setPixelColor(i,0,0,0);
    strip5.setPixelColor(i,0,0,0);
    strip6.setPixelColor(i,0,0,0);
    }
  
  }
  
if(phase==4)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,255,255,255);
    strip2.setPixelColor(i,255,255,255);
    strip3.setPixelColor(i,255,255,255);
    strip4.setPixelColor(i,0,0,0);
    strip5.setPixelColor(i,0,0,0);
    strip6.setPixelColor(i,0,0,0);
    }
  
  }
if(phase==5)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,255,255,255);
    strip2.setPixelColor(i,255,255,255);
    strip3.setPixelColor(i,255,255,255);
    strip4.setPixelColor(i,255,255,255);
    strip5.setPixelColor(i,0,0,0);
    strip6.setPixelColor(i,0,0,0);
    }
  
  }
if(phase==6)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,255,255,255);
    strip2.setPixelColor(i,255,255,255);
    strip3.setPixelColor(i,255,255,255);
    strip4.setPixelColor(i,255,255,255);
    strip5.setPixelColor(i,255,255,255);
    strip6.setPixelColor(i,0,0,0);
    }
  }

if(phase==7)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,255,255,255);
    strip2.setPixelColor(i,255,255,255);
    strip3.setPixelColor(i,255,255,255);
    strip4.setPixelColor(i,255,255,255);
    strip5.setPixelColor(i,255,255,255);
    strip6.setPixelColor(i,255,255,255);
    }
  }
if(phase==8)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,0,0,0);
    strip2.setPixelColor(i,255,255,255);
    strip3.setPixelColor(i,255,255,255);
    strip4.setPixelColor(i,255,255,255);
    strip5.setPixelColor(i,255,255,255);
    strip6.setPixelColor(i,255,255,255);
    }
  }
  if(phase==9)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,0,0,0);
    strip2.setPixelColor(i,0,0,0);
    strip3.setPixelColor(i,255,255,255);
    strip4.setPixelColor(i,255,255,255);
    strip5.setPixelColor(i,255,255,255);
    strip6.setPixelColor(i,255,255,255);
    }
  }
  if(phase==10)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,0,0,0);
    strip2.setPixelColor(i,0,0,0);
    strip3.setPixelColor(i,0,0,0);
    strip4.setPixelColor(i,255,255,255);
    strip5.setPixelColor(i,255,255,255);
    strip6.setPixelColor(i,255,255,255);
    }
  }
  if(phase==11)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,0,0,0);
    strip2.setPixelColor(i,0,0,0);
    strip3.setPixelColor(i,0,0,0);
    strip4.setPixelColor(i,255,255,255);
    strip5.setPixelColor(i,255,255,255);
    strip6.setPixelColor(i,255,255,255);
    }
  }
  if(phase==12)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,0,0,0);
    strip2.setPixelColor(i,0,0,0);
    strip3.setPixelColor(i,0,0,0);
    strip4.setPixelColor(i,0,0,0);
    strip5.setPixelColor(i,255,255,255);
    strip6.setPixelColor(i,255,255,255);
    }
  }
  if(phase==13)
  {
    for(int i=0; i<3 ; ++i)
  {
    strip1.setPixelColor(i,0,0,0);
    strip2.setPixelColor(i,0,0,0);
    strip3.setPixelColor(i,0,0,0);
    strip4.setPixelColor(i,0,0,0);
    strip5.setPixelColor(i,0,0,0);
    strip6.setPixelColor(i,255,255,255);
    }
  }
    strip1.show();
    strip2.show();
    strip3.show();
    strip4.show();
    strip5.show();
    strip6.show();
  }

  
void loop() {
  strip1.setBrightness(100); // Règle la luminosité à 100 % de la luminosité maximale
  strip2.setBrightness(100);
  strip3.setBrightness(100);
  strip4.setBrightness(100);
  strip5.setBrightness(100);
  strip6.setBrightness(100);
  

led(phase);
delay(1000);
++phase;
if(phase>13)
{phase=1;}

}






Câblage

Nous avons d'abord simplement brancher nos Leds.

Arduino lune.jpg Labdec lune.jpg


Nous avons ensuite mis une boite en dessous de notre lune pour câcher tout le câblage. Nous avons mis le code sur notre carte Arduino, puis nous l'avons alimenter par pile.

Boite lune.jpg Lune fonction.jpg

Nous avons fixé les Leds avex du scotch.

Schema lune.png

Idées optionelles

Nous avions pensé à d'autres idées, mais pour respecter le délai du marathon, nous n'avons pas pu tout réaliser. Nous avons eu aussi des problèmes qui ont ralenti notre avancé. Nous avions côdé et câblé un afficheur qui devait afficher le jour de la phase lunaire, mais comme ce n'était pas une idée prioritaire de notre projet et que nous avions des problèmes avec les bandes-LEDs, nous avons supprimé cet aspect de notre projet.

Le socle ainsi que la lune pouvaient être réalisés plus estéthiquement, par découpage laser de plaques de bois et par impression d'une demi lune à l'imprimente 3D en utilisant un plastique assez translucide.

Il nous manquait un module RTC pour realiser un affichage realiste du cycle lunaire.

L'équipe

  • Courtel--Sourdeau Pierre
  • El khoury Nadia
  • Harkati Amna
  • Kepfer Paulin

Matériels

  • Un arduino uno
  • Plaque Labdec
  • Un module afficheur
  • 30cm de ruban Led
  • Du carton
  • De la colle à papier Cléopatre
  • Du papier essuis-tout
  • Câbles connecteurs, pinces coupantes, fer à souder etc...

Ressources

Lien Instructables pour une horloge plus avancé