Télécharger l'articleTé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 !
    How.com.vn Français: Step 1 L'Arduino est une carte électronique programmable.
    • 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
  1. How.com.vn Français: Step 1 Pour télécharger le logiciel, il vous suffit de vous rendre sur le lien suivant :
    Arduino IDE Software.
    • Ce logiciel est compatible avec Windows, Linux et MacOS.
Partie 3
Partie 3 sur 8:

Présentation de la carte Arduino

Télécharger l'article
  1. How.com.vn Français: Step 1 Voici en rouge, les points importants à connaitre sur la carte.
    • 1). Le microcontrôleur : c'est le cerveau de notre carte. C'est lui qui reçoit le programme que l'on va créer et qui va le stocker dans sa mémoire afin d'exécuter le code.
    • 2 et 3). L'alimentation : la carte a besoin d'être alimenté soit par câble USBen 5V ou soit par une alimentation externe comprise entre 7V et 12V DC. Cette tension peut être fournie par une pile 9V. Un régulateur au sein de la carte permettra ensuite de réduire cette tension à 5V pour son bon fonctionnement.
    • 4) DEL : la DEL (diode électroluminescente) qui se trouve tout en haut permet de tester le matériel. Elle est connectée sur une broche du microcontrôleur. Cette DEL clignote quelques secondes lorsqu'on branche la carte au PC.
    • Les deux DEL du bas servent à visualiser l'activité sur la voie série (émission "TX" et réception "RX"). Lorsque le programme se charge dans le microcontrôleur, il passe par cette voie série, on peut donc apercevoir le clignotement des DEL.
    • 5a et 5b). La connectique : elle permet de brancher tout type de matériel sur la carte. La carte peut aussi être étendue avec des Shields, comme le "Shield Ethernet" par exemple.
      How.com.vn Français: Step 1 Voici en rouge, les points importants à connaitre sur la carte.
      • Maintenant que vous avez une idée de ce qu'est l'Arduino, nous allons lancer notre premier programme test afin de voir si la carte fonctionne correctement !
    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.
    How.com.vn Français: Step 1 Pour utiliser notre carte, il faut l'installer.
  2. How.com.vn Français: Step 2 Testez le programme.
    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.
    • Vous devez obtenir ceci.
      How.com.vn Français: Step 2 Testez le programme.
    • Avant d'envoyer le fichier Blink sur la carte, il faut préciser au logiciel le type de carte et le port série que l'on utilise.
      How.com.vn Français: Step 2 Testez le programme.
    • Afin de connaitre le port série COM utilisé par l'Arduino, il vous suffit d'aller dans le gestionnaire de périphériques qui se trouve dans le panneau de configuration.
      How.com.vn Français: Step 2 Testez le programme.
    • Il ne nous reste plus qu'à Téléverser notre programme afin de l'envoyer sur la carte. Pour cela, il suffit de cliquer sur la petite flèche.
      How.com.vn Français: Step 2 Testez le programme.
    • Si tout se passe correctement, le téléversement se termine et une DEL devrait se mettre à clignoter sur votre carte. Si c'est le cas, votre Arduino fonctionne correctement ! Nous sommes maintenant prêts à créer notre premier programme.
    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. How.com.vn Français: Step 1 Comprenez le principe.
    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. How.com.vn Français: Step 2 Le Shield L298N permet de délivrer jusqu’à 2 A en pointe et 20 W en continu.
    Il possède son propre circuit d’alimentation logique (permettant d’alimenter l’Arduino).
    • Les ports ENA et ENB permettent de gérer l’amplitude de la tension délivrée au moteur, grâce à un signal PWM. Grâce à cela, on pourra faire varier la vitesse des moteurs.
    • Les ports In1, In2 pour le moteur A et In3, In4 pour le moteur B, permettent de contrôler le sens de rotation des moteurs.
    • Maintenant que vous en connaissez un peu plus sur le Shield L298N, nous pouvons passer au câblage.
      How.com.vn Français: Step 2 Le Shield L298N permet de délivrer jusqu’à 2 A en pointe et 20 W en continu.
      • Branchez le 7 (ENA moteur 1) après avoir retiré le cavalier à la PIN 10 de l'Arduino (fil jaune).
      • Branchez le 8 (IN1) sur la PIN 9 de l'Arduino (fil vert).
      • Branchez le 9 (IN1) sur la PIN 8 de l'Arduino (fil mauve).
      • Branchez le 4 (alimentation) au positif de la pile / batterie (fil rouge).
      • Branchez le 5 (Ground ou la mise à la terre) au Ground de l'Arduino (fil noir).
      • Branchez le Ground de la pile / batterie au Ground de l'Arduino (fil noir).
  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 in1digitalWrite(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
    • L'I²C est un bus de communication série synchrone bidirectionnel half-duplex. C'est à dire un bus de communication capable de transporter l'information dans les deux sens mais non simultanément :
      How.com.vn Français: Step 1 Qu'est-ce que l'I²C ?
  1. How.com.vn Français: Step 2 Caractéristique principales du bus I²C
    • 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)
  2. 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.
    • Pour communiquer en I²C sur l'Arduino, on utilise les broches A4 (SDA) et A5 (SCL):
      How.com.vn Français: Step 4 L'I²C et l'Arduino
    • Chaque équipement peut être connecté au bus dans n'importe quel ordre, et certains équipements peuvent même passer du statut de maître à esclave et inversement.
    • Afin de différencier les composants connectés sur le bus, chacun possède une adresse unique, fixé par le constructeur et parfois configurable (voir Datasheet du composant). Cette adresse sera utilisée pour écrire ou lire les données vers le composant souhaité. L'adresse d'un composant I²C est codée sur sept bits (A0 à A6).
    • Maintenant que nous en savons un peu plus sur la communication série I²C, nous allons réaliser ensemble une application qui consiste à communiquer avec un capteur de température DS1621.
  3. communication avec le capteur de température DS1621.
    • Le DS1621 est un chip DIP8 composé de 8 broches :
      How.com.vn Français: Step 5 Application :
    • Les broches SDA et SDL du DS1621 sont connectées respectivement aux connecteurs A4 et A5 de l'Arduino Uno. On alimente le composant avec les broches GND et VDD reliées respectivement aux connecteurs GND et 5V de l'Arduino Uno.
      How.com.vn Français: Step 6 Branchement du capteur de température DS1621 sur l'Arduino
    • Les broches A0, A1 et A2 du DS1621 sont connectées aux GND de l'Arduino. En faisant cela, nous mettons les 3 bits d'adresse de poids faible à l'état logique bas (0V).
      How.com.vn Français: Step 6 Branchement du capteur de température DS1621 sur l'Arduino
    • Notre capteur DS1621 a donc l'adresse unique suivante : 1001000 (0x48 en héxa).
    • Puisque le fabricant nous laisse la possibilité de configurés matériellement les bits A0, A1 et A2 . Nous pouvons donc placer huit DS1621 sur un même bus et donc chaque DS1621 aura sont adresse unique.
  4. 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.
    • La transmission commence par une condition START (ligne SCL à l'état HAUT et ligne SDA bascule à l'état BAS). Ensuite nous avons les 7 bits de l'adresse du composant (Adresse de l'esclave), puis un bit R/W qui vaut ici 0 pour indiquer une opération d'écriture sur la ligne SDA. Le composant adressé doit envoyer un bit d'acquittement (ACK, le composant esclave doit abaisser la ligne SDA pour acquitter de la bonne réception). Chaque octet de donnée écrit sur la ligne par le maître doit être acquitté par l'esclave. La transmission s'arrête en finissant par une condition STOP (ligne SCL à l'état HAUT, et ligne SDA bascule à l'état BAS).
      How.com.vn Français: Step 7 Envoyer des données (Ecriture - Write).
  5. 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
  6. 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
  7. 10
    Lorsque l'écriture est terminée, on coupe la transmission afin de libérer la ligne pour l'opération suivante.
     Wire.endTransmission();
  8. 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
  9. 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
  10. 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}
  11. How.com.vn Français: Step 14 À ce moment,...
    À 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
  1. How.com.vn Français: Step 1 Réalisez un code capable de renvoyer la température sous cette forme.
    • N'hésitez pas à consulter la Datasheet du DS1621. Elle vous apportera énormément d'information pour réaliser votre code !

À propos de ce How.com.vn

How.com.vn est un wiki, ce qui veut dire que de nombreux articles sont rédigés par plusieurs auteurs(es). Pour créer cet article, des auteur.e.s volontaires ont participé à l'édition et à l'amélioration. Cet article a été consulté 6 889 fois.
Catégories: Informatique
Cette page a été consultée 6 889 fois.

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

⚠️ Disclaimer:

Content from Wiki How Français language website. Text is available under the Creative Commons Attribution-Share Alike License; additional terms may apply.
Wiki How does not encourage the violation of any laws, and cannot be responsible for any violations of such laws, should you link to this domain, or use, reproduce, or republish the information contained herein.

Notices:
  • - A few of these subjects are frequently censored by educational, governmental, corporate, parental and other filtering schemes.
  • - Some articles may contain names, images, artworks or descriptions of events that some cultures restrict access to
  • - Please note: Wiki How does not give you opinion about the law, or advice about medical. If you need specific advice (for example, medical, legal, financial or risk management), please seek a professional who is licensed or knowledgeable in that area.
  • - Readers should not judge the importance of topics based on their coverage on Wiki How, nor think a topic is important just because it is the subject of a Wiki article.

Publicité