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

Raspberry PI Πολλαπλές συσκευές I2C: 3 βήματα
Raspberry PI Πολλαπλές συσκευές I2C: 3 βήματα

Βίντεο: Raspberry PI Πολλαπλές συσκευές I2C: 3 βήματα

Βίντεο: Raspberry PI Πολλαπλές συσκευές I2C: 3 βήματα
Βίντεο: BTT GTR v1.0/M5 v1.0 - Basics 2024, Ιούλιος
Anonim
Raspberry PI Πολλαπλές συσκευές I2C
Raspberry PI Πολλαπλές συσκευές I2C
Raspberry PI Πολλαπλές συσκευές I2C
Raspberry PI Πολλαπλές συσκευές I2C

Απογοητευμένος επειδή δεν μπορείτε να χρησιμοποιήσετε πολλαπλάσια των ίδιων συσκευών I2C στο έργο σας. Δεν χρειάζεται να χρησιμοποιείτε αργούς πολυπλέκτες. Ο τελευταίος πυρήνας raspbian υποστηρίζει τη δημιουργία πολλαπλών λεωφορείων I2C χρησιμοποιώντας καρφίτσες GPIO. Αυτή η λύση είναι εξαιρετικά γρήγορη.

Βήμα 1: Μερικές εντολές Shell

Μερικές εντολές Shell
Μερικές εντολές Shell

Συνδέστε μία από τις συσκευές σας i2c όσο είναι το raspberry pi, ξεκινήστε το raspberry pi και τρέξτε

sudo i2cdetect -y 1

Θα δείτε έναν πίνακα όπως στο συνημμένο σχήμα. Έχω προσαρτήσει έναν αισθητήρα θερμοκρασίας BMP280 και βαρομετρικής πίεσης. Η διεύθυνση i2c είναι 0x76 σύμφωνα με τον πίνακα. Σημειώστε αυτήν τη διεύθυνση.

Κάντε αυτό για όλες τις συσκευές σας i2c.

Βήμα 2: Περίπτωση 1: Οι συσκευές I2c έχουν την ίδια διεύθυνση

Περίπτωση Πρώτη: Οι συσκευές I2c έχουν την ίδια διεύθυνση
Περίπτωση Πρώτη: Οι συσκευές 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

Θα δείτε τις συσκευές που παρατίθενται.

Συνιστάται: