2025 Autor: John Day | [email protected]. Última modificação: 2025-01-13 06:58
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
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 é 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
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
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.