Table des matières:

Renifleur Arduino I2C : 4 étapes
Renifleur Arduino I2C : 4 étapes

Vidéo: Renifleur Arduino I2C : 4 étapes

Vidéo: Renifleur Arduino I2C : 4 étapes
Vidéo: Keyestudio 37-in-1 Sensor Kit pour MicroBit and Arduino #30 et #31 2024, Novembre
Anonim
Renifleur Arduino I2C
Renifleur Arduino I2C

I2C est un protocole série utilisé pour communiquer un microcontrôleur avec des périphériques externes connectés au même circuit. Chaque périphérique doit avoir un numéro d'identification unique appelé adresse qui est utilisé pour l'identifier en tant que destinataire prévu d'un message donné. Ces adresses sont attribuées par le fabricant de l'appareil et la plupart du temps, elles ne peuvent pas être modifiées. Un renifleur scanne toutes les adresses possibles à la recherche d'appareils connectés et signale ceux qu'il trouve. Cela permet d'identifier les puces non marquées, car l'adresse peut alors être recherchée sur Google pour plus d'informations sur la puce.

Cet appareil imite sur un Arduino UNO le comportement du script Raspberry Pi i2cdetect, reniflant toutes les adresses i2c possibles à la recherche d'appareils connectés et imprimant joliment les résultats sur un écran LCD 16x02.

Pour que tout s'affiche à l'écran, les parties haute et basse de l'adresse sont imprimées au-dessus des résultats, la partie haute étant en caractères gras. Deux boutons poussoirs permettent de naviguer entre les adresses, affichant 16 adresses à la fois. Si un périphérique est détecté, W sera affiché pour l'afficher comme adresse d'écriture et R s'affichera s'il s'agit d'une adresse de lecture. Si rien n'est détecté à cette adresse, un tiret (-) s'affichera à l'écran.

Étape 1: Matériaux

Matériaux
Matériaux
Matériaux
Matériaux

Option 1

1 x Arduino UNO

1 écran LCD 16x02

1x potentiomètre 10K

1x résistance de 330 ohms

3x boutons poussoirs

Câbles de démarrage

1x décaleur de niveau I2C (pas sur l'image des matériaux)

Option 2

1 x Arduino UNO

Écran du clavier LCD (les boutons du bouclier ne seront pas utilisés)

3x boutons poussoirs

Câbles de démarrage

1x décaleur de niveau I2C (pas sur l'image des matériaux)

L'option 2 est celle qui sera construite car c'est ce que j'avais sous la main en ce moment. Le décaleur de niveau est une partie importante du circuit car de nos jours, la plupart des appareils utilisent une logique de 3,3 V et le 5 V de l'Arduino les endommage.

(Sur les photos, le matériel barré n'est pas requis.)

Étape 2: Circuit

Circuit
Circuit
Circuit
Circuit
Circuit
Circuit

Le circuit est assez simple, utilisant le brochage standard pour les exemples Arduino pour l'écran LCD, les broches par défaut pour I2C et 3 broches de rechange pour les boutons-poussoirs.

Si vous utilisez le LCD Keypad Shield, le brochage de l'écran LCD change, mais cela est déjà pris en compte dans le code. Les boutons LCD Keypad Shield ne sont pas utilisés car ils nécessitent une méthode d'interrogation analogique qui rompt la compatibilité entre les deux circuits de mise en œuvre possibles (Shield et LCD autonome)

Étape 3: Coder

Code
Code

Si le LCD Keypad Shield est utilisé, #define LCD_SHIELD ne doit pas être commenté au début du croquis. Sinon, commentez-le pour utiliser le premier schéma.

Étape 4: Conclusions

Conclusion
Conclusion
Conclusion
Conclusion
Conclusion
Conclusion

Pour tester le code et le circuit, une puce BQ32000 RTC et un accéléromètre MMA8452Q ont été utilisés. Comme on peut le voir sur les photos, l'appareil détecte 4 adresses: 0x3A et 0xD0 comme adresses d'écriture, et 0x3B et 0xD1 comme adresses de lecture. Ces adresses correspondent aux appareils de test donc le code fonctionne.

Je tiens à remercier les gentilles filles de Beijing Makerspace, Fu Yao et Liu Xin, pour m'avoir aidé à obtenir le matériel nécessaire pour tester ce projet dans un délai aussi court.

Conseillé: