Créer un contrôleur ARGB avec Arduino Nano

J’ai récemment monté un nouveau PC trouvé dans les poubelles avec des ventilateurs RGB vraiment sympas, mais malheureusement, la carte mère est un peu ancienne et ne dispose pas de header ARGB. Plutôt que d’acheter un contrôleur ARGB tout fait, j’ai décidé d’en fabriquer un moi-même avec un Arduino Nano qui traînait dans mes tiroirs. Voici comment j’ai procédé !

Câblage

L’avantage de l’Arduino Nano, outre sa taille facile à glisser dans un boîtier, est qu’il fonctionne en 5 V. Il est donc facile de l’alimenter avec un câble Molex ou en USB.

Le câblage est très simple, le seul composant additionnel requis est une résistance de 470 ohms. Le pin D2 transmet le signal ARGB aux ventilateurs et le pin D3 est connecté au bouton Reset du PC qui servira plus tard à contrôler l’éclairage. Il est possible d’alimenter l’Arduino en 5V depuis l’alimentation du PC ou bien d’utiliser en câble USB.

Schéma de câblage de l'Arduino Nano

L’Arduino peut être collé facilement avec un adhésif double face. Pour ma part j’ai utilisé une bande Command 3M ce qui permet de le détacher pour le reprogrammer puis le replacer par la suite. L’important est que l’adhésif soit suffisamment épais pour éviter tout court-circuit avec le métal du boitier.

Code

Pour piloter les LEDs, j’ai utilisé la bibliothèque FastLED, qui est une référence pour contrôler des LEDs adressables. Elle supporte une tonne de modèles de LEDs (WS2812B, WS2811, APA102, etc.) et offre des fonctions très pratiques pour créer des animations.

Installation de FastLED

Dans l’IDE Arduino :

  1. Croquis → Inclure une bibliothèque → Gérer les bibliothèques
  2. Rechercher « FastLED »
  3. Installer la dernière version

Exemple simple

Voici un bout de code pour tester que tout fonctionne. Les LEDs devraient toutes s’allumer en blanc. Pensez à modifier le nombre de LED et le type (les WS2812B sont très répandues).

#include <FastLED.h>

#define NUM_LEDS 8         // 8 LEDs
#define DATA_PIN 2         // Pin de données
#define LED_TYPE WS2812B   // Type de LED
#define COLOR_ORDER GRB    // Ordre des couleurs (important !)

CRGB leds[NUM_LEDS];

void setup() {
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, NUM_LEDS);
  FastLED.setBrightness(255);
}

Réglage de la colorimétrie

Ce premier test a été plutôt… décevant. Pour du blanc pur (255, 255, 255), j’ai obtenu une couleur dans les bleu-rose.

Après quelques recherches, j’ai découvert que les LEDs WS2812B bon marché (comme celles de mes ventilateurs) ont souvent des composantes RGB très mal équilibrées.

La solution : FastLED.setCorrection()

FastLED dispose d’une fonction pratique qui permet de corriger automatiquement ces déséquilibres : FastLED.setCorrection(). Il suffit de lui passer une valeur hexadécimale qui compense les défauts de vos LEDs.

FastLED.setCorrection(0xFFD750);  // Ma correction personnalisée

Pour trouver la bonne valeur, il n’y a qu’une seule solution : faire des essais successifs jusqu’à trouver une bonne valeur d’équilibre. Cela demande beaucoup de patience mais le résultat final sera à la hauteur de vos attentes !

Astuce : Déterminer automatiquement le nombre de LEDs

Au début, je n’étais pas sûr du nombre de LEDs de mes ventilateurs. Il n’existe pas de documentation détaillée pour mes ventilateurs donc j’ai créé un petit programme de test qui allume chaque LED une par une :

#include <FastLED.h>

#define MAX_LEDS 255        // Maximum possible
#define DATA_PIN 2
#define LED_TYPE WS2812B
#define COLOR_ORDER GRB
#define DELAY_MS 200        // Délai entre chaque LED (en millisecondes)

CRGB leds[MAX_LEDS];

void setup() {
  FastLED.addLeds<LED_TYPE, DATA_PIN, COLOR_ORDER>(leds, MAX_LEDS);
  FastLED.setBrightness(100);  // Luminosité moyenne pour le test
  FastLED.clear();
  FastLED.show();
}

void loop() {
  // Allume chaque LED successivement en rouge
  for (int i = 0; i < MAX_LEDS; i++) {
    FastLED.clear();           // Éteint toutes les LEDs
    leds[i] = CRGB::Red;       // Allume la LED courante en rouge
    FastLED.show();
    delay(DELAY_MS);
    
    // Si vous voyez cette LED s'allumer, notez son numéro !
    // Le comptage commence à 0, donc LED 0 = première LED
  }
  
  // Pause avant de recommencer
  FastLED.clear();
  FastLED.show();
  delay(2000);
}

Création d’une animation « Fleurs de cerisier »

Une fois la base fonctionnelle, je voulais créer quelque chose de visuellement agréable. J’ai opté pour un effet « fleurs de cerisier » (sakura) avec des tons roses qui se déplacent doucement le long des LEDs.

Le concept

L’idée est simple : générer aléatoirement des couleurs dans les tons roses pastel, puis les faire circuler d’une LED à l’autre avec des transitions fluides. Ça donne l’impression de pétales qui flottent au vent.

Génération des couleurs

CRGB generateBlossomColor() {
  byte hue = random(220, 256);    // Teintes rose-rouge
  byte sat = random(50, 130);     // Saturation basse = effet pastel
  byte val = random(200, 255);    // Luminosité douce
  return CHSV(hue, sat, val);
}

J’utilise le modèle HSV (Teinte, Saturation, Valeur) plutôt que RGB car c’est beaucoup plus intuitif pour créer des palettes de couleurs. Les valeurs aléatoires donnent un côté organique très sympa.

Animation fluide avec interpolation

Le secret d’une animation fluide, c’est l’interpolation. Au lieu de changer brutalement de couleur, je fais une transition progressive :

CRGB color1 = colors[i];
CRGB color2 = colors[i + 1];
leds[i] = color1 % (255 * (1 - position)) + color2 % (255 * position);

La variable position varie de 0 à 1, créant une transition en douceur. J’incrémente cette position à chaque frame avec un petit FADE_STEP de 0.003, ce qui donne une animation très lente et hypnotique.

Contrôle de la luminosité avec le bouton du boîtier

La dernière amélioration, et pas des moindres : pouvoir contrôler la luminosité sans avoir à reprogrammer l’Arduino. J’ai utilisé le bouton Reset de mon boîtier (celui qui sert normalement à réinitialiser le PC mais qui fait double emploi avec le bouton Power) pour cycler entre différents niveaux de luminosité.

Connexion du bouton

Le bouton reset de la plupart des boîtiers PC a deux fils : un signal et une masse. Je les ai connectés à la pin D3 de l’Arduino (avec la résistance pull-up interne activée) et au GND.

pinMode(BUTTON_PIN, INPUT_PULLUP);

Niveaux de luminosité

J’ai défini 6 niveaux de luminosité : 100%, OFF, 20%, 40%, 60%, 80%. À chaque pression sur le bouton, on passe au niveau suivant.

const uint8_t brightnessLevels[] = { 255, 0, 51, 102, 153, 204 };

Sauvegarde en EEPROM

Enfin, le niveau de luminosité est sauvegardé dans l’EEPROM de l’Arduino. Comme ça, quand j’éteins et rallume mon PC, la luminosité reste celle que j’avais choisie !

EEPROM.update(EEPROM_BRIGHTNESS_ADDR, brightnessIndex);

Le code complet

Voici le code complet que j’utilise actuellement sur mon PC. N’oubliez pas d’adapter NUM_LEDS selon votre configuration ! Il est disponible dans ce gist : https://gist.github.com/LenweSaralonde/3ded8133064a41106923e75b11ee9269

Résultat final

Le résultat est franchement stylé, surtout pour du matériel d’entrée de gamme et issue en grande partie de récupération.

Ça claque, hein ?

Personnalisation

Il est possible de modifier très simplement le code pour donner un tout autre style :

Autres effets de couleurs :

  • Bleu glacier : hue = random(140, 180)
  • Coucher de soleil : hue = random(0, 40)
  • Arc-en-ciel : hue = random(0, 255)

Vitesse d’animation :

  • Animation rapide : FADE_STEP = 0.01
  • Animation ultra lente : FADE_STEP = 0.001

Il est aussi possible d’utiliser le bouton pour switcher entre différents patterns et couleurs. La seule limite est votre imagination !

Tuto : Monter un PC gaming pas cher – Demande à un Geek #2

Dans ce second épisode de Demande à un Geek, apprenez étape par étape à monter votre PC de jeu, facilement et sans vous ruiner. Découvrez de nombreux conseils et astuces ainsi que les erreurs à ne pas commettre. Le montage de PC n’aura (presque) plus de secrets pour vous !

Configuration du PC

  • Carte mère : MSI B250M PRO-VDH socket LGA 1151 Micro-ATX
  • CPU : Intel Core i5 7400 @ 3 GHz Kaby Lake
  • RAM : 2x Crucial Ballistix Sport LT 4 Go DDR4 2400 MHz
  • Carte graphique : ATI Radeon HD 6850 1 Go
  • SSD : Samsung 840 EVO 120 Go
  • Disque dur : Samsung HD103UJ 1 To 7200 t/min
  • Alimentation : Cooler Master GX 550W
  • Boîtier : NEC PowerMate ML7 UTOW-CAL

À la recherche du micro-casque ultime pour PC

Voilà plusieurs mois que je m’étais lancé dans la quête de la recherche d’un bon micro-casque pour PC. Bien qu’il soit facile de trouver un casque audio de bonne qualité, ergonomique et à un prix raisonnable, la tâche est beaucoup plus délicate lorsqu’il s’agit d’un casque équipé d’un micro.

Des exigences précises

La qualité de son est loin d’être mon seul critère. Étant donné que je travaille 8h par jour sur ordinateur, l’ergonomie doit être parfaite pour supporter le casque sans aucune gène tout au long de la journée, même en portant des lunettes. Les bruits extérieurs doivent être suffisamment isolés pour ne pas être dérangé, sans pour autant être totalement coupé du monde comme un nolife.

D’un point de vue acoustique, le rendu doit être fidèle type « studio » ce qui est parfaitement adapté au montage vidéo qui, vous le savez, est l’une des mes grandes passions. Enfin, le design doit être sobre et discret afin de ne pas ressembler à Ben Stiller faisant son jogging sur la plage dans Starsky & Hutch lorsque je fais une visioconférence ou un livestream.

Ben Stiller fait son jogging sur la plage dans le film Starsky & Hutch

Avant, les gros casques c’était swag. Mais ça, c’était avant.

Une offre limitée

D’une part, nous avons les modèles d’entrée de gamme comprenant les petits casques de bureau type Plantronics, pas chers, discrets, pratiques pour la visioconférence et la téléphonie mais fragiles et avec une qualité de son médiocre.

D’autre part, nous avons les casques « gamer » (Logitech, Steelseries, Razer, Creative…), gros, lourds, inconfortables et bardés de gadgets inutiles et de LEDs multicolores qui ne font qu’augmenter le prix tout en vous faisant ressembler à un sapin de Noël, sans pour autant offrir une qualité audio ni une durabilité digne de ce nom. Je ne parle même pas de ces casques estampillés « son surround 7.1 » qui sont une pure arnaque étant donné que comme nous n’avons que 2 oreilles,  le son surround peut-être reproduit fidèlement avec n’importe quel casque stéréo (oui, c’est à cela que sert le « mode casque » de votre carte son !).

Jacky s'est mis au tuning de casque.

Jacky s’est mis au design de casque gamer.

Enfin, il y a les casques Hi-Fi, ergonomiques, confortables et offrant une grande qualité de son mais dépourvus de micro.

Passer du Côté Obscur

Ne trouvant pas chaussure à mon pied (enfin, de casque à mes oreilles), j’ai élargi ma recherche aux casques pour les appareils Apple (iPhone, MacBook etc).

Les casques Apple ne sont pas compatibles avec les PC car leur connectique est différente (1 seul jack 4 broches pour les casques Apple contre 2 jacks séparés de 3 broches pour les casques PC). Cependant, il est possible de les utiliser sur PC grâce à un adaptateur fait maison ou acheté dans le commerce. De plus, étant à la fois utilisateur de PC, de MacBook et d’iPhone, la combo casque Apple + adaptateur PC est donc la plus adaptée car je peux utiliser le même casque sur tous mes appareils.

adaptateur-audio-apple-pc Câblage adaptateur écouteurs iPhone PC

Il y a 2 marques plébiscitées par la firme à la Pomme : Beats by Dre et Bose. Autant dire que je ne suis pas du tout fan des joujoux bling-bling du Dr Dre. Leur prix est excessif pour une qualité plutôt moyenne. De plus, l’acoustique des Beats Audio est élaborée pour exagérer les basses ce qui les rend totalement inadaptés au montage vidéo et au mixage nécessitant au contraire une acoustique délivrant un spectre large et uniforme.

Le casque ultime

Finalement, j’ai opté pour le modèle AE2i de Bose.

À peine mis sur les oreilles, on se sent tout de suite isolé du monde extérieur, même sans musique. Le son est cristallin, avec des aigus nets et des basses profondes. La musique prend toute sa dimension, le son de chaque instrument ressort sans écraser les autres. L’immersion dans les films et les jeux vidéo est totale, et encore plus impressionnante avec un son surround binaural.

Son poids très léger et ses mousses souples le rendent très confortable, même avec des lunettes, même après plusieurs heures d’écoute, même en pleine chaleur.

Le casque fonctionne parfaitement sur mon PC grâce à l’adaptateur bien que la télécommande soit inactive. Elle fonctionne en revanche parfaitement sur mon MacBook Air ainsi que sur mon iPhone et mon iPad. Bien entendu, le casque seul est également utilisable sans adaptateur sur n’importe quel équipement audio (téléviseur, chaîne HiFi, console portable, instrument de musique…).

Tous les éléments sont facilement remplaçables, ce qui évite de devoir racheter un nouveau casque lorsqu’une mousse se dégrade ou que le câble a un faux contact. Enfin, il est pliant ce qui permet de le ranger facilement dans la housse fournie pour l’emmener en voyage.

Le seul bémol est le câble, qui est un peu juste en longueur et qui manque de souplesse à mon goût. La prise jack semble également assez fragile.

Ne comptez pas utiliser ce casque avec le chipset son intégré à votre carte mère, vous n’entendrez plus que les interférences électromagnétiques de votre PC. Je recommande fortement l’utilisation d’une carte son dotée d’un amplificateur blindé comme la Asus Xonar Essence pour éviter les mauvaises surprises. Aucun problème en revanche avec les Macs et les mobiles Apple qui sont dotés de circuits acoustiques de bonne qualité.

Casque Bose AE2i

Le prix tourne aux alentours de 180 €.

Verdict

Les plus

  • L’acoustique d’une grande fidélité offrant un son cristallin et des basses profondes ;
  • Immersion totale dans les jeux vidéo et les films ;
  • Confortable même lors d’une utilisation intensive avec des lunettes ;
  • Très bonne isolation phonique ;
  • Pliant, faible encombrement ;
  • Éléments remplaçables.

Les moins

  • Nécessite une carte son de très bonne qualité ;
  • Requiert un adaptateur pour pouvoir utiliser le micro sur un PC ;
  • Le câble un peu trop court.

En conclusion, trouver le casque idéal est loin d’être une chose aisée car c’est un choix qui est purement subjectif. Si le Bose AE2i est un très bon casque qui répond parfaitement à mes exigences personnelles, il ne conviendra pas forcément à tout le monde. Cet article n’a pas pour vocation de vous vendre tel ou tel modèle de casque mais de vous aider à établir vos propres exigences en vous faisant part de ma propre expérience.

Ne vous fiez pas uniquement aux avis sur Internet pour acheter un casque, essayez plusieurs modèles en magasin avec votre musique préférée avant d’acheter. Un casque est un objet personnel et vous seul pouvez choisir celui qu’il vous faut.