jeudi 19 mars 2020

Moteur pas à pas commandé par Ir pour Ampli Yamaha . avec Arduino Nano



Je possède un ampli Yamaha qui me donne toute satisfaction .

  
pour info : lien-Web-Yamaha 


je n'ai pas sa télécommande .... et je dois me lever pour modifier le son.
Je ne trouve pas la télécommande originale qui ne doit pas être bon marché.


Alors je vais tenter de réaliser avec Arduino un moyen de tourner le bouton de volume a partir d'une télécommande quelconque ! 

*********
il me faut
une détection Ir
un Arduino Uno pour commencer avec les connections volantes
une télécommande quelconque 
un moteur Pas à Pas
une poulie + courroie (ou élastique)
Un boîtier
l'interface de programmation Arduino
sous Linux dans mon cas .
ET 
faire le programme 
****************
La liste est faite..... c'est parti ! 
 
une détection Ir
un arduino Uno pour commencer
 
Une télécommande quelconque
 et je prévois une deuxième télécommande qui traînait dans un tiroir
  un moteur Pas à Pas
 
Une poulie + courroie 
boutons + élastique
 le boitier 
l'interface arduino

 **************
Pour le programme je ne vais pas réinventer l'eau tiède
la méthode existe.  

il faut
choisir les touches de la télécommande à utiliser
identifier le code de ces touches 
Définir l'action selon la touche pressée
---
Pour le programme 
il faut inclure les bibliothèques
"Infrarouge"
et
"moteur pas a pas"
--
lire le code reçu  par la partie Ir
et
selon ce code 
actionner le moteur  vers la droite ou la gauche.

voici un exemple de code à recevoir et à traiter
Le programme final (trés court)
se trouve tout en bas. 
----
Passons au prototype
Je travaille sur une serviette cela me permet de 
tout faire pivoter d'un coup, c'est bien plus facile .
j'ai utilisé dans un premier temps un Arduino Uno + plus une plaque de connections et tout le câblage volant.
--
voici la partie Ir et sa diode témoin (avec la commande de l'affichage 16*2)
 là tout est câblé et fonctionnel.

il faut maintenant réduire le volume de tout cela
utiliser un Arduino Nano
virer l'afficheur de test , la diode témoin puis souder le tout.

ici l'arduino Nano , bien plus petit.
placer le tout dans le boîtier de pilule après avoir 
forer un trou pour le moteur
 vernir les bavures et rayures
 coller le moteur dans la boite
 et voilà
Pour la poulie , le premier essai fut un échec puis j'ai utilisé des boutons de manteau , là ça marche !
---------
 le contrôleur du moteur
le nano et ses connections
 

 le détecteur ir
 Le tout dans sa boite et la première poulie.

voici le tout en place , je dois repeindre la poulie


J'ai repeint la poulie ... plus joli  , non ?
Les vidéos montrant le fonctionnement 
(fonctionnent elles avec tous les navigateurs ????)
avec la première poulie
et finalement avec la deuxième commande et la deuxième poulie
 


 Amélioration à prévoir

tenter l'implantation sur Arduino Tyni et un I²C pour combler le manque de pattes du Tyni - A évaluer -


Prévoir une touche autre sur la télécommande qui baisse le son d'un coup automatiquement et une autre qui le remet au même volume , en cas de coup de téléphone par exemple une fonction MUTE en quelque sorte

Pour le moment l'appui prolongé ne fonctionne pas (je ne l'ais pas programmé) il le faudrait pour économiser les piles de la télécommande
 
-------------
Le programme  
 

    #include "IRremoteInt.h"
    #include "IRremote.h"
    #include "Stepper.h"
 

    const int RECV_PIN = 8; // reception pin 8
    IRrecv irrecv(RECV_PIN);
    decode_results results;       
    double stepsPerRevolution = 2048;
    Stepper myStepper(stepsPerRevolution, 9, 11, 10, 12);  
    // sequence des pin moteur

    void setup() {
     Serial.begin(9600); // initialisation liaison série
     irrecv.enableIRIn(); // initialisation reception Ir
     irrecv.blink13(true); // la diode implémenté clignote a la reception
     myStepper.setSpeed(10);  // pas du moteur
     } // void setup

    
    void loop() {

           
       if (irrecv.decode(&results)){   // si reception trame correcte
        Serial.println(results.value);  // liaison pc
        irrecv.resume();                      / resume Ir
        }


  switch (results.value) { // debut de la structure code sylver crest  kh 2311
  
    case (16748655):         // cas <<<<<  autre touche
     myStepper.step(-100);
      break;

    case (16756815):         // cas volume -
     myStepper.step(100);
      break;

    case (16724175):         // cas volume +
     myStepper.step(-100);
      break;
   
    case (16740495):         // cas >>>>>  autre touche
     myStepper.step(100);
     break;

    case (1489202892):         // cas commande blanche off = +
     myStepper.step(-100);
     break;

    case (3925222132):         // cas commande blanche on = -
     myStepper.step(100);
     break;


    case (4294967295):       // cas touche enfoncé longuement non fonctionnel
     break;
 }  // fin switch
   
   results.value= 0; // force l' arret du moteur en effaçant le code
   
   
    } //void loop 



**********************************************************


c'est une bien petite réalisation qui permet d'approcher la programmation avec de l'Ir et des moteurs pas à pas, de tenter d'identifier le code Ir des différentes télécommandes
Il faut maintenant l' améliorer !

Je suis preneur de toute suggestion ! 

Cdlt.


LN 03/2020