dimanche 3 août 2014

Carte d'anniversaire musicale avec ATTiny85

C'est bientôt l'anniversaire de mon beau-frère, qui collectionne tout ce qui se rapporte à Pink Floyd.  Cette année, j'ai décidé de mettre à profit mes connaissances acquises récemment concernant la programmation de l'ATTiny pour lui fabriquer une carte d'anniversaire musicale personnalisée.

Au départ, j'imaginais une carte de dimensions conventionnelles, munie d'un tout petit haut-parleur (ou d'un simple piézo) dissimulé quelque part.  Mais lors des essais sur breadboard, j'ai constaté que le niveau sonore était bien meilleur si j'utilisais un véritable haut-parleur de 8 cm de diamètre, ce qui est quand même un peu trop gros pour dissimuler dans une carte... J'ai donc redéfini mon projet:  la carte allait assez grande pour comporter ce haut-parleur.  Et puisque la thématique allait être Pink Floyd, nul besoin de dissimuler ce haut-parleur:  il allait être mis bien en évidence dans le design de la carte.

Lorsqu'on appuie sur l'interrupteur, la carte joue une mélodie:  la chanson "Money" de Pink Floyd.  Un dessin présente les deux têtes de l'album "Divison  Bell":  leurs yeux ont été remplacés par des LEDs qui clignotent au rythme de la musique (deux autres LEDs clignotent également, car il me restait des pins inutilisées sur l'ATTiny).  De plus, l'aiguille d'une horloge se met à tourner, pour représenter la chanson "Time".  Voici ce que ça donne (la carte n'est pas encore terminée à 100%:  il me reste à écrire "Joyeux Anniversaire"):



L'horloge

L'aiguille mobile de l'horloge doit tourner, mais à une vitesse raisonnable qui nous permet de la voir:  j'ai donc utilisé un moteur à courant continu muni d'un petit engrenage, qui fait tourner un engrenage compatible mais qui comporte 6 ou 7 fois plus de dents (l'aiguille de l'horloge tournera donc 6 ou 7 fois moins vite que le moteur).  Ils sont maintenus sur un petit support en bois grâce grâce à une généreuse portion de colle époxy (le support est plutôt fragile, mais puisqu'il s'agit de faire tourner une très légère aiguille d'horloge, ça fait parfaitement l'affaire).


Cet ensemble moteur-engrenage est collé à l'arrière du panneau.  L'aiguille de l'horloge (qui est un simple fil électrique de calibre AWG 22) est collée au gros engrenage et passe par un trou pratiqué dans le panneau.

Puisque je disposais d'un interrupteur DPST (bipolaire, une direction), il m'a semblé pertinent d'isoler le moteur du reste du circuit.  Le circuit du moteur de l'horloge est donc constitué du moteur, de l'interrupteur, d'une pile AA (1,5 volt) et d'une résistance de 33 Ω (dont la fonction est de limiter le courant dans le moteur pour que celui-ci tourne le plus lentement possible).

Rien de bien révolutionnaire ici, vous en conviendrez...



Musique et lumière:  l'ATTiny85

C'est l'ATTiny85 qui s'occupe de jouer la mélodie à travers le haut-parleur et de faire clignoter les 4 LEDs. Le circuit est schématisé ci-dessous.




La deuxième moitié de l'interrupteur DPST utilisé dans le circuit du moteur permet de relier l'ATTiny a son alimentation.  L'ATTiny peut fonctionner sous une tension continue de 2,7 à 5,5 V.  Au départ, j'avais pensé utiliser une pile-bouton de 3 V, mais le son émis était de faible intensité (surtout que le moteur fait pas mal de bruit).  Puisque les résultats sont bien meilleurs à une tension de 5 V, j'ai finalement opté pour une batterie de 9 V jumelée à un régulateur de tension 7805.  Le condensateur de 10 microfarads s'est avéré nécessaire pour éviter des baisses de tension qui interrompaient le fonctionnement du microcontrôleur.

Programmation de l'ATTiny

J'ai programmé l'ATTiny85 au moyen d'un Arduino Uno en mode ISP.  Pour la procédure détaillée, je vous réfère à mon article précédent sur la programmation d'un ATTiny.  Assurez-vous d'utiliser la version "Arduino-Tiny" plutôt que celle du MIT Media Lab (qui ne supporte pas la fonction "Tone").  De plus, vous devez réglez l'horloge interne de votre ATTiny85 à 8 MHz (il s'agit de sélectionner "ATtiny85 @ 8MHZ" comme type de carte, puis choisir "Graver la séquence d'initialisation" dans le menu 'Outils" avant de télécharger le sketch dans l'ATTiny85.

Voici le sketch:


(Surtout, ne dites rien à mon beau-frère:  c'est une surprise...)

Yves Pelletier (Twitter:  @ElectroAmateur)


6 commentaires:

  1. bonjour beau projet mais le fichier hex est manquant.

    RépondreSupprimer
    Réponses
    1. Le code complet est fourni. Vous ne savez pas comment le compiler?

      Supprimer
    2. Re ! merci de me répondre aussi rapidement, de quel compilateur sagit'il ? d'abitude quand je trouve des montage sur internet ils sont complet code source ain si le fichier hex près à transféré dans le microcontrôleur. donc merci de m'expiquez la procédure. Constant

      Supprimer
    3. C'est programmé avec l'IDE Arduino. L'article comporte un lien vers un autre article qui explique comment programmer l'ATTiny avec Arduino. C'est mieux qu'un fichier hex qu'on ne peut pas modifier.

      Supprimer
    4. Re merci de me répondre aussi vite. Je ne posède pas de carte arduino mais j'ai le programmateur STK500 et le USBASP pour la famille Atmel. si vous arrivez à avoir le fichier hex pourriez vous me l'anvoyer à mon adresse mail dans la mesure du possible merci à vous. Constant

      Supprimer
  2. Bonjour ! comment allez vous ? Je reviens vers vous car j'ai acheté un arduino uno et j'ai pu programmer avec beaucoup de difficulté le Tiny85, mais j'ai les clignotements des leds mais sans le son, comment se fait t'il ? je tiens a vous remerciez. Constant

    RépondreSupprimer