Tutoriel : Fabrication d’un collier lumineux pour chien avec l’Adafruit Flora  

Tutoriel : Fabrication d’un collier lumineux pour chien avec l’Adafruit Flora

Que ce soit par simple coquetterie ou pour vous assurer que votre chien soit facilement visible la nuit, nous vous proposons ici de fabriquer un collier lumineux extravagant pour votre fidèle compagnon grâce au microcontrôleur Flora de la marque Adafruit et son nombre illimité de NeoPixels Adafruit aux couleurs changeantes.

Le projet

Niveau : débutant

Temps : 2 heures

Budget : 80-100 €

Matériel requis : un microcontrôleur Adafruit Flora, des LEDs NeoPixel RGB Adafruit Flora, une batterie Lipo 150 mAh ou un bloc pile 3xAAA, du fil conducteur, un accéléromètre Adafruit Flora

Vous aurez également besoin : de votre ordinateur, d’un collier pour chien, d’une aiguille et de fil



Connecter l’accéléromètre et les NeoPixels au microcontrôleur Adafruit Flora

Avant de vous attaquer à la phase de construction, il est important de comprendre comment les composants (accéléromètre et NeoPixels) seront connectés par la suite à la carte Adafruit Flora. La connexion sera assurée par des fils conducteurs qui permettra le bon fonctionnement de transmission des signaux et du courant. Il vous faut ainsi garder à l’esprit la liste suivante (les lettres représentent les points de connexion des différents composants et de la carte Adafruit) :

Accéléromètre :

  • GND → GND
  • SCL → SCL
  • SDA → SDA
  • 3V → 3.3V

Raccordement en série des NeoPixels :

  • Vcc (Power) → FLORA VBATT
  • IN (Data Input) → FLORA D6
  • Gnd (Ground) → GND

Choix de l’emplacement des NeoPixels et de l’Adafruit Flora

Attention : assurez-vous de toujours travailler sur une surface non-conductrice et de vérifier qu’il n’y a pas de court-circuit indésirable avant de connecter l’Adafruit Flora à la batterie ou à l’ordinateur.

L’étape suivante consiste à sélectionner l’emplacement souhaité pour les NeoPixels, l’Adafruit Flora et l’accéléromètre sur le collier du chien. Lorsque votre choix est fait, vous pouvez coudre la carte mère et l’accéléromètre. Pour l’Adafruit Flora, les raccordements opposés GND et 3,3V conviennent. Il est également possible d’utiliser des fils toronnés qui relient les composants par des points de soudure. Ensuite, il faut relier l’Adafruit Flora et l’accéléromètre par un fil conducteur.

Raccordement des NeoPixels avec l’Adafruit Flora

L’étape suivante consiste à connecter les NeoPixels à la carte mère. Partez du connecteur D6 de la carte mère et conduisez le fil conducteur jusqu’au connecteur doté d’une flèche pointant vers l’intérieur du premier NeoPixel. Puis, à partir du connecteur opposé du NeoPixel, doté de la flèche dirigée vers l’extérieur, guidez le fil conducteur vers le NeoPixel suivant – jusqu’à ce que vous ayez relié tous les NeoPixels.

Prenez ensuite deux autres fils conducteurs et cousez le fil de terre et le raccordement électrique entre la carte mère et les NeoPixel.

Allumer les NeoPixels

Connectez maintenant la carte mère à votre ordinateur à l’aide d’un câble USB. Ouvrez l’EDI Adafruit Arduino, qui contient la bibliothèque NeoPixel. Nous vous recommandons la procédure suivante :

  1. Pour tester le NeoPixel : uploadez le sketch vers l’emplacement suivant : File→Examples→Adafruit_NeoPixel→strandtest. Si tous les pixels s’allument et que les couleurs changent, c’est que tout est en ordre.
  2. Pour tester l’accéléromètre : téléchargez la bibliothèque Adafruit Sensor, ainsi que la bibliothèque unifiée LSM303DLHC et uploadez le sketch ici : File→Examples→Adafruit_LSM303→Test. Ouvrez ensuite le moniteur série (Serial Monitor) et recherchez les changements de Motion Values
  3. En troisième étape, copiez et uploadez le code suivant (fourni sur la page d’accueil officielle d’Adafruit) dans l’EDI Adafruit (les couleurs peuvent être ajustées dans le tableau myFavoriteColors et la sensibilité de mouvement sous MOVE_THRESHOLD) :
#include 
#include 
#include 
#include 

// Parameter 1 = number of pixels in strip
// Parameter 2 = pin number (most are valid)
// Parameter 3 = pixel type flags, add together as needed:
//   NEO_RGB     Pixels are wired for RGB bitstream
//   NEO_GRB     Pixels are wired for GRB bitstream
//   NEO_KHZ400  400 KHz bitstream (e.g. FLORA pixels)
//   NEO_KHZ800  800 KHz bitstream (e.g. High Density LED strip)
Adafruit_NeoPixel strip = Adafruit_NeoPixel(6, 6, NEO_GRB + NEO_KHZ800);
Adafruit_LSM303_Accel_Unified accel = Adafruit_LSM303_Accel_Unified(54321);

