Table des matières:

Module multiplexeur TCA9548A I2C - Avec Arduino et NodeMCU : 11 étapes
Module multiplexeur TCA9548A I2C - Avec Arduino et NodeMCU : 11 étapes

Vidéo: Module multiplexeur TCA9548A I2C - Avec Arduino et NodeMCU : 11 étapes

Vidéo: Module multiplexeur TCA9548A I2C - Avec Arduino et NodeMCU : 11 étapes
Vidéo: TCA9548A I2C Multiplexer Module - With Arduino and NodeMCU 2024, Novembre
Anonim
Image
Image

Vous êtes-vous déjà retrouvé dans une situation où vous deviez câbler deux, trois capteurs I2C ou plus à votre Arduino juste pour vous rendre compte que les capteurs ont une adresse I2C fixe ou la même. De plus, vous ne pouvez pas avoir deux appareils avec la même adresse sur les mêmes broches SDA/SCL !

Quelles sont donc vos options? Mettez-les tous sur le multiplexeur I2C 1 à 8 TCA9548A pour qu'ils se parlent tous sur le même bus ! Le TCA9548A Breakout permet la communication avec plusieurs appareils I2C ayant la même adresse, ce qui facilite l'interface avec eux.

Étape 1: Configuration matérielle requise

Sujets couverts
Sujets couverts

Pour ce tutoriel, nous avons besoin de:

- Planche à pain

- Multiplexeur I2C TCA9548A

- Arduino Uno/Nano tout ce qui est pratique

- NodeMCU

- Quelques écrans OLED I2C 0.91 & 0.96

- Câbles de démarrage, et

- Câble USB pour télécharger le code

Étape 2: Sujets couverts

Nous commencerons notre discussion en comprenant les bases de la technologie I2C

Ensuite, nous découvrirons le multiplexeur TCA9548A et comment le maître et l'esclave envoient et reçoivent des données en utilisant la technologie I2C Ensuite, nous verrons comment nous pouvons programmer et utiliser le multiplexeur dans notre projet en utilisant Arduino et NodeMCU Ensuite, je vais vous montrer un rapide démo utilisant 8 écrans OLED I2C et enfin nous terminerons le didacticiel en discutant des avantages et des inconvénients du multiplexeur TCA9548A

Étape 3: Bases du bus I2C

Bases du bus I2C
Bases du bus I2C
Bases du bus I2C
Bases du bus I2C
Bases du bus I2C
Bases du bus I2C

Circuit inter-intégré prononcé I-squared-C (I²C) ou I2C est une technologie de bus à deux fils (en fait 4 fils car vous avez également besoin du VCC et de la masse) qui est utilisée pour la communication entre plusieurs processeurs et capteurs.

Les deux fils sont:

* SDA - Serial Data (ligne de données) et

* SCL - Serial Clock (ligne d'horloge)

N'oubliez pas que ces deux lignes sont « synchrones » « bidirectionnelles » « à drain ouvert » et sont « tirées avec des résistances ».

La technologie de bus I2C a été conçue à l'origine par Philips Semiconductors au début des années 80 pour permettre une communication facile entre les composants qui résident sur la même carte de circuit imprimé.

Avec I2C, vous pouvez connecter plusieurs esclaves à un seul maître (comme SPI) ou vous pouvez avoir plusieurs maîtres contrôlant un ou plusieurs esclaves. Les maîtres et les esclaves peuvent transmettre et recevoir des données. Ainsi, un appareil sur le bus I2C peut être dans l'un de ces quatre états:

* Transmission maître – le nœud maître envoie des données à un esclave* Réception maître – le nœud maître reçoit des données d'un esclave

* Transmission esclave - le nœud esclave envoie des données au maître

* Réception esclave - le nœud esclave reçoit des données du maître

I2C est un « protocole de communication série » « courte distance », de sorte que les données sont transférées « bit par bit » le long du fil unique ou de la ligne SDA. La sortie des bits est synchronisée sur l'échantillonnage des bits par un signal d'horloge « partagé » entre le maître et l'esclave. Le signal d'horloge est toujours contrôlé par le maître. Le maître génère l'horloge et initie la communication avec les esclaves.

Alors, pour résumer>

Nombre de fils utilisés: 2

Synchrone ou asynchrone: synchrone

Série ou parallèle: série

Signal d'horloge contrôlé par: nœud maître

Tensions utilisées: +5 V ou +3,3 V

Nombre maximum de Masters: Illimité

Nombre maximum d'esclaves: 1008

Vitesse maximale: mode standard = 100 kbit/s

Mode rapide = 400kbps

Mode haute vitesse = 3,4 Mbps

Mode ultra rapide = 5 Mbps

Étape 4: Module multiplexeur TCA9548A I2C

Module multiplexeur TCA9548A I2C
Module multiplexeur TCA9548A I2C
Module multiplexeur TCA9548A I2C
Module multiplexeur TCA9548A I2C
Module multiplexeur TCA9548A I2C
Module multiplexeur TCA9548A I2C

Le TCA9548A est un multiplexeur I2C à huit canaux (bidirectionnel) qui permet de contrôler huit périphériques I2C séparés par un seul bus I2C hôte. Il suffit de câbler les capteurs I2C aux bus multiplexés SCn/SDn. Par exemple, si huit écrans OLED identiques sont nécessaires dans une application, un de chaque écran peut être connecté à chacun de ces canaux: 0-7.

Le multiplexeur se connecte aux lignes VIN, GND, SDA et SCL du microcontrôleur. La carte de dérivation accepte le VIN de 1,65v à 5,5v. Les lignes d'entrée SDA et SCL sont connectées à VCC via une résistance pull-up de 10K (la taille de la résistance pull-up est déterminée par la quantité de capacité sur les lignes I2C). Le multiplexeur prend en charge les protocoles I2C normaux (100 kHz) et rapides (400 kHz). Toutes les broches d'E/S du TCA9548A tolèrent 5 volts et peuvent également être utilisées pour passer de hautes à basses ou de basses à hautes tensions.

C'est une bonne idée de mettre des résistances de rappel sur tous les canaux du TCA9548A, même si les tensions sont les mêmes. La raison en est le commutateur NMOS interne. Il ne transmet pas très bien les hautes tensions, par contre il transmet très bien les basses tensions. Le TCA9548A peut également être utilisé pour la conversion de tension, permettant l'utilisation de différentes tensions de bus sur chaque paire SCn/SDn de sorte que les parties 1,8 V, 2,5 V ou 3,3 V puissent communiquer avec les parties 5 V. Ceci est réalisé en utilisant des résistances de rappel externes pour tirer le bus jusqu'à la tension souhaitée pour le canal maître et chaque canal esclave.

Si le microcontrôleur détecte un conflit de bus ou un autre fonctionnement incorrect, le TCA9548A peut être réinitialisé en affirmant un niveau bas à la broche RESET.

Étape 5:

Image
Image
Image
Image
Image
Image

Le TCA9548 permet à un seul microcontrôleur de communiquer avec jusqu'à « 64 capteurs », tous avec la même adresse I2C ou une adresse différente en attribuant un canal unique à chaque sous-bus esclave de capteur.

Lorsque nous parlons d'envoyer des données sur 2 fils à plusieurs appareils, nous avons alors besoin d'un moyen de les adresser. C'est la même chose que le facteur venant sur une seule route et déposant les paquets de courrier dans différentes maisons parce qu'ils ont des adresses différentes écrites dessus.

Vous pourriez avoir au maximum 8 de ces multiplexeurs connectés ensemble sur des adresses 0x70-0x77 afin de contrôler 64 des mêmes parties adressées I2C. En connectant les trois bits d'adresse A0, A1 et A2 à VIN, vous pouvez obtenir différentes combinaisons d'adresses. Voici à quoi ressemble un octet d'adresse du TCA9548A. Les 7 premiers bits se combinent pour former l'adresse de l'esclave. Le dernier bit de l'adresse de l'esclave définit l'opération (lecture ou écriture) à effectuer. Lorsqu'il est haut (1), une lecture est sélectionnée, tandis qu'un bas (0) sélectionne une opération d'écriture.

Étape 6: Comment le maître envoie et reçoit des données

Comment le maître envoie et reçoit des données
Comment le maître envoie et reçoit des données
Comment le maître envoie et reçoit des données
Comment le maître envoie et reçoit des données

Voici la procédure générale permettant à un maître d'accéder à un périphérique esclave:

1. Si un maître souhaite envoyer des données à un esclave (WRITES):

– Le maître-émetteur envoie une condition START suivie des adresses de l'esclave-récepteur et R/W mis à 0

– Le maître-émetteur envoie des données dans les « registres de contrôle à 8 bits » à l'esclave-récepteur lorsque l'esclave reconnaît qu'il est prêt

– L'émetteur maître termine le transfert avec une condition STOP

2. Si un maître souhaite recevoir ou lire des données d'un esclave (READS):

– Le récepteur maître envoie une condition START suivie des adresses du récepteur esclave et R/W mis à 1

– Le maître-récepteur envoie le registre demandé à lire à l'esclave-émetteur

– Le maître-récepteur reçoit les données de l'esclave-émetteur

- Une fois tous les octets reçus, le maître envoie une signalisation NACK à l'esclave pour arrêter les communications et libérer le bus

- Le maître-récepteur termine le transfert avec une condition STOP

Un bus est considéré comme inactif si les deux lignes SDA et SCL sont à l'état haut après une condition STOP.

Étape 7: Coder

Code
Code

Maintenant, Int le code commençons par inclure la bibliothèque "Wire" et par définir l'adresse des multiplexeurs.

#include "Fil.h"

#include "U8glib.h"

#define MUX_Address 0x70 // Adresse des encodeurs TCA9548A

Ensuite, nous devons sélectionner le port avec lequel nous voulons communiquer et envoyer les données dessus à l'aide de cette fonction:

void selectI2CChannels(uint8_t i) {

si (i > 7) retour;

Wire.beginTransmission(MUX_Address);

Wire.write(1 << i);

Wire.endTransmission();

}

Ensuite, nous allons initialiser l'affichage dans la section de configuration en appelant "u8g.begin();" pour chaque écran attaché au MUX "tcaselect(i);"

Une fois initialisé, nous pouvons alors faire ce que nous voulons simplement en appelant la fonction "tcaselect(i);" où "i" est la valeur du bus multiplexé, puis l'envoi des données et de l'horloge en conséquence.

Étape 8: Scanner I2C

Scanner I2C
Scanner I2C

Juste au cas où vous n'êtes pas sûr de l'adresse de l'appareil de votre bouclier I2C, exécutez le code 'I2C Scanner' ci-joint pour trouver l'adresse hexadécimale de votre appareil. Lorsqu'il est chargé sur un Arduino, le croquis va scanner le réseau I2C, montrant les adresses qui répondent.

Étape 9: Câblage et démonstration

Câblage et démo
Câblage et démo
Câblage et démo
Câblage et démo

Câblage:

Commençons par connecter le multiplexeur à une carte NodeMCU. Relier:

VIN à 5V (ou 3,3V)

GND à la terre

SDA à D2 et

Broches SCL à D1 respectivement

Pour une carte Arduino connectez:

VIN à 5V (ou 3,3V)

GND à la terre

SDA à A4 et

Broches SCL à A5 respectivement

Une fois le MUX connecté au micro-contrôleur, il suffit de connecter les capteurs aux paires SCn/SDn.

Voyons maintenant cette démonstration rapide dans laquelle j'ai connecté 8 écrans OLED au multiplexeur TCA9548A. Comme ces écrans utilisent la communication I2C, ils communiquent avec l'Arduino en utilisant seulement 2 broches.

Étape 10: Avantages et inconvénients

Avantages et inconvénients
Avantages et inconvénients

AVANTAGES

* La communication ne nécessite que deux lignes de bus (fils)

* Une simple relation maître/esclave existe entre tous les composants

* Pas d'exigences strictes de débit en bauds comme par exemple avec RS232, le maître génère une horloge de bus

* Le matériel est moins compliqué que les UART

* Prend en charge plusieurs maîtres et plusieurs esclaves

* Le bit ACK/NACK confirme que chaque trame est transférée avec succès

* I2C est un "vrai bus multi-maîtres" fournissant l'arbitrage et la détection de collision

* Chaque appareil connecté au bus est adressable par logiciel par une adresse unique

* La plupart des appareils I2C peuvent communiquer à 100 kHz ou 400 kHz

* I²C est approprié pour les périphériques où la simplicité et le faible coût de fabrication sont plus importants que la vitesse

* Protocole bien connu et largement utilisé

DÉSAVANTAGES

* Taux de transfert de données plus lent que SPI

* La taille de la trame de données est limitée à 8 bits

* Matériel plus compliqué à mettre en œuvre que la technologie SPI

Conseillé: