Índice:

Arduino I2C Sniffer: 4 etapas
Arduino I2C Sniffer: 4 etapas

Vídeo: Arduino I2C Sniffer: 4 etapas

Vídeo: Arduino I2C Sniffer: 4 etapas
Vídeo: How I2C Communication Works and How To Use It with Arduino 2024, Novembro
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

I2C é um protocolo serial usado para comunicar um microcontrolador com periféricos externos conectados ao mesmo circuito. Cada periférico deve ter um número de identificação exclusivo chamado endereço que é usado para identificá-lo como o destinatário pretendido de uma determinada mensagem. Esses endereços são atribuídos pelo fabricante do dispositivo e na maioria das vezes não podem ser alterados. Um farejador verifica todos os endereços possíveis em busca de dispositivos conectados e relata aqueles que encontrar. Isso ajuda a identificar os chips não marcados, pois o endereço pode ser pesquisado no Google para obter mais informações sobre o chip.

Este dispositivo imita em um Arduino UNO o comportamento do script i2cdetect do Raspberry Pi, farejando todos os endereços i2c possíveis à procura de dispositivos conectados e imprimindo os resultados muito bem em uma tela LCD 16x02.

Para caber tudo na tela, as partes superior e inferior do endereço são impressas acima dos resultados, sendo a parte superior em negrito. Dois botões permitem navegar entre os endereços, mostrando 16 endereços por vez. Caso um dispositivo seja detectado, W será impresso para mostrá-lo como um endereço de escrita e R seria mostrado no caso de ser um endereço de leitura. Caso nada seja detectado naquele endereço, um hífen (-) será mostrado na tela.

Etapa 1: Materiais

Materiais
Materiais
Materiais
Materiais

Opção 1

1 x Arduino UNO

1 x 16x02 tela LCD

1x potenciômetro 10K

1x resistor de 330 ohm

3x botões de pressão

Cabos jumper

1x deslocador de nível I2C (não na imagem de materiais)

opção 2

1 x Arduino UNO

Escudo do teclado LCD (os botões do escudo não serão usados)

3x botões de pressão

Cabos jumper

1x deslocador de nível I2C (não na imagem de materiais)

A opção 2 é a que será construída porque é isso que eu tinha em mãos no momento. O deslocador de nível é uma parte importante do circuito, pois hoje em dia a maioria dos dispositivos usa lógica de 3,3 V e os 5 V do Arduino os danifica.

(Nas fotos, o material riscado não é necessário.)

Etapa 2: Circuito

O circuito
O circuito
O circuito
O circuito
O circuito
O circuito

O circuito é bastante simples, usando a pinagem padrão para os exemplos do Arduino para o LCD, os pinos padrão para I2C e 3 pinos sobressalentes para os botões.

Caso você use a proteção do teclado do LCD, a pinagem do LCD muda, mas isso já é considerado no código. Os botões de blindagem do teclado de LCD não são usados porque exigem um método de pesquisa analógica que quebra a compatibilidade entre os dois circuitos de implementação possíveis (blindagem e LCD autônomo)

Etapa 3: Código

Código
Código

Caso a proteção do teclado LCD seja usada, #define LCD_SHIELD deve ser deixado sem comentário no início do esboço. Caso contrário, comente-o para usar o primeiro diagrama.

Etapa 4: Conclusões

Conclusões
Conclusões
Conclusões
Conclusões
Conclusões
Conclusões

Para testar o código e o circuito, um chip BQ32000 RTC e um acelerômetro MMA8452Q foram usados. Como pode ser visto nas fotos, o dispositivo está detectando 4 endereços: 0x3A e 0xD0 como endereços de gravação e 0x3B e 0xD1 como endereços de leitura. Esses endereços correspondem aos dispositivos de teste, portanto, o código está funcionando.

Gostaria de agradecer às amáveis meninas da Beijing Makerspace, Fu Yao e Liu Xin, por me ajudarem a obter os materiais necessários para testar este projeto em tão pouco tempo.

Recomendado: