Table des matières:
- Étape 1: Configuration matérielle requise
- Étape 2: Sujets couverts
- Étape 3: Bases du bus I2C
- Étape 4: Module multiplexeur TCA9548A I2C
- Étape 5:
- Étape 6: Comment le maître envoie et reçoit des données
- Étape 7: Coder
- Étape 8: Scanner I2C
- Étape 9: Câblage et démonstration
- Étape 10: Avantages et inconvénients
- Étape 11: Merci
Vidéo: Module multiplexeur TCA9548A I2C - Avec Arduino et NodeMCU : 11 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:08
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
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
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
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:
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
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
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
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:
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
* 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é:
Tutoriel : Comment Arduino contrôle plusieurs périphériques à la même adresse en utilisant le multiplexeur TCA9548A I2C : 3 étapes
Tutoriel : Comment Arduino contrôle plusieurs périphériques à la même adresse à l'aide du multiplexeur TCA9548A I2C : Description : Le module multiplexeur TCA9548A I2C permet de connecter des périphériques avec la même adresse I2C (jusqu'à 8 mêmes adresses I2C) connectés à un microcontrôleur. Le multiplexeur agit comme un garde-porte, transférant les commandes vers l'ensemble sélectionné o
MULTIPLEXEUR DE HALL : 4 étapes
HALL MULTIPLEXEUR : (mis à jour le 24 mai 2019, de futures mises à jour suivront) Bonjour. J'ai lu sur un autre forum (je ne me souviens plus lequel ?) de ce type qui cherchait un moyen intelligent de mesurer le niveau de "liquide" dans un grand réservoir (profond) ? Le problème pour lui était celui du besoin
Module RF 433MHZ - Fabriquer un récepteur et un émetteur à partir du module RF 433MHZ sans aucun microcontrôleur : 5 étapes
Module RF 433MHZ | Fabriquer un récepteur et un émetteur à partir d'un module RF 433MHZ sans aucun microcontrôleur : Souhaitez-vous envoyer des données sans fil ? facilement et sans microcontrôleur nécessaire? C'est parti, dans cette instructable, je vais vous montrer l'émetteur et le récepteur rf de base mi prêts à être utilisés! Dans cette instructable, vous pourrez envoyer et recevoir des données à l'aide de très ver
Tutoriel du module LoRa E32-433T - Carte de dérivation DIY pour module E32 : 6 étapes
Tutoriel du module LoRa E32-433T | DIY Breakout Board pour module E32 : Hé, quoi de neuf, les gars ! Akarsh ici de CETech. Ce projet est plus une courbe d'apprentissage pour comprendre le fonctionnement du module E32 LoRa d'eByte, qui est un module émetteur-récepteur haute puissance de 1 watt. Une fois qu’on a compris le fonctionnement, j’ai le design
Arduino + Java (multiplexeur) : 16 étapes
Arduino+Java (Multiplexeur): Herramientas a necesitar:1 Arduino Uno avec câble USB.1 Protoboard.8 Cables.5 Leds.1 Resistencia 330