Comment relier 2 cartes Arduino?

Comment relier 2 cartes Arduino?

Connecter deux arduinos via bluetooth

Dans notre précédent tutoriel, nous avons appris la communication SPI dans Arduino. Aujourd’hui nous allons apprendre un autre protocole de communication série : I2C (Inter Integrated Circuits). En comparant I2C avec SPI, I2C a seulement deux fils alors que SPI en utilise quatre et I2C peut avoir plusieurs maîtres et esclaves, alors que SPI ne peut avoir qu’un maître et plusieurs esclaves. Si, dans un projet, plusieurs microcontrôleurs doivent être maîtres, on utilise I2C. La communication I2C est généralement utilisée pour communiquer avec le gyroscope, l’accéléromètre, les capteurs de pression barométrique, les écrans LED, etc.

Dans ce tutoriel Arduino I2C, nous allons utiliser la communication I2C entre deux cartes Arduino et envoyer des valeurs (0 à 127) à l’autre en utilisant un potentiomètre. Les valeurs seront affichées sur l’écran LCD 16×2 connecté à chacun des Arduino.    Ici, un Arduino agira en tant que maître et un autre en tant qu’esclave. Commençons par une introduction à la communication I2C.

Le terme IIC signifie “Inter Integrated Circuits”. Il est normalement désigné comme I2C ou I squared C ou même comme protocole d’interface à 2 fils (TWI) à certains endroits mais cela signifie la même chose. I2C est un protocole de communication synchrone, ce qui signifie que les deux dispositifs qui partagent l’information doivent partager un signal d’horloge commun. Il ne comporte que deux fils pour partager les informations, dont l’un est utilisé pour le signal d’horloge et l’autre pour l’envoi et la réception des données.

Connecter deux arduinos via usb

Tout d’abord, je vais vous expliquer rapidement ce qu’est la communication série. Ensuite, vous verrez comment configurer votre matériel et votre logiciel, et nous nous plongerons dans le code Python (Cpp pour Arduino). Un exemple basique au début, menant à une application plus complète utilisant un Raspberry Pi, un Arduino, et d’autres appareils électroniques.

  Comment ralentir la vitesse dun moteur électrique?

Ce tutoriel fonctionnera avec une carte Raspberry Pi 4 (et précédentes : 3B, 3B+), et n’importe quelle carte Arduino. J’utiliserai principalement l’Arduino Uno mais je donnerai plus de détails sur les différences entre les cartes Arduino en ce qui concerne la communication série.

Lorsque l’on travaille avec des appareils électroniques, la communication est essentielle. Chaque appareil – en plus de bien faire ce qu’il est censé faire – doit être capable de communiquer clairement avec les autres appareils. C’est l’une des choses les plus importantes à travailler pour passer d’une application très basique à des applications plus complexes.

La communication en série est simplement un moyen de transférer des données. Les données sont envoyées séquentiellement, un bit à la fois (1 octet = 8 bits), contrairement à la communication parallèle, où plusieurs bits sont envoyés en même temps.

Communication Arduino rx tx

Il peut être pratique, notamment dans les projets domotiques, de communiquer entre plusieurs dispositifs. Une des techniques les plus utilisées est le protocole I2C (ou TWI). Le protocole I2C est une méthode qui permet de connecter plusieurs cartes “Maître” et plusieurs cartes “Esclave” et de faire communiquer jusqu’à 128 dispositifs. Il permet des connexions asynchrones entre plusieurs composants pour partager des informations via un “bus commun”. Nous avions vu la communication via le port série (appelé UART) qui est utilisé pour envoyer le code à l’Arduino par un ordinateur ou pour connecter deux appareils notamment en Bluetooth.

Avec le protocole I2C, il est également possible de communiquer entre différents systèmes (capteurs, écran LCD, Raspberry Pi, etc.). Un exemple intéressant est la communication entre plusieurs cartes Arduino. Pour cela, il faut écrire au moins deux programmes, un pour la carte “Mistress” (maître) et l’autre pour les cartes “Slaves”.

  Comment sont différenciés les dispositifs sur le bus?

Une communication I2C est définie par un bus à deux fils (parfois appelé TWI, Two Wire Interface) et une adresse. Les broches utilisées par la communication I2C sont généralement fixes pour chaque appareil. L’une sur laquelle les données sont envoyées (SDA Serial Data Line) et sur l’autre l’horloge de synchronisation (SLC Serial Clock Line).

Connecter 2 arduinos avec bluetooth

Connecter plus de deux cartes Arduino peut être une tâche difficile. Pour résoudre ce problème, nous avons créé une petite solution qui simplifie ce problème. Elle s’assure que les différentes cartes Arduino n’envoient pas de données en même temps. Il peut être considéré comme un simple protocole IP où chaque nœud a son propre identifiant.

Les broches RX de chaque carte doivent être connectées ensemble et connectées à 5V avec une résistance de 2.5k ohm entre les deux. Les broches TX de chaque carte doivent être connectées au même fil avec une diode limitant le courant de TX au fil.

La principale limitation de cette solution est qu’elle réserve le matériel série à la communication. Il n’est donc pas possible de télécharger du code ou de communiquer avec l’ordinateur individuellement. Ceci peut être résolu de deux manières :

Soit on peut utiliser un Arduino avec plusieurs ports série matériels. Cela peut être un Leonardo (utiliser Serial1 au lieu de Serial). Ou on peut utiliser la bibliothèque série logicielle (le système de communication est compatible avec elle).

Si vous utilisez cette dernière, vous devez vous assurer que vous n’avez pas d’autres interruptions en cours. Cela se produit lorsque vous utilisez des bibliothèques dont le temps est critique pour s’interfacer avec du matériel externe (DMX, Accelleromètres etc.).

  Comment raccorder un bouton poussoir avec voyant?