Πίνακας περιεχομένων:
- Βήμα 1: Μερικές εντολές Shell
- Βήμα 2: Περίπτωση 1: Οι συσκευές I2c έχουν την ίδια διεύθυνση
- Βήμα 3: Περίπτωση 2: Διαφορετικές διευθύνσεις I2c
Βίντεο: Raspberry PI Πολλαπλές συσκευές I2C: 3 βήματα
2024 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2024-01-30 08:35
Απογοητευμένος επειδή δεν μπορείτε να χρησιμοποιήσετε πολλαπλάσια των ίδιων συσκευών I2C στο έργο σας. Δεν χρειάζεται να χρησιμοποιείτε αργούς πολυπλέκτες. Ο τελευταίος πυρήνας raspbian υποστηρίζει τη δημιουργία πολλαπλών λεωφορείων I2C χρησιμοποιώντας καρφίτσες GPIO. Αυτή η λύση είναι εξαιρετικά γρήγορη.
Βήμα 1: Μερικές εντολές Shell
Συνδέστε μία από τις συσκευές σας i2c όσο είναι το raspberry pi, ξεκινήστε το raspberry pi και τρέξτε
sudo i2cdetect -y 1
Θα δείτε έναν πίνακα όπως στο συνημμένο σχήμα. Έχω προσαρτήσει έναν αισθητήρα θερμοκρασίας BMP280 και βαρομετρικής πίεσης. Η διεύθυνση i2c είναι 0x76 σύμφωνα με τον πίνακα. Σημειώστε αυτήν τη διεύθυνση.
Κάντε αυτό για όλες τις συσκευές σας i2c.
Βήμα 2: Περίπτωση 1: Οι συσκευές I2c έχουν την ίδια διεύθυνση
Αυτή ήταν πάντα η προβληματική περίπτωση. Ένας δίαυλος i2c μπορεί να χειριστεί πολλές συσκευές, αλλά θα πρέπει να έχουν διαφορετικές διευθύνσεις i2c. Ορισμένες συσκευές i2c διαθέτουν βραχυκυκλωτήρες για να ορίσουν άλλες διευθύνσεις i2c, αλλά πολλές όχι. Σε αυτήν την περίπτωση, μπορείτε να χρησιμοποιήσετε έναν πολυπλέκτη i2c (υλικό) για να περιστρέψετε το i2c SDA (Δεδομένα) και SCL (Ρολόι) ή μπορείτε να δημιουργήσετε ένα πρόσθετο δίαυλο i2c ή περισσότερο.
Θα δημιουργήσω δύο επιπλέον λεωφορεία, nl bus 3 και 4
Ανοίξτε το cli και τρέξτε
cd /boot
sudo nano config.txt
Προσθέστε την ακόλουθη γραμμή κώδικα, κατά προτίμηση στην ενότητα όπου είναι ενεργοποιημένα τα spi και i2c.
dtoverlay = i2c-gpio, bus = 4, i2c_gpio_delay_us = 1, i2c_gpio_sda = 23, i2c_gpio_scl = 24
Αυτή η γραμμή θα δημιουργήσει ένα πρόσθετο i2c bus (bus 4) στο GPIO 23 ως SDA και GPIO 24 ως SCL (το GPIO 23 και 24 είναι προεπιλεγμένο)
Προσθέστε επίσης την ακόλουθη γραμμή για να δημιουργήσετε το δίαυλο i2c 3
dtoverlay = i2c-gpio, bus = 3, i2c_gpio_delay_us = 1, i2c_gpio_sda = 17, i2c_gpio_scl = 27
Το GPIO 17 θα είναι το SDA και το GPIO 27 θα είναι το SCL για το i2c bus 4.
Πατήστε το κουμπί ελέγχου X για έξοδο.
Σημείωση σχετικά με την αρίθμηση λεωφορείων και την παραγγελία:
Ποτέ μην χρησιμοποιείτε το λεωφορείο 0 και 2, χρησιμοποιείται για άλλα πράγματα στον πίνακα, όπως eprom σε καπέλα κλπ
Για την raspbian κυκλοφορία του Απριλίου 2019:
Θα πρέπει πάντα να ξεκινάτε με το υψηλότερο λεωφορείο (Λεωφορείο 4 σε αυτήν την περίπτωση) στο config.txt και να περνάτε στο χαμηλότερο λεωφορείο (λεωφορείο 3).
Το χαμηλότερο λεωφορείο πρέπει πάντα να είναι το δίαυλο 3
Εάν χρειάζεστε 5 επιπλέον λεωφορεία, τα λεωφορεία πρέπει να είναι της τάξης των 7, 6, 5, 4, 3
Αυτό το ζήτημα κατά την παραγγελία του λεωφορείου δεν υπήρχε όταν γράφτηκε αρχικά αυτό το Instructable. Φαίνεται ότι έγιναν αλλαγές στον πυρήνα.
Κλείστε το PI σας, απενεργοποιήστε το. Συνδέστε τις συσκευές σας i2c στο δίαυλο 4 (SDA στο GPIO 23 και SCL στο GPIO 24) και το άλλο στο δίαυλο i2c 3 (SDA στο GPIO 17 και SCL στο GPIO 27).
Ενεργοποιήστε το pi.
Τρέξιμο:
sudo i2cdetect -l (πεζά γράμματα L)
Τώρα θα δείτε ότι ο δίαυλος i2c 3 και 4 παρατίθεται επίσης. Επίσης εκτελέστε:
sudo i2cdetect -y 3
sudo i2cdetect -y 4
Τώρα μπορείτε να χρησιμοποιήσετε τον αισθητήρα σας στη γλώσσα προγραμματισμού σας. Θυμηθείτε να καθορίσετε τα σωστά λεωφορεία i2c.
Το Attach είναι ένα παράδειγμα για τον δημοφιλή αισθητήρα θερμοκρασίας και πίεσης BMP280. Κανένας πολυπλέκτης δεν μπορεί να διαβάσει 2 BMP280 τόσο γρήγορα.
Επισυνάπτεται επίσης ένα παράδειγμα 2 αισθητήρων Sensirion SDP 810. Και πάλι δουλεύω πολύ πιο γρήγορα από τον πολυπλέκτη που χρησιμοποιούσα στο παρελθόν
Δημιούργησα κώδικα python για να διαβάσω δύο νέα BMP388 από το adafruit.
Μπορεί επίσης να προσθέσω άλλους αισθητήρες στο μέλλον στο
Βήμα 3: Περίπτωση 2: Διαφορετικές διευθύνσεις I2c
Απλός. Το i2c είναι ένα λεωφορείο. Το πούλι λεωφορείου πρόκειται να επικοινωνεί με πολλές συσκευές. Συνδέστε τις συσκευές παράλληλα με τον ίδιο δίαυλο i2c. Μπορείτε να χρησιμοποιήσετε το λεωφορείο ένα.
Τρέξιμο:
sudo i2cdetect -y 1
Θα δείτε τις συσκευές που παρατίθενται.
Συνιστάται:
Arduino Connect Πολλαπλές συσκευές I2C: 6 βήματα
Arduino Connect Multiple I2C Devices: Σε αυτό το σεμινάριο θα μάθουμε πώς να συνδέουμε αρκετές μονάδες με σύνδεση I2C στο arduino. Δείτε το Βίντεο! Στην περίπτωσή μας θα χρησιμοποιήσουμε 4 Οθόνες OLED ως παράδειγμα, αλλά μπορείτε να χρησιμοποιήσετε οποιαδήποτε άλλη ενότητα I2C/ αν θέλετε αισθητήρες. Σημείωση: 4 OLED Displays co
Διακόπτης Tuchless για οικιακές συσκευές -- Ελέγξτε τις οικιακές σας συσκευές χωρίς κανέναν διακόπτη: 4 βήματα
Διακόπτης Tuchless για οικιακές συσκευές || Ελέγξτε τις οικιακές σας συσκευές χωρίς κανέναν διακόπτη: Αυτός είναι ένας διακόπτης χωρίς κάλυμμα για οικιακές συσκευές. Μπορείτε να το χρησιμοποιήσετε σε οποιονδήποτε δημόσιο χώρο έτσι ώστε να βοηθήσει στην καταπολέμηση οποιουδήποτε ιού. Το κύκλωμα βασίζεται σε κύκλωμα σκοτεινού αισθητήρα που κατασκευάζεται από το Op-Amp και το LDR. Δεύτερο σημαντικό μέρος αυτού του κυκλώματος SR Flip-Flop με Sequencell
Πώς να διαβάσετε πολλαπλές αναλογικές τιμές χρησιμοποιώντας ένα αναλογικό pin: 6 βήματα (με εικόνες)
Πώς να διαβάσετε πολλαπλές αναλογικές τιμές χρησιμοποιώντας ένα αναλογικό pin: Σε αυτό το σεμινάριο, θα σας δείξω πώς να διαβάζετε πολλαπλές αναλογικές τιμές χρησιμοποιώντας μόνο ένα αναλογικό pin pin
Σεμινάριο: Πώς το Arduino ελέγχει πολλαπλές συσκευές ίδιας διεύθυνσης χρησιμοποιώντας το TCA9548A I2C Multiplexer: 3 βήματα
Φροντιστήριο: Πώς το Arduino ελέγχει πολλαπλές συσκευές ίδιας διεύθυνσης χρησιμοποιώντας το TCA9548A I2C Multiplexer: Περιγραφή: Το TCA9548A I2C Multiplexer Module πρέπει να επιτρέπει τη σύνδεση συσκευών με την ίδια διεύθυνση I2C (έως 8 ίδια διεύθυνση I2C) συνδεδεμένες σε έναν μικροελεγκτή. Ο πολυπλέκτης λειτουργεί ως θυρωρός, μεταφέροντας τις εντολές στο επιλεγμένο σύνολο
Πώς να ρυθμίσετε πολλαπλές οθόνες στο Linux: 6 βήματα
Πώς να ρυθμίσετε πολλαπλές οθόνες στο Linux: αυτό το σεμινάριο θα σας δείξει πώς να ρυθμίσετε ένα σύστημα πολλαπλών κεφαλών στις περισσότερες διανομές Linux, κυρίως στο ubuntu. Παρακαλώ σημειώστε, αυτό είναι ακόμα σε μεγάλο βαθμό ημιτελές