Índice:
- Etapa 1: Requisito de Hardware
- Etapa 2: tópicos abordados
- Etapa 3: Noções básicas de barramento I2C
- Etapa 4: Módulo Multiplexador I2C TCA9548A
- Etapa 5:
- Etapa 6: como o mestre envia e recebe dados
- Etapa 7: Código
- Etapa 8: Scanner I2C
- Etapa 9: Fiação e demonstração
- Etapa 10: Vantagens e Desvantagens
- Etapa 11: Obrigado
Vídeo: Módulo Multiplexador I2C TCA9548A - Com Arduino e NodeMCU: 11 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
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
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
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
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:
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
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
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
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:
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
* 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:
Tutorial: como o Arduino controla vários dispositivos com o mesmo endereço usando o multiplexador TCA9548A I2C: 3 etapas
Tutorial: Como o Arduino controla vários dispositivos do mesmo endereço usando o multiplexador TCA9548A I2C: Descrição: O módulo do multiplexador TCA9548A I2C permite conectar dispositivos com o mesmo endereço I2C (até 8 mesmo endereço I2C) conectados a um microcontrolador. O multiplexador atua como um porteiro, transferindo os comandos para o conjunto selecionado de
Visor LCD I2C / IIC - Use um LCD SPI para o visor LCD I2C Usando o módulo SPI para IIC com Arduino: 5 etapas
Visor LCD I2C / IIC | Use um LCD SPI para o Display LCD I2C Usando o Módulo SPI para IIC com Arduino: Oi pessoal, já que um LCD SPI 1602 normal tem muitos fios para conectar, então é muito difícil fazer a interface com o arduino, mas há um módulo disponível no mercado que pode converter a exibição SPI em exibição IIC, então você precisa conectar apenas 4 fios
Módulo do controlador Uber I2C LCD: 6 etapas
Módulo controlador Uber I2C LCD: PreâmbuloEste detalha como criar um módulo controlador com base em LCD HD44780 (foto 1 acima). O módulo permite ao usuário controlar todos os aspectos do LCD programaticamente em I2C, compreendendo; LCD e display, contraste e luz de fundo intens
Módulo RF 433MHZ - Faça receptor e transmissor de módulo RF 433MHZ sem qualquer microcontrolador: 5 etapas
Módulo RF 433MHZ | Faça receptor e transmissor de módulo RF 433MHZ sem qualquer microcontrolador: gostaria de enviar dados sem fio? facilmente e sem a necessidade de microcontrolador? Vamos lá, neste instrutível vou mostrar meu transmissor e receptor rf básico pronto para ser usado! Neste instrutível você pode enviar e receber dados usando muito ver
Porta USB NODEMcu não funciona? Faça upload do código usando o módulo USB para TTL (FTDI) em apenas 2 etapas: 3 etapas
Porta USB NODEMcu não funciona? Faça upload do código usando o módulo USB para TTL (FTDI) em apenas 2 etapas: Cansado de conectar muitos fios do módulo USB para TTL ao NODEMcu, siga estas instruções para fazer upload do código em apenas 2 etapas. Se a porta USB do NODEMcu não está funcionando, então não entre em pânico. É apenas o chip do driver USB ou o conector USB