Mon fils est fan d’une série animée nommée « Les Octonauts ». Dans cette série, il existe un bouton d’alarme appelé « l’Octo-Alerte » qui est utilisé par le capitaine Barnacles pour avertir son équipage d’un problème. Tous les épisodes ou presque sont l’objet d’un déclenchement de cette fameuse Octo-Alerte et l’alarme sonore qui s’en suit est d’ailleurs ce qui ouvre le générique de la série. N’ayant rien trouvé de satisfaisant dans le commerce, je me suis mis en tête de fabriquer cette Octo-Alerte moi-même. Pour les plus pressés, sautez directement à la vidéo de présentation.

Sommaire

Boîtier, perçages et peintures

C’est Delphine qui a trouvé le boîtier. Une boîte à mouchoir en bois à peindre dénichée chez Cultura. J’ai d’abord fait tous les perçages nécessaires pour les boutons, LEDs et prises. Ensuite Delphine s’est occupé de la partie peinture puis vernissage :

Composants électroniques : Adafruit mon amour !

Beaucoup de composants de cette bidouille provienne d’Adafruit. Et une bonne partie est même conçue par eux. Voilà donc ma petite Ada-liste de courses :

Qté. Nom:
1 x Massive Arcade Button with LED – 100mm White (le bouton d’Octo-Alerte !) Massive Arcade Button with LED - 100mm White
1 x Stereo Enclosed Speaker Set – 3W 4 Ohm Stereo Enclosed Speaker Set - 3W 4 Ohm
1 x Adafruit « Music Maker » MP3 Shield for Arduino w/3W Stereo Amp Adafruit
1 x Large Arcade Button with LED – 60mm White Large Arcade Button with LED - 60mm White
1 x NeoPixel Diffused 8mm Through-Hole LED – 5 Pack NeoPixel Diffused 8mm Through-Hole LED - 5 Pack
1 x 8 x AA battery holder 8 x AA battery holder
1 x NeoPixel Ring – 16 x WS2812 5050 RGB LED with Integrated Drivers NeoPixel Ring - 16 x WS2812 5050 RGB LED with Integrated Drivers
1 x NeoPixel Ring – 24 x WS2812 5050 RGB LED with Integrated Drivers NeoPixel Ring - 24 x WS2812 5050 RGB LED with Integrated Drivers
J’achète !

A propos du Shield MP3

J’ai d’abord utilisé un Arduino Leonardo avec le Shield MP3 de chez Adafruit. Je me suis donc fortement inspiré de ce tutoriel pour maîtriser ce shield.

Ne pas faire de polling sur les GPIO pendant la lecture

Je pensais pouvoir utiliser les GPIO du shield pour disposer du nombre d’entrées/sorties nécessaires car l’Arduino Leonardo n’en avait pas suffisamment à lui tout seul. Hélas je me suis rendu compte pendant le développement que ces GPIO ne pouvaient faire l’objet de polling pendant la lecture d’un son sous peine de faire planter le shield. Or je souhaitais que mon fils puisse interrompre un son à tout moment pour en démarrer un autre lors de l’appui sur un bouton. C’est pourquoi je suis passé sur un Arduino Mega où je me suis retrouvé nettement plus à l’aise compte tenu du nombre énorme d’entrée/sorties à ma disposition, toutes interrogeables à souhait pendant la lecture d’un son.

GPIO du Shield MP3
GPIO du Shield MP3

Attendre un peu entre un stop et un start en mode asynchrone

J’ai remarqué que lors d’une lecture asynchrone d’un mp3, si l’on faisait un stop puis un start, il y avait un délai assez important avant la relecture effective du nouveau fichier. J’ai dû en tenir compte dans mon code pour que mon décompte de course reste synchronisé avec les LEDs (cf Vidéo en fin d’article).

Câblage

Alimentation

Je souhaitais que le boîtier puisse fonctionner sur piles aussi bien que sur adaptateur secteur. J’ai donc utilisé un relai 12V pour basculer l’alimentation batterie vers l’alimentation secteur sans que les batteries ne soient soumises à la tension de l’adaptateur secteur.

Boutons et résistances pull-up internes

Pour l’ensemble des 6 boutons (dont celui d’Octo-Alerte), étant donné la faible longueur des câbles, j’ai utilisé les résistances interne de l’Arduino Mega. Hélas, ayant acheté un Mega « à pas cher » ici (10€), il se trouve que certaines entrées avaient des résistances internes dont les valeurs étaient un peu exotiques. J’ai donc dû changer quelques entrées prévues initialement pour que tout fonctionne bien. heureusement, avec le Mega, on a l’embarras du choix pour les entrées. Ma seule contrainte est que je préférais que toutes les entrées/sorties soient sur le même « rail » pour pouvoir me faire un connecteur complet pour faciliter la maintenance.

Le schéma

Câblage
Câblage

Assemblage et soudure

Pour illuminer l’Octo-Alerte : NeoPixel Rings et Neopixel Through-Hole

Pour illuminer le bouton d’Octo-Alerte, j’ai retiré la LED d’origine du bouton pour y installer des NeoPixels. J’ai assemblé les 2 NeoPixel rings en série : le out du grand vers le in du petit, puis le out du petit vers le in de la LED centrale. Puis j’ai placé le tout dans le bouton géant du dessus.

Pour le compte à rebours : des LED classiques

Je me suis trompé en achetant mes LEDs (chez les chinois), et j’ai pris des LEDs transparentes. Comme je n’avais plus le temps de commander d’autres LEDs avant l’anniversaire, j’ai simplement passé un coup de papier de verre sur les LED.

Pour le choix des résistances, il a fallu que je tâtonne car même les résistances de même couleurs n’affichaient pas la même luminosité. quelques potentiomètres pour trouver les bonnes valeurs (en restant dans les limites supportables par les LEDs) et zou !

Reste du montage

Code source

Le code source est disponible ici sur GitHub.

Vidéo de présentation

Pour finir une vidéo de présentation du projet d’Octo-Alerte :

Évolution possible

Je compte implémenter un jeu de Simon puisque entre le shield MP3, les NeoPixels et les 4 boutons, j’ai tout ce qu’il faut côté hardware ! Cela fera l’objet d’un prochain billet.

[Edit: Le prochain billet en question est ici : OctoAlert 2.0 : Jeu de Simon et animations]

Octo-Alerte : Un cadeau d’anniversaire unique
Étiqueté avec :                

9 avis sur « Octo-Alerte : Un cadeau d’anniversaire unique »

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.