Outils pour utilisateurs

Outils du site


diy:arduino

Arduino

Arduino est un circuit imprimé sous licence libre portant un microcontrôleur et la connectique d’entrées/sorties permettant de lui connecter toutes sortes de capteurs et de composants électroniques.

A l’origine, il a été conçu pour la programmation multimédia interactive en vue de spectacles ou d’animations artistiques, et est ainsi devenu un équipement incontournable dans le domaine de l’art numérique.


Par la suite, ses performances et sa simplicité de mise en oeuvre lui ont apporté un grand succès pour la réalisation de projets domotiques et de commande d’automatismes ou de robots.

Présentation de la carte

Il existe aujourd’hui différentes cartes qui diffèrent par leur microcontrôleur, leur mémoire et leur ports d’entrées/sorties.

Un écosystème s’est progressivement constitué autour des cartes Arduino, sous la forme d’un très grand nombre de capteurs et d’équipements très divers (écrans LCD, moteurs, GPS…), facilité par l’architecture matérielle de la carte.

Des extensions peuvent être réalisées sous la forme de « shields » ou cartes additionnelles empilables sur les connecteurs d’extension. De nombreuses entreprises se sont créées dans ce secteur d’activité et on trouve aujourd’hui une offre pléthorique de composants destinés à la réalisation de projets à base d’Arduino.

Ci dessous, une carte Arduino Uno dans sa version actuelle (rev. 3). Cette carte comporte essentiellement un micro-contrôleur ATmega328P, 14 broches d'entrées/sorties numériques, 6 entrées analogiques, une horloge à 16MHz, un connecteur USB, un connecteur d'alimentation et un bouton reset. Les 32 Ko de mémoire flash du micro-contrôleur permettent de stocker un programme (sketch) même quand la carte n'est pas alimentée. Comme on peut le constater, la carte comporte finalement très peu de composants : le mico-contrôleur, le contrôleur USB, l'horloge et quelques SMD.

Carte Arduino Uno rev3

L'architecture de la carte est sous licences libre (Creative Commons), ce qui permet de la réaliser soi-même ou de commercialiser un modèle identique ou qui en est inspiré. Différentes sociétés proposent des cartes basées sur l'architecture Arduino, et généralement compatibles avec son système de brochage (Freeduino, Seeeduino, etc…) mais le modèle original est commercialisé par http://www.arduino.cc (désormais, en Europe, sous le nom de Genuino pour des questions de brevets).

Le format physique de la carte permet de connecter sur ses rampes de broches des cartes additionnelles, les shields (boucliers) qui bénéficient de l'architecture de la carte pour exploiter des composants ou capteurs spécifiques. On peut ainsi concevoir soi-même un shield, ou en acheter tout faits.

Par exemple, le shield ci-dessous permet le pilotage de relais :

Arduino Uno et un shield

Détail des connecteurs

0 à 13 : 14 entrées / sorties numériques (5V, 20mA, 40mA maxi) dont 6 sorties PWM (8 bits)
A0 à A5 : 6 entrées analogiques (5V, 10 bits)

Parmi ces bornes, certaines peuvent avoir un rôle spécifique (transmission série I2C dans sa variante TWI, SPI…)
Comparaison SPI - I2C

Logiciels

Un composant logiciel essentiel dont la carte est dotée d'origine est le « bootloader » permettant de charger directement un programme dans la mémoire du micro-contrôleur sans nécessiter des composants électroniques additionnels. Grâce au bootloader et à l'interface de développement Arduino https://www.arduino.cc/en/Main/Software, on va pouvoir un écrire une séquence d'instructions pour la carte (un sketch) et « l'injecter » dans la mémoire du micro-contrôleur.

Après redémarrage de la carte, le sketch exécutera les instructions prévues.

A priori, un sketch est conçu pour rendre la carte Arduino autonome : selon les évenements qui se produisent sur ses broches d'entrées/sorties, elle réalise les instructions indiquées. La carte est uniquement connectée à son alimentation et aux composants reliés à ses broches et n'a plus besoin d'un ordinateur pour fonctionner.

Il existe néanmoins un sketch particulier permettant un fonctionnement différent : le sketch Firmata, qui a pour rôle d'assurer la communication série entre la carte et un programme s'exécutant sur un ordinateur. On peut ainsi choisir de charger Firmata dans la mémoire de la carte, et après son redémarrage elle est en capacité de communiquer avec l'ordinateur auquel elle est connectée par le cordon USB. De son côté, l'ordinateur exécute un programme dans un environnement capable de dialoguer avec une carte Arduino, qui finalement assure le rôle de passerelle entre le monde physique et l'ordinateur via des capteurs.

De tels environnements sont assez largement disponibles : citons les environnements de programmation classiques (C, Java, Python…) mais également ceux dédiés aux arts interactifs (Processing), à la programmation visuelle (PureData, Minibloq, Scratch…).

Parmi les logiciels très utile au développement sur Arduino, citons enfin le programme Fritzing : http://fritzing.org/home/ qui permet de réaliser facilement des schémas de montage. Par exemple, le schéma ci-dessous montre comment réaliser l'équivalent d'un Arduino en câblant directement les composants sur une carte de prototypage.

Utilisation de composants

L'utilisation de composants électroniques dans l'écosystème Arduino peut se réaliser de différentes manières, que nous allons distinguer en niveaux de complexité croissante, mais permettant également de réaliser un produit de plus en plus finalisé.

Niveau 1 : la plaque de prototypage

C'est le niveau le plus accessible pour un débutant car il ne nécessite pas de soudage. Par conséquent, les montages ne sont pas définitifs et sont modifiables en un clin d’œil. Cette méthode permet d'expérimenter à sa guise de multiples solutions. L'inconvénient principal est la fragilité des montages réalisés qui interdit pratiquement de les déplacer, et la multiplication des cordons de connexion dans tous les sens qui rendent les montages volumineux.

Une plaque de prototypage (breadboard) est un socle en matière plastique percé de dizaines de trous dans lesquels viennent s'enficher les pattes des composants ou des cordons de connexion. Les composants et cordons tiennent en place simplement par friction, aussi le montage n'est vraiment pas solide.

Dans le prototype ci-dessous, la plaque de prototypage comporte seulement une led, une resistance et un bouton poussoir et est reliée à la carte par des cordons. On remarque que sur ce type de carte, des pistes sont prédéfinies pour l'alimentation et la masse (sur la longueur de la carte) et d'autres pistes sont utilisables pour les composants (sur la largeur). Il existe des cartes de prototypage plus simples qui ne comportent pas ces pistes d'alimentation.

Enfin, notons que le logiciel Fritzing cité plus haut est particulièrement adapté à la réalisation de schémas pour représenter des montages à base de plaques de prototypage.

Niveau 2 : la plaque de prototypage soudée

Avec une plaque de prototypage soudée, on peut réaliser les mêmes montages qu'avec une breadboard, la seule différence est que les composants et les cordons sont soudés. On obtient ainsi un prototype permanent, plus solide et transportable, mais on perd la possibilité de le modifier à la volée.

Niveau 3 : le circuit imprimé et composants soudés

C'est la meilleure façon de passer d'un prototype validé à un produit fini. Le circuit est une carte séparée de l'Arduino, comportant tous les composants nécessaires au projet. Les connexions entre composants sont assurées par les pistes du circuit contrairement aux plaques de prototypage qui utilisent des fils.

Le circuit imprimé peut-être relié à la carte Arduino par une nappe de fils ou bien enfiché directement sur ses broches dans le cas d'un shield.

Avec le circuit imprimé, on est aux limites de ce que peut réaliser un amateur, surtout si la densité de composants est importante. Enfin, si l'on a recours à des Composants Montés en Surface (SMD) la réalisation est hors de portée de l'amateur.

Niveau 0 : Grove

L'écosystème Grove de Seeedstudio est un cas particulier de shield. Il s'agit d'une carte générique, enfichée comme un shield sur la carte Arduino, et à laquelle on peut connecter une multitude de capteurs, afficheurs, interrupteurs, potentiomètres… à l'aide de cordons spécifique.

Cette carte se contente de proposer des connecteurs qui reprennent les broches standard Arduino, dans un format commode à la connexion de composants. De façon systématique, un connecteur Grove correspond à 2 connecteurs Arduino adjacents plus une alimentation et une masse.
Par exemple, le connecteur A0 Grove correspond aux connecteurs A0 et A1 Arduino plus 5v et GND.
Si l'on utilise ce connecteur pour un composant qui utilise simultanément A0 et A1, le connecteur A1 Grove n'est donc pas utilisable.

On dispose de la sorte de la facilité de montage d'un prototype et du niveau de finalisation d'un produit commercial.

Ci-dessous le shield de base Grove, qui réplique les connexions de la carte Arduino dans son format spécifique de connecteurs.

Et un module Grove, le capteur de température et d'humidité ainsi que le cordon et ses connecteurs.

Les capteurs

Un capteur est un composant électronique permettant d'assurer l'interface entre le monde physique et un système informatique.
Il s'agit de transformer un phénomène ou une grandeur physique en une mesure utilisable par le système numérique, par exemple une résistance ou une tension électrique.
Bien souvent, il s'agira également de convertir une grandeur continue en grandeur discrète (échantillonnage et quantification).

Il existe de nombreux critères pour catégoriser les capteurs :

  • le besoin d'une alimentation électrique (capteur passif ou actif)
    • le type de sortie (analogique ou numérique)
    • la détection avec ou sans contact…

Ainsi que des caractéristiques plus qualitatives :

  • l'étendue de mesure
  • la sensibilité
  • la résolution
  • le temps de réponse
  • la précision…

Dans le contexte d'un montage à base d'Arduino, on appellera capteur le montage électronique composé d'un ou plusieurs composants, permettant d'effectuer la mesure d'un phénomène ou d'une grandeur physique (transducteur) ainsi que les composants qui permettent de le connecter à la carte Arduino. Typiquement, on trouvera au minimum une résistance pour permettre cette connexion.

Ainsi, les capteurs utilisables dans un projet peuvent prendre la forme

  • d'un montage de plusieurs composants sur une carte de prototypage
  • d'un kit, monté ou à monter, de composants sur un circuit imprimé, un shield par exemple
  • de modules, montés et câblés, adaptés à un écosystème particulier (Grove, Freaduino, Tinker Kit…)

Enfin, quelle que soit la forme que revêt le capteur, il faudra veiller pour l'utiliser avec Arduino

  • à le connecter sur les entrées de la carte qui lui correspondent (analogiques, numériques, I2C)…
  • à s'assurer du niveau d'alimentation correct pour son fonctionnement (3.3v ou 5v)
  • à le connecter également à la masse de la carte
  • à utiliser les composants nécessaires à sa protection (résistance par exemple)

Bref, il faudra lire le tuto, la doc ou la fiche technique qui le décrivent ! (RTFM :-P)

diy/arduino.txt · Dernière modification : 2017/01/08 13:48 de jbpuel