Índice:
- Etapa 1: O que é I²C e por que gostamos
- Etapa 2: vamos examinar mais de perto
- Etapa 3: I²C e ZIO
- Etapa 4: Qual é o comprimento máximo do cabo?
- Etapa 5: Como conectar vários dispositivos no mesmo barramento?
- Etapa 6: O que é a rescisão I2C?
Vídeo: Apresentando I2C com módulos Zio e Qwiic: 6 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Robin Sharma disse: ‘Pequenas melhorias diárias ao longo do tempo levam a resultados impressionantes’. Você pode estar pensando, ‘Aw, outra postagem I2C?’. Bem, certamente existem milhares de informações quando se trata de I2C. Mas fique atento, este não é apenas mais um artigo da I2C. Qwiic Connect System e Zio periféricos breakout boards são definitivamente uma virada de jogo I²C!
Introdução
Se você está construindo projetos eletrônicos e fazendo coisas incríveis, deve ter percebido que, conforme seus projetos ficam maiores, sua placa de ensaio começa a parecer um poço de cobra (um pouco bagunçado, certo?).
Além disso, se você tem vários projetos em andamento, gasta muito tempo trocando os fios de um projeto para outro.
Somos criadores, então entendemos a luta. Nossa contribuição mais recente para a comunidade OHS é um sistema de prototipagem modular denominado ZIO, adotando o sistema de conexão Qwiic. Qwiic é uma maneira muito conveniente de comunicar uma placa de circuito programável para sensores, atuadores e placas de interrupção via I²C.
Etapa 1: O que é I²C e por que gostamos
I²C é o barramento multimestre mais amplamente utilizado, o que significa que vários chips podem ser conectados ao mesmo barramento. Ele é usado em muitos aplicativos entre um mestre e um escravo ou vários dispositivos mestre e escravo. De microcontroladores a smartphones e aplicações industriais, especialmente para dispositivos de vídeo como monitores de computador. Ele pode ser facilmente implementado em muitos designs eletrônicos (e, recentemente, ainda mais fácil com o conector Qwiic).
Se tivéssemos que descrever I²C em duas palavras, provavelmente usaríamos simplicidade e flexibilidade.
Uma das maiores vantagens do I²C sobre outros protocolos de comunicação é que ele é uma interface de dois fios, o que significa que precisa de apenas dois fios de sinal, SDA (Serial Data Line) e SCL (Serial Clock Line). Pode não ser o protocolo mais rápido, mas é conhecido por ser muito flexível, permitindo flexibilidade na tensão do barramento.
Outra característica marcante que torna este ônibus atraente é o companheirismo entre senhor e escravo. Vários dispositivos podem ser conectados ao mesmo barramento e não há necessidade de alterar a fiação entre os dispositivos, pois cada dispositivo tem um endereço único (o mestre seleciona o dispositivo para se comunicar).
Etapa 2: vamos examinar mais de perto
Então, como funciona o I²C? Mencionamos anteriormente que uma das características mais significativas é a tolerância de tensão, isso é possível porque o I²C usa um coletor aberto (também conhecido como dreno aberto) para as linhas de comunicação SDA e SCL.
SCL é o sinal do relógio, sincroniza a transferência de dados entre os dispositivos no barramento I²C e é gerado pelo mestre. Enquanto o SDA carrega os dados para enviar ou receber dos sensores ou outros dispositivos conectados ao barramento.
A saída para o sinal é conectada ao terra, o que significa que cada dispositivo é imposto como baixo. Para recuperar o sinal para alto, ambas as linhas são conectadas a uma tensão de alimentação positiva por meio de um resistor pull up a ser encerrado.
Com os módulos ZIO, oferecemos a você uma cobertura, todas as nossas placas de breakout incorporam o resistor pull up necessário.
I²C segue um protocolo de mensagem para comunicar o mestre com os dispositivos escravos. As duas linhas (SCL e SDA) são comuns em todos os escravos I²C, todos os escravos no barramento ouvem a mensagem.
O protocolo da mensagem segue o formato mostrado na imagem anexada:
Pode parecer complicado à primeira vista, mas temos boas notícias. Ao usar o Arduino IDE existe a biblioteca Wire.h, para simplificar toda a configuração do protocolo de mensagem I²C.
A condição inicial é gerada quando a linha de dados (SDA) cai baixo enquanto a linha do relógio (SCL) ainda está alta. Ao configurar um projeto na interface do Arduino, realmente não precisamos nos preocupar em gerar a condição inicial, ela será iniciada com uma função específica (Wire.beginTransmission (slaveAddress)).
Além disso, esta função também inicia a transmissão com o endereço de escravo específico. Para escolher o escravo para se comunicar no barramento compartilhado, o mestre passa a transmitir o endereço ao escravo para se comunicar. Depois que o endereço é definido para se comunicar com o escravo correspondente, a mensagem segue com um bit de leitura ou gravação, dependendo do modo selecionado.
O salve dá uma resposta com um reconhecimento (ACK ou NACK), e outros dispositivos escravos no barramento descontam o resto dos dados até que a mensagem seja concluída e o barramento esteja livre. Seguindo o ACK, uma sequência de um registro de endereçamento interno dos escravos continua a transmissão.
Quando os dados são enviados, a mensagem de transferência termina com uma condição de parada. Para terminar a transmissão, a linha de dados muda para alta e a linha do relógio permanece alta.
Etapa 3: I²C e ZIO
Descobrimos que seria melhor projetar todas as informações acima em uma conversa entre um mestre (também conhecido como Zuino, nosso micro) e escravos (também conhecido como placas de apoio ZIO).
Neste exemplo básico, estamos usando o sensor de distância ZIO TOF e o ZIO OLED Display. O TOF fornece as informações de distância enquanto o ZIO Oled exibe os dados. Os componentes e dispositivos usados:
- ZUINO M UNO - o Mestre
- Display OLED ZIO - Slave_01
- Sensor de distância ZIO TOF - Slave_02
- Cabo Qwiic - Conexão fácil para dispositivos I²C
Veja como é fácil conectar as placas entre si usando Qwiic, sem necessidade de protoboard, cabos adicionais integrados ou pinos ZUINO. A linha serial Clock and Data do ZUINO é conectada automaticamente ao sensor de distância e OLED usando o conector Qwiic. Os outros dois cabos são o 3V3 e o GND.
Em primeiro lugar, vamos dar uma olhada nas informações necessárias, para comunicar o mestre com os escravos precisaríamos saber os endereços exclusivos.
Dispositivo: Sensor de distância ZIO
- Número da peça: RFD77402
- Endereço I2C: 0x4C
- Link da folha de dados
Dispositivo: ZIO OLED Display
- Número da peça: SSD1306
- Endereço: 0x3C
- Link da folha de dados
Para encontrar o endereço exclusivo dos dispositivos escravos, abra a folha de dados fornecida. Para o sensor de distância o endereço é fornecido na seção Interface do Módulo. Cada sensor ou componente possui uma folha de dados diferente com diferentes informações fornecidas. Às vezes, pode ser difícil encontrá-lo em uma folha de dados de 30 páginas (dica: abra a ferramenta Localizar no visualizador de PDF e digite “endereço” ou “ID do dispositivo” para uma pesquisa rápida).
Agora que o endereço exclusivo de cada dispositivo é conhecido, para ler / gravar dados, o endereço do registro interno deve ser identificado (também na folha de dados). Dando uma olhada na folha de dados do sensor de distância ZIO, o endereço para obter a distância corresponde a 0x7FF.
Neste caso específico, realmente não precisamos dessas informações para usar o sensor, pois a biblioteca já faz isso.
Próxima etapa, passe o código. ZUINO M UNO é compatível com Arduino IDE, o que torna a configuração muito mais fácil. As bibliotecas necessárias para este projeto são as seguintes:
- Wire.h
- Adafruit_GFX.h
- Adafruit_SSD1306.h
- SparkFun_RFD77402_Arduino_Library.h
Wire.h é uma biblioteca arduino, as duas bibliotecas Adafruit são usadas para o OLED e as últimas são usadas para o sensor de distância. Verifique este tutorial sobre como vincular bibliotecas *.zip ao Arduino IDE.
Olhando para o código, primeiro as bibliotecas devem ser declaradas, bem como o endereço para o OLED.
Na configuração (), a transmissão começa e o texto é exibido para a funcionalidade do sensor de distância.
O loop () mede a distância e o OLED a imprime.
Verifique o exemplo de código-fonte no link do github.
Usar ambas as placas de breakout é muito fácil em todos os sentidos. No lado do hardware, o conector Qwiic torna a configuração do hardware mais rápida e muito menos confusa do que ter uma placa de ensaio e fios de jumper. E para o firmware, usando as bibliotecas correspondentes para a comunicação I2C, o sensor e o display tornam o código muito mais simples.
Etapa 4: Qual é o comprimento máximo do cabo?
O comprimento máximo depende dos resistores pull up usados para SDA e SCL e da capacitância do cabo. Os resistores também determinam a velocidade do barramento, quanto menor a velocidade do barramento, maior o limite do cabo. A capacitância do cabo limita o número de dispositivos no barramento, bem como o comprimento do cabo. As aplicações típicas limitam o comprimento do fio a 2,5-3,5 m (9-12 pés), mas há variação dependendo do cabo usado. Para referência, o comprimento máximo em aplicações I2C usando cabos blindados de par trançado 22 AWG é de cerca de 1 m (3 pés) a 100 kbaund, 10 m (30 pés) a 10 kbaud.
Existem alguns sites como mogami ou WolframAlpha que permitem estimar o comprimento do cabo.
Etapa 5: Como conectar vários dispositivos no mesmo barramento?
I2C é um barramento serial, onde todos os dispositivos são conectados a um barramento compartilhado. Com o conector Qwiic, as diferentes placas de breakout podem ser conectadas uma após a outra usando o conector Qwiic. Cada placa possui pelo menos 2 conectores Qwiic.
Criamos diferentes placas para resolver algumas das limitações de Qwiic e I2C. A placa adaptadora Zio Qwiic é usada para conectar através de dispositivos Qwiic sem um conector Qwiic, usando Qwiic para o cabo conector macho da placa de ensaio. Este truque simples cria possibilidades ilimitadas.
Para conectar diferentes dispositivos em um barramento ou rede de árvore, criamos o Zio Qwiic Hub.
Por último, mas não menos importante, o Zio Qwiic MUX permite a conexão de dois ou mais dispositivos usando o mesmo endereço.
Etapa 6: O que é a rescisão I2C?
I2C é necessário para terminar, então a linha está livre para adicionar outros dispositivos. Isso pode ser um pouco confuso, pois o termo de terminação é comumente usado para descrever os resistores pull-up do barramento (para fornecer um estado padrão, neste caso, para fornecer corrente ao circuito). Para placas Zuino, o valor do resistor é 4,7 kΩ.
Se a terminação for omitida, não haverá comunicação no barramento - o mestre não seria capaz de gerar a condição de início, então a mensagem não será transmitida aos escravos.
Para obter mais informações e recursos Zio, verifique os produtos Zio mais recentes. O objetivo deste artigo é explicar os fundamentos da comunicação I²C e como ela funciona com o conector Zio e Qwiic. Fique atento para mais atualizações.
Recomendado:
Lanterna vestível (apresentando o CPX): 8 etapas
Lanterna vestível (com o CPX): Olá a todos, fiz uma lanterna vestível que pode ser usada na mão. Usei o código do Adafruit, um site de programação onde você coloca blocos de código juntos. Neste instrutível, direi o que fiz para codificar o CPX (Circuit Playground Ex
Braço robótico com módulos Zio Parte 3: 4 etapas
Braço robótico com módulos Zio Parte 3: Esta postagem do blog é parte da série Zio Robotics. Introdução Em nosso blog anterior, postamos o tutorial das Partes 1 e 2 sobre como controlar um braço robótico usando módulos Zio. A Parte 1 concentrou-se principalmente no controle automático da garra do braço robótico para
Braço robótico com módulos Zio Parte 2: 11 etapas
Braço robótico com módulos Zio Parte 2: No tutorial de hoje, vamos utilizar todos os 4 servos e um controlador sem fio PS2 para controlar o braço robótico. Esta postagem do blog faz parte da Série Zio Robotics. Introdução Em nosso blog anterior, postamos a Parte 1 tutorial sobre como controlar um Robotic Ar
Controle um braço robótico com módulos Zio Parte 1: 8 etapas
Controle um braço robótico com módulos Zio Parte 1: Esta postagem do blog é parte da série Zio Robotics. Introdução Neste tutorial, construiremos um projeto onde usaremos módulos Zio para controlar o braço robótico. Este projeto irá ensiná-lo a fazer com que sua garra de braço robótico abra e feche. Este n
Apresentando LoRa ™!: 19 etapas
Apresentando LoRa ™ !: LoRa ™ = Telemetria de dados sem fio de longo alcance e se refere a uma abordagem radical de modulação de dados de espectro de propagação sem fio de 2 vias VHF / UHF que foi recentemente desenvolvida & trademarked (™) pela Semtech - uma multinacional eleita dos EUA há muito estabelecida (1960)