Uw hond wordt een blikvanger: maak met Adafruit Flora een lichtgevende hondenhalsband  

Uw hond wordt een blikvanger: maak met Adafruit Flora een lichtgevende hondenhalsband

Gewoon voor uw plezier, of om uw hond ook in het donker goed te kunnen zien: zo maakt u met behulp van Adafruit Flora een extravagante, lichtgevende hondenhalsband voor uw trouwe viervoeter.

Het project

Geschikt voor: Beginners

Benodigde tijd: 2 uur

Budget: € 80,- à € 100,-

Dit hebt u nodig: Adafruit Flora, Adafruit Flora RGB Neopixel Leds, 150 mAh lithiumpolymeer batterij of 3x AAA-blokbatterijen, geleidende draad, Adafruit Flora Accelerometer (=versnellingsmeter),

Kan worden uitgebreid met: –

Dit hebt u verder nog nodig: hondenhalsband, naald, draad

Verbinden van versnellingsmeter en neopixel met Adafruit Flora

Voordat u begint met het maken van de hondenhalsband is het belangrijk te weten hoe de componenten (versnellingsmeter en neopixel) later met Adafruit Flora moeten worden verbonden. De verbinding zal dan via de geleidende draden tot stand komen, die zorgen dat de overdracht van signalen of van stroom goed functioneert. Als alternatief is het ook mogelijk om gevlochten draad te gebruiken, die de componenten via soldeerpunten verbindt. Hiervoor moet worden gelet op de volgende opstelling (de letters staan voor de aansluitpunten van de afzonderlijke componenten en het moederbord):

Versnellingsmeter:

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

Serieschakeling van de Neopixel:

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

Plaatsing van neopixels en Adafruit Flora

Let op: Allereerst moet ervoor worden gezorgd dat er wordt gewerkt op een oppervlak dat niet geleidend is. Het is verder belangrijk om het werk te controleren op kortsluiting, voordat Adafruit Flora met de batterij of de computer wordt verbonden.

Daarna gaat het om het kiezen van de gewenste plekken van de neopixel, van Adafruit Flora en van de versnellingsmeter op de hondenhalsband. Als deze zijn gevonden, dan worden in de volgende stap het moederbord en de versnellingsmeter dicht bij elkaar op de halsband genaaid. Bij Adafruit Flora zijn hierbij de tegenoverliggende aansluitingen GND en 3.3V geschikt. Vervolgens worden Adafruit Flora en de versnellingsmeter met een geleidende draad met elkaar verbonden.

Verbinden van neopixel met Adafruit Flora

De volgende stap gaat over het verbinden van de neopixel met het moederbord. Hierbij wordt begonnen bij de D6-aansluiting van het moederbord en wordt de geleidende draad naar de aansluiting met de naar binnen gerichte pijl van de eerste neopixel geleid. Vanaf de tegenoverliggende aansluiting van de neopixel met de naar buiten toe gerichte pijl wordt de geleidende draad naar de volgende neopixel geleid, totdat alle neopixels zijn bereikt.

Daarna moeten twee extra geleidende draden worden gepakt. De aardedraad en de stroomverbinding moeten tussen het moederbord en de neopixel worden genaaid.

Verlichten van de neopixels

Nu wordt het moederbord verbonden met de computer met behulp van een USB-kabel. Daarop wordt vervolgens Adafruit Arduino IDE geopend waar zich de Neopixel Library bevindt. De volgende werkwijze is aan te bevelen:

  1. Neopixels testen: upload hiervoor de sketch: File→Examples→Adafruit_NeoPixel→strandtest. Als alle pixels oplichten en van kleur wisselen, is alles in orde.
  2. Versnellingsmeter testen: download hiervoor de Adafruit Sensor Library en de Unified LSM303DLHC Library en upload de sketch: File→Examples→Adafruit_LSM303→Test. Open vervolgens de Serial Monitor en ga op zoek naar wisselende Motion Values.
  3. Bij de derde stap wordt de volgende code (beschikbaar gesteld via de officiële website van Adafruit) gekopieerd in Adafruit Arduino IDE en geüpload (de kleuren kunnen worden aangepast in myFavoriteColors Array en de gevoeligheid voor beweging via MOVE_THRESHOLD:
#include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_LSM303_U.h>

#include <Adafruit_NeoPixel.h>



// 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.y*event.acceleration.y;

  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)

}

Als u achteraf niet tevreden bent over de configuratie, kunt u natuurlijk altijd weer wijzigingen doorvoeren in de code totdat u de optimale instelling heeft gevonden.

Tot slot de batterij

Na de configuratie moet in de laatste stap de batterij worden aangebracht. Er kan een kleine batterijhouder worden genaaid, of een klein stoffen zakje aan de hondenhalsband gemaakt worden. Deze moet bevestigd worden dat deze bij beweging op zijn plek blijft. Let erop dat de batterij zich in de buurt van het moederbord van Adafruit Flora bevindt, zodat er een korte en stabiele verbinding is. Als de batterijhouder is vastgenaaid, kunt u de batterij met het moederbord verbinden.

Naar buiten toe

Als de lichtfrequentie en de kleur vervolgens naar wens zijn afgestemd, rest u nog maar een ding om te doen: naar buiten gaan en laten zien wie de coolste hondengadget heeft!



 

Jouw mening telt. Wat vind jij van dit onderwerp?

Eerdere beoordelingen laden.
 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *