Présentation

Bonjour à tous
Ce projet à pris vie après avoir vue cette vidéo :

J'ai tout de suite pensé, comment je peux refaire ça chez moi…
Un ami rénovait sa maison, je lui ai proposé l'idée et nous avons décidé de commencer ce projet.
Il a trouvé deux packs de 10 spots à LED alimenté en 12v. Les spots ressemblent à ceux-ci :

Nous avons ensuite monté l'escalier en kit, effectué les perçages, câblé les diodes et enfin, un peut de peinture.






Dans un premier temps, nous avons branché l'escalier avec une minuterie classique afin de pouvoir utiliser l'escalier en attendant la fin de ce projet.


PS : Je ne suis pas un pro en électronique, j'ai quelque petits montage derrière moi, mais rien de très compliqué…

Description technique des LED

Voilà les données que j'avais à disposition en début de projet :
  • 1 escalier de 14 marches
  • 2 boutons poussoirs (en haut et en bas de l'escalier)
  • 2 boites de 10 spots, chaque boite contient :
    • 10 spots comprenant chacun 3 LED blanche (0.07W par LED, 0.21W par spot)
      • Consommation moyenne de 17,5 mA
    • 1 transformateur
      • Input : 240V – 50 Hz – 5W – 0.022A
      • Output : 12V DC
      • Cos Phi : 0.98
      • Max : 5W
      • Min : 0.2W

Recherche de solutions existantes

Kits

Après quelque recherche autour de la vidéo YouTube qui m'avait donné l'envi du projet :
J'ai trouvé quelques kits tout fait qui propose un résultat similaire :
Ces kits auraient très bien pu faire l'affaire, mais j'avais quelques contraintes qui n'étaient pas respectée :
  • Je voulais que la détection de la monté ou de la descente de l'escalier passe par un appui sur un bouton poussoir format bâtiment et non une cellule électronique (comme ca, le jour de la revente de la maison, il est plus facile d'adapter un éclairage classique)
  • Je voulais des fonctionnalités supplémentaires à celles proposées dans les kits :
    • Je cherchai un fonctionnement du style :
      • J'appui sur le BP bas
      • Les marches s'allument dans le sens à monter
      • Soit le BP haut est pressé, soit un délai de x second s'écoule
      • Les marches s'éteignent dans le sens à monter
    • Je cherchai également des options du style :
      • Double appui sur un BP pour forcer l'allumage, un nouvel appui pour éteindre
      • Inclure un mode Animation :
        • Guirlande
        • K2000

Projets

Après ces quelques kits, j'ai vite réalisé qu'il serait difficile d'obtenir tout ce que je voulais avec une carte préprogrammée. Je devais donc trouver une carte électronique que je puisse programmer à mon gré.


Celas faisait quelque mois que j'avais découvert le site www.semageek.com qui propose souvent de petit montage réalisé sur une carte Arduino (www.arduino.cc/fr). Cette carte se programme à l'aide d'un langage ressemblant à du C, elle est facile à mettre en œuvre et est proposée avec plusieurs librairies permettant de facilité la programmation (contrôle de composant, protocole de communication, …)

J'ai donc cherché des projets ressemblant au mien et utilisant un Arduino.

Le dernier lien, le blog de Novo Kane soulèvent un point intéressant : une carte Arduino ne propose que 14 entrées/sorties + 6 entrées analogiques. Cela aurait pu suffire, mais il faut ajouter des composants pour sécuriser les sorties afin de ne pas griller la puce.
Sur ce dernier blog, Erica Kane propose une solution pour ajouter des sorties supplémentaires à une puce Arduino et augmenter la puissance de ces nouvelles sorties.
http://www.thekanes.org/2010/06/09/expanding-the-arduino-cheap-ways-to-add-output-pins-and-power/

Elle utilise une puce M5451 qui peut contrôler 35 sorties en 12V. Elle indique également qu'une librairie open-source existe pour contrôler un tel composant depuis un Arduino. Cette librairie est disponible ici : http://code.google.com/p/arduino-m5451-current-driver/
Sur ce site, il est proposé une carte contenant la puce ATMEGA 328p de l'Arduino et deux puces M5451, le tout pré câblé. Cet là que j'ai découvert la carte Lightuino.

Lightuino

Cette carte spécialisée dans le contrôle de LED depuis un Arduino propose plusieurs avantages :
  • Compatible avec les Arduino classique
  • Propose jusqu'à 70 sorties à courant constant (20mA max à 12V DC) (idéale pour des LED)
  • Inclus un capteur de lumière ambiante, un récepteur IR, …
  • Deux connecteurs IDE (pour les disques durs) permettent une liaison rapide entre la carte et le montage
Après avoir trouvé quelques projets qui utilisaient cette carte, j'ai décidé d'entrer en contact avec Andrew Stone (le créateur de cette carte) via le site www.toastedcircuits.com/shop. (Il parle un peu français, ce qui peut aider !)


Il m'a communiqué les prix pour obtenir cette carte :
  • Frais de port pour l'international : $15 (≈10,40€)
  • La carte Lightuino : $69 (≈47,80€)
    • Andrew Stone propose un remboursement de $20 (≈13,90€) si vous lui envoyez un lien vers un blog comme celui-ci, prouvant que vous utilisez bien ca carte et qu'elle n'est pas juste posée sur une étagère à prendre la poussière… (offre valable 90 jours après la commande)
Bref cette carte revient au alentour de 58€, elle est arrivée en une semaine
Cela revient sans doute moins chère de faire la carte soit même (avec un Arduino Pro Mini, un M5451 et les quelques composants obligatoire) mais cette carte à l'avantage de proposer plus d'options qui seraient difficile à faire rentrées dans un si petit format et façon aussi astucieuse.

Cette carte vient donc avec une librairie pour facilité sa programmation et un groupe d'utilisateurs sur Google : http://groups.google.com/group/toasted-circuits-lightuino, Ils peuvent vous aider dans vos projets (en anglais bien sur).

Commencement

Après réception de la carte, j'ai commencé quelques exemples simples pour la prendre en main.

Pour débuter :
  • Téléchargement de l'IDE Arduino : www.arduino.cc/fr/Main/DebuterInstallationWindows
    • L'IDE Arduino n'a pas de logiciel d'installation, il s'agit juste d'un fichier zip qu'il faut extraire sur votre ordinateur. Je vous conseille de l'extraire dans le dossier racine de votre disque dur : C:\Arduino\
  •  Pour programmer une carte Lightuino à partir de l'IDE Arduino, il faut ajouter la librairie téléchargeable à l'adresse ci-dessous : code.google.com/p/arduino-m5451-current-driver/downloads/list. Il s'agit là aussi d'un simple zip qu'il faut extraire dans le dossier C:\Arduino\libraries\lightuino5\
  • La première fois où vous brancherez une carte Lightuino à votre ordinateur, il vous sera demandé d'installer un pilote qui correspond au fichier lightuino5.inf, dans le dossier précédent.
  • Pour ajouter le type de carte Lightuino à l'IDE, il vous faut ajouter les informations suivantes dans le fichier C:\Arduino\hardware\arduino\ boards.txt
  • Copiez les lignes suivantes à la fin du fichier : pastebin.com/YL4qL6Mz
  • Vous pouvez à présent commencer à programmer votre carte Lightuino. Si vous ne connaissez rien en programmation C : www.arduino.cc/fr/Main/Apprendre (pour ma part, c'est mon travail la programmation, donc pas de problème de ce coté)
  • Pour m'entrainer, j'ai suivi quelques un des tutoriaux : www.arduino.cc/en/Tutorial/HomePage (je vous conseil quand même une BreadBoard pour commencer)

Attention : il faut savoir que la carte Lightuino permet de choisir les pins que vous désiré utiliser. Il ne faut donc pas se brancher n'import où !


Pin
Fonction Arduino
Fonction Lightuino par défaut
0
Digital I/O / Serial port
Digital I/O / Serial port
1
Digital I/O / Serial port
Digital I/O / Serial port
2
Digital I/O
Digital I/O
3
Digital I/O
Récepteur IR
4
Digital I/O
DATA Right / SRC DATA
5
Digital I/O
BRIGHTNESS
6
Digital I/O
DATA Left / SRC STROBE
7
Digital I/O
CLOCK
8
Digital I/O
SRC CLOCK
9
Digital I/O
Digital I/O
10
Digital I/O
USB SPI
11
Digital I/O
USB SPI
12
Digital I/O
USB SPI
13
Digital I/O + Led
USB SPI
A0
Analog/Digital I/O
Analog/Digital I/O
A1
Analog/Digital I/O
Analog/Digital I/O
A2
Analog/Digital I/O
Analog/Digital I/O
A3
Analog/Digital I/O
Analog/Digital I/O
A4
Analog/Digital I/O
Analog/Digital I/O
A5
Analog/Digital I/O
Analog/Digital I/O
A6
Analog I/O
Analog I/O
A7
Analog I/O
Analog I/O / Light sensor


Ces pins sont ceux de la puce Arduino classique, cela n'a rien avoir avec les deux ports IDE de chaque coté de la carte, ceux la ne sont que pour vous…

Ma recommandation sur ce point : utiliser directement les sorties IDE, et n'utilisé les pins de l'Arduino que pour des entrées.

Boutons 4 états


Pour se projet, je disposais de 2 boutons poussoir bâtiment.


Je voulais que chaque bouton puisse fournir plusieurs informations, comme les doubles clicks ou les appuie long. J'ai donc cherché si un projet utilisait cette fonction avec un Arduino. J'ai trouvé les exemples suivants :
Sur ce dernier blog, je me suis rappelé qu'il fallait faire un traitement (www.arduino.cc/en/Tutorial/Debounce) sur les entrées pour éviter des faux positifs.


Avec les infos de la page d'exemple pour créer une librairie perso (www.arduino.cc/en/Hacking/LibraryTutorial), j'ai décidé de créer une librairie Arduino "FWB", pour "Four Way Button".


FWB.h



Pour ajouter une telle librairie à votre code, copier ce fichier dans le même répertoire que votre fichier .pde.

Emulateur Arduino


J'ai commencé les premiers programmes sur le logiciel de programmation fournis par Arduino (http://arduino.cc/en/Guide/Windows) Ce programme est très pratique car il est spécifiquement conçu pour programmer des cartes de type Arduino.

J'ai ajouté la librairie Lightuino dans ce logiciel pour permettre la programmation des cartes Lightuino, et je l'ai utilisé tout au long de mon projet pour envoyer le programme à la carte…
Mais j'ai vite trouvé l'interface assez pauvre pour le développement. Travaillant à longueur de journée dans la programmation, je suis habitué à utiliser des outils bien plus puissants…

J'utilise Visual Studio pour mon boulot, j'ai donc naturellement orienté mes recherches vers cette IDE. J'ai trouvé les sites suivant :
Malheureusement, aucune de ces solution ne m'a permis de travailler comme je le souhaitai, avec un émulateur pour simuler la carte (quand je ne travail pas de chez moi)

Je me suis donc lancé dans le développement d'un tel émulateur…
Mon travail continu toujours, mais il est déjà rendu à un stade ou je peux partager ce que j'ai fait : code.google.com/p/arduino-emulator/



Cette émulateur permet d'écrire le code de la même manière que sur l'IDE Arduino (C++) et propose une interface graphique simulant la même interaction qu'avec un Arduino. J'ai ajouté à cette émulateur une partie spécifique pour le teste de programme sur Lightuino.


Stairlight 1.0



J'ai enfin terminé le projet en version 1.0…
Pour le moment je n'ai que le minimum, la montée et la descente

J'ai pris un peut de temps avant de finaliser les animations de montée et de descente. En effet, je ne voulais pas que les boutons soit inactif durant le déroulement des animations.

J'ai donc réalisée celles-ci par tours de cycle (à la manière d'un automate industriel). A chaque appel de la fonction loop(), j'ajoute un pas de plus dans mon animation.




Je vais très bientôt compléter cette première version afin de gérer les différentes fonctions suivantes :

  • Allumage et extinction progressive
  • Un double click sur un bouton laisse les marches allumées, sans temporisation
  • L'appuie long pour entrer en mode animation
    • Ensuite, à chaque appuie, je changerai d'animation
  • Créer les différentes animations
    • K2000
    • Chenillard
    • Décompte binaire
    • Guirlande de noël
    • (je suis preneur pour d'autres idées)



Désolé pour la qualité de la vidéo, j’essaierai de faire mieux d'ici pas trop longtemps...