// Here is where you can put in your favorite colors that will appear!
// just add new {nnn, nnn, nnn}, lines. They will be picked out randomly
//                                  R   G   B
uint8_t myFavoriteColors[][3] = {{200,   0, 200},   // purple
                                 {200,   0,   0},   // red 
                                 {200, 200, 200},   // white
                               };
// don't edit the line below
#define FAVCOLORS sizeof(myFavoriteColors) / 3

// mess with this number to adjust TWINklitude 🙂
// lower number = more sensitive
#define MOVE_THRESHOLD 45

void setup() 
{
  Serial.begin(9600);
  
  // Try to initialise and warn if we couldn't detect the chip
  if (!accel.begin())
  {
    Serial.println("Oops ... unable to initialize the LSM303. Check your wiring!");
    while (1);
  }
  strip.begin();
  strip.show(); // Initialize all pixels to 'off'
}

void loop() 
{
  /* Get a new sensor event */ 
  sensors_event_t event; 
  accel.getEvent(&event);
  Serial.print("Accel X: "); Serial.print(event.acceleration.x); Serial.print(" ");
  Serial.print("Y: "); Serial.print(event.acceleration.y);       Serial.print(" ");
  Serial.print("Z: "); Serial.print(event.acceleration.z);     Serial.print(" ");

  // Get the magnitude (length) of the 3 axis vector
  // http://en.wikipedia.org/wiki/Euclidean_vector#Length
  double storedVector = event.acceleration.x*event.acceleration.x;
  storedVector += event.acceleration.y*event.acceleration.y;
  storedVector += event.acceleration.z*event.acceleration.z;
  storedVector = sqrt(storedVector);
  Serial.print("Len: "); Serial.println(storedVector);
  
  // wait a bit
  delay(100);
  
  // get new data!
  accel.getEvent(&event);
  double newVector = event.acceleration.x*event.acceleration.x;
  newVector += event.acceleration.y*event.acceleration.y;
  newVector += event.acceleration.z*event.acceleration.z;
  newVector = sqrt(newVector);
  Serial.print("New Len: "); Serial.println(newVector);
  
  // are we moving 
  if (abs(newVector - storedVector) > MOVE_THRESHOLD) {
    Serial.println("Twinkle!");
    flashRandom(5, 1);  // first number is 'wait' delay, shorter num == shorter twinkle
    flashRandom(5, 3);  // second number is how many NeoPixels to simultaneously light up
    flashRandom(5, 2);
  }
}

void flashRandom(int wait, uint8_t howmany) {

  for(uint16_t i=0; i<howmany; i++) {
    // pick a random favorite color!
    int c = random(FAVCOLORS);
    int red = myFavoriteColors[c][0];
    int green = myFavoriteColors[c][1];
    int blue = myFavoriteColors[c][2]; 

    // get a random pixel from the list
    int j = random(strip.numPixels());
    //Serial.print("Lighting up "); Serial.println(j); 
    
    // now we will 'fade' it in 5 steps
    for (int x=0; x < 5; x++) { int r = red * (x+1); r /= 5; int g = green * (x+1); g /= 5; int b = blue * (x+1); b /= 5; strip.setPixelColor(j, strip.Color(r, g, b)); strip.show(); delay(wait); } // & fade out in 5 steps for (int x=5; x >= 0; x--) {
      int r = red * x; r /= 5;
      int g = green * x; g /= 5;
      int b = blue * x; b /= 5;
      
      strip.setPixelColor(j, strip.Color(r, g, b));
      strip.show();
      delay(wait);
    }
  }
  // LEDs will be off when done (they are faded to 0)
}

Si vous n’êtes pas satisfait de la configuration par la suite, vous pourrez modifier le code et l’affiner jusqu’à ce que vous trouviez la configuration qui vous convient.

La batterie

Une fois la configuration effectuée, la batterie doit être installée. Vous avez le choix de coudre un petit sac de batterie ou de coudre un sac en tissu sur le collier du chien, à attacher de telle manière qu’il n’occasionne pas de bruit lorsque le chien se déplacera. Assurez-vous que la batterie soit proche de la carte Adafruit Flora pour que la connexion soit courte et stable. Une fois le boîtier de batterie fixé, vous pouvez procéder à connecter la batterie et la carte mère.

Première sortie !

Une fois que la fréquence de la lumière et les couleurs ont été réglées pour correspondre à votre goût, il ne vous reste plus qu’à inaugurer votre accessoire pour chien tendance !

 

Votre avis compte: qu'en pensez-vous?

Résultats précédents du vote sont en cours de chargement.
 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *