Feux Rouge

Le projet

Mes enfants s’amusent beaucoup avec leur camion : ils s’assoient chacun sur le leur et “conduisent” dans la maison.

Suite au MOOC que j’ai suivi sur Arduino, je me suis dit que je pourrai leur construire un petit feux rouge pour agrémenter leurs jeux.

Les fonctionnalités seront les suivantes :

Pour la barrière, nous verrons plus tard. Commençons déjà à réaliser un simple feu.

La partie matérielle

La partie la plus dure à réaliser à été sans conteste, la partie matérielle : elle m’a demandé beaucoup de reflexion et beaucoup de recherche afin de construire un feu qui soit solide (il ne faudrait pas que ça se casse la première fois que ça tombe), léger (facile à transporter) et stable. Il faut que ce soit, en plus, facile à fabriquer sans outil particulier.

Pour réaliser le pied du feu rouge, j’ai décidé d’utiliser des tuyaux en PVC pour l’évacuation des eaux usées en diamètre 32 et 40. J’avais pensé à des tubes pour les cables éléctrique mais c’était trop fin et difficile à stabiliser, à des tubles en métal, mais outre le fait que ce soit lourd, que ça risque de leur faire mal si ça leur tombe dessus, je n’avais pas le matériel adéquate pour les souder.

Pour le trépied, j’ai utilisé trois raccords à 45° que j’ai coupé dans le sens longitudinal sur un angle de 60° : l’objectif est de coller les trois côte à cote sur un tube vertical. La colle à PVC semble solide, mais j’ai préféré renforcer le pied avec des colliers en plastique. Découpe du raccord Raccords collés Trepied

Le haut du tube doit accueillir le feux rouge :

photos à venir

La partie électronique

L’électronique sera réalisée avec un arduino nano, déjà largement sur-dimensionné pour le projet. Il sera alimenté par une batterie externe (batterie de secours des téléphones portables). Ca permettra de recharger le feux rouge via un chargeur standard de téléphone (attention : ma batterie externe se recharge avec un cable micro-usb ce qui est devenu moins ocourant que le mini-usb).

photos à venir

Le code de l’arduino est basique :

const int FEU1_VOITURE_VERT_PIN   = 5;
const int FEU1_VOITURE_ORANGE_PIN = 6;
const int FEU1_VOITURE_ROUGE_PIN  = 7;

const int FEU2_VOITURE_VERT_PIN   = 8;
const int FEU2_VOITURE_ORANGE_PIN = 9;
const int FEU2_VOITURE_ROUGE_PIN  = 10;

const int FEU_VOITURE_ORANGE_DELAY = 4000;
const int FEU_VOITURE_VERT_DELAY   = 10000;

void setup() {
  pinMode(FEU1_VOITURE_ROUGE_PIN,  OUTPUT);
  pinMode(FEU1_VOITURE_ORANGE_PIN, OUTPUT);
  pinMode(FEU1_VOITURE_VERT_PIN,   OUTPUT);

  pinMode(FEU2_VOITURE_ROUGE_PIN,  OUTPUT);
  pinMode(FEU2_VOITURE_ORANGE_PIN, OUTPUT);
  pinMode(FEU2_VOITURE_VERT_PIN,   OUTPUT);
}

void loop() {
  //
  digitalWrite(FEU1_VOITURE_ROUGE_PIN, HIGH);
  digitalWrite(FEU2_VOITURE_VERT_PIN, HIGH);

  delay(FEU_VOITURE_VERT_DELAY);
  
  //
  digitalWrite(FEU2_VOITURE_VERT_PIN, LOW);
  digitalWrite(FEU2_VOITURE_ORANGE_PIN, HIGH);

  delay(FEU_VOITURE_ORANGE_DELAY);

  //
  digitalWrite(FEU1_VOITURE_ROUGE_PIN, LOW);
  digitalWrite(FEU1_VOITURE_VERT_PIN, HIGH);

  digitalWrite(FEU2_VOITURE_ORANGE_PIN, LOW);
  digitalWrite(FEU2_VOITURE_ROUGE_PIN, HIGH);

  delay(FEU_VOITURE_VERT_DELAY);
  
  //
  digitalWrite(FEU1_VOITURE_VERT_PIN, LOW);
  digitalWrite(FEU1_VOITURE_ORANGE_PIN, HIGH);

  delay(FEU_VOITURE_ORANGE_DELAY);

  digitalWrite(FEU1_VOITURE_ORANGE_PIN, LOW);
  digitalWrite(FEU2_VOITURE_ROUGE_PIN, LOW);
}