Índice:

Módulo Multiplexador I2C TCA9548A - Com Arduino e NodeMCU: 11 etapas
Módulo Multiplexador I2C TCA9548A - Com Arduino e NodeMCU: 11 etapas

Vídeo: Módulo Multiplexador I2C TCA9548A - Com Arduino e NodeMCU: 11 etapas

Vídeo: Módulo Multiplexador I2C TCA9548A - Com Arduino e NodeMCU: 11 etapas
Vídeo: TCA9548A I2C Multiplexer Module Error Soft WDT Reset Sensor Not Accurate I2C BMP280 ESP8266 2024, Junho
Anonim
Image
Image

Você já entrou em uma situação em que teve que conectar dois, três ou mais sensores I2C ao Arduino apenas para perceber que os sensores têm um endereço I2C fixo ou igual? Além disso, você não pode ter dois dispositivos com o mesmo endereço nos mesmos pinos SDA / SCL!

Então quais são suas opções? Coloque-os todos no multiplexador I2C 1 para 8 TCA9548A para que todos se comuniquem no mesmo barramento! O Breakout TCA9548A permite a comunicação com vários dispositivos I2C que têm o mesmo endereço, facilitando a interface com eles.

Etapa 1: Requisito de Hardware

Assuntos abordados
Assuntos abordados

Para este tutorial, precisamos:

- breadboard

- Multiplexador TCA9548A I2C

- Arduino Uno / Nano tudo o que for útil

- NodeMCU

- Poucos visores OLED I2C de 0,91 e 0,96

- Cabos Jumper, e

- Cabo USB para fazer upload do código

Etapa 2: tópicos abordados

Começaremos nossa discussão entendendo os fundamentos da tecnologia I2C

Em seguida, aprenderemos sobre o Multiplexador TCA9548A e como o mestre e o escravo enviam e recebem dados usando a tecnologia I2C. Em seguida, veremos como podemos programar e usar o multiplexador em nosso projeto usando Arduino e NodeMCU. A seguir, vou mostrar um rápido demonstração usando 8 visores I2C OLED e, finalmente, terminaremos o tutorial discutindo as vantagens e desvantagens do Multiplexador TCA9548A

Etapa 3: Noções básicas de barramento I2C

Noções básicas de ônibus I2C
Noções básicas de ônibus I2C
Noções básicas de ônibus I2C
Noções básicas de ônibus I2C
Noções básicas de ônibus I2C
Noções básicas de ônibus I2C

O Circuito Inter-integrado pronunciado I-quadrado-C (I²C) ou I2C é uma tecnologia de barramento de dois fios (bem, na verdade, 4 fios porque você também precisa do VCC e do aterramento) que é usada para comunicação entre vários processadores e sensores.

Os dois fios são:

* SDA - Dados seriais (linha de dados) e

* SCL - Relógio serial (linha do relógio)

Lembre-se de que ambas as linhas são 'síncronas', 'bidirecionais', 'dreno aberto' e 'puxadas para cima com resistores'.

A tecnologia de barramento I2C foi originalmente projetada pela Philips Semiconductors no início dos anos 80 para permitir a comunicação fácil entre componentes que residem na mesma placa de circuito.

Com I2C, você pode conectar vários escravos a um único mestre (como SPI) ou pode ter vários mestres controlando um ou vários escravos. Tanto mestres quanto escravos podem transmitir e receber dados. Portanto, um dispositivo no barramento I2C pode estar em um destes quatro estados:

* Transmissão mestre - o nó mestre está enviando dados para um escravo * Recebimento mestre - o nó mestre está recebendo dados de um escravo

* Slave transmitir - o nó escravo está enviando dados para o mestre

* Recebimento do escravo - o nó escravo está recebendo dados do mestre

I2C é um 'protocolo de comunicação serial' de 'curta distância', então os dados são transferidos 'bit a bit' ao longo de um único fio ou da linha SDA. A saída de bits é sincronizada com a amostragem de bits por um sinal de clock 'compartilhado' entre o mestre e o escravo. O sinal do relógio é sempre controlado pelo mestre. O mestre gera o relógio e inicia a comunicação com os escravos.

Então, para resumir>

Número de fios usados: 2

Síncrono ou Assíncrono: Síncrono

Serial ou Paralelo: Serial

Sinal de relógio controlado por: Nó Mestre

Tensões usadas: +5 V ou +3,3 V

Número máximo de mestres: ilimitado

Número máximo de escravos: 1008

Velocidade Máxima: Modo Padrão = 100kbps

Modo rápido = 400 kbps

Modo de alta velocidade = 3,4 Mbps

Modo Ultra Rápido = 5 Mbps

Etapa 4: Módulo Multiplexador I2C TCA9548A

Módulo Multiplexador TCA9548A I2C
Módulo Multiplexador TCA9548A I2C
Módulo Multiplexador TCA9548A I2C
Módulo Multiplexador TCA9548A I2C
Módulo Multiplexador TCA9548A I2C
Módulo Multiplexador TCA9548A I2C

O TCA9548A é um multiplexador I2C de oito canais (bidirecional) que permite que oito dispositivos I2C separados sejam controlados por um único barramento I2C host. Você só precisa conectar os sensores I2C aos barramentos multiplexados SCn / SDn. Por exemplo, se oito monitores OLED idênticos são necessários em uma aplicação, um de cada monitor pode ser conectado em cada um destes canais: 0-7.

O Multiplexador se conecta às linhas VIN, GND, SDA e SCL do microcontrolador. A placa de breakout aceita VIN de 1,65v a 5,5v. As linhas de entrada SDA e SCL são conectadas ao VCC por meio de um resistor pull-up de 10K (o tamanho do resistor pull-up é determinado pela quantidade de capacitância nas linhas I2C). O multiplexador suporta os protocolos I2C normal (100 kHz) e rápido (400 kHz). Todos os pinos de E / S do TCA9548A são tolerantes a 5 volts e também podem ser usados para converter de alta para baixa ou de baixa para alta tensão.

É uma boa ideia colocar resistores pull-up em todos os canais do TCA9548A, mesmo que as tensões sejam as mesmas. A razão para isso é por causa do switch NMOS interno. Ele não transmite alta tensão muito bem, por outro lado transmite muito bem baixas tensões. O TCA9548A também pode ser usado para conversão de tensão, permitindo o uso de diferentes tensões de barramento em cada par SCn / SDn de modo que as peças de 1,8 V, 2,5 V ou 3,3 V possam se comunicar com peças de 5 V. Isso é obtido usando resistores pull-up externos para puxar o barramento até a tensão desejada para o mestre e cada canal escravo.

Se o microcontrolador detectar um conflito de barramento ou outra operação inadequada, o TCA9548A pode ser reinicializado através da afirmação de um pino de RESET.

Etapa 5:

Imagem
Imagem
Imagem
Imagem
Imagem
Imagem

O TCA9548 permite que um único microcontrolador se comunique com até '64 sensores ', todos com o mesmo endereço I2C ou diferente, atribuindo um canal exclusivo a cada sub-barramento escravo do sensor.

Quando falamos sobre o envio de dados por 2 fios para vários dispositivos, precisamos encontrar uma maneira de abordá-los. É o mesmo que o carteiro vindo por uma única estrada e deixando os pacotes de correspondência em casas diferentes porque eles têm endereços diferentes escritos neles.

Você poderia ter no máximo 8 desses multiplexadores conectados entre si nos endereços 0x70-0x77 para controlar 64 das mesmas partes endereçadas I2C. Ao conectar os três bits de endereço A0, A1 e A2 ao VIN, você pode obter diferentes combinações de endereços. É assim que se parece um byte de endereço do TCA9548A. Os primeiros 7 bits se combinam para formar o endereço do escravo. O último bit do endereço do escravo define a operação (leitura ou escrita) a ser realizada. Quando é alto (1), uma leitura é selecionada, enquanto um baixo (0) seleciona uma operação de gravação.

Etapa 6: como o mestre envia e recebe dados

Como o Mestre envia e recebe dados
Como o Mestre envia e recebe dados
Como o Mestre envia e recebe dados
Como o Mestre envia e recebe dados

A seguir está o procedimento geral para um mestre acessar um dispositivo escravo:

1. Se um mestre deseja enviar dados para um escravo (ESCREVE):

- O transmissor mestre envia uma condição de INÍCIO seguida pelos endereços do receptor-escravo e R / W definido como 0

- O transmissor mestre envia dados nos 'registros de controle de 8 bits' para o receptor-escravo quando o escravo reconhece que está pronto

- O transmissor mestre encerra a transferência com uma condição STOP

2. Se um mestre deseja receber ou ler dados de um escravo (READS):

- Receptor-mestre envia uma condição START seguida pelos endereços do receptor-escravo e R / W definido como 1

- Receptor mestre envia o registro solicitado para ler ao transmissor escravo

- Receptor mestre recebe dados do transmissor escravo

- Uma vez que todos os bytes são recebidos, o Mestre envia sinalização NACK ao escravo para interromper as comunicações e liberar o barramento

- Master-receiver termina a transferência com uma condição STOP

Um barramento é considerado ocioso se as linhas SDA e SCL estiverem altas após uma condição de STOP.

Etapa 7: Código

Código
Código

Agora, Int o código, vamos começar incluindo a biblioteca "Wire" e definindo o endereço dos multiplexadores.

#include "Wire.h"

#include "U8glib.h"

#define MUX_Address 0x70 // TCA9548A Encoders address

Em seguida, precisamos selecionar a porta com a qual queremos nos comunicar e enviar os dados usando esta função:

void selectI2CChannels (uint8_t i) {

se (i> 7) retornar;

Wire.beginTransmission (MUX_Address);

Wire.write (1 << i);

Wire.endTransmission ();

}

Em seguida, inicializaremos a exibição na seção de configuração chamando "u8g.begin ();" para cada monitor conectado ao MUX "tcaselect (i);"

Uma vez inicializado, podemos fazer o que quisermos apenas chamando a função "tcaselect (i);" onde "i" é o valor do barramento multiplexado e, em seguida, envia os dados e o relógio de acordo.

Etapa 8: Scanner I2C

Scanner I2C
Scanner I2C

Por precaução, se você não tiver certeza sobre o endereço do dispositivo de seu escudo I2C, execute o código do 'Scanner I2C' em anexo para encontrar o endereço hexadecimal do seu dispositivo. Quando carregado em um Arduino, o sketch fará a varredura da rede I2C, mostrando os endereços que estão respondendo.

Etapa 9: Fiação e demonstração

Fiação e demonstração
Fiação e demonstração
Fiação e demonstração
Fiação e demonstração

Fiação:

Vamos começar conectando o multiplexador a uma placa NodeMCU. Conectar:

VIN a 5V (ou 3,3V)

GND para aterrar

SDA para D2 e

SCL para pinos D1 respectivamente

Para conectar uma placa Arduino:

VIN a 5V (ou 3,3V)

GND para aterrar

SDA para A4 e

SCL para pinos A5 respectivamente

Uma vez que o MUX é conectado ao microcontrolador, você só precisa conectar os sensores aos pares SCn / SDn.

Agora, vamos dar uma olhada nesta rápida demonstração em que conectei 8 monitores OLED ao multiplexador TCA9548A. Como esses monitores usam comunicação I2C, eles se comunicam com o Arduino usando apenas 2 pinos.

Etapa 10: Vantagens e Desvantagens

Vantagens e desvantagens
Vantagens e desvantagens

VANTAGENS

* A comunicação requer apenas duas linhas de ônibus (fios)

* Uma relação mestre / escravo simples existe entre todos os componentes

* Sem requisitos estritos de taxa de transmissão, como por exemplo com RS232, o mestre gera um relógio de barramento

* Hardware é menos complicado que UARTs

* Suporta vários mestres e vários escravos

* O bit ACK / NACK dá a confirmação de que cada quadro foi transferido com sucesso

* I2C é um 'verdadeiro barramento multi-mestre' que fornece arbitragem e detecção de colisão

* Cada dispositivo conectado ao barramento é endereçável por software por um endereço único

* A maioria dos dispositivos I2C pode se comunicar a 100kHz ou 400kHz

* I²C é apropriado para periféricos onde a simplicidade e o baixo custo de fabricação são mais importantes do que a velocidade

* Protocolo bem conhecido e amplamente utilizado

DESVANTAGENS

* Taxa de transferência de dados mais lenta do que SPI

* O tamanho do quadro de dados é limitado a 8 bits

* Hardware mais complicado necessário para implementar do que a tecnologia SPI

Recomendado: