Skip to Content

Périphériques d’entrée pour Arduino et autres MCU – Un aperçu complet

Périphériques d’entrée pour Arduino et autres MCU – Un aperçu complet

Les dispositifs d’entrée permettent à l’Arduino et à d’autres microprocesseurs d’interagir avec le monde extérieur. Sans eux, un Arduino exécuterait simplement son programme sans pouvoir répondre à l’environnement externe ou aux commandes de l’utilisateur.

Ici, nous proposons un aperçu de tous les différents types de dispositifs d’entrée pouvant être connectés à un Arduino ou à des microprocesseurs similaires. Nous expliquons leurs principes de fonctionnement et les points auxquels il faut faire attention.

Les termes Entrées et Capteurs se recoupent quelque peu. Ici, nous utiliserons Entrées pour désigner les entrées provenant d’interactions humaines ou mécaniques avec le système, par exemple via des boutons, interrupteurs, écrans tactiles ou potentiomètres. Les capteurs, en revanche, servent à détecter ou mesurer des paramètres environnementaux, tels que la température, la lumière, la distance ou les champs magnétiques.

Makerguides is a participant in affiliate advertising programs designed to provide a means for sites to earn advertising fees by linking to Amazon, AliExpress, Elecrow, and other sites. As an Affiliate we may earn from qualifying purchases.

Dispositifs d’entrée

Nous allons maintenant examiner tous les différents types d’entrées, initiées par une interaction humaine, qu’un Arduino ou un microprocesseur similaire peut recevoir. Le plus souvent, il s’agira de boutons et d’interrupteurs, mais il en existe d’autres.

Boutons

Les boutons existent sous toutes sortes de formes, tailles et couleurs. Ci-dessous, une photo d’un bouton-poussoir typique qui ferme la connexion électrique entre ses deux pôles lorsqu’il est pressé, et qui est ouvert sinon.

Push button input device

Interrupteur à bouton-poussoir momentané, 1A 250VAC SPST Mini interrupteurs normalement ouverts ( NO ). 

Lors du choix d’un bouton comme dispositif d’entrée, plusieurs aspects sont à considérer. Tout d’abord, la taille, et liée à cela, la tension et courant nominal du bouton. Pour contrôler une entrée numérique sur une carte Arduino, de petits boutons pouvant commuter jusqu’à 12 volts et 0,1 ampère suffisent. Ils sont très bon marché et il est utile d’avoir une sélection de différents types pour diverses applications. J’aime bien le kit ci-dessous.

Different push button types

TWTADE 260pcs Micro interrupteurs tactiles momentanés, 26 valeurs, 4 broches/3 broches/2 broches, kit assortiment QC-26V.

Mode de fonctionnement ON-OFF
Courant nominal 0,1 ampère
Tension de fonctionnement 12 volts

Si vous souhaitez commuter des charges typiques, comme de petits électromoteurs ou l’alimentation par batterie de votre Arduino, un interrupteur supportant 12V et 1 à 3A conviendra. Notez que commuter des appareils connectés au secteur (110V – 220V) est dangereux ! Vous devez choisir un interrupteur adapté à 110V ou 220V (selon votre pays) et 5A ou plus (selon la charge).

Normalement ouvert ou fermé

La plupart des boutons sont normalement ouverts lorsqu’ils ne sont pas pressés (marqués NO). Cela signifie que le courant électrique ne circule pas lorsque le bouton n’est pas pressé. C’est le type que nous utilisons couramment. Mais il existe aussi des boutons normalement fermés (NC) lorsqu’ils ne sont pas pressés.

Boutons momentanés vs maintenus

La plupart des boutons sont des boutons momentanés, c’est-à-dire qu’ils reviennent à leur position par défaut lorsqu’on les relâche. Un bouton maintenu, en revanche, reste dans sa position lorsqu’il est pressé et doit être pressé à nouveau pour revenir à la normale. Nous utilisons principalement les boutons maintenus pour commuter l’alimentation électrique. Notez que certains boutons ont même trois états, comme ON – NONE – OFF ou similaire.

Nombre de pôles

Enfin, la plupart des boutons ont deux contacts (ou deux pôles) utilisés pour établir la connexion électrique. Cependant, certains boutons ont plus de pôles et différentes configurations de commutation. Plus d’informations dans la section Interrupteurs ci-dessous.

Certains boutons sont même éclairés et possèdent des contacts supplémentaires pour alimenter la lumière intégrée. Ne les confondez pas !

Points clés à considérer

Caractéristiques nominales

Le facteur le plus important lors du choix d’un bouton est sa capacité nominale. Le bouton doit pouvoir supporter la tension et le courant du circuit qu’il commande. Assurez-vous également d’utiliser la bonne tension et polarité pour les boutons éclairés.

Rebond

Les contacts à l’intérieur du bouton sont en métal, qui a une certaine élasticité. Cela provoque un contact bounce instable pendant un court instant (quelques millisecondes) lorsque le bouton est pressé, au lieu d’établir un contact stable immédiatement. La transition d’ouvert à fermé n’est pas nette mais présente un effet de rebond. Voir l’effet de rebond ci-dessous :

Lors de la lecture de l’état d’un bouton avec un microcontrôleur, cela peut entraîner la détection de plusieurs pressions au lieu d’une seule. Typiquement, vous devrez soit écrire un code for debouncing spécifique pour un bouton, soit ajouter un debouncing circuit, utilisant une résistance et un condensateur. Nous avons un exemple dans how to connect a push button to an Arduino.

Résistances de tirage (pull-up)

Quand un bouton est ouvert (non pressé), la broche à laquelle il est connecté peut flotter entre des états haut et bas car elle n’est pas reliée à une tension définie. Cet état « flottant » peut entraîner des lectures imprévisibles, la broche agissant comme une antenne captant des ondes électromagnétiques de l’environnement.

Nous pouvons utiliser des pull-up resistors pour connecter la broche à l’alimentation (généralement 5V ou 3,3V). Cela garantit qu’elle est dans un état défini (HAUT) lorsque le bouton n’est pas pressé. De nombreuses cartes Arduino ont des résistances de tirage intégrées activables en logiciel via pinMode(pin, INPUT_PULLUP).

Cependant, il est toujours prudent d’ajouter une résistance de tirage externe. Ainsi, vous pouvez utiliser votre circuit avec différentes cartes ou sur différentes broches (qui peuvent ne pas avoir de résistances de tirage internes).

Résistances de limitation de courant

Bien que ce ne soit pas toujours nécessaire avec des résistances de tirage ou de mise à la masse, il est parfois conseillé d’inclure une current limiting resistor en série avec un bouton, surtout si vous le connectez directement à l’alimentation et à la masse. Cela aide à éviter un courant excessif lorsque le bouton est pressé.

Niveaux logiques

Enfin, il faut faire attention aux different logic levels de l’Arduino (généralement 5V) et d’autres MCU courants, comme l’ESP32, qui fonctionne en 3,3V. Par exemple, connecter du 5V à une entrée 3,3V sur un ESP32 peut endommager la puce. De même, utiliser plus de 5V en entrée sur un Arduino peut causer des dégâts. Les résistances de limitation de courant mentionnées peuvent offrir une certaine protection.

Interrupteurs

Comme les boutons, les interrupteurs existent sous toutes sortes de formes et tailles. Ci-dessous un interrupteur typique, petit, pouvant commuter des entrées logiques ou de petites charges :

A simple switch as input device

Chanzon SPDT Mini Micro Slide Switch 2 Positions.

Note : Choisissez ceux avec un écartement des broches de 2,54 mm (0,1″) pour être compatibles avec une breadboard.

Interrupteurs momentanés vs maintenus/verrouillables

Les interrupteurs sont essentiellement les mêmes dispositifs d’entrée que les boutons – et parfois les boutons sont appelés interrupteurs. Mais alors que les boutons les plus courants sont momentanés, les interrupteurs sont généralement de type maintenu ou verrouillable.

Cependant, on trouve aussi des interrupteurs momentanés. Un type momentané que j’utilise fréquemment est ce micro-interrupteur qui nécessite très peu de force pour être actionné et est idéal pour détecter des collisions (pour robots) ou l’ouverture/fermeture de portes :

A micro switch

Cylewet 25Pcs AC 1A 125V 3Pin SPDT Limit Micro Switch Long Hinge Lever.

Si vous regardez de près, vous verrez les marquages C (Contact), NO (Normalement Ouvert) et NC (Normalement Fermé) pour les broches. C’est un interrupteur de type SPST (Single Pole, Single Throw) dont nous parlerons plus en détail dans la section suivante.

Terminologie des contacts

Une autre différence entre interrupteurs et boutons est que les interrupteurs offrent souvent beaucoup plus de variations dans la configuration des pôles et des liaisons.

Les pôles désignent le nombre de circuits séparés que l’interrupteur peut contrôler. C’est essentiellement le nombre d’entrées indépendantes d’un interrupteur. Les liaisons (throws) désignent le nombre de chemins disponibles pour chaque pôle. Cela décrit combien de connexions de sortie chaque pôle peut avoir ou « commuter ».

La configuration la plus courante, un interrupteur simple, est SPST (Single Pole, Single Throw).

Un interrupteur avec deux pôles et une liaison est appelé DPST (Double Pole, Single Throw).

Un interrupteur DPST que j’ai utilisé dans beaucoup de mes projets est le suivant. Bien qu’il soit petit, il peut commuter une charge considérable et est suffisant pour commuter l’alimentation par batterie, par exemple. Notez que celui-ci ne peut pas être inséré dans une breadboard.

A DPDT switch as input device

RuoFeng DPDT Toggle Switch AC 125V 6A Amps ON/ON 6 Terminals 2 Position

Configurations courantes

Voici une liste des configurations courantes de pôles et liaisons pour interrupteurs. Selon l’application, vous choisirez la bonne, mais les plus courantes sont probablement les interrupteurs SPST et DPST.

Abréviation Nom Description
SPST Single Pole Single Throw Un simple interrupteur marche/arrêt
SPDT Single Pole Double Throw Un interrupteur qui peut dévier le courant d’un chemin à un autre
DPST Double Pole Single Throw Deux interrupteurs marche/arrêt contrôlés par un seul mécanisme
DPDT Double Pole Double Throw Contrôle deux circuits et a deux chemins pour chacun
3PST Triple Pole Single Throw Trois interrupteurs marche/arrêt contrôlés par un seul mécanisme
3PDT Triple Pole Double Throw Contrôle trois circuits, chacun avec deux chemins
4PST Quadruple Pole Single Throw Quatre interrupteurs marche/arrêt contrôlés par un seul mécanisme
4PDT Quadruple Pole Double Throw Contrôle quatre circuits, chacun avec deux chemins

Points clés à considérer

Les points clés pour les interrupteurs sont les mêmes que pour les boutons. Assurez-vous que l’interrupteur a la capacité nominale appropriée pour la charge connectée. Si l’interrupteur est utilisé pour commuter des entrées logiques, le déparasitage, les résistances de tirage et éventuellement les résistances de limitation de courant sont recommandés. Faites aussi attention aux niveaux logiques corrects (3,3V vs 5V) pour les entrées.

Boutons tactiles

Les boutons tactiles sont des dispositifs d’entrée conçus pour détecter le toucher humain. Le type le plus courant mesure la capacité, qui change lorsque l’élément capteur est touché par un doigt (ou un objet métallique). Le ESP32 has touch sensor pins et ne nécessite pas de circuit supplémentaire pour détecter le toucher. Pour l’Arduino et d’autres MCU qui ne supportent pas directement les capteurs tactiles, des modules capteurs tactiles sont disponibles. Ci-dessous un exemple de module capteur tactile courant :

A touch sensor as input device

BAEASU TTP223 TTP223B Module capteur tactile capacitif, module bouton à verrouillage automatique

Le sont easy to connect and to use. Comparés aux boutons et interrupteurs mécaniques, ils ont l’avantage de pouvoir être encapsulés dans un boîtier, totalement protégés de la poussière ou de l’eau. La plupart permettent aussi de configurer un comportement verrouillable ou momentané, c’est-à-dire que le signal de sortie reste haut après un toucher ou non.

Points clés à considérer

Lors de l’utilisation de modules capteurs tactiles, quelques aspects méritent attention. D’abord, ils sont moins adaptés aux applications basse consommation, car ils consomment de l’énergie. Ils sont aussi plus vulnérables aux interférences électromagnétiques et aux activations accidentelles. Enfin, il n’y a pas de retour tactile, mais la plupart des modules intègrent une LED indiquant l’état de l’interrupteur.

Claviers matriciels

Les claviers matriciels ou keypads sont essentiellement des arrangements rectangulaires de plusieurs boutons. Généralement, les boutons sont mécaniques ou capacitifs. Ci-dessous une photo d’un keypad 4×4 typique utilisant des interrupteurs à membrane mécaniques :

A  4x4 keypad as input device

DEVMO 2PCS 4 x 4 Matrice 16 touches Interrupteur à membrane Clavier

Comme le nombre de touches est souvent supérieur au nombre d’entrées disponibles sur un Arduino, elles ne sont pas adressées individuellement. Un schéma d’adressage matriciel est utilisé, organisant les touches en colonnes (C1…C4) et lignes (R1…R4) :

A keypad address matrix

Pour un keypad 4×4 avec 16 touches, cela réduit le nombre d’entrées GPIO nécessaires de 16 à 8. We have a tutorial on how to connect a keypad to an Arduino.

Points clés à considérer

Les keypads, surtout les plus grands, utilisent beaucoup de broches GPIO précieuses. Cependant, utiliser I2C communication et un module d’extension IO adapté peut résoudre ce problème. Un module d’extension, comme celui ci-dessous, n’a besoin que des deux broches du bus I2C (SCL & SDA) pour contrôler 8 canaux I/O.

An IO expansion board

HiLetgo 2pcs PCF8574 PCF8574T Carte d’extension IO I/O Expander Module d’évaluation et développement I2C

Le I2C Keypad library propose un logiciel prêt à l’emploi pour connecter un keypad 4×4, 5×3, 6×2, 8×1 ou plus petit à un module d’extension basé sur PCF8574. Non seulement l’Arduino, mais aussi le ESP32 et beaucoup d’autres MCU supportent le bus I2C.

Écrans tactiles

Une alternative au keypad comme dispositif d’entrée est l’écran tactile. Les écrans tactiles sont généralement des écrans TFT, avec détection tactile résistive ou capacitive. Les types résistifs nécessitent une pression sur l’écran pour détecter le toucher. Un écran tactile résistif couramment utilisé est celui-ci d’ELEGOO :

A touchscreen display as input device

ELEGOO UNO R3 Écran tactile TFT 2,8 pouces avec emplacement carte SD

Contrôler un écran tactile depuis un Arduino est évidemment plus complexe que de contrôler un simple keypad. Cependant, nous avons un tutoriel sur how to interface an Arduino with a touchscreen display.

Point clé

Outre la complexité accrue, les écrans tactiles sont généralement beaucoup moins robustes que les keypads et se rayent facilement. Ils consomment aussi activement de l’énergie, alors que les keypads sont des dispositifs passifs. Enfin, la charge de calcul pour gérer un écran tactile est bien plus élevée que pour un keypad, ce qui signifie qu’un écran tactile est généralement moins réactif qu’un keypad.

Encodeurs rotatifs

Les encodeurs rotatifs sont des dispositifs d’entrée qui convertissent une rotation en codes numériques. Ils produisent typiquement deux signaux numériques ou impulsions, souvent appelés ‘DT’ et ‘CLK’ (ou ‘A’ et ‘B’). Ces impulsions sont généralement décalées de 90°. En surveillant ces deux signaux, on peut déterminer la quantité et le sens de rotation.

Ci-dessous un module d’encodeur rotatif courant adapté à l’Arduino, avec 20 impulsions par rotation complète et un bouton-poussoir supplémentaire.

A rotary encoder as input device

HiLetgo 5pcs Module d’encodeur rotatif 360 degrés

Les cas d’usage courants des encodeurs rotatifs sont le contrôle numérique du volume, la sélection de fonctions (menu) et la surveillance de la vitesse, position et direction d’un moteur. Ils sont faciles à utiliser et nous avons un tutoriel sur comment how to interface a rotary encoder with an Arduino.

Points clés

La plupart des encodeurs rotatifs sont mécaniquement similaires aux interrupteurs. Par conséquent, il faut considérer les mêmes problèmes potentiels que pour les interrupteurs, comme le déparasitage, les résistances de tirage et les niveaux logiques (3,3V vs 5V). De plus, si on utilise le sondage pour surveiller les impulsions, l’Arduino/le code doit être assez rapide pour ne pas manquer d’impulsions. Enfin, les encodeurs rotatifs varient en résolution (impulsions par rotation). Il faut choisir un encodeur avec une résolution suffisante pour l’application.

Potentiomètres

Jusqu’ici, tous les dispositifs d’entrée présentés étaient numériques. Ils génèrent des signaux numériques (HAUT, BAS) et sont connectés aux broches GPIO numériques. Les potentiomètres, en revanche, sont des dispositifs d’entrée analogiques. Voici notre tutoriel sur how to control an LED with a potentiometer.

Un potentiomètre est en interne une résistance à trois bornes avec un contact coulissant ou rotatif formant un diviseur de tension ajustable. Les valeurs typiques de résistance pour les potentiomètres sont 10K Ω ou 100K Ω . Voici un exemple d’un potentiomètre 10K couramment utilisé :

A Potentiometer as input device

HiLetgo 20pcs WH148 Potentiomètre simple joint 10K B10K résistances variables

Points clés

Assurez-vous de connecter le potentiomètre à une broche GPIO analogique (A0, …) et d’utiliser analogRead() pour lire la valeur d’entrée. Comme la résistance du potentiomètre peut varier avec la température, la valeur d’entrée changera lorsque le potentiomètre se réchauffe ou refroidit. Vous verrez aussi des fluctuations dues au bruit électromagnétique capté par les fils. Enfin, la résolution est limitée par le convertisseur analogique-numérique (ADC) du microcontrôleur.

Joysticks

Un joystick est composé de deux potentiomètres disposés selon des axes perpendiculaires (X, Y) contrôlés par un manche ou bouton central. Ci-dessous un module joystick courant utilisé avec Arduino :

Joystick as input device

WWZMDiB 6Pcs Module joystick à double axe avec bouton

Un joystick typique fournit une entrée sur sa position selon ses axes, généralement X (horizontal) et Y (vertical) sous forme de valeurs analogiques. Beaucoup ont aussi un bouton supplémentaire (bouton de tir), qui génère une entrée numérique. Voir notre tutoriel sur how to use a joystick with an Arduino.

Points clés

Notez qu’il existe des joysticks simplifiés qui n’utilisent pas de potentiomètres mais des interrupteurs pour indiquer la direction. Ils sont de nature numérique. D’autre part, il existe aussi des joysticks avec plus de deux axes, par exemple pour contrôler les directions X, Y et Z. Lors de la connexion d’un module joystick à votre microprocesseur, assurez-vous que les niveaux logiques correspondent (3,3V vs 5V). Les sorties analogiques doivent être connectées aux entrées analogiques (A0, A1) et lues via analogRead(), tandis que le bouton doit être connecté à une entrée numérique et lu via digitalRead().

Souris USB

Vous ne pouvez pas connecter directement une souris USB à un Arduino pour l’utiliser comme dispositif d’entrée. Vous aurez besoin d’un shield USB, comme celui ci-dessous (spécifique à la carte Arduino que vous utilisez) :

USB shield

ARCELI USB Host Shield pour Arduino UNO MEGA 2560

Voici un tutoriel sur how to connect a mouse to an Arduino using a USB shield.

Points clés

En général, il est préférable de connecter un joystick à un Arduino plutôt que d’essayer de connecter une souris USB via un shield USB. Vous pouvez construire votre propre souris en utilisant deux encodeurs rotatifs ou lire directement les encodeurs rotatifs d’une souris mécanique (ancienne).

Résumé

Nous vous avons présenté un aperçu de tous les différents types de dispositifs d’entrée couramment utilisés avec Arduino et microcontrôleurs similaires. Pour plus de détails sur la connexion de ces divers dispositifs, consultez notre Articles on inputs and sensors et les liens dans l’article. Nous avons aussi un overview article on all the different types of sensors you can connect to an Arduino.