Télécharger l'article Télécharger l'article

Une équipe de développeur a imaginé un projet répondant au nom d'Arduino et mettant en œuvre une petite carte électronique programmable et un logiciel multiplateforme gratuit, qui puisse être accessible à n'importe qui dans le but de créer des systèmes électroniques. Ce guide vise à poser les fondations de l’utilisation de l'Arduino et ainsi faciliter sa prise en main.

Attention. Cet article s'adresse à des gens ayant de bonnes bases en informatique.

Éléments nécessaires

  • Une Arduino
  • Un câble USB type A mâle / B mâle
  • Un ordinateur
  • Le kit de base (des câbles, une breadboard, DEL (Diode électroluminescente), résistances...)
Partie 1
Partie 1 sur 8:

Qu'est-ce que l'Arduino

Télécharger l'article
  1. C'est-à-dire que c'est une carte qui ne sait rien faire si l'on ne lui dit pas quoi faire. Elle a besoin d'un programme pour fonctionner !
    • Un programme n'est rien d'autre qu'une liste d'instructions exécutées par un système.
      • Afin de programmer la carte Arduino, il va nous falloir un logiciel capable de réaliser cela.
    Publicité
Partie 2
Partie 2 sur 8:

Télécharger le logiciel Arduino IDE

Télécharger l'article
Partie 3
Partie 3 sur 8:

Présentation de la carte Arduino

Télécharger l'article
  1. Publicité
Partie 4
Partie 4 sur 8:

Notre premier programme test

Télécharger l'article
  1. Pour cela, branchez la carte à l'aide du câble USB à l'ordinateur. Le pilote est censé s'installer automatiquement lors de l'installation du logiciel "Arduino IDE". Lorsque la carte est bien connectée, une petite DEL verte reste allumée.
  2. Il ne nous reste plus qu'à lancer "Arduino IDE" et à tester notre premier programme afin de voir que notre Arduino fonctionne correctement. Cliquez sur "Blink" comme le montre l'image.
    Publicité
Partie 5
Partie 5 sur 8:

Piloter un moteur DC à l'aide du Shield L298N

Télécharger l'article

Le but de la manipulation sera de faire tourner un moteur dans les deux sens à différentes vitesses.

  1. Tout d'abord, vous devez savoir que le moteur DC ne se branche pas directement sur les pins de l'Arduino. En effet, le courant qui servira à faire tourner le ou les moteurs sera assez élevé pour notre Arduino et celle-ci pourrait être endommagée. L'utilité du Shield L298N est de pouvoir fournir assez de puissance aux moteurs afin qu'il puisse fonctionner.
    • N.B. : nous pouvons également utiliser le chip L293D qui réalise la même tâche que le Shield L298N. Ce chip a été vu dans l'article comment prendre en main la Raspberry Pi . L'avantage de ce Shield est qu'il est plus performant et demande moins de temps et de fils pour le câblage.
  2. Il possède son propre circuit d’alimentation logique (permettant d’alimenter l’Arduino).
  3. 3
    Passez à la programmation. Maintenant que le câblage est réalisé. Il ne nous reste plus qu'à passer à la programmation.
  4. 4
    Tout d'abord, on déclare les variables. « inA » permet de gérer la vitesse et « in1 » et « in2 » le sens de rotation :
    int enA 
     = 
     10 
     ; 
    int in1 
     = 
     9 
     ; 
    int in2 
     = 
     8 
     ; 
    
  5. 5
    On met ici les pins en sortie :
    void setup () 
     { 
    pinMode ( 
    enA, OUTPUT ) 
     ; 
    pinMode ( 
    in1, OUTPUT ) 
     ; 
    pinMode ( 
    in2, OUTPUT ) 
     ; 
     } 
    
  6. 6
    Ici, nous allons activer les états logique de nos différentes pins afin d'activer les sorties :
    void loop () 
     { 
    digitalWrite ( 
    in1,HIGH ) 
     ; 
    //Le moteur tourne dans le sens de in1
    digitalWrite ( 
    in2,LOW ) 
     ; 
    analogWrite ( 
    enA,200 ) 
     ; 
    // Vitesse moteur, ici 200 
    sur un maximum de 255 
     ( 
    échélle comprise entre 0 
    et 255 
    , car cela correspond à 8 
    bits ) 
    delay ( 
     3000 
     ) 
     ; 
    //Le moteur tourne pendant 3 
    secondes.
    
    digitalWrite ( 
    in1,LOW ) 
     ; 
    // Moteur à l arrêt.
    digitalWrite ( 
    in2,LOW ) 
     ; 
    delay ( 
     2000 
     ) 
     ; 
    //Le moteur ne tourne pas pendant 2 
    secondes.
    
    digitalWrite ( 
    in1,LOW ) 
     ; 
    digitalWrite ( 
    in2,HIGH ) 
     ; 
    //Le moteur tourne dans le sens de in2 ( 
    sens contraire à in1 ) 
    analogWrite ( 
    enA,200 ) 
     ; 
    delay ( 
     3000 
     ) 
     ; 
     } 
    
    Publicité
Partie 6
Partie 6 sur 8:

1er Challenge

Télécharger l'article
  1. 1
    Réalisez un petit code avec deux moteurs cette fois-ci. À vous de jouer !
Partie 7
Partie 7 sur 8:

La communication série I²C

Télécharger l'article
    • On a deux lignes bidirectionnelles, une pour transporter les données "SDA" (Sérial Data Line), et une autre pour l'horloge de synchronisation "SCL" (Sérial Clock Line ; 1 bit échangé à chaque « coup » d'horloge).
    • Transmission synchrone : Pas besoin de spécifier une vitesse de transfert. Ici, le périphérique maître (master) génère le signal d'horloge qui synchronise et cadence les échanges via la ligne SCL.
    • La relation entre les périphériques du bus est de type maître-esclave (master/slave). Le maître est à l'initiative de la transmission et s'adresse à un esclave (ou tous les esclaves) ;
    • Chaque périphérique sur le bus I2C est adressable, avec une adresse unique pour chaque périphérique du bus ;
    • L'I2C gère le fonctionnement multimaître (multi-master), plusieurs périphériques maîtres peuvent prendre simultanément le contrôle du bus (système d'arbitrage des maîtres et gestion des collisions).
    • N.B.: Comme on peut le voir sur l'image ci-dessus, on vient placer deux résistances de tirage (Pull-up resistors en anglais) de 4,7 kΩ chacune afin de tirer les deux lignes du bus à la tension Vdd (5V)
  1. 3
    Pourquoi utilise t-on le bus I²C ?
    • Des milliers de composants utilisent l'interface I²C, et des cartes comme Arduino ou Raspberry Pi peuvent toutes les contrôler. Il y a un grand nombre d'applications : horloges temps réel, potentiomètres numériques, capteurs de température, mémoires, cartes d'extension d'entrées-sorties, contrôleurs d'afficheur LCD, accéléromètres et bien d'autres encore. Plusieurs composants peuvent être branché sur le même bus.
  2. Pour que l'Arduino (le maître) puisse envoyer des données sur la ligne SDA afin de communiquer avec l'esclave (DS1621), il faut deux choses. L'adresse unique du composant (esclave) et le ou les octets de données à envoyer.
  3. 8
    Pour lancer une conversion de température, on procède en trois étapes.
    • L'adresse du composant est écrite sur la ligne SDA. Cela notifie le composant que des données vont luit être adressées.
      Wire.beginTransmission ( 
      0x48 ) 
       ; 
      //adresse du DS1621
  4. 9
    L'octet de données qui permet de lancer la conversion de température est envoyé au DS1621.
    Wire.write ( 
    0xEE ) 
     ; 
    // 0xEE est la commande Start Convert T
  5. 10
    Lorsque l'écriture est terminée, on coupe la transmission afin de libérer la ligne pour l'opération suivante.
    Wire.endTransmission () 
     ; 
    
  6. 11
    Recevoir des données (Lecture - Read). Lorsque nous avons envoyé les données de conversion au DS1621, la valeur de température est alors stocké dans un registre du DS1621. L'Arduino doit donc communiquer avec le DS1621 afin que celui-ci pointe vers le registre pour récupérer les deux octets correspondant à la température.
    • La lecture sur le bus se fait pratiquement comme expliqué juste au-dessus sauf qu'ici, le bit R/W vaut 1 car on est en lecture .
    • L'octet de données (commande "Read temperature [0xAA]") qui permet de lire la température est envoyé au DS1621 :
      Wire.beginTransmission ( 
      0x48 ) 
       ; 
      Wire.write ( 
      0xAA ) 
       ; 
      // 0xAA 
       = 
      commande 'Read Temperature' 
      Wire.endTransmission ( 
       false 
       ) 
       ; 
      // condition RESTART sans passer par une condition STOP
  7. 12
    Le composant retourne l'état de son registre sous forme d'octets de données. L'Arduino renseigne alors le nombre d'octets requis :
    Wire.requestFrom ( 
    0x48, 2 
     ) 
     ; 
    // Deux octets sont requis
  8. 13
    Cette instruction est immédiatement suivie par la lecture consécutive des deux octets retournés par le DS1621 :
     if 
     ( 
     2 
    < = 
    Wire.available ()) 
     { 
    // si deux octets disponibles TemperatureMSB 
     = 
    Wire.read () 
     ; 
    // lire l 'octet de poids fort 
     TemperatureLSB = Wire.read();  // lire l' 
    octet de poids faible } 
    
  9. À ce moment, se trouve dans nos deux variables (TemperatureMSB et TemperatureLSB) deux octets qui correspond à la température actuelle. Ces deux variables devront alors être converti afin de les avoir en décimale. Le constructeur nous informe dans la datasheet, le format bien documenté de la température.
    Publicité
Partie 8
Partie 8 sur 8:

2ème Challenge

Télécharger l'article

Références

À propos de ce wikiHow

Cette page a été consultée 7 109 fois.

Cet article vous a-t-il été utile ?

Publicité