<?xml version="1.0" encoding="UTF-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <link href="https://funduinoshop.com/fr/blog/projets/?sAtom=1" rel="self" type="application/atom+xml" />
    <author>
        <name>Funduinoshop</name>
    </author>
    <title>Blog / Flux Atom</title>
    <id>https://funduinoshop.com/fr/blog/projets/?sRss=1</id>
    <updated>2026-04-13T17:18:42+02:00</updated>
    
        <entry>
            <title type="text">Construire une voiture RC pour Arduino : Véhicule autonome - partie 3</title>
            <id>https://funduinoshop.com/fr/construire-une-voiture-rc-pour-arduino-vehicule-autonome-partie-3</id>
            <link href="https://funduinoshop.com/fr/construire-une-voiture-rc-pour-arduino-vehicule-autonome-partie-3"/>
            <summary type="html">
                <![CDATA[
                
                                            Bienvenue dans le troisième épisode de notre série de blogs sur les voitures robots. Dans la première partie, nous avons découvert les bases du véhicule de base. Dans la deuxième partie, nous avons développé un système de code universel qui nous permet de définir des étapes de...
                                        ]]>
            </summary>
            <content type="html">
                <![CDATA[
                  Comprendre la mobilité du futur avec les voitures robots, partie 3  
 Bienvenue dans le troisième épisode de notre série de blogs sur les voitures robots. Dans le   première partie  &amp;nbsp;nous avons découvert les bases du véhicule de base. Dans   deuxième partie  &amp;nbsp;nous avons développé un système de code universel pour définir les étapes de conduite de la voiture robot et réalisé une commande à distance simple avec une télécommande infrarouge. En raison des limites physiques de cette télécommande, je souhaite montrer dans cet épisode la transmission des instructions de conduite avec Bluetooth, par exemple d&#039;un smartphone vers le récepteur BT HC-05. Bluetooth est un signal radio de 2,4 GHz à courte portée. Sûr jusqu&#039;à environ 10m et sans interférences à la lumière du soleil. 
 Le module Bluetooth HC-05 est en fait un  émetteur-récepteur=transmetteur +  récepteur . Mais nous ne l&#039;utilisons que comme récepteur, pour envoyer les instructions de conduite, nous utilisons une APP Bluetooth sur un smartphone Android (à cause de la voie spéciale d&#039;Apple pour le Bluetooth, cela ne fonctionne pas avec un iPhone). Il est en principe possible de construire aussi une télécommande Bluetooth avec le HC-05 ; mais pour cela, il faut un deuxième HC-05, d&#039;autres microcontrôleurs et un périphérique d&#039;entrée (contrôleur de joystick). 
 &amp;nbsp;  
  Sur les six broches du module HC-05, seules quatre sont nécessaires : VCC (5V) et GND pour l&#039;alimentation du module, ainsi que RXD et TXD pour la connexion à deux broches du microcontrôleur, sur lesquelles SoftwareSerial est configuré. Cependant, tu ne peux pas ignorer l&#039;inscription LEVEL : 3.3V pour ne pas endommager le module. Sur notre microcontrôleur avec logique 5V, nous avons besoin, au moins pour la broche RXD, d&#039;un diviseur de tension de 5V à 3,3V, donc par exemple des résistances de 1 kohm et 2,2 kohm. 
 Le schéma de câblage : Module HC-05 sur le microcontrôleur    
 Les commandes AT du module HC-05 pour les microcontrôleurs Arduino 
 A gauche du connecteur marqué Key se trouve un petit bouton (button) qui est important pour la configuration. En appuyant sur ce bouton lors de l&#039;allumage, nous entrons dans le mode de commande AT (la LED clignote lentement au rythme de 2s), dans lequel nous effectuons les réglages avec ce que l&#039;on appelle les commandes AT (pour Attention, Attention). Pour cela, nous utilisons un programme d&#039;exemple modifié, dans lequel l&#039;interface sérielle habituelle est connectée au moniteur sériel de l&#039;Arduino IDE et au HC-05 via SoftwareSerial. 
  /*
  Software serial multiple serial test
 Reçoit de la série matérielle, envoie à la série logicielle.
 Reçoit du software serial, envoie au hardware serial.
 Le circuit :
 * RX est la broche numérique 10 (se connecte à TX d&#039;un autre appareil)
 * TX est la broche numérique 11 (connexion à RX d&#039;un autre appareil) // diviseur de tension !
 créé en arrière dans le temps
 modifié le 25 mai 2012
 par Tom Igoe
 basé sur l&#039;exemple de Mikal Hart
 Cet exemple de code est dans le domaine public.
 */ 
  #include  &amp;lt;SoftwareSerial  .h&amp;gt;  
 SoftwareSerial  BTSerial (10 ,  11 ) ;  // RX, TX // mySerial changé en BTSerial 
 char  c= &#039; &#039; ;  // Déclaration de la variable pour la transmission 

 void   setup () {
   // Open serial communications and wait for port to open: 
   Serial . begin ( 9600 );                                                                                    // Baud rate changed to 9600 
   Serial . println ( &quot;Serial started!&quot; );

   // set the data rate for the SoftwareSerial port 
  BTSerial. begin ( 38400 );                                                                             // Baud rate for BT 38400 
   Serial . println ( &quot;BTSerial started!&quot; );
}

 void   loop () {  // run over and over 
  if  (BTSerial .available ()) {
    c=BTSerial. read ();
     Serial . write (c);
  }
  if  (Serial  .available ()) {
    c= Serial . read ();
    BTSerial. write (c);
     Serial . write (c);                                                                                        // re-transmission of input in Serial Monitor 
  }
} 
 Les commandes AT essentielles sont utilisées dans l&#039;image suivante. L&#039;interlocuteur, le HC-05, envoie une réponse le cas échéant et acquitte avec OK. 
 Nous sommes surtout intéressés par le nom et l&#039;adresse HEX afin d&#039;identifier clairement le module plus tard sur le smartphone. Les commandes AT sont saisies dans le moniteur série du microcontrôleur. Dans l&#039;image ci-dessous, tu peux voir le moniteur série de l&#039;IDE Arduino. 
 Si tu le souhaites, tu peux changer le mot de passe par défaut 1234 avec &quot;AT+PSWD=xxxx &quot;, où x représente un chiffre de 0 à 9. Vérifier ensuite avec &quot;AT+PSWD ? &quot; si la saisie a réussi.    Une fois les saisies terminées, le module est brièvement coupé du courant. Après la remise en marche sans appuyer sur le bouton, le module HC-05 se trouve en mode standard. La LED clignote rapidement (environ 5 fois/s). 
 Modifications de la voiture RC : autre Motorshield 
 Passons maintenant à la voiture robot. Après avoir utilisé la dernière fois le contrôleur de moteur V2, qui ne nécessite que les deux connecteurs I2C SDA=A4 et SCL=A5 pour les signaux de commande, je voudrais cette fois-ci présenter le contrôleur de moteur V1, plus ancien, qui bloque de nombreuses broches numériques mais que l&#039;on peut souvent acheter à un prix d&#039;aubaine.     J&#039;ai également modifié un peu ce motorhield pour avoir accès aux capteurs et aux récepteurs radio. Du côté des broches numériques, il n&#039;y a qu&#039;une seule broche qui est accessible à l&#039;aide d&#039;un connecteur coudé : La broche 2. C&#039;est bien pour ceux qui veulent y connecter le récepteur IR. Il y a plus de possibilités d&#039;extension de l&#039;autre côté, où l&#039;on peut accéder à toutes les entrées analogiques et à l&#039;alimentation électrique à l&#039;aide de connecteurs à ressort (également appelés connecteurs femelles). 
 Comme toutes les entrées analogiques peuvent également être utilisées comme entrées ou sorties numériques, nous avons ici la possibilité de connecter nos récepteurs radio. Cela fonctionne parfaitement avec l&#039;émetteur-récepteur 433 MHz HC-12 (voir l&#039;épisode suivant), mais avec des restrictions pour le récepteur BT HC-05. Premièrement, nous ne pouvons pas connecter directement la broche RXD, nous avons besoin du diviseur de tension, et deuxièmement, les broches ne fournissent pas assez de courant pour alimenter le module sur ces broches. 
 Sur l&#039;image suivante, tu peux voir un petit adaptateur fait maison qui alimente le HC-05 en 5V et en ground à partir des connecteurs correspondants, connecte TXD directement à RX de l&#039;interface SoftwareSerial A1 =D15 et RXD à A2 = D16 via le diviseur de tension.   
 Le schéma de câblage : Module HC-05 avec L293D Motorshield sur le microcontrôleur Arduino     
 Le circuit peut bien sûr aussi être réalisé sur une mini breadboard avec des câbles jumper. 
 Comme la dernière fois, le code pour les instructions de conduite est augmenté ou diminué en appuyant sur un bouton ; cette fois-ci seulement, pas avec la télécommande IR, mais avec la fonction tactile dans l&#039;APP du smartphone et l&#039;interrogation Bluetooth via SoftwareSerial. 
 Couplage du module Bluetooth HC-05 avec une application Android (APP) 
 Avant que l&#039;APP puisse se connecter à la voiture robot, nous devons effectuer l&#039;appairage avec le module Bluetooth dans les paramètres. Cela devrait être très simple, car nous avons auparavant demandé le nom et l&#039;adresse HEX du HC-05 avec les commandes AT. 
 Si l&#039;appairage a fonctionné et qu&#039;une application BT appropriée a été installée, celle-ci peut être lancée et configurée. En tapant sur la loupe dans l&#039;image de gauche, les appareils appropriés s&#039;affichent. On tape sur le HC-05 et on obtient le message &quot;connecté&quot;. L&#039;application que j&#039;utilise propose plusieurs interfaces pour l&#039;utilisation (image du milieu). J&#039;ai opté pour le contrôleur de jeu. Sur l&#039;image du milieu en haut à droite, il y a deux flèches qui forment un petit cercle. Touche ici si tu as perdu la connexion. 
 Sur l&#039;image de droite, les boutons d&#039;une manette de jeu sont représentés. Avant la première utilisation, il faut attribuer aux boutons les valeurs numériques qui seront transmises lorsque tu taperas. 
 Pour les boutons du curseur, j&#039;ai donné les valeurs numériques 1 à 4 dans le sens des aiguilles d&#039;une montre. J&#039;ai attribué la valeur numérique 5 aux autres boutons. Ces valeurs sont transmises dans le sketch à la variable  blueToothVal &amp;nbsp;et conduisent dans les instructions&amp;nbsp;if  de la fonction  loop()  à la détermination du code pour le niveau de conduite.    
 Les changements de l&#039;infrarouge au Bluetooth et du contrôleur de moteur V2 à V1 provoquent quelques modifications dans la partie principale du sketch. Par contre, presque rien ne change dans la fonction motor(). C&#039;est seulement au niveau de l&#039;écriture que les fonctions motor1-&amp;gt;setSpeed() deviennent motor1.setSpeed() en raison des différentes bibliothèques de programmes (libraries). 
 Le code du programme : Construire une voiture RC pour Arduino 
 * Sample Code  for  Robot Car with Motor Shield V1 and BT receiver   HC-05 , as of  20220515 
* based on Adafruit Motor shield V2 library, copyright Adafruit Industries LLC
*  ce  code est dans le domaine  public , enjoy !
* modifié  pour  Funduino
* Pins
* BT VCC vers Arduino  5V out.
* BT GND vers GND
* Arduino  A1=15  (SS RX) - BT TX pas besoin de diviseur de tension
* Arduino  A2=16  (SS TX) - BT RX par un diviseur de tension (5v à  3.3v )
*/

  #include  &amp;lt;AFMotor  .h&amp;gt;  
AF_DCMotor motor1 (2 ) ;
AF_DCMotor motor2 (3 ) ;

  #include  &amp;lt;SoftwareSerial  .h&amp;gt;  
 // initialize HC-05 
 SoftwareSerial  BTSerial (15 ,  16 ) ;  // RX, TX en croix sur TX, RX(voltage divider) 
 char  blueToothVal ;
 int  x =  0 ;
 int  y =  0 ;
 int  gauche =  0 ;
 int  droite =  0 ;
 int  code =  5555 ;
 int  speedL =  0 ;
 float  factor =  1.8 ;  // Correction pour speedLevel 255/100 * 6V/VBatt 

 void   setup () {
   Serial . begin ( 9600 );  // set up Serial Monitor at 9600 bps 
   Serial . println ( &quot;Motor test!&quot; );
  BTSerial. begin ( 9600 );  // set up transmission speed for HC-12 
   Serial . println ( &quot;SoftwareSerial initialized!&quot; );
}  // end setup 

 void   loop () {
  if (BTSerial .available ())  //si des données sont reçues.  .. 
 Serial.print(&quot;available&quot;) ;  
{
    blueToothVal=BTSerial. read (); //..sollen diese ausgelesen werden 
 Serial.println(blueToothVal); 
  }
    if  (blueToothVal== &#039;1&#039; )  //si le module Bluetooth reçoit un &quot;1&quot;.. .
   {
       if  (code&amp;lt; 9000 )   code = code +  1000 ;      
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);
    }
    else   if  (blueToothVal=&#039; 2&#039; )  //si le module Bluetooth reçoit un &quot;2&quot;. ..
   {
       if  ((code -1000 * int (code/ 1000 ))&amp;lt; 900 )  code = code +  100 ;
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);
    }
    else   if  (blueToothVal=&#039; 3&#039; )  //si le module Bluetooth reçoit un &quot;3&quot;. 
   {
       if  (code&amp;gt; 2000 )   code = code -  1000 ;        
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);
    }
    else   if  (blueToothVal=&#039; 4&#039; )  //si le module Bluetooth reçoit un &quot;4&quot;. 
    {
     if  (code -1000 * int (code/ 1000 ) &amp;gt;  200 )   code = code -  100 ;
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);
    }  
    else   if  (blueToothVal=&#039; 5&#039; )  //si le module Bluetooth reçoit &quot;5&quot; ...
   {           
      code =  5555 ;
       Serial . print ( &quot;Code = &quot; );
       Serial . println (code);    
    }
    delay  (200 ) ;  //petit délai pour une meilleure communication en série et pour éviter les rebonds 
    moteur() ;
}  // fin de la boucle 

 void  motor(){
  int  speedLevel [9 ]={ -100 , -80 , -60 , -40 , 0 , 40 , 60 , 80 , 100 };
  y =  int (code /  1000 ) ;
  x =  int ((code -  1000*y ) /  100 ) ;
  speedL = speedLevel[ y-1 ] ;
  Serial  .print ( &quot;code = &quot; ) ;
  Serial  .print (code) ;
  Serial  .print ( &quot; y = &quot; ) ;
  Serial  .print (y) ;
  Serial  .print ( &quot; x = &quot; ) ;
  Serial  .print (x) ;
  Serial  .print ( &quot; speedL = &quot; ) ;
  Serial  .println (speedL) ;

  //Correction des niveaux de vitesse pour les virages 
  if  ( x==1 ){
    right = speedL+ 20 ;
    left = speedL -20 ;
  }
  else   if  ( x==2 ){
    right = speedL+ 15 ;
    left = speedL -15 ;
  }
  else   if  ( x==3 ) {
    right = speedL+ 10 ;
    left = speedL -10 ;
  }
  else   if  ( x==4 ) {
    right = speedL+ 5 ;
    left = speedL -5 ;
  }
  else   if  ( x==6 ) {
    right = speedL  -5 ;
    left = speedL+ 5 ;
  }
  else   if  ( x==7 ) {
    right = speedL -10 ;
    left = speedL+ 10 ;
  }
  else   if  ( x==8 ) {
    right = speedL -15 ;
    left = speedL+ 15 ;
  }
  else   if  ( x==9 ) {
    right = speedL -20 ;
    left = speedL+ 20 ;
  }
  else  {
    right = speedL;
    left = speedL;
  }

  //Entrer les niveaux de déplacement pour &quot;left&quot; et &quot;right&quot; 
  Serial  .print ( &quot;left = &quot; ) ;
  Serial  .print (left) ;
  Serial  .print ( &quot; right = &quot; ) ;
  Serial  .println (right) ;

  if  (left &amp;lt;  40  &amp;amp; left &amp;gt;  -40 ) {
    motor1. run (RELEASE);
  }
  if  (right &amp;lt;  40  &amp;amp; right &amp;gt;  -40 ) {
    motor2. run (RELEASE);
  }
  if  ( left&amp;gt;=40 ) {
     if  (left&amp;gt; 100 ) left= 100 ;
      motor1. run (FORWARD);
      motor1. setSpeed (left * factor);
  }
  if  ( right&amp;gt;=40 ) {
     if  (right&amp;gt; 100 ) right= 100 ;
      motor2. run (FORWARD);
      motor2. setSpeed (right * factor);
  }
  if  (left&amp;lt;=  -40 ) {
     if  (left&amp;lt; -100 ) left= -100 ;
      motor1. run (BACKWARD);
      left = -left;
      motor1. setSpeed (left * factor);
  }
  if  (right&amp;lt;=  -40 ) {
     if  (right&amp;lt; -100 ) right= -100 ;
      motor2. run (BACKWARD);
      right = -right;
      motor2. setSpeed (right * factor);
  }
}  // end motor  
 Voilà la deuxième solution la plus économique pour une voiture robot avec télécommande (à condition d&#039;avoir un smartphone Android). La prochaine fois, je veux montrer à quel point il est facile d&#039;intégrer un émetteur-récepteur HC-12 de 433 MHz. Cela permet même d&#039;obtenir une portée de plusieurs centaines de mètres. Cependant, les coûts augmentent, car il faut maintenant deux émetteurs-récepteurs et un autre microcontrôleur. A bientôt. 
                ]]>
            </content>

                            <updated>2022-06-20T08:00:00+02:00</updated>
                    </entry>

    
    
        <entry>
            <title type="text">Construire une voiture RC pour Arduino : Véhicule autonome - partie 2</title>
            <id>https://funduinoshop.com/fr/construire-une-voiture-rc-pour-arduino-vehicule-autonome-partie-2</id>
            <link href="https://funduinoshop.com/fr/construire-une-voiture-rc-pour-arduino-vehicule-autonome-partie-2"/>
            <summary type="html">
                <![CDATA[
                
                                            Bienvenue dans le deuxième épisode de notre nouvelle série de blogs sur les voitures robotisées. Dans la première partie, nous avons découvert les bases du véhicule de base. Cette fois-ci, nous voulons aborder les possibilités de contrôle à distance, tout en développant un sys...
                                        ]]>
            </summary>
            <content type="html">
                <![CDATA[
                  Comprendre la mobilité du futur avec les voitures robots, partie 2  
 Bienvenue dans le deuxième épisode de notre nouvelle série de blogs sur les voitures robotisées. Dans la  première partie , nous avons découvert les bases du véhicule de base. Cette fois-ci, nous voulons aborder les possibilités de commande à distance, en développant un système de code qui nous permet de déterminer les étapes de conduite de la voiture robot et, enfin, de réaliser une commande à distance simple avec une télécommande infrarouge. 
 Pourquoi ai-je besoin de niveaux de vitesse pour une voiture RC pour microcontrôleurs Arduino ? 
 1. Pour contrôler les vitesses du moteur à partir d&#039;un autre appareil, il existe en principe la possibilité de déterminer et de transmettre des valeurs en continu à l&#039;aide d&#039;un potentiomètre (poti), ou d&#039;augmenter ou de diminuer la valeur de l&#039;étape de conduite en appuyant sur un bouton. Sur les images suivantes, quelques exemples choisis, sur la première image des commandes par joystick : 
 &amp;nbsp;  
 &amp;nbsp; 
 Sur la deuxième image, nous voyons des commandes à distance infrarouges, une application pour smartphone avec récepteur Bluetooth ainsi que le panneau de commande LCD1602 qui peut être utilisé, entre autres, avec un émetteur-récepteur 433 MHz : 
 &amp;nbsp;  
 &amp;nbsp; 
 Pour obtenir un schéma uniforme, il est judicieux de réduire les valeurs analogiques du potentiomètre avec la fonction map() à des valeurs qui peuvent être transmises par radio. Le convertisseur analogique-numérique fournit des nombres de 10 bits, c&#039;est-à-dire des valeurs comprises entre 0 et 1023. La position centrale des mini-joysticks est d&#039;environ 511. En divisant cette valeur par 100, tu peux obtenir deux valeurs (direction x et y) avec un joystick, qui se situent entre 0 et 10 ou, en utilisant la fonction map(), entre 1 et 9. Cela suffit largement pour entrer la vitesse et pour les virages. Que nous déterminions 11 ou 9 valeurs, l&#039;immobilité signifie une valeur de 5 dans la direction y et une valeur de 5 pour aller en ligne droite. 
 En ce qui concerne le contrôleur avec les deux joysticks (partie du kit  4DOF Mini bras robotique avec joysticks et servocommande ), j&#039;opte pour un code facile à transmettre entre 1111 et 9999, avec le premier chiffre pour la direction y du joystick gauche, le deuxième chiffre pour la direction x du joystick gauche, le troisième et le quatrième chiffre pour un deuxième joystick optionnel ou certaines touches. Dans le premier exemple avec la télécommande IR, nous n&#039;avons besoin que des deux premiers chiffres du code à quatre chiffres. 
 Le contrôle de la vitesse de la voiture RC pour Arduino 
 La régulation de la vitesse des moteurs se fait par modulation de largeur d&#039;impulsion (PWM). La valeur de ce que l&#039;on appelle le duty cycle est un nombre de 8 bits, c&#039;est-à-dire une valeur comprise entre 0 et 255 (=2 puissance 8 -1). Si tu appliques des tensions entre 0 et 6V au moteur avec un bloc d&#039;alimentation réglable, tu constateras que jusqu&#039;à environ 1,5 V, tu ne remarqueras rien. Ensuite, le moteur commence à bourdonner, mais ne bouge pas. Si tu mesures en même temps l&#039;intensité du courant, tu constateras une valeur relativement élevée. L&#039;énergie est transformée en chaleur et en ronflement - pas vraiment bon. A partir de 2,4 - 3 volts, le moteur commence à tourner, l&#039;intensité du courant diminue un peu lorsque le moteur n&#039;est pas chargé. Ensuite, la vitesse augmente en fonction de la tension appliquée. En baissant la tension, le moteur tourne jusqu&#039;à moins de 2 volts, mais s&#039;il s&#039;arrête, par exemple à cause d&#039;une résistance de frottement accrue ou d&#039;un obstacle, il ne redémarre pas. Conclusion : les valeurs inférieures à environ 2,4 volts devraient être évitées, l&#039;entrée devrait être fixée à 0 (zéro) afin d&#039;éviter une usure et une consommation d&#039;énergie inutiles. En dehors de l&#039;arrêt (code=5), nous avons besoin de Duty Cycle entre environ 40% et 100% pour une tension d&#039;alimentation de 6V pour les moteurs. 
 L&#039;alimentation électrique de la voiture RC pour Arduino 
 Nous avons déjà abordé plusieurs possibilités d&#039;alimentation électrique dans la première partie. Quatre piles AA de 1,5V chacune donnent 6V, la tension maximale des petits moteurs jaunes. Quatre piles AA de 1,2 V chacune ne suffisent pas pour l&#039;alimentation. Il faut alors un support de piles pour 6 piles, ce qui donne 7,2 volts. Et deux batteries lithium-ion (tension nominale de 3,7V) fournissent plus de 8 volts lorsqu&#039;elles sont complètement chargées. Il est donc logique de définir dans le programme un facteur qui limite la tension du niveau de conduite le plus élevé à 6V. 
 Le contrôle de la RC Car pour Arduino 
 Si les instructions de conduite sont données avec des boutons, qui peuvent même se trouver dans une application pour smartphone, la valeur de sortie 55xx (arrêt) est augmentée ou diminuée de la valeur correspondante, sans que le maximum ne puisse être dépassé. 
 Lire le code correctement 
 L&#039;attribution du premier chiffre du code aux valeurs nécessaires des étapes de conduite se fait par l&#039;index d&#039;une liste avec les valeurs numériques correspondantes. 
 Conclusion : avec un code à quatre chiffres, nous pouvons contrôler la vitesse et les virages avec les deux premiers chiffres, les deux derniers chiffres servent à d&#039;autres fonctions (pas nécessaires au début). Donc, par exemple, code95xx pour aller le plus vite en ligne droite, 55xx pour s&#039;arrêter, 77xx pour avancer vers la droite.&amp;nbsp; 
 
 
 
 
 
 y ↓ 0&amp;nbsp; x→ 
 
 
 1 
 
 
 2 
 
 
 3 
 
 
 4 
 
 
 5 
 
 
 6 
 
 
 7 
 
 
 8 
 
 
 9 
 
 
 
 
 9 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  ↑  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 8 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  ↑  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 7 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  ↑  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 6 
 
 
 ← 
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
 ↑ 
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
 → 
 
 
 
 
 5 
 
 
 ← 
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
  0  
 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 &amp;nbsp; 
 
 
 → 
 
 
 
 
 4 
 
 
 ← 
 
 
 &amp;nbsp; 
 
 
 ↙ 
 
 
 &amp;nbsp; 
 
 
 ↓ 
 
 
 &amp;nbsp; 
 
 
 ↘ 
 
 
 &amp;nbsp; 
 
 
 → 
 
 
 
 
 3 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 
  ↙  
 
 
 &amp;nbsp; 
 
 
  ↓  
 
 
 &amp;nbsp; 
 
 
  ↘  
 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 2 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 
  ↙  
 
 
 &amp;nbsp; 
 
 
  ↓  
 
 
 &amp;nbsp; 
 
 
  ↘  
 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 1 
 
 
  ←  
 
 
 &amp;nbsp; 
 
 
  ↙  
 
 
 &amp;nbsp; 
 
 
  ↓  
 
 
 &amp;nbsp; 
 
 
  ↘  
 
 
 &amp;nbsp; 
 
 
  →  
 
 
 
 
 
 &amp;nbsp; 
 Maintenant, nous voulons construire notre première Smart Robot Car avec le kit, un microcontrôleur de type ATmega328 (forme de construction de l&#039;UNO R3), un MotorShield V2 et des émetteurs et récepteurs IR. 
 Le Motor Shield V2 peut contrôler jusqu&#039;à quatre moteurs, en utilisant le bus I2C avec les connecteurs SDA (= données sérielles) sur l&#039;entrée analogique A4 et SCL (= horloge sérielle) sur A5 pour connecter les lignes de contrôle. Pour cela aussi, Adafruit a développé et mis à disposition une bibliothèque de programmes adaptée. Attention : les bibliothèques pour les Motor Shield V1 et V2 ne sont pas compatibles. 
 &amp;nbsp;  
 Image Motor Shield V2 avec modification :  Connecteurs femelles soudés (connecteurs à ressort) pour la connexion d&#039;équipements supplémentaires 
 Quel que soit le Motor Shield que tu souhaites utiliser - V1 ou V2 -,&amp;nbsp; il est judicieux de souder des connecteurs femelles supplémentaires sur les deux Motor Shield pour pouvoir y connecter plus tard des émetteurs/récepteurs Bluetooth ou 433 MHz (en anglais transceiver=émetteur + récepteur) ou des capteurs. Plus de détails dans les articles de blog suivants. Le récepteur IR n&#039;a besoin que de l&#039;alimentation électrique des broches 3 et 4 ainsi que de la broche 2 pour le récepteur IR. Le fer à souder peut encore rester froid. 
 Comme commande, nous utiliserons d&#039;abord la petite télécommande infrarouge de Funduino et un récepteur IR. Bien que le capteur IR &quot;nu&quot; suffise, je recommande la petite carte de breakout, car une LED scintille lorsque des signaux IR sont reçus ; une aide précieuse lorsqu&#039;une erreur est recherchée. 
 Le sketch est composé de deux parties qui ont fait leurs preuves : Le sketch d&#039;exemple d&#039;Armin Joachimsmeyer, qu&#039;il a ajouté à sa superbe bibliothèque de programmes IRremote, et un sketch de voiture robot de l&#039;auteur, basé sur la bibliothèque de programmes d&#039;Adafruit. 
 Le code de programme pour la RC Car pour Arduino 
  /* Sample Code for Robot Car with Motor Shield V2 and IR receiver, as of 20220515
* based on Adafruit Motor shield V2 library, copyright Adafruit Industries LLC, 2009
* et SimpleReceiver.cpp, partie de Arduino-IRremote https://github.com/Arduino-IRremote/Arduino-IRremote
* MIT License Copyright (c) 2020-2022 Armin Joachimsmeyer
* modifié pour Funduino
* Motor Shield V2 utilise I2C avec SDA=A4 et SCL=A5
* IRreceiver utilise la broche 2
 ************************************************************************************
 * Permission est accordée par la présente, gratuitement, à toute personne obtenant une copie
 * de ce logiciel et des fichiers de documentation associés (le &quot;logiciel&quot;), à traiter
 * dans le logiciel sans restriction, y compris, sans limitation, les droits de
 * d&#039;utiliser, de copier, de modifier, de fusionner, de publier, de distribuer, de sous-licencier, et/ou de vendre
 * copies du logiciel, et à autoriser les personnes à qui le logiciel est fourni à le faire
 * à le faire, sous réserve des conditions suivantes :
 *
 * La notice de copyright ci-dessus et cette notice d&#039;autorisation doivent être incluses dans toutes les copies
 * copies ou parties substantielles du logiciel.
 *
 * LE LOGICIEL EST FOURNI &quot;EN L&#039;ÉTAT&quot;, SANS GARANTIE D&#039;AUCUNE SORTE, EXPRESSE OU IMPLICITE,
 * Y COMPRIS, MAIS SANS S&#039;Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, D&#039;APTITUDE À UN USAGE PARTICULIER
 * UN BUT PARTICULIER ET L&#039;ABSENCE D&#039;ERREURS. EN AUCUN CAS LES AUTEURS OU LES COPYRIGHTS NE PEUVENT ÊTRE TENUS POUR RESPONSABLES
 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF
 * CONTRAT, TORT OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE LOGICIEL
 * OU L&#039;UTILISATION OU D&#039;AUTRES TRANSACTIONS DANS LE LOGICIEL.
 *************************************************************************************/ 
 
  #include  &amp;lt;Adafruit_MotorShield  .h&amp;gt;  
 // Créer l&#039;objet motor shield avec l&#039;adresse I2C par défaut 0x60 
Adafruit_MotorShield AFMS = Adafruit_MotorShield() ;
 // Choisir quel &#039;port&#039; M1, M2, M3 ou M4.  
Adafruit_DCMotor *motor1 = AFMS.getMotor (2 ) ;
Adafruit_DCMotor *motor2 = AFMS.getMotor (3 ) ;

 // définir le protocole pour le contrôle à distance, pour en savoir plus see samples code SimpleReceiver.cpp 
  #define  DECODE_NEC  // Inclut Apple et Onkyo, aussi pour la petite télécommande Funduino  
 //#define INFO // Pour voir des informations précieuses du décodeur universel pour les protocoles de largeur d&#039;impulsion ou de distance d&#039;impulsion 
  #define  IR_RECEIVE_PIN 2  // à la place de #include &quot;PinDefinitionsAndMore.h&quot;  
  #include  &amp;lt;Arduino  .h&amp;gt;  
  #include  &amp;lt;IRremote  .hpp&amp;gt;  

 // Signal du récepteur IR connecté à Pin2, VCC à Pin3, GND à Pin4 
 int  IR_GND =  4 ; 
 int  IR_VCC =  3 ;

 int  x =  0 ;
 int  y =  0 ;
 int  gauche =  0 ;
 int  droite =  0 ;
 int  code =  5555 ;
 int  speedL =  0 ;
 float  factor =  1.8 ;  // Correction pour speedLevel 255/100 * 6V/VBatt 

 void   setup () {
  Serial  .begin  (9600 ) ;
  Serial  .println ( &quot;Test moteur !&quot; ) ;
  Serial  .println ( &quot;Motorshield v2 - test moteur DC !&quot; ) ;
  if  (!AFMS .begin ()) {          // create with the default frequency 1.6KHz 
     Serial . println ( &quot;Could not find Motor Shield. Check wiring.&quot; );
     while  ( 1 );
  }
  Serial  .println ( &quot;Bouclier moteur trouvé.&quot; ) ;
  // Juste pour savoir quel programme est en cours d&#039;exécution sur mon Arduino 
  Serial  .println (F( &quot;START &quot;  __FILE__  &quot; from &quot;  __DATE__  &quot;\r\nUsing library version &quot;  VERSION_IRREMOTE)) ;
  // Démarrer le récepteur 
  IrReceiver .begin (IR_RECEIVE_PIN) ;  //, ENABLE_LED_FEEDBACK) ; 
  Serial  .print (F( &quot;Prêt à recevoir les signaux IR des protocoles : &quot; )) ;
  printActiveIRProtocols( &amp;amp;Serial ) ;
  Serial  .print (F( &quot;à la broche &quot; )) ;
  Serial  .println (IR_RECEIVE_PIN) ; 
  // initialiser les broches numériques comme sortie pour l&#039;alimentation électrique 
  pinMode (IR_GND ,OUTPUT ) ;
  pinMode (IR_VCC ,OUTPUT ) ;
  digitalWrite (IR_GND ,LOW ) ;
  digitalWrite (IR_VCC ,HIGH ) ; 
}  // end setup 

 void   loop () {
  if  (IrReceiver.decode()) {
      // Imprime un bref résumé des données reçues 
      IrReceiver.printIRResultShort( &amp;amp;Serial ) ;
      if  (IrReceiver.decodedIRData.protocol == UNKNOWN) {
           // We have an unknown protocol here, print more info 
          IrReceiver.printIRResultRawFormatted(&amp;amp; Serial , true);
      }
      Serial  .println () ;
      /*
       * !!Important ! ! Activer la réception de la valeur suivante,
       * car la réception s&#039;est arrêtée après la fin du paquet de données actuellement reçu.
       */ 
      delay  (100 ) ;  // désensibilisation, pas de répétition rapide      
      IrReceiver.resume() ;  // Activer la réception de la valeur suivante 
      /*
       * Enfin, vérifier les données reçues et effectuer des actions en fonction de la commande reçue
       */ 
  if  (IrReceiver.decodedIRData.command ==  0x46 )  {
     if  (code&amp;lt; 9000 )   code = code +  1000 ;         
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    }
  else   if  (IrReceiver.decodedIRData.command ==  0x15 ) {
     if  (code&amp;gt; 2000 )   code = code -  1000 ;      
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    } 
  else   if  (IrReceiver.decodedIRData.command ==  0x43 )  {
     if  ((code -1000 * int (code/ 1000 ))&amp;lt; 900 )  code = code +  100 ;      
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    }
  else   if  (IrReceiver.decodedIRData.command ==  0x44 )  {
     if  (code -1000 * int (code/ 1000 ) &amp;gt;  200 )   code = code -  100 ;
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    }
  else   if  (IrReceiver.decodedIRData.command ==  0x40 )  {
    code =  5555 ;
     Serial . print ( &quot;Code = &quot; );
     Serial . println (code);
    }
  else  {
     Serial . print ( &quot;invalid code&quot; );
    }
  motor() ;
  }
}  // fin de la boucle 

 void  motor(){
  int  speedLevel [9 ]={ -100 , -80 , -60 , -40 , 0 , 40 , 60 , 80 , 100 };
  y =  int (code /  1000 ) ;
  x =  int ((code -  1000*y ) /  100 ) ;
  speedL = speedLevel[ y-1 ] ;
  Serial  .print ( &quot;code = &quot; ) ;
  Serial  .print (code) ;
  Serial  .print ( &quot; y = &quot; ) ;
  Serial  .print (y) ;
  Serial  .print ( &quot; x = &quot; ) ;
  Serial  .print (x) ;
  Serial  .print ( &quot; speedL = &quot; ) ;
  Serial  .println (speedL) ;

  //Correction des niveaux de vitesse pour les virages 
  if  ( x==1 ){
    right = speedL+ 16 ;
    left = speedL -16 ;
  }
  else   if  ( x==2 ){
    right = speedL+ 13 ;
    left = speedL -13 ;
  }
  else   if  ( x==3 ) {
    right = speedL+ 10 ;
    left = speedL -10 ;
  }
  else   if  ( x==4 ) {
    right = speedL+ 7 ;
    left = speedL -7 ;
  }
  else   if  ( x==6 ) {
    right = speedL  -7 ;
    left = speedL+ 7 ;
  }
  else   if  ( x==7 ) {
    right = speedL -10 ;
    left = speedL+ 10 ;
  }
  else   if  ( x==8 ) {
    right = speedL -13 ;
    left = speedL+ 13 ;
  }
  else   if  ( x==9 ) {
    right = speedL -16 ;
    left = speedL+ 16 ;
  }
  else  {
    right = speedL;
    left = speedL;
  }

  //Entrer les niveaux de déplacement pour &quot;left&quot; et &quot;right&quot; 
  Serial  .print ( &quot;left = &quot; ) ;
  Serial  .print (left) ;
  Serial  .print ( &quot; right = &quot; ) ;
  Serial  .println (right) ;

  if  (left &amp;lt;  40  &amp;amp; left &amp;gt;  -40 ) {
    motor1-&amp;gt; run (RELEASE);
  }
  if  (right &amp;lt;  40  &amp;amp; right &amp;gt;  -40 ) {
    motor2-&amp;gt; run (RELEASE);
  }
  if  ( left&amp;gt;=40 ) {
     if  (left&amp;gt; 100 ) left= 100 ;
      motor1-&amp;gt; run (FORWARD);
      motor1-&amp;gt; setSpeed (left * factor);
  }
  if  ( right&amp;gt;=40 ) {
     if  (right&amp;gt; 100 ) right= 100 ;
      motor2-&amp;gt; run (FORWARD);
      motor2-&amp;gt; setSpeed (right * factor);
  }
  if  (left&amp;lt;=  -40 ) {
     if  (left&amp;lt; -100 ) left= -100 ;
      motor1-&amp;gt; run (BACKWARD);
      motor1-&amp;gt; setSpeed (-left * factor);
  }
  if  (right&amp;lt;=  -40 ) {
     if  (right&amp;lt; -100 ) right= -100 ;
      motor2-&amp;gt; run (BACKWARD);
      motor2-&amp;gt; setSpeed (-right * factor);
  }
}  // end motor 
 
 Explications du code de programmation pour la voiture RC 
 Après avoir inclus les bibliothèques pour le Motor Shield V2 et IRremote, deux moteurs sont instanciés avec le numéro sur le bloc terminal du contrôleur et quelques variables globales sont déclarées (type de données) et initialisées (valeur initiale). 
 Dans la fonction  setup() , l&#039;interface série et le récepteur IR sont initialisés et les broches pour l&#039;alimentation du récepteur IR sont configurées comme sorties avec l&#039;état HIGH ou LOW. 
 Dans la fonction  loop() , le signal de la télécommande IR est d&#039;abord reçu, puis en fonction de la touche appuyée, le code pour la commande du moteur est modifié. Les touches de curseur up et down modifient le premier chiffre, left et right le deuxième chiffre du code dans la plage de valeurs 1 à 9. La touche X entraîne l&#039;arrêt avec le code 5555. Les troisième et quatrième chiffres du code n&#039;ont pas encore d&#039;importance pour le moment. A la fin, la fonction autodéfinie  motor()  est appelée sans arguments, car nous avions défini les variables globalement, c&#039;est-à-dire valables dans toutes les fonctions. 
 Dans la fonction autodéfinie  motor() , que nous utiliserons également dans d&#039;autres configurations avec d&#039;autres télécommandes, les niveaux de conduite pour les moteurs gauche et droit sont déterminés à partir du code. Le pourcentage du niveau de vitesse est finalement converti en valeur PWM pour  setSpeed  à l&#039;aide du facteur défini au début. 
 &amp;nbsp;  
 La voiture robot est alors prête à fonctionner. Cela fonctionne très bien tant que tu peux maintenir la connexion optique entre la télécommande et le récepteur IR. Cependant, en roulant sur la route, j&#039;ai constaté qu&#039;un fort rayonnement solaire entrave la réception. C&#039;est pourquoi je passe à la télécommande radio. A bientôt. 
                ]]>
            </content>

                            <updated>2022-06-09T07:30:00+02:00</updated>
                    </entry>

    
    
        <entry>
            <title type="text">Construire une voiture RC pour Arduino : Véhicule autonome - partie 1</title>
            <id>https://funduinoshop.com/fr/construire-une-voiture-rc-pour-arduino-vehicule-autonome-partie-1</id>
            <link href="https://funduinoshop.com/fr/construire-une-voiture-rc-pour-arduino-vehicule-autonome-partie-1"/>
            <summary type="html">
                <![CDATA[
                
                                            Bienvenue dans une nouvelle série de blogs sur les voitures robotisées. Dans la première partie, nous allons découvrir les bases pour cela, comme une aide à la décision d&#039;achat, quel châssis, quel microcontrôleur et quel type de télécommande...
                                        ]]>
            </summary>
            <content type="html">
                <![CDATA[
                  Comprendre la mobilité du futur avec les voitures robots  
 Bienvenue dans une nouvelle série de blogs sur les voitures robotisées. Dans la première partie, nous allons découvrir les bases pour cela, pour ainsi dire comme aide à la décision d&#039;achat, quel châssis, quel microcontrôleur et quel type de télécommande sont les plus appropriés. 
 Deux ou quatre roues - peser les avantages et les inconvénients pour la construction de voitures RC pour Arduino 
 Commençons par le châssis et examinons les avantages et les inconvénients des kits bon marché avec deux ou quatre roues motrices. Tous ont en commun les moteurs électriques, de sorte qu&#039;ils ne constituent pas à eux seuls un critère de sélection. Les voitures robotisées à deux roues sont d&#039;abord moins chères, car le coût de deux moteurs électriques et de deux roues supplémentaires n&#039;est pas nécessaire. Au lieu de cela, elles ont une ou deux roues d&#039;appui qui confèrent aux voitures RC une grande maniabilité. Ceux qui veulent &quot;tourner sur l&#039;assiette&quot; sont donc bien servis. Cependant, à ce niveau de prix des moteurs à courant continu, on ne peut pas s&#039;attendre à ce qu&#039;ils fonctionnent de manière régulière avec une grande précision. C&#039;est pourquoi la course en ligne droite n&#039;est pas aussi bonne que celle de la variante à quatre roues. Juste au moment du démarrage, les moteurs montrent une plus grande stabilité directionnelle, mais les virages ne sont possibles qu&#039;avec des rayons nettement plus importants. Un autre avantage des châssis à quatre roues est qu&#039;il y a plus de place pour les batteries, le microcontrôleur, le cas échéant le convertisseur DC/DC et les capteurs. 
   
 Le choix du microcontrôleur pour la construction d&#039;une voiture RC 
 La question suivante concerne le microcontrôleur et le type de programmation. La plus grande puissance de calcul sur un petit châssis est par exemple celle d&#039;un micro-ordinateur de type Raspberry Pi. En ce qui concerne la télécommande, les types avec WiFi et Bluetooth intégrés offrent des avantages et on peut même transmettre des images d&#039;une caméra Raspberry Pi. La programmation se fait dans le langage de programmation très répandu Python, mais le démarrage du système d&#039;exploitation basé sur Linux Raspberry Pi OS prend environ une minute. Un autre inconvénient des Raspi (abréviation de Raspberry Pi) est la nécessité d&#039;une bonne alimentation en 5V. Cela nécessite un bon convertisseur DC/DC. 
 En rapport avec le thème de la télécommande Bluetooth, un exemple avec Raspberry Pi et l&#039;APP Android BlueDot de Martin O&#039;Hanlon (collaborateur de la Raspberry Pi Foundation) sera présenté dans un épisode ultérieur. 
 Le démarrage du système est beaucoup plus rapide avec un micro contrôleur basé sur l&#039;ATmega 328, par exemple le  Funduino Uno  ou  le Funduino&amp;nbsp;  Nano. Environ une seconde après l&#039;allumage, on peut commencer à entrer les commandes, pas de démarrage à partir de la carte microSD, le programme une fois téléchargé n&#039;est pas oublié. La tension d&#039;entrée peut être comprise entre 5 et 9 volts. La programmation se fait dans l&#039; IDE Arduino , un environnement de développement inspiré de C/C++ (pour plus d&#039;explications, voir  https://funduino.de/hardware-software) . C&#039;est pourquoi nous allons d&#039;abord examiner des exemples avec le Funduino Uno R3, pour lesquels il existe des contrôleurs de moteur parfaits sous forme de ce que l&#039;on appelle des shields. Ceux-ci sont simplement enfichés sur l&#039;Uno et les bibliothèques (en anglais libraries) nous aident à les programmer. 
 Digression : qu&#039;est-ce qu&#039;un contrôleur de moteur / pilote de moteur ? 
 En raison de l&#039;intensité fortement limitée des sorties des microcontrôleurs, les gros consommateurs - et tous les types de moteurs électriques et de relais en font partie - nécessitent une alimentation externe et un circuit électronique qui convertit le signal de commande du microcontrôleur. Mais les exigences de ce circuit intégré (en anglais IC=Integrated Circuit) sont encore plus élevées : il doit d&#039;une part permettre une vitesse variable du moteur, et d&#039;autre part nous voulons aussi pouvoir changer le sens de rotation du moteur en inversant la polarité. 
 Le fonctionnement est expliqué à l&#039;aide de l&#039;exemple du CI L293D. En principe, ce module DIP avec seize &quot;pattes&quot;/connexions suffit comme contrôleur de moteur pour deux moteurs électriques.     
 L&#039;alimentation du CI se fait par les connecteurs VCC1 et Ground. On peut prélever cette tension sur le microcontrôleur. L&#039;alimentation des moteurs se fait par VCC2 et Ground. C&#039;est ici que nous connectons la ou les batteries (par exemple 6 ou 9 volts). Pour les grands moteurs, le CI doit être refroidi, pour les petits jaunes du kit non. 
 Nous connectons l&#039;un des moteurs à 1Y et 2Y, les lignes de commande correspondantes vers le MCU (Micro Controller Unit) sont 1A, 2A et 1,2EN. 
 L&#039;inversion de la polarité des moteurs pour le changement de direction se fait en principe avec ce que l&#039;on appelle un circuit en H. Nous réalisons cela avec notre microcontrôleur en mettant deux broches de sortie (celles-ci vont à 1A et 1B) soit sur HIGH soit sur LOW. 
 Le changement de vitesse se fait comme dans l&#039; exemple 04 - LED pulsante  avec la modulation de largeur d&#039;impulsion (PWM, en anglais pulse width modulation), c&#039;est-à-dire l&#039;allumage et l&#039;extinction très rapides de la tension. C&#039;est pourquoi nous avons besoin d&#039;une sortie compatible avec la PWM sur le MCU pour la connexion 1,2EN (&quot;Enable&quot;) (ce sont les broches avec le tilde ~). 
 Pour le deuxième moteur, les connexions 3A, 4A et 3,4EN sont connectées aux broches du MCU. 
 L&#039;image de droite (Logic Diagram) explique le fonctionnement du CI. Nous voyons les quatre amplificateurs qui donnent les signaux d&#039;entrée 1A à 4A respectivement avec la tension de la batterie aux sorties 1Y à 4Y. Mais cela ne se produit que si, en plus, les entrées PWM 1,2EN et 3,4EN sont également connectées HIGH. 
 Deux de ces CI L293D sont montés sur le Motor Shield V1, de sorte que jusqu&#039;à quatre moteurs peuvent être connectés ici. 
 Pour ne pas utiliser trop de broches, un registre à décalage (SN74HC595) se trouve au milieu du Motor Shield V1. Expliquer son fonctionnement dépasserait le cadre de cet article. Heureusement, les collègues de la société new-yorkaise Adafruit ont fait le plus gros du travail de programmation et ont mis à disposition une bibliothèque de programmes (angl. library) pour contrôler facilement les moteurs.    
 Image Motor Shield V1 avec modification :   Connecteurs femelles soudés (connecteurs à ressort) pour la connexion d&#039;équipements supplémentaires 
 &amp;nbsp; 
 Le Motor Shield V2 peut également contrôler jusqu&#039;à quatre moteurs et utilise un circuit intégré similaire, mais pour la connexion des lignes de commande, il utilise le bus I2C avec les connexions SDA (= données sérielles) à l&#039;entrée analogique A4 et SCL (= horloge sérielle) à A5. Pour cela aussi, Adafruit a développé et mis à disposition une bibliothèque de programmes appropriée. 
   
 Image Motor Shield V2 avec modification :  Connecteurs femelles soudés (connecteurs à ressort) pour la connexion d&#039;équipements supplémentaires 
 Sur les deux Motor Shield, des connecteurs supplémentaires sont soudés ici pour pouvoir connecter ultérieurement des émetteurs/récepteurs Bluetooth ou 433 MHz (en anglais transceiver=émetteur + récepteur) ou des capteurs. Plus d&#039;informations dans un prochain article de blog. 
 Alimentation et contrôle pour une voiture RC pour microcontrôleur Arduino 
 Si notre voiture robot doit se déplacer de manière autonome, nous devons la déconnecter du port USB du PC. Ainsi, l&#039;alimentation électrique est également perdue. A partir de maintenant, le centre de commande (MCU) et les moteurs électriques sont alimentés par des piles ou des batteries. Les moteurs sont de loin les plus gros consommateurs. Le support de piles fourni avec la plupart des kits est conçu pour quatre piles AA, soit 6 volts pour le MCU et les moteurs. Pour ceux qui souhaitent utiliser des piles rechargeables, il est conseillé d&#039;utiliser soit six piles AA, soit deux piles lithium-ion de type 18650, en raison de la tension plus faible. 
 Dans les prochains épisodes, nous découvrirons d&#039;abord les télécommandes avec télécommande infrarouge, les émetteurs-récepteurs Bluetooth avec APP pour smartphone ou un deuxième microcontrôleur également avec l&#039;émetteur-récepteur BT HC-05 ainsi que les télécommandes radio avec 433Mhz et 2,4 GHz. La série de blogs se terminera par les aspects de la conduite autonome, principalement la détection d&#039;obstacles. A très bientôt. 
 &amp;nbsp; 
                ]]>
            </content>

                            <updated>2022-06-03T11:00:00+02:00</updated>
                    </entry>

    
    
        <entry>
            <title type="text">Aéroglisseur de la classe WISENT</title>
            <id>https://funduinoshop.com/fr/aeroglisseur-de-la-classe-wisent</id>
            <link href="https://funduinoshop.com/fr/aeroglisseur-de-la-classe-wisent"/>
            <summary type="html">
                <![CDATA[
                
                                            Lors de nombreux défilés de maquettes de bateaux, la plupart des bateaux sont construits dans les moindres détails et avec une très grande qualité. Dommage que cela soit souvent négligé par les spectateurs. Des modèles spectaculaires et peu communs...
                                        ]]>
            </summary>
            <content type="html">
                <![CDATA[
                 Modélisme : Aéroglisseur de la classe WISENT &quot;LCAC - Landing Craft Air Cushion&quot; 
 Lors de nombreux salons de maquettes de bateaux, la plupart des bateaux sont construits jusqu&#039;au dernier&amp;nbsp;détail et avec une très grande qualité. Dommage que cela soit souvent négligé par&amp;nbsp;les spectateurs. Les modèles spectaculaires et peu communs&amp;nbsp;attirent davantage l&#039;attention. Les aéroglisseurs (hovercraft) en font partie sans aucun doute&amp;nbsp;.&amp;nbsp;Pourquoi ne pas construire le plus grand de son genre en modèle réduit ?&amp;nbsp;Avec un déplacement de 550 tonnes, la classe Zubr (classe Wisent) est un géant.&amp;nbsp;Il existe un modèle en plastique au 1:110. C&#039;était trop petit pour moi. 1:75 je trouvais juste&amp;nbsp;correct. Alors, fais-le toi-même ! 
 Construire un aéroglisseur soi-même : Mais comment ? 
 Pour se familiariser avec ce sujet, le livre &quot;RC Aircraft Boats&quot; de&amp;nbsp;K.Jackson &amp;amp; M.Porter des éditions VTH a été une aide précieuse. Quels composants techniques&amp;nbsp;devaient faire flotter le modèle, il fallait les essayer&amp;nbsp;. Les calculs ne sont pas très utiles. A la fin du texte, une liste&amp;nbsp;de la technique de batterie et de propulsion utilisée. Il n&#039;existe pas de plan de construction pour&amp;nbsp;de ce type, il a donc fallu utiliser des photos et calculer beaucoup&amp;nbsp;. 
 Le gros œuvre a été réalisé avec une plaque de mousse PU et une colle Power&amp;nbsp;achetée dans un magasin de bricolage. Cela s&#039;est fait assez rapidement. Un impulseur de 70 mm , souvent utilisé pour les modèles réduits d&#039;avions en polystyrène, doit permettre au bison&amp;nbsp;de &quot;planer&quot;. La jupe gonflable est réalisée en nylon rip.&amp;nbsp;Un matériau utilisé pour les toiles de tente et par les parachutistes&amp;nbsp;. 
 L&#039;alimentation électrique de l&#039;aéroglisseur 
 Avec la taille prévue de 900 x 400 mm, il était clair dès le départ qu&#039;il ne s&#039;agirait pas d&#039;un modèle économe en énergie. Une batterie 18 V de 2,5 Ah de la gamme d&#039;outils&amp;nbsp;- combinée à un convertisseur de tension - doit fournir la tension souhaitée de 12 V réguliers.&amp;nbsp;Un deuxième convertisseur de tension abaisse encore les 12 V à 9 V&amp;nbsp;et fournit ainsi aux hélices et à l&#039;éclairage nautique une tension&amp;nbsp;régulière.&amp;nbsp;Ainsi, toute l&#039;alimentation électrique provient d&#039;une batterie.&amp;nbsp;Deux des hélices extérieures sont conçues pour la propulsion, le moteur central&amp;nbsp;a été inversé et cette hélice a été placée &quot;à l&#039;envers&quot; sur l&#039;arbre de transmission . Les déplacements en marche arrière sont donc possibles sans problème.&amp;nbsp;Les trois nacelles m&#039;ont été imprimées par la société - Ray Haller de Eibenstock - sur&amp;nbsp;l&#039;imprimante 3D. Elles sont commandées de manière synchrone par un servo.&amp;nbsp;Ce concept de propulsion a fait ses preuves.&amp;nbsp;Les hélices de 3,5 pouces (environ 9 cm) proviennent de la gamme de pièces détachées pour quadcoptères.&amp;nbsp;Malgré une construction légère conséquente, le modèle pèse 4,7 kg avec toutes les installations&amp;nbsp;. Il est donc possible d&#039;atterrir, mais il n&#039;est pas adapté aux trajets&amp;nbsp;sur la terre ferme. Même l&#039;original se déplace à 99% sur l&#039;eau&amp;nbsp;. Dix-huit exemplaires de ce &quot;bison géant&quot; ont été construits.&amp;nbsp;L&#039;Ukraine, la Corée, la Russie, la Chine et la Grèce les ont utilisés. 
 Composants utilisés de Funduino : 
 1x&amp;nbsp; R4-E-0-1 :  EDF Turbine Impeller 70mm ADF70-28XL PLUS KV3900  1x R6-C-7-4 :  Hobbywing SkyWalker 60A UBEC Brushless ESC&amp;nbsp;(le régulateur 40A devient trop chaud)  3x R5-E-4-3 :  Ready ToSky 1306 KV3100 pour quadricoptère 150  3x R6-E-1-4 :  Hobbywing SkyWalker 12AE Brushless ESC  2x R12-B-8-2 :  Module DC-DC Step Down 300W 20A 6-40V à 1,2-36V  
 1x batterie 2,5 Ah 18 V de Einhell (temps de conduite environ 15 min) Le modèle est contrôlé par une radiocommande Carson à 6 canaux 2,4 GHz. 
                ]]>
            </content>

                            <updated>2022-05-04T15:30:00+02:00</updated>
                    </entry>

    
</feed>
