Grand fan de Zelda depuis le premier opus, j’ai toujours voulu avoir un objet qui claque un peu sur ce thème. Et comme j’aime aussi le rétrogaming, les épées et les trucs qui brillent, c’était un peu naturel de passer à la fabrication de cette station rétrogaming, avec un Raspberry pi et Recalbox, qui démarre lorsqu’on plante l’épée dedans. Vous pouvez la voir en action sur ma chaîne youtube.
LE MATERIEL_
Pour la partie électronique, j’ai utilisé :
- – Un Raspberry Pi3B (je vous conseil d’utiliser un Pi3B+ pour des soucis de refroidissement)
- – Un Arduino Nano
- – Un connecteur Micro USB
- – Un micro-switch fin de course
- – Un connecteur HDMI Neutrik
- – Une nappe HDMI
- – 11 LEDs adressable
- – 2 Aimants néodyme carré 5*2
- – Un câble Jack
- – Un connecteur Jack femelle
LES PIECES IMPRIMEES EN 3D_
Le projet est composé de 2 parties : Le piédestal qui sert de boitier au Raspberry et l’épée.
- J’ai décomposé le boitier en 3 parties :
- – La base
- – Le corps
- – Et le couvercle
Il y aura une pièce en plus pour l’interrupteur, une autre pour fixer le connecteur HDMI et 3 pièces pour la Triforce.
L’épée, elle, a été séparée en 6 pièces :
- – Le corps en 2 parties
- – Le pommeau et la fusée avec un détrompeur pour les fixer ensemble
- – Le bout de la lame dans lequel on installera un des aimants
ARDUINO, LEDS ET CODE_
Je commence à préparer les LEDs et l’Arduino il va falloir y mettre le code qui va faire fonctionner les LEDs.
Pour ce projet j’ai utilisé la librairie Adafruit neopixel et Arduino thread.
Il y a 11 LEDs, 9 jaunes pour la Triforce et 2 bleues qui éclairent l’épée. Je voulais qu’elle fassent un fade-in fade-out mais à 2 fréquences différentes. Il faudra brancher le DATA sur le PIN 5 du Nano.
Voila à quoi ressemble le code :
#include <Adafruit_NeoPixel.h>
#include <Thread.h>
//define NeoPixel Pin and Number of LEDs
#define PIN 5
#define NUM_LEDS 11
uint8_t brightY = 255; // valeur initiale du brightness jaune
uint8_t brightB = 255; // valeur initiale du brightness bleu
int fadeSensY = -1; // sens du fade yellow Out = -1, In = +1
int fadeSensB = -1; // sens du fade blue Out = -1, In = +1
uint8_t minBrightY = 50; // valeur min du brightness yellow
uint8_t maxBrightY = 255; // valeur max du brightness yellow
uint8_t minBrightB = 25; // valeur min du brightness blue
uint8_t maxBrightB = 255; // valeur max du brightness blue
// création NeoPixel strip
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
// création tâches leds
Thread ledsJaunes = Thread();
Thread ledsBleues = Thread();
// fonction fade in/out pour les leds jaunes
void fadeInOutYellow() {
uint32_t rgbcolor = strip.ColorHSV(10922, 255, brightY);
strip.fill(rgbcolor, 0, 9);
strip.show(); // This sends the updated pixel color to the hardware.
brightY = brightY + fadeSensY;
if (brightY <= minBrightY) {
fadeSensY = 1;
}
if (brightY >= maxBrightY) {
fadeSensY = -1;
}
}
// fonction fade in/out pour les leds bleues
void fadeInOutBlue() {
uint32_t rgbcolor = strip.ColorHSV(32768, 255, brightB);
strip.fill(rgbcolor, 9, 2);
strip.show(); // This sends the updated pixel color to the hardware.
brightB = brightB + fadeSensB;
if (brightB <= minBrightB) {
fadeSensB = 1;
}
if (brightB >= maxBrightB) {
fadeSensB = -1;
}
}
void setup() {
// start the strip and blank it out
strip.begin();
strip.clear();
// affecte une fonction à une tâche
ledsJaunes.onRun(fadeInOutYellow);
ledsBleues.onRun(fadeInOutBlue);
// initialise l'interval d'exécution de la tâche
ledsJaunes.setInterval(20);
ledsBleues.setInterval(10);
}
void loop() {
if (ledsJaunes.shouldRun()) ledsJaunes.run();
if (ledsBleues.shouldRun()) ledsBleues.run();
}
LE MONTAGE_
Après avoir tout peint, je suis passé au montage.
La première chose à monter c’est le système d’interrupteur.
J’ai soudé un câble rouge depuis le Vbus du connecteur micro-USB vers la broche C (1) du microswitch puis un Dupont de la broche NO (2) qui ira se brancher sur la broche GPIO 5V du Raspberry. Puis un Dupont noir sur le GND du micro-USB qui ira sur un des GND du Raspberry.
Ensuite on passe aux LEDs.
L’installation dans les emplacements est plutôt facile, le plus dur est de faire passer les câbles dans les goulotte, et de les faire à la bonne longueur.
Surtout faire attention au sens des LEDs, elles ont une entrée et une sortie.
Cette étape va se passer sur le corps du boitier.
J’ai installé le connecteur Jack femelle dans son emplacement et j’y ai soudé le Jack mâle. J’en ai profité pour installer le connecteur traversant HDMI. J’y ai enfilé le support imprimé en 3D puis je l’ai vissé au corps.
A partir de là je commence l’assemblage du corps et de la partie superieur. J’en profite pour installer l’interrupteur.
Maintenant je peux passer à la base, sur laquelle je place le Raspberry et la carte Arduino Nano. Je peux passer au branchement du Nano en connectant un Dupont du GND du Nano vers un des GND du GPIO et le Vin sur un 5V du GPIO.
Ici je vais commencer à tout brancher, c’est à dire la nappe HDMI et le Jack etc, le câble rouge du microswitch va sur le 5V restant du GPIO et le noir du connecteur micro-USB sur un des GND du GPIO.
Une fois monté, l’intérieur ressemble a peu prés à ça. Evidemment c’est juste pour montrer comment c’est monté, parce qu’avant d’en arriver la il faut avoir monté la partie supérieur avec les LEDs.
CONCLUSION_
Surement mon projet préféré, beaucoup d’heures de conception, d’impression, de prototypage, et il n’est toujours pas parfait et je vais le mettre à jour le plus rapidement possible. Ça faisait des années que je n’avais pas touché un pinceau, mais le résultat en vaut la chandelle !
En espérant que ce B_log vous aura été utile, je vous dis :