Πίνακας περιεχομένων:

Arduino I2C Sniffer: 4 Βήματα
Arduino I2C Sniffer: 4 Βήματα

Βίντεο: Arduino I2C Sniffer: 4 Βήματα

Βίντεο: Arduino I2C Sniffer: 4 Βήματα
Βίντεο: Подключаем текстовый LCD 16x2 к arduino по I2C 2024, Νοέμβριος
Anonim
Arduino I2C Sniffer
Arduino I2C Sniffer

Το I2C είναι ένα σειριακό πρωτόκολλο που χρησιμοποιείται για την επικοινωνία ενός μικροελεγκτή με εξωτερικά περιφερειακά που είναι προσαρτημένα στο ίδιο κύκλωμα. Κάθε περιφερειακό πρέπει να έχει έναν μοναδικό αριθμό ταυτότητας που ονομάζεται διεύθυνση και χρησιμοποιείται για την αναγνώρισή του ως προορισμένου παραλήπτη ενός δεδομένου μηνύματος. Αυτές οι διευθύνσεις εκχωρούνται από τον κατασκευαστή της συσκευής και τις περισσότερες φορές δεν μπορούν να αλλάξουν. Ένας ανιχνευτής σαρώνει όλες τις πιθανές διευθύνσεις αναζητώντας συνδεδεμένες συσκευές και αναφέρει αυτές που βρίσκει. Αυτό βοηθά στον εντοπισμό μη μαρκαρισμένων μαρκών, καθώς στη συνέχεια η διεύθυνση μπορεί να αναζητηθεί στο Google για περισσότερες πληροφορίες σχετικά με το τσιπ.

Αυτή η συσκευή μιμείται σε Arduino UNO τη συμπεριφορά του σεναρίου Raspberry Pi i2cdetect, μυρίζοντας όλες τις πιθανές διευθύνσεις i2c αναζητώντας συνδεδεμένες συσκευές και εκτυπώνοντας όμορφα τα αποτελέσματα σε οθόνη LCD 16x02.

Για να χωρέσουν τα πάντα στην οθόνη, τόσο το υψηλό όσο και το χαμηλό τμήμα της διεύθυνσης εκτυπώνονται πάνω από τα αποτελέσματα, ενώ το υψηλό μέρος είναι σε έντονη γραμματοσειρά. Δύο κουμπιά επιτρέπουν την πλοήγηση μεταξύ των διευθύνσεων, εμφανίζοντας 16 διευθύνσεις ταυτόχρονα. Σε περίπτωση ανίχνευσης μιας συσκευής, το W θα εκτυπωθεί για να εμφανιστεί ως διεύθυνση γραφής και το R θα εμφανιστεί σε περίπτωση που πρόκειται για διεύθυνση ανάγνωσης. Σε περίπτωση που δεν εντοπιστεί τίποτα στη συγκεκριμένη διεύθυνση, θα εμφανιστεί μια παύλα (-) στην οθόνη.

Βήμα 1: Υλικά

Υλικά
Υλικά
Υλικά
Υλικά

Επιλογή 1

1 x Arduino UNO

1 x 16x02 οθόνη LCD

1x ποτενσιόμετρο 10Κ

Αντίσταση 1x 330 ohm

3x Πιέστε τα κουμπιά

Καλώδια βραχυκύκλωσης

1x μετατροπέας επιπέδου I2C (όχι στην εικόνα υλικών)

Επιλογή 2

1 x Arduino UNO

Ασπίδα πληκτρολογίου LCD (τα κουμπιά στην ασπίδα δεν θα χρησιμοποιηθούν)

3x Πιέστε τα κουμπιά

Καλώδια βραχυκύκλωσης

1x μετατροπέας επιπέδου I2C (όχι στην εικόνα υλικών)

Η επιλογή 2 είναι αυτή που θα χτιστεί γιατί αυτό είχα στο χέρι αυτή τη στιγμή. Ο μετατοπιστής στάθμης είναι ένα σημαντικό μέρος του κυκλώματος καθώς στις μέρες μας οι περισσότερες συσκευές χρησιμοποιούν λογική 3.3V και το 5V από το Arduino τις βλάπτει.

(Στις εικόνες, το διαγραμμένο υλικό δεν απαιτείται.)

Βήμα 2: Κύκλωμα

Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα
Κύκλωμα

Το κύκλωμα είναι αρκετά απλό, χρησιμοποιώντας το τυπικό pinout για τα παραδείγματα Arduino για την οθόνη LCD, τις προεπιλεγμένες ακίδες για I2C και 3 εφεδρικές ακίδες για τα κουμπιά ώθησης.

Σε περίπτωση που χρησιμοποιείτε την ασπίδα πληκτρολογίου LCD, το pinout για την οθόνη LCD αλλάζει, αλλά αυτό έχει ήδη ληφθεί υπόψη στον κώδικα. Τα κουμπιά ασπίδας πληκτρολογίου LCD δεν χρησιμοποιούνται επειδή απαιτούν αναλογική μέθοδο ψηφοφορίας που σπάει τη συμβατότητα μεταξύ των δύο πιθανών κυκλωμάτων υλοποίησης (ασπίδα και αυτόνομη οθόνη LCD)

Βήμα 3: Κωδικός

Κώδικας
Κώδικας

Σε περίπτωση που χρησιμοποιείται η ασπίδα πληκτρολογίου LCD, το #define LCD_SHIELD πρέπει να μείνει χωρίς σχολιασμό στην αρχή του σκίτσου. Διαφορετικά, σχολιάστε το για να χρησιμοποιήσετε το πρώτο διάγραμμα.

Βήμα 4: Συμπεράσματα

Συμπεράσματα
Συμπεράσματα
Συμπεράσματα
Συμπεράσματα
Συμπεράσματα
Συμπεράσματα

Για τον έλεγχο του κώδικα και του κυκλώματος, χρησιμοποιήθηκε ένα τσιπ BQ32000 RTC και ένα επιταχυνσιόμετρο MMA8452Q. Όπως φαίνεται στις εικόνες, η συσκευή ανιχνεύει 4 διευθύνσεις: 0x3A και 0xD0 ως διευθύνσεις εγγραφής και 0x3B και 0xD1 ως διευθύνσεις ανάγνωσης. Αυτές οι διευθύνσεις αντιστοιχούν στις δοκιμαστικές συσκευές, επομένως ο κώδικας λειτουργεί.

Θα ήθελα να ευχαριστήσω τα ευγενικά κορίτσια στο Beijing Makerspace, Fu Yao και Liu Xin, που με βοήθησαν να πάρω τα υλικά που απαιτούνται για τη δοκιμή αυτού του έργου σε τόσο σύντομο χρονικό διάστημα.

Συνιστάται: