DIY : Tutoriel d'installation et de configuration de la carte de pilotage

Français

Bonjour vous voulez un assistant personnel qui veille sur votre jardin pendant votre absence ou vous avez besoin d'une aide pour la gestion de votre jardinFaites appel à Secret Garden!

Secret Garden est gratuit, pour l’utiliser vous aurez besoin de :

Vous inscriresi ce n’est pas déjà fait; le lien ci-dessous vous permettra de le faire. http://votre-secret-garden.fr/inscription.php

D’une carte Arduino (Yùnhttp://store.arduino.cc/index.php?main_page=product_info&cPath=11&products_id=313

Du Shield Secret Garden, voici le tutoriel pour l’obtenir. http://blog.votre-secret-garden.fr/fr/article/diy-fabriqu%C3%A9-le-shield-secret-garden

D’un capteur d’humidité/température (DHT11). http://boutique.semageek.com/fr/138-dht11-capteur-de-temp%C3%A9rature-et-humidit%C3%A9-digital.html

D'un capteur d’humidité du sol. http://boutique.semageek.com/fr/282-capteur-d-humidite-grove.html

De câbles http://boutique.semageek.com/fr/17-cables

D'un boîtier de dérivation électrique. http://www.castorama.fr/store/Boite-de-derivation-etanche-100-x-100-mm-PRDm823258.html;jsessionid=njRRsBwIxoo3J2W0YyOnCA**.fo1atg3?navAction=push&navCount=0

Vous pouvez aussi optionnellement ajouter :

           Un capteur de luminosité. http://shop.mchobby.be/fr/senseur-divers/238-senseur-lux-luminosite-lumiere-digital.html

           Une sonde pH. http://www.ebay.fr/itm/Electrode-Sonde-de-Rechange-Testeur-pH-BNC-0-9-12mm-pH-013M-/171101338344?hash=item27d66f3ae8&pt=FR_YO_MaisonJardin_Jardin_PiscinesAccessoires

           Un kit d'étalons pour pH-mètre  (pH 4 et pH 7) http://www.hanna-shop.com/Solutions-detalonnage-pH-Solutions-tampons-standards-Kit-detalonnage-pH-401-et-pH-701-20-mL-de-chaque-p-996.html?cust_id=def7c5d08235c1058c4184458eed1bd4

Installation du programme et configuration du Secret Garden

           Pour commenceril faut télécharger le code qui se trouve à la fin de l’article ainsi que les librairies. Voici un tableau pour savoir de quelle librairie vous aurez besoin.

librairie

Arduino Yùn

Rtclib

ok

Dht11

ok

Digital_Light_TSL2561 optionnel (seulement si vous utliliser le capteur de luminosité)

 

Une fois téléchargéil vous faudra ouvrir le programme à l’aide du logiciel Arduino et modifier certaines variables. Vous devrez entrer votre clé Arduino (que vous avez obtenue lors de votre inscription, vous pouvez la retrouver dans votre boîte mail ou dans le menu  « mon compte » de Secret Garden).

Vous pouvez également entrer votre clé Prowl si vous avez un compte Prowl, compte qui vous permet de recevoir les notifications sur votre Smartphone ou votre tablette. Vous pouvez vous créer un compte à cette adressehttps://www.prowlapp.com/register.php

Une fois tout cela effectuéil ne vous reste plus qu’à charger le programme dans votre carte Arduino.

 

Connection de la lampe de culture et de la pompe a eau sur l'Arduino

Je pense qu'un schéma sera plus simple pour comprendre comment connecter votre pompe à eau ainsi que votre lampe à l'arduino.

Configuration de la sonde pH (optionnel)

                Si vous utilisez la sonde pH, voici comment la configurer. Tout d’aborddans le programme, décommenter la fonction pH() ainsi que la fonction readADC(). Ensuiteallez dans la fonction secretgarden() et décommenter la ligne ph=pH() ; Puis vous devrez revenir tout en haut du fichier pour décommenter la ligne int ppfd;

Enfin rendez vous à la fonction roue_url() et décommenter

url+="&ph=";

url+=ph;

Pour calibrer la sonde pH vous aurez besoin de deux solutions étalon l'une à pH 4 et l’autre à pH 7.

Tremper tout d'abord votre sonde dans la solution pH 7. A l’aide d’un voltmètremesurez Vsense (JP1) et réglez R12 (potentiomètre de droite) pour obtenir Vsense=0V.

Retirez la sonde de cette solution, rincez la à l'eau du robinet essuyez la à l'aide d'une serviette en papier puis trempez la dans la solution pH 4. Réglez alors R4 (potentiomètre de gauche) pour obtenir Vsense=1V.

 

Configuration du capteur de luminosité (optionnel)

              Nous allons voir tout d'abord comment cabler le capteur puis nous verrons comment le configurer.

Pour le caclage du capteur suivez le schéma ci-dessous.

Pour le configurer, veuillez procéder comme suit: Dans le programmedécommentez la fonction Light() puis allez dans la fonction secretgarden() et décommentez la ligne ppfd = light(); Ensuite, il faut revenir tout en haut du fichier pour décommenter cette ligne int ppfd;

Enfinrendez vous à la fonction roue_url() et décommentez,

url+="&ppfd=";

url+=ppfd;

N'oubliez pas que le capteur de luminosité nécessite aussi une librairie additionnelle que vous pourrez télécharger à la fin de l’article. Il faudra aussi décommenter la ligne #include <Digital_Light_TSL2561.h> dans le programme pour pouvoir l'utiliser.

 

Voilàvotre jardin est maintenant connectéVous n'avez plus qu'à le laisser faire, il prendra soin de vos plantes!

Si vous avez des questions, n'hésitez pas à les poser dans les "commentaires".

Bonnes plantations a tous !

code: 

/*
lumiere_pin = 6;
eau_pin = 7;
moisture_sensor = A2;
rtc pin 2 sda et 3 clk 
ph A0 ph_ref A1
lux pin 2 sda et 3 clk
*/
#include <Bridge.h>
#include <Process.h>
#include <Wire.h>
#include "RTClib.h"
#include <dht11.h>
#define DHT11_PIN 8
//#include <Digital_Light_TSL2561.h>
 
#define PH_GAIN_STAGE1_PH      4.8262 
#define PH_GAIN_STAGE2_REF      2.0
#define CLE_ARDUINO "" //Ajouté ICI la cle ARDUINO //Add here your ARDUINO key. 
#define CLE_PROWL "" //Ajouté ICI la cle PROWL si vous en avez une. //Add here your PROWL key if you have one.
 
dht11 DHT;
RTC_DS1307 RTC;
 
bool prowl = true ; 
int twitter = 0 ;
 
//int ppfd;
//float ph;
String stemperature ;
String humidite ;
int Moisture =0;
String probleme ; 
char dht_char[1];
int dht_state=3;
int secheresse =0;
 
DateTime now ;
DateTime future ; 
DateTime dailyreport;
 
int pass = 0;
int lock = 0;
 
int etape = 0;
 
void setup() {
  // Bridge takes about two seconds to start up
  // it can be helpful to use the on-board LED
  // as an indicator for when it has initialized
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  Bridge.begin();
  digitalWrite(13, HIGH);
  //fin initialisation bridge 
  //inialisation des capteur et des relay 
  pinMode(7,OUTPUT);//eau
  pinMode(6,OUTPUT);//lumiere
  pinMode(A2,INPUT);//moisture
  Wire.begin();
  RTC.begin();
  if (! RTC.isrunning()) {
     Serial.println("RTC is NOT running!");
     // following line sets the RTC to the date & time this sketch was compiled
    // RTC.adjust(DateTime(__DATE__, __TIME__));
  }
 
  //TSL2561.init(); //====================> LUX 
 
  now = RTC.now();
 
  future = DateTime(now.unixtime() + 3200L) ;
  dailyreport = DateTime(1389078000L);
  Serial.begin(9600);
  if(now.day() > dailyreport.day()){
      dailyreport = DateTime(now.unixtime()+86400L);
  }
  delay(1000);
  while (!Serial); // wait for a serial connection
  Serial.println("DEBUT ICI");
  secretgarden();
}
 
void loop() {
  String test;
  get_cycle();
  test=roue_url();
  Serial.println(test);
  if(test.startsWith("http://votre-secret-garden.fr")){
    marlert(test);
  }
  else{
    if(test.startsWith("wait")){
      Serial.println(" ");
    }
    else{
      to_cloud(test);
     }
 
  }
  delay(5000);
}
 
void marlert(String url){
  Process secretgarden;
  secretgarden.begin("curl");
  secretgarden.addParameter(url);
  secretgarden.run();
 
  while (secretgarden.available() > 0) {
    char c = secretgarden.read();
    Serial.write(c);
  } 
}
 
void to_cloud(String url){
  Process secretgarden;
  secretgarden.begin("curl");
  secretgarden.addParameter("--data");
  secretgarden.addParameter(url);
  secretgarden.addParameter("http://votre-secret-garden.fr/arduino.php");
  secretgarden.run();
 
  while (secretgarden.available() > 0) {
    char c = secretgarden.read();
    Serial.write(c);
  }
}
 
void get_cycle(){
  String Url,rep;
  rep="";
 
  int heure_l=0,minute_l=0,heure_e=0,minute_e=0,heure_fin=0,minute_fin=0,fin_h=0,fin_m=0,securite=0;
 
  Url="http://votre-secret-garden.fr";
  Url+="/xml/action_";
  Url+=CLE_ARDUINO;
  Url+=".xml";
 
 
  Process secretgarden;
  secretgarden.begin("curl");
  secretgarden.addParameter(Url);
  secretgarden.run();
 
  Serial.println(Url);
  while (secretgarden.available()>0) {
      char c = secretgarden.read();
        if(c == '\n'){
          if(rep.startsWith("    <heure_l>")) {
              rep.replace("<heure_l>", "");
              rep.replace("</heure_l>", "");
              heure_l=rep.toInt();
          }
          else if(rep.startsWith("    <min_l>")) {
            rep.replace("<min_l>", "");
            rep.replace("</min_l>", "");
            minute_l=rep.toInt();
          }
          else if(rep.startsWith("    <heure_fin>")) {
            rep.replace("<heure_fin>", ""); 
            rep.replace("</heure_fin>", "");
            heure_fin=rep.toInt();
          }
          else if(rep.startsWith("    <minute_fin>")) {
            rep.replace("<minute_fin>", "");
            rep.replace("</minute_fin>", "");
            minute_fin=rep.toInt();
          }
          else if(rep.startsWith("    <heure_e>")) {
            rep.replace("<heure_e>", ""); 
            rep.replace("</heure_e>", "");
            heure_e=rep.toInt();
          }
          else if(rep.startsWith("    <minute_e>")) {
            rep.replace("<minute_e>", "");
            rep.replace("</minute_e>", "");
            minute_e=rep.toInt();
          }
          else if(rep.startsWith("    <fin_h>")) {
            rep.replace("<fin_h>", "");  
            rep.replace("</fin_h>", "");  
            fin_h=rep.toInt();
          }
          else if(rep.startsWith("    <fin_m>")) {
            rep.replace("<fin_m>", "");  
            rep.replace("</fin_m>", "");  
            fin_m=rep.toInt();
          }
          else if(rep.startsWith("  <securite>")) {
            rep.replace("<securite>", "");   
            rep.replace("</securite>", "");  
            securite=rep.toInt();
          }
          else if(rep.startsWith("  <twitter>")) {
            rep.replace("<twitter>", "");   
            rep.replace("</twitter>", "");  
            twitter=rep.toInt();
          }
          rep="";
        }
        else {
          rep+=c;
        } 
 
  }
  Serial.println("now");
  Serial.print("le ");
  Serial.print(now.day(), DEC);
  Serial.print("/");
  Serial.print(now.month(), DEC);
  Serial.print("/");
  Serial.print(now.year(), DEC);
  Serial.print("  "); 
  Serial.print(now.hour(), DEC);
  Serial.print(" h ");
  Serial.println(now.minute(), DEC);
  cycle_allumage(heure_l,minute_l,heure_fin,minute_fin,securite,6);//lumiere
  cycle_allumage(heure_e,minute_e,fin_h,fin_m,securite,7);// eau 
  delay(5000);
}
 
String roue_url(){
  now = RTC.now();
  String url="";
 
  if(etape == 0){
    pass=0;
    etape=1;
    url="temp=";
    url+=stemperature;
    url+="&humi=";
    url+=humidite;
    url+="&moist=";
    url+=Moisture;
    /*url+="&ph="; //si vous avez une sonde pH décomenté ici ; 
    url+=ph;*/
    /*url+="&ppfd="; // si vous avez un capteur de luminosité decomenté ici ;
    url+=ppfd;*/
    url+="&pb=";
    url+=probleme;
    url+="&cle=";
    url+=CLE_ARDUINO;
    return url ;      
  }
  else if ((now.unixtime() > future.unixtime()) && etape == 1){
    secretgarden();
    now = RTC.now();
    future = DateTime(now.unixtime() + 3200L);
    url="temp=";
    url+=stemperature;
    url+="&humi=";
    url+=humidite;
    url+="&moist=";
    url+=Moisture;
    /*url+="&ph="; //si vous avez une sonde pH décomenté ici ; 
    url+=ph;*/
    /*url+="&ppfd="; // si vous avez un capteur de luminosité decomenté ici ;
    url+=ppfd;*/
    url+="&pb=";
    url+=probleme;
    url+="&cle=";
    url+=CLE_ARDUINO;
    return url ;
  }
  else if ((now.day() == dailyreport.day()) && (now.hour() == dailyreport.hour()) && pass == 0 && twitter == 1){
    pass=1;
    dailyreport = DateTime(dailyreport.unixtime()+ 86400L);
    return "http://votre-secret-garden.fr/tweet/tweet.php";
  }
  else if(secheresse == 2 && prowl ){
    url="http://votre-secret-garden.fr/prowl/alert.php?message=2&id=";
    url+=CLE_PROWL;
    return url;
  }
  else if(DHT.temperature > 40 && lock == 0 && prowl ){
    lock=1;
    url="http://votre-secret-garden.fr/prowl/alert.php?message=0&id=";
    url+=CLE_PROWL;
    return url;
  }
  else{
    return "wait";
  }  
}
 
void miseenRoute(int test,int appareil,bool inversion){
  if(test == 1){
    if(inversion == true){
      digitalWrite(appareil,LOW);
    }
    else{
      digitalWrite(appareil,HIGH);
    }
  }
  else if(test == 0){
    if(inversion == true){
      digitalWrite(appareil,HIGH);
    }
    else{
      digitalWrite(appareil,LOW);
    }
  }
}
 
void cycle_allumage(int heure_debut,int minute_debut,int heure_fin,int minute_fin,int securite,int appareil){
 
  now=RTC.now();
  if(appareil == 6 ){
    Serial.println("lumiere");
  }
  else if(appareil == 7){
    Serial.println("eau");
  }
  Serial.print(heure_debut);
  Serial.print(" h ");
  Serial.print(minute_debut);
  Serial.print(" =====> ");
  Serial.print(heure_fin);
  Serial.print(" h ");
  Serial.println(minute_fin);
 
  int tmp;
  bool inversion=false;
 
  if ((securite == 1 || securite == 2 ) && DHT.temperature > 40){
    miseenRoute(0,appareil,false);
  }
  else if((securite == 2) && (secheresse == 2)){
    miseenRoute(0,7,false);//securite eau
  }
  else {
    if(heure_debut>heure_fin){
      tmp=heure_debut;
      heure_debut=heure_fin;
      heure_fin=tmp;
      inversion=true;
    }
    if((heure_debut == heure_fin) && (now.hour() == heure_debut)){
      if((now.minute() >= minute_debut) && (now.minute() < minute_fin)){
        miseenRoute(1,appareil,inversion);
      }
      else{
        miseenRoute(0,appareil,inversion);
      }
    }
    else{
      if((now.hour() > heure_debut) && (now.hour() < heure_fin)){
        miseenRoute(1,appareil,inversion);
      }
      else if(now.hour() == heure_debut){
        if(now.minute() >= minute_debut){
          miseenRoute(1,appareil,inversion);
        }
        else {
          miseenRoute(0,appareil,inversion);
        }
      }
      else if(now.hour() == heure_fin){
        if(now.minute() >= minute_fin){
          miseenRoute(0,appareil,inversion);
        }
        else {
          miseenRoute(1,appareil,inversion);
        }
      }
      else{
        miseenRoute(0,appareil,inversion);
      }
    }
  }
}
 
 
void temperature(void){
  int chk;
  chk = DHT.read(DHT11_PIN);    // READ DATA
  switch (chk){
    case DHTLIB_OK:  
               dht_state=0;
                break;
    case DHTLIB_ERROR_CHECKSUM: 
                dht_state=1;
                dht_char[0]='1';
                break;
    case DHTLIB_ERROR_TIMEOUT: 
                dht_state=2;
                dht_char[0]='2';
                break;
    default: 
                dht_state=3;
                dht_char[0]='3';
                break;
  }
  delay(500);
}
 
void secretgarden(void) {
  //ppfd = light();
  //ph = Ph();
  Serial.println("SG");
  temperature();
  Moisture = analogRead(A2);//moisture sensor 
  if(Moisture>700 && Moisture < 800){
    /*terre normal*/
    secheresse = 0;   
  }
  else if(Moisture<700){
    probleme= "tes_plantes_ont_soif";
    secheresse += 1;
    if(secheresse >2 ){
      secheresse = 2;
    }  
  }
  else if(Moisture>800){
     probleme="je_me_noie";  
  }
  if(dht_state == 0){
  probleme= "ok" ; 
  } 
  else if(dht_state == 1){
  probleme= "err_temperature_1" ; 
  } 
  else if(dht_state == 2){
    probleme= "err_temperature_2" ; 
  } 
  else if(dht_state == 3){
  probleme= "err_temperature_3" ; 
  } 
  if(DHT.temperature>40){
    probleme="il_fait_trop_chaud"; 
  }
  else{
    lock=0;    
  }
  stemperature=(String)DHT.temperature;
  humidite = (String) DHT.humidity;
}
/*
int Light(){ 
   unsigned long  lux;
   int ppfd;
   TSL2561.getLux();
   lux = TSL2561.calculateLux(0,0,1);
   ppfd = lux / 60 ;
   return ppfd ;
}
float Ph(){
  int val_E;
  int val_R;
  int T ;
  float E;
  float R;
  float pH;
  T= DHT.temperature;
 
  val_R = readADC(A1, 16666);
  R = PH_GAIN_STAGE2_REF * (val_R * 5.0 / 1024);
 
  val_E = readADC(A0, 16666);
  E = -1 * ((val_E * 5.0 / 1024) - R) / PH_GAIN_STAGE1_PH;
 
  pH = (float)((-5038.8 * E / (273.15 + T)) + 7.0);
  return pH;
}
unsigned int readADC(unsigned char channel, unsigned int reading_time) {
 
  double d;
  int i;
  long t0_us;
 
  d = 0.0;
  i = 0;
  t0_us = micros();
  while((micros()-t0_us)<reading_time){
    i++;
    d += analogRead(channel);
  }
  d /= i;
 
  return (unsigned int)(d);
}
*/

Tags: 

Commentaires

I would like to thnkx for the efforts you have put in writing this website. I am hoping the same ray ban clubmaster homme high-grade website post from you in the upcoming as well. In fact your creative writing abilities has lunettes oakley pas cher inspired me to get my own website now. Really the blogging is spreading its wings rapidly.

MYY

MYY
  bcbg max azria roshe run glasses frames ralph lauren outlet nike air max ray ban wayfarer converse sneakers philipp plein outlet nike huarache mcm backpack rayban cheap oakley buccaneers jerseys true religion jeans outlet nike tn lunette ray ban omega watches michael kors replica watches ray ban sonnenbrillen north face jackets oakley sunglasses outlet mcm bags supra footwear veneta mbt shoes outlet baseball jerseys ray bans outlet iphone 5s cases roshe run timberland outlet nike shop swarovski online mcm handbags new york knicks adidas superstar nike free run jerseys from china northface longchamp taschen montre homme 49ers jerseys north face swarovski jewelry ray ban occhiali roshe run hugo boss shop polo ralph coach outlet online new balance louboutin shoes portland trail blazers jersey rolex watches burberry sale longchamp outlet michael kors michael kors outlet online adidas burberry outlet marc by marc jacobs cheap michael kors swarovski crystal swarovski australia browns jerseys cowboys jerseys coach factory jordans valentino outlet woolrich outlet michael kors outlet michael kors bags air max 2015 oakley longchamp outlet ray bans ralph lauren huarache chrome hearts fitflop outlet adidas online michael kors bags nike schoenen abercrombie true religion outlet jets jerseys chiefs jerseys cheap ray ban barbour outlet true religion birkenstock shoes nike air max michael kors v?skor polo ralph dansko outlet nike air max shoes bcbg max calvin klein underwear oakley sunglasses ravens jerseys ray bans michael kors pandora charms washington wizards jersey boots on sale converse shoes christian louboutin pandora true religion jeans stephen curry shoes heat jerseys barbour outlet ralph lauren oklahoma city thunder jersey ray ban outlet lions jerseys nike roshe ray ban wayfarer nike roshe ferragamo shoes tommy hilfiger cheap true religion polo ralph lauren outlet mcm backpack bottega veneta coach store hogan outlet armani outlet jerseys from china nike roshe milwaukee bucks jersey barbour jackets free running texans jerseys long champ fidget spinner outlet utah jazz jersey knockoff handbags timberland boots beats by dr dre ralph lauren factory store prada oakley sunglasses the north face outlet coach outlet canada juicy couture outlet polo outlet store ralph lauren outlet online long champ sacramento kings jersey prada shoes orlando magic jersey rolex burberry sale ralph lauren outlet raiders jerseys cheap nfl jerseys zapatillas nike ralph lauren outlet ferragamo shoes uk minnesota timberwolves jersey michael kors outlet online sale asics polo ralph lauren red bottoms packers jerseys beats by dre michael kors canada thomas sabo ralph lauren polos barbour jackets outlet nike.se vans shoes coach outlet store online gafas oakley colts jerseys giuseppe zanotti sneakers michael kors outlet online sale ralph lauren polo birkenstock outlet jimmy choo shoes christian louboutin shoes ralph lauren nike.dk lakers jerseys plein shoes bills jerseys salvatore ferragamo baseball jerseys longchamp handbags nike air max converse outlet burberry outlet jerseys from china air jordan shoes ray ban air max schoenen tory burch dsquared2 sale hogan celine bags coach black friday tommy hilfiger online nike outlet christian louboutin shoes fossil uhren converse chucks handbags outlet hilfiger online shop giuseppe shoes beats headphones www.tommyhilfiger.nl louboutin shoes air yeezy shoes timberland femme rolex watches for sale chicago bulls jersey eagles jerseys oakley sunglasses outlet soccer shoes outlet coach outlet online oakley vault cheap oakley versace outlet online dolphins jerseys nike air jordan new balance baseball jerseys barbour factory nike shoes mcm backpack outlet cheap michael kors replica watches philadelphia 76ers jerseys seahawks jerseys phoenix suns jersey tory burch outlet wholesale clothing supra footwear hoodies dsquared2 fred perry polos air jordan retro oakley outlet fendi handbags pandora schmuck atlanta hawks jerseys tracksuits store swarovski omega watches houston rockets jerseys michael kors outlet [b][/b] adidas superstar hollister clothing air huarache prada outlet reloj hollister kids thomas sabo uk prada outlet jordan release dates 2015 pandora bracelet reebok timberland shoes salomon schuhe lunette ray ban nike schuhe giants jerseys the north face fred perry outlet nike shoes rolex watch new balance outlet birkenstock deutschland glasses online adidas canada coach factory outlet burberry online shop tommy hilfiger outlet jerseys from china purses and handbags nike mercurial vapor baseball bats oakley lacoste shoes burberry nike shoes outlet levis jeans brooklyn nets jerseys adidas online coach outlet azcardinals jerseys los angeles clippers jersey coach outlet online bengals jerseys longchamp skechers nba jerseys dallas mavericks jerseys swarovski jewelry new orleans pelicans jersey ecco outlet ray ban zonnebril michael kors mont blanc coach factory shop burberry outlet puma online ralph lauren burberry sale red bottom shoes babyliss pro broncos jerseys marc by marc jacobs oakley sungalsses outlet nike shoes michael kors coach outlet online ralph lauren outlet ed hardy clothing oakley oakley sunglasses cheap nike air force hollister online toronto raptors jersey ralph lauren outlet online watches canada longchamp outlet ray-ban sunglasses memphis grizzlies jersey michael kors outlet online fivefingers vans schuhe coach purses outlet online saints jerseys north face outlet coach factory nike shoes nike free 5.0 nike air max mizuno wave boston celtics jersey hermes belt ferragamo bears jerseys coach factory outlet new balance nike air max thea vikings jerseys kate spade outlet online new balance canada chargers jerseys oakley sunglasses north face pandora ralph lauren outlet ferragamo shoes nike air max the north face ray ban outlet nike store nfl jerseys ray ban sunglasses outlet tommy hilfiger hermes jimmy choo outlet ray ban sunglasses skechers michael kors uk adidas.se falcons jerseys san antonio spurs jerseys rams jerseys oakley canada michael kors purses detroit pistons denver nuggets jerseys jordan retro instyler ionic styler katespade michael jordan nfl jerseys burberry outlet true religion jeans women the north face burberry outlet online nike free 5.0 burberry handbags givenchy outlet chi flat iron dre beats [b][/b] michael kors canada patriots jerseys cheap oakley sunglasses air max cleveland cavaliers juicy couture handbags air max michael kors outlet online sale cheap basketball shoes hollister kids katespade golden state warriors jersey indiana pacers jersey tommy hilfiger outlet stores [b][/b] michael kors taschen prada sunglasses charlotte hornets jerseys rayban steelers jerseys softball bats louboutin redskins jerseys soccer shoes adidas superstar puma outlet titans jerseys under armour shoes oakley outlet nike free 5.0 oakley vault michael kors hollister clothing store burberry outlet online vans outlet chi hair panthers jerseys nike outlet skechers outlet hollisterco michael kors outlet online nike air max 90 oakley frogskins air jordan purses and handbags north face backpacks asics gel air max air max polo ralph lauren outlet online iphone case jaguars jerseys hermes bags michael kors outlet pandora canada hogan outlet indoor soccer shoes

Commentaire récent

Utilisateur en ligne

Il y a actuellement 1 utilisateur connecté.

  • NadezhdaTot

Nouveau sujet