Vous êtes sur la page 1sur 27

Bienvenue !

Merci d'avoir acheté le module I2C TCA9548A AZ-Delivery. Dans les pages
suivantes, vous apprendrez à utiliser et à configurer ce dispositif très
ingénieux.

Amusez-vous !
Table des matières
Présentation..................................................................................................3
Spécifications................................................................................................5
Brochage.......................................................................................................7
Schéma de connexion...................................................................................8
Configurer l'IDE Arduino................................................................................9
Configurer le Raspberry Pi et Python..........................................................14
Connexion à l'Atmega328p.........................................................................15
Exemple de code.....................................................................................16
Connexion au Raspberry Pi.........................................................................19
Librairies et outils Python.........................................................................21
Activer l'interface I2C...................................................................................22
Script Python...........................................................................................24

-2-
Présentation

Le multiplexeur I2C TCA9548A est un dispositif fabriqué autour du circuit


TCA9548A qui simplifie l'utilisation de plusieurs dispositifs I2C avec un
microcontrôleur. C'est un multiplexeur I2C à huit canaux (bidirectionnel) qui
permet à huit dispositifs I2C distincts d'être contrôlés par un seul hôte sur
un seul bus I2C.

Le TCA9548A possède huit commutateurs de translation bidirectionnels qui


peuvent être contrôlés par le bus I2C. Le module peut connecter plusieurs
dispositifs différents avec un seul microcontrôleur.

Si certains des dispositifs connectés au même canal ont la même adresse


I2C, le problème peut être résolu en se connectant simplement à un autre
canal si le dispositif n'a pas de commutateur DIP ou de cavalier d'adresse
I2C configurable.

-3-
Présentation

Plage de tension d'utilisation de 1.65V à 5.5V


Courant d'utilisation 100mA (max.)
Courant d'entrée 20mA
Courant de sortie 25mA
Tension d'entrée Max. 5V (max.)
Interface I2C
Canaux d'entrée I2C 8
Sortie I2C 1
Température de stockage de -65 à 150℃
Dimensions 22x32x2.7mm (0.8x1.2x0.1in)

Un maximum de 8 multiplexeurs peuvent être connectés ensemble sur les


adresses 0x70-0x77 afin de contrôler 64 adresses I2C. En connectant les
trois bits d'adresse A0, A1 et A2 au VIN, on peut 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.

REMARQUE : Le TCA9584A peut également servir de convertisseur de


niveau logique, c'est-à-dire que tous les dispositifs I2C peuvent avoir leur
propre alimentation/tension. Les explications supplémentaires sur cette
fonctionnalité ne sont pas décrites bans cet eBook.

-4-
Fonctionnalités

• Compatible avec le bus I2C et le bus SMBus


• Entrée de réinitialisation active-basse
• Trois pin's d'adresse, permettant jusqu'à huit modules TCA9548A sur le
bus I2C.
• Sélection des canaux via un bus I2C, dans n'importe quelle combinaison
• Mise sous tension avec tous les canaux de commutation désélectionnés -
Commutateurs à faible RON - Permet la conversion des niveaux de
tension entre les bus 1,8 V, 2,5 V, 3,3 V et 5 V.
• Pas de problème de mise sous tension - Prise en charge de l'insertion à
chaud - Faible courant de veille - Plage de tension d'alimentation de 1,65
V à 5,5 V.
• Entrées tolérantes à 5 V - Fréquence d'horloge de 0 à 400 kHz -
Performance de latch-up supérieure à 100 mA selon JESD 78, Classe II
• La protection ESD dépasse la norme JESD 22 - Modèle corps humain
±2000-V (A114-A) - Modèle machine 200-V (A115-A)
• Modèle à dispositif chargé ±1000-V (C101)

-5-
Changer l'adresse I2C du TCA9548A

L'adresse du bus du TCA9548A est modifiée en utilisant les connexions aux


pins A0, A1 et A2. Par défaut, l'adresse 0x70 est utilisée, en câblant A0-A2
à GND(LOW). En utilisant le tableau ci-dessous, il peut être reconfiguré à
une adresse entre 0x70 et 0x77 en faisant correspondre les entrées à
HIGH(5V) ou LOW(GND) :

ENTRÉES ADRESSE ESCLAVE BUS I2C


A2 A1 A0
L L L 112 (decimal), 70 (hexadecimal)
L L H 113 (decimal), 71 (hexadecimal)
L H L 114 (decimal), 72 (hexadecimal)
L H H 115 (decimal), 73 (hexadecimal)
H L L 116 (decimal), 74 (hexadecimal)
H L H 117 (decimal), 75 (hexadecimal)
H H L 118 (decimal), 76 (hexadecimal)
H H H 119 (decimal), 77 (hexadecimal)

-6-
Brochage

Le module comporte 24 pins. Le brochage est présenté ci-dessous :

-7-
Schéma de connexion

Le schéma de connexion est présenté ici :

Le schéma représente un exemple de plusieurs appareils connectés sur


différents canaux.

-8-
Configurer l'IDE Arduino

Si l'IDE Arduino n'est pas installé suivez le lien et téléchargez le fichier


d'installation pour l'OS de votre choix. La version de l’IDE Arduino utilisée
dans cet eBook est la 1.8.19

Pour les utilisateurs de Windows lancez le fichier .exe et suivez les


instructions.

-9-
Pour les utilisateurs de Linux, téléchargez un fichier portant
l'extension .tar.xz, qui doit être extrait. Lorsqu'il est extrait, allez dans le
répertoire extrait et ouvrez le terminal dans ce répertoire. Deux scripts .sh
doivent être exécutés, le premier appelé arduino-linux-setup.sh et le second
appelé install.sh.

Pour exécuter le premier script dans le terminal, ouvrez le terminal dans le


répertoire extrait et exécutez la commande suivante :
sh arduino-linux-setup.sh user_name
user_name est le nom d'un superutilisateur dans le système d'exploitation
Linux. Un mot de passe pour le superutilisateur doit être saisi au moment
du lancement de la commande. Attendez quelques minutes pour que le
script se termine.

Le second script, appelé install.sh, doit être utilisé après l'installation du


premier script. Exécutez la commande suivante dans le terminal (répertoire
extrait) : sh install.sh

Après l'installation de ces scripts, allez dans le dossier où est installé l'IDE
Arduino.

- 10 -
Almost all operating systems come with a text editor preinstalled (for
example, Windows comes with Notepad, Linux Ubuntu comes with
Gedit, Linux Raspbian comes with Leafpad, etc.). All of these text
editors are perfectly fine for the purpose of the eBook.

Next thing is to check if your PC can detect an Atmega328p board. Open


freshly installed Arduino IDE, and go to:
Tools > Board > {your board name here}
{your board name here} should be the Arduino/Genuino Uno, as it can
be seen on the following image:

- 11 -
Presque tous les systèmes d'exploitation sont livrés avec un éditeur de
texte préinstallé (par exemple, Windows est livré avec Notepad, Linux
Ubuntu avec Gedit, Linux Raspbian avec Leafpad, etc.) Tous ces éditeurs
de texte conviennent parfaitement à l'objectif de cet eBook.

La prochaine étape est de vérifier si votre PC peut détecter une carte


Atmega328p. Ouvrez l'IDE Arduino fraîchement installé, et allez dans :
Outils > Carte > {votre nom de carte ici}
{le nom de votre carte ici} devrait être l'Arduino Uno, comme on peut le voir
sur l'image suivante :

- 12 -
Le port auquel la carte Atmega328p est connectée doit être sélectionné.
Allez dans : Outils > Port > {le nom du port va ici}.
Lorsque la carte Atmega328p est connectée au port USB, le nom du port
peut être vu dans le menu déroulant de l'image précédente.
Si l'IDE Arduino est utilisé sous Windows, les noms de port sont les
suivants :

Pour les utilisateurs de Linux le nom du port est /dev/ttyUSBx, où x


représente un nombre entier entre 0 et 9.

- 13 -
Configurer le Raspberry Pi et Python

Pour le Raspberry Pi, il faut d'abord installer le système d'exploitation, puis


tout configurer pour qu'il puisse être utilisé en mode Headless. Le mode
Headless permet de se connecter à distance au Raspberry Pi, sans avoir
besoin d'un écran de PC, d'une souris ou d'un clavier. Les seuls éléments
utilisés dans ce mode sont le Raspberry Pi lui-même, l'alimentation
électrique et la connexion Internet. Tout ceci est expliqué en détail dans le
livre électronique gratuit :
Raspberry Pi Quick Startup Guide

Le système d'exploitation Raspberry Pi OS est livré avec Python préinstallé.

- 14 -
Connexion à l’Atmega328p

Connectez les modules avec l'Atmega328p comme indiqué sur l'image


suivante :

- 15 -
BME280 pin TCA9548A pin
VIN 5V (Atmega328p 5V) Rouge
GND GND (Atmega328p Noir
GND)
SDA SD0 Bleu
SCL SC0 Vert
TCA9548A pin Mc pin
VIN 5V Rouge
GND GND Noir
SDA A4 Bleu
SCL A5 Vert
OLED pin TCA9548A pin
SDA SD1 (CH1) Bleu
SCL SC1 (CH1) Vert
VCC 5V (Atmega328p pin) Rouge
GND GND (Atmega328p Noir
pin)

- 16 -
Exemple de code

#include <U8g2lib.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>

Adafruit_BME280 bme;

#define TCAADDR 0x70

U8G2_SSD1306_128X32_UNIVISION_F_HW_I2C u8g2(U8G2_R0, U8X8_PIN_NONE);

void TCA9548A(uint8_t bus) {


Wire.beginTransmission(0x70);
Wire.write(1 << bus);
Wire.endTransmission();
}

void u8g2_prepare() {
u8g2.setFont(u8g2_font_6x10_tf);
u8g2.setFontRefHeightExtendedText();
u8g2.setDrawColor(1);
u8g2.setFontPosTop();
u8g2.setFontDirection(0);
}

void setup() {
Wire.begin();
Serial.begin (9600);
TCA9548A(0);
bool communication = bme.begin(0x76);
TCA9548A(1);
u8g2.begin();
u8g2_prepare();

- 17 -
}

void loop(void) {
TCA9548A(0);
float temperature = bme.readTemperature();
float pressure = bme.readPressure()/100;
float humidity = bme.readHumidity();

TCA9548A(1);
u8g2.clearBuffer();
u8g2_prepare();
u8g2.setFont(u8g2_font_6x10_tf);
u8g2.drawStr(0, 0, "Temperature: ");
u8g2.setCursor(75, 0);
u8g2.print(temperature);
u8g2.println();
u8g2.drawStr(0, 10, "Pressure: ");
u8g2.setCursor(75, 10);
u8g2.print(pressure);
u8g2.println();
u8g2.drawStr(0, 20, "Humidity: ");
u8g2.setCursor(75, 20);
u8g2.print(humidity);
u8g2.println();
u8g2.sendBuffer();
delay(100);
}

- 18 -
Connexion au Raspberry Pi

Connectez les modules avec le Raspberry Pi comme indiqué sur l'image


suivante :

- 19 -
TCA9548A pin Raspberry Pi pin Broche
VIN 3.3V 1 Rouge
GND GND 14 Noir
SDA GPIO2 3 Vert
SCL GPIO3 5 Bleu
A0, A1, A2 GND 14 Noir
BME280(1) PIN TCA9548A pin Raspberry Pi pin
SCL SC0 Bleu
SDA SD0 Vert
VIN VIN 3.3V (PIN1) Rouge
GND GND GND (PIN14) Noir
BME280(2) PIN TCA9548A pin Raspberry Pi pin
SCL SC1 Bleu
SDA SD1 Vert
VIN VIN 3.3V (PIN1) Rouge
GND GND GND (PIN14) Noir

- 20 -
Librairies et outils Python

Pour utiliser le module avec le Raspberry Pi, la bibliothèque RPi.GPIO doit


être installée. Si la bibliothèque est déjà installée, l'exécution de la
commande d'installation ne fait que mettre à jour la bibliothèque vers une
version plus récente.

Pour installer la bibliothèque, ouvrez le terminal et exécutez les commandes


suivantes, une par une :
sudo apt-get update && sudo apt-get upgrade

sudo apt install python3-pip

sudo apt install git


git clone https://github.com/pimoroni/bme280-python
cd bme280-python
sudo ./install.sh

- 21 -
Activer l'interface I2C

Afin d'utiliser le module avec Raspberry Pi, l'interface I2C doit être activée.
Ouvrez le menu suivant :
Menu Application > Préférences > Configuration Raspberry Pi

Dans la nouvelle fenêtre, sous l'onglet Interfaces, activez le bouton radio


I2C, comme sur l'image suivante :

- 22 -
Avant d'utiliser un dispositif connecté à l'interface I2C, l'adresse I2C doit
d'abord être détectée. Pour détecter l'adresse I2C de l'écran, la commande
suivante doit être exécutée dans le terminal : i2cdetect -y 1

Le résultat devrait ressembler à cela:

Où 0x70 est l'adresse I2C du module multiplexeur. Les autres adresses I2C
peuvent avoir des valeurs différentes en fonction de l'endroit où d'autres
dispositifs sont connectés et du canal auquel ils sont connectés.

- 23 -
Script Python

from bme280 import BME280


import smbus
import os
import time

print('TCA9548A Multiplexer + BME280 script')

class multiplex:

def __init__(self, bus):


self.bus = smbus.SMBus(bus)

def channel(self, address, channel):

if (channel == 0):
action = 0x01
elif (channel == 1):
action = 0x02
elif (channel == 2):
action = 0x04
elif (channel == 3):
action = 0x08
elif (channel == 4):
action = 0x10
elif (channel == 5):
action = 0x20
elif (channel == 6):
action = 0x40
elif (channel == 7):
action = 0x80
else:
action = 0x00
self.bus.write_byte_data(address, 0x04, action)

- 24 -
def readdata():
bme280 = BME280(i2c_dev=smbus.SMBus(1))
print("readdata")
temperature = bme280.get_temperature()
pressure = bme280.get_pressure()
humidity = bme280.get_humidity()
time.sleep(2)
temperature = bme280.get_temperature()
pressure = bme280.get_pressure()
humidity = bme280.get_humidity()
print("Temperature: ",bme280.get_temperature())
print("Pressure: ",bme280.get_pressure())
print("Humidity: ",bme280.get_humidity())
return(temperature, pressure, humidity)

if __name__ == '__main__':
bus = 1
address = 0x70 # A0 to A2 NC or GND, change as required
plexer = multiplex(bus)
while True:
plexer.channel(address, 0)
print(readdata())

plexer.channel(address, 2)
print(readdata())

- 25 -
Enregistrez le script sous le nom tcamultiplex.py. Pour exécuter le
script, ouvrez le terminal dans le répertoire où le script est enregistré et
exécutez la commande suivante : python3 tcamultiplex.py

Le résultat devrait ressembler à l'image suivante :

Pour arrêter le script, appuyez sur 'CTRL + C' sur le clavier.

- 26 -
Il est maintenant temps de concevoir vos propres projets. Vous pouvez le
faire à l'aide de nombreux exemples de scripts et autres didacticiels, que
vous trouverez sur Internet.

Si vous êtes à la recherche de produits micro-électroniques et


d'accessoires de haute qualité, AZ-Delivery Vertriebs GmbH est votre
interlocuteur idéal pour vous les procurer. Vous bénéficierez de
nombreux exemples d'application, de guides d'installation complets,
de livres électroniques, de bibliothèques et de l'assistance de nos
experts techniques.

https://az-delivery.de
Amusez-vous bien !
Mentions légales
https://az-delivery.de/pages/about-us

- 27 -

Vous aimerez peut-être aussi