Table des matières:
2025 Auteur: John Day | [email protected]. Dernière modifié: 2025-01-13 06:57
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
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
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
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
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.