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

Ξεκινώντας με τη διεπαφή αισθητήρα I2C; - Διασυνδέστε το MMA8451 σας χρησιμοποιώντας ESP32: 8 βήματα
Ξεκινώντας με τη διεπαφή αισθητήρα I2C; - Διασυνδέστε το MMA8451 σας χρησιμοποιώντας ESP32: 8 βήματα

Βίντεο: Ξεκινώντας με τη διεπαφή αισθητήρα I2C; - Διασυνδέστε το MMA8451 σας χρησιμοποιώντας ESP32: 8 βήματα

Βίντεο: Ξεκινώντας με τη διεπαφή αισθητήρα I2C; - Διασυνδέστε το MMA8451 σας χρησιμοποιώντας ESP32: 8 βήματα
Βίντεο: #18 Εκτεταμένες Είσοδοι I2C Έξοδοι | Outseal Arduino PLC 2024, Νοέμβριος
Anonim
Ξεκινώντας με τη διεπαφή αισθητήρα I2C; - Διασυνδέστε το MMA8451 σας χρησιμοποιώντας ESP32
Ξεκινώντας με τη διεπαφή αισθητήρα I2C; - Διασυνδέστε το MMA8451 σας χρησιμοποιώντας ESP32

Σε αυτό το σεμινάριο, θα μάθετε τα πάντα σχετικά με τον τρόπο εκκίνησης, σύνδεσης και απόκτησης συσκευής I2C (Επιταχυνσιόμετρο) που λειτουργεί με χειριστήριο (Arduino, ESP32, ESP8266, ESP12 NodeMCU)

Βήμα 1: Πώς να ξεκινήσετε με το I2C - Magnificent World of Inter IC Communication

Τα Arduino, ESP Series, PIC, Rasberry PI, κλπ. Είναι όλα απίστευτα. Τι κάνεις όμως όταν το έχεις;

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

Βήμα 2: Επισκόπηση του I2C

Το I2C είναι ένα σειριακό, σύγχρονο, ημι-διπλό πρωτόκολλο επικοινωνίας που επιτρέπει τη συνύπαρξη πολλών κυρίων και υποτελών στον ίδιο δίαυλο. Ο δίαυλος I2C αποτελείται από δύο γραμμές: σειριακή σειρά δεδομένων (SDA) και σειριακό ρολόι (SCL). Και οι δύο γραμμές απαιτούν αντίσταση έλξης.

SDA (Serial Data) - Η γραμμή για την αποστολή και λήψη δεδομένων από τον κύριο και τον υποτελή. SCL (Serial Clock) - Η γραμμή που μεταφέρει το σήμα του ρολογιού. Με τέτοια πλεονεκτήματα όπως η απλότητα και το χαμηλό κόστος κατασκευής, το I2C χρησιμοποιείται κυρίως για επικοινωνία περιφερειακών συσκευών χαμηλής ταχύτητας σε μικρές αποστάσεις (εντός ενός ποδιού).

Θέλετε να μάθετε περισσότερα για το I2C; ……

Βήμα 3: Πώς να διαμορφώσετε τους αισθητήρες I²C

Πριν προχωρήσετε στο έργο, πρέπει να κατανοήσετε μερικά βασικά στοιχεία του αισθητήρα σας. Ρίξτε λοιπόν ένα φλιτζάνι καφέ πριν βουτήξετε:); …

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

Τι πληροφορίες θέλουμε από το Datasheet;;

  1. Λειτουργικότητα αισθητήρα
  2. Λειτουργικότητα pinouts και pin
  3. Περιγραφή διεπαφής (Μην παραλείψετε να δείτε τον "Πίνακα επιλογής διεύθυνσης I2c")
  4. Εγγραφές !!

Όλα είναι εντάξει θα τα βρείτε εύκολα αλλά Εγγραφές;; Τα ΕΓΓΡΑΦΑ είναι απλά τοποθεσίες μνήμης μέσα σε μια συσκευή I²C. Η περίληψη για το πόσοι καταχωρητές υπάρχουν σε έναν δεδομένο αισθητήρα και τι ελέγχουν ή περιέχουν ονομάζεται χάρτης καταχωρητή. Οι περισσότερες από τις πληροφορίες στο φύλλο δεδομένων του αισθητήρα αφορούν την εξήγηση του τρόπου λειτουργίας κάθε καταχωρητή και μπορεί να είναι μια δυσκολία στην ανάγνωση, επειδή οι πληροφορίες σπάνια παρουσιάζονται με άμεσο τρόπο.

Για να σας δώσω μια αίσθηση του τι εννοώ με αυτό: Υπάρχουν πολλά είδη καταχωρητών, αλλά για αυτήν την εισαγωγή θα τα ομαδοποιήσω σε δύο γενικούς τύπους: Μητρώα ελέγχου και δεδομένων.

1) Μητρώα ελέγχου

Οι περισσότεροι αισθητήρες αλλάζουν τον τρόπο λειτουργίας τους με βάση τις τιμές που είναι αποθηκευμένες σε καταχωρητές ελέγχου. Σκεφτείτε τους καταχωρητές ελέγχου ως τράπεζες διακόπτες On/Off, τους οποίους ενεργοποιείτε ρυθμίζοντας λίγο στο 1 και απενεργοποιείτε ρυθμίζοντας αυτό το bit στο 0. Οι αισθητήρες βασισμένοι σε τσιπ I²C έχουν συχνά δώδεκα ή περισσότερες λειτουργικές ρυθμίσεις για πράγματα όπως bit- Λειτουργίες, διακοπές, έλεγχος ανάγνωσης-εγγραφής, βάθος, ταχύτητα δειγματοληψίας, μείωση θορύβου κ.λπ., οπότε συνήθως χρειάζεται να ορίσετε δυαδικά ψηφία σε πολλούς διαφορετικούς καταχωρητές ελέγχου προτού μπορέσετε πραγματικά να κάνετε ανάγνωση.

2) Καταχωρητές δεδομένων Σε αντίθεση με έναν έλεγχο που καταχωρίζει τράπεζες-διακόπτες, νομίζω ότι οι καταχωρητές εξόδου δεδομένων είναι δοχεία που περιέχουν αριθμούς που τυχαίνει να αποθηκεύονται σε δυαδική μορφή. Έτσι, θέλετε να γνωρίζετε Δεδομένα, διαβάζετε πάντα καταχωρητές δεδομένων, όπως το ποιος είμαι είμαι εγγεγραμμένος για αναγνώριση συσκευής, Καταχώριση κατάστασης κλπ.

Έτσι, η προετοιμασία ενός αισθητήρα I²C είναι μια διαδικασία πολλαπλών βημάτων και η σωστή σειρά εργασιών εξηγείται συχνά γραμμένη με αντίστροφη κατεύθυνση, αντί για απλή στο φύλλο δεδομένων. η λίστα δεν λέει ποτέ "Για να λάβετε μια ανάγνωση από αυτόν τον αισθητήρα, κάντε (1), (2), (3), (4), κ.λπ.", αλλά βρίσκετε περιγραφές των δυαδικών ψηφίων ελέγχου που γράφουν "πριν ρυθμίσετε το bit x σε αυτό καταχωρητής πρέπει να ορίσετε το bit y σε αυτόν τον άλλο καταχωρητή ελέγχου ".

Ακόμα βρίσκω πάντα ότι ένα φύλλο δεδομένων είναι πιο διαδραστικό από τα περισσότερα κείμενα. εάν θα το αναφέρετε για ένα συγκεκριμένο κομμάτι ή πληροφορίες και σας δίνει όλες τις λεπτομέρειες, τις συνδέσεις και τις αναφορές. Απλά καθίστε και διαβάστε για να βγάλετε όλες τις αναφορές σας.:)

Βήμα 4: Ξεκινήστε με κίνηση - επιταχυνσιόμετρο

Τα σύγχρονα επιταχυνσιόμετρα είναι συσκευές Micro Electro-Mechanical Systems (MEMS), πράγμα που σημαίνει ότι μπορούν να χωρέσουν σε ένα μικρό τσιπ μέσα στο μικρότερο gadget. Μια μέθοδος μέτρησης της επιτάχυνσης που χρησιμοποιείται από τα επιταχυνσιόμετρα MEMS είναι η χρήση μιας μικρής αγώγιμης μάζας που αιωρείται στα ελατήρια. Η επιτάχυνση της συσκευής προκαλεί την ελαστικότητα ή τη συστολή των ελατηρίων και η εκτροπή της αγώγιμης μάζας μπορεί να μετρηθεί μέσω αλλαγής της χωρητικότητας σε κοντινές, σταθερές πλάκες.

Τα επιταχυνσιόμετρα καθορίζονται από τις ακόλουθες δυνατότητες:

  1. Ο αριθμός των αξόνων, από έναν έως τρεις άξονες, με την ένδειξη X, Y και Z στα διαγράμματα προδιαγραφών. Σημειώστε ότι ορισμένα επιταχυνσιόμετρα ονομάζονται 6-άξονες ή 9-άξονες, αλλά αυτό σημαίνει ότι συνδυάζονται με άλλες συσκευές MEMS, όπως γυροσκόπια και/ή μαγνητόμετρα. Κάθε μία από αυτές τις συσκευές έχει επίσης τρεις άξονες, γι 'αυτό υπάρχουν μονάδες αδρανειακής μέτρησης 3, 6 ή 9 αξόνων (IMU).
  2. Ο τύπος εξόδου, αναλογικός ή ψηφιακός. Ένα ψηφιακό επιταχυνσιόμετρο φροντίζει για τη μορφοποίηση των δεδομένων επιτάχυνσης σε ψηφιακή αναπαράσταση που μπορεί να διαβαστεί μέσω I2C ή SPI.
  3. Το εύρος επιτάχυνσης που μετριέται σε g’s, όπου 1g είναι η επιτάχυνση λόγω της βαρύτητας της Γης.
  4. Επεξεργαστές που μπορούν να αποφορτίσουν μερικούς από τους υπολογισμούς που απαιτούνται για την ανάλυση των ακατέργαστων δεδομένων από το MCU. Τα περισσότερα επιταχυνσιόμετρα έχουν μια απλή δυνατότητα διακοπής για να ανιχνεύσουν ένα όριο επιτάχυνσης (σοκ) και μια κατάσταση 0 g (ελεύθερη πτώση). Άλλοι μπορούν να κάνουν προηγμένη επεξεργασία των ακατέργαστων δεδομένων για να προσφέρουν πιο σημαντικά δεδομένα στο MCU.

Βήμα 5: Διασύνδεση με ελεγκτή

Δεδομένου ότι γνωρίζουμε τους μικροελεγκτές ESP στην τάση, θα χρησιμοποιήσουμε το ESP32 για το παράδειγμά μας. Έτσι, πρώτα χρειάζεστε ένα Nodemcu-32s.

Μην ανησυχείτε αν έχετε άλλες πλακέτες ESP ή ακόμα και Arduino !!! Απλώς πρέπει να ρυθμίσετε το Arduino IDE και τη διαμόρφωσή σας σύμφωνα με τους πίνακες ανάπτυξης, για Arduino, ESP NodeMCU, ESP32s κ.λπ. ψηφιακός πίνακας επιταχυνσιόμετρου.

Και λίγα καλώδια άλματος….

Βήμα 6: Συνδέσεις

Συνδέσεις
Συνδέσεις

Και εδώ είναι μια διάταξη.

Χρησιμοποίησα την ακόλουθη σύνδεση από την παραπάνω μονάδα με τη μονάδα Nodemcu-32s.

ESP32s - Ενότητα

3v3 - Vin

Gnd - Gnd

SDA 21 - SDA

SCL 22 - SCL

"Θυμηθείτε, τις περισσότερες φορές δεν έχουν όλοι οι πίνακες ανάπτυξης (κυρίως σε ESP) ένα καλό ξεκάθαρο pinout για να καθορίσετε ποιες καρφίτσες χρησιμοποιούνται !! Επομένως, πριν από τη σύνδεση, προσδιορίστε τις σωστές καρφίτσες του πίνακα σας για να χρησιμοποιήσετε ποιες καρφίτσες είναι για SDA και SCL."

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

Αυτό απαιτεί τη βιβλιοθήκη Adafruit

από

Κατεβάστε, αποσυμπιέστε και θα βρείτε φάκελο παραδειγμάτων, στο φάκελο απλώς ανοίξτε το MMA8451demo στο Arduino IDE σας και ορίστε….

θα δείτε τον ακόλουθο κώδικα για τη διεπαφή αισθητήρα MMA8451 με τον ελεγκτή σας

#περιλαμβάνω

#include #include Adafruit_MMA8451 mma = Adafruit_MMA8451 (); void setup (void) {Serial.begin (9600); Wire.begin (4, 5); / * σύνδεση i2c bus με SDA = D1 και SCL = D2 του NodeMCU */ Serial.println ("δοκιμή Adafruit MMA8451!"); if (! mma.begin ()) {Serial.println ("Δεν μπόρεσα να ξεκινήσω"); ενώ (1)? } Serial.println ("Βρέθηκε MMA8451!"); mma.setRange (MMA8451_RANGE_2_G); Serial.print ("Εύρος ="); Serial.print (2 << mma.getRange ()); Serial.println ("G"); } void loop () {// Διαβάστε τα «ακατέργαστα» δεδομένα σε μετρήσεις 14-bit mma.read (); Serial.print ("X: / t"); Serial.print (mma.x); Serial.print ("\ tY: / t"); Serial.print (mma.y); Serial.print ("\ tZ: / t"); Serial.print (mma.z); Serial.println (); / * Λάβετε ένα νέο συμβάν αισθητήρα */ sensors_event_t event? mma.getEvent (& event); / * Εμφάνιση των αποτελεσμάτων (η επιτάχυνση μετριέται σε m/s^2) */Serial.print ("X: / t"); Serial.print (event.acceleration.x); Serial.print ("\ t"); Serial.print ("Y: / t"); Serial.print (event.acceleration.y); Serial.print ("\ t"); Serial.print ("Z: / t"); Serial.print (event.acceleration.z); Serial.print ("\ t"); Serial.println ("m/s^2"); / * Λάβετε τον προσανατολισμό του αισθητήρα */ uint8_t o = mma.getOrientation (); switch (o) {case MMA8451_PL_PUF: Serial.println ("Portrait Up Front"); Διακοπή; θήκη MMA8451_PL_PUB: Serial.println ("Portrait Up Back"); Διακοπή; θήκη MMA8451_PL_PDF: Serial.println ("Portrait Down Front"); Διακοπή; θήκη MMA8451_PL_PDB: Serial.println ("Portrait Down Back"); Διακοπή; θήκη MMA8451_PL_LRF: Serial.println ("Landscape Right Front"); Διακοπή; θήκη MMA8451_PL_LRB: Serial.println ("Landscape Right Back"); Διακοπή; θήκη MMA8451_PL_LLF: Serial.println ("Landscape Left Front"); Διακοπή; θήκη MMA8451_PL_LLB: Serial.println ("Landscape Left Back"); Διακοπή; } Serial.println (); καθυστέρηση (1000)? }

Αποθήκευση, επαλήθευση και μεταφόρτωση ……

Ανοίξτε τη σειριακή οθόνη και θα δείτε κάτι τέτοιο, κινούσα τον αισθητήρα για αυτό και τις διάφορες ενδείξεις

Χ: -2166 Υ: 1872 Ζ: 2186

X: -2166 Y: 1872 Z: 2186X: -4,92 Y: 5,99 Z: 4,87 m/s^2

Τοπίο αριστερά μπροστά

Χ: -224 Υ: -2020 Ζ: 3188

Χ: -5,10 Υ: -3,19 Ζ: 7,00 m/s^2

Πορτρέτο μπροστά

Λοιπόν, αν όλα πήγαν όπως έπρεπε, τότε έχετε τώρα τα βασικά του I2C και πώς να συνδέσετε τη συσκευή σας..

Αλλά η συσκευή δεν λειτουργεί;

Προχωρήστε στο επόμενο βήμα ……

Βήμα 8: Λειτουργήστε τη συσκευή σας I2C

Βασικά βήματα για να λειτουργήσει η συσκευή I2C

Ας ερευνήσουμε….

  • Η καλωδίωση είναι σωστή.. (ελέγξτε ξανά)
  • Το πρόγραμμα είναι σωστό.. (Ναι, είναι παράδειγμα δοκιμής..)

Ξεκινήστε με στάδια για επίλυση…..

Στάδιο 1: Εκτελέστε το πρόγραμμα σάρωσης συσκευών I2C για να ελέγξετε τη διεύθυνση της συσκευής και πρώτα η συσκευή I2C είναι εντάξει

Μπορείτε να κατεβάσετε το σκίτσο και να ελέγξετε την έξοδο.

Αποτέλεσμα - Η συσκευή λειτουργεί και η διεύθυνση αισθητήρα είναι σωστή

Σαρωτής I2C. Σάρωση…

Βρέθηκε διεύθυνση: 28 (0x1C) Έγινε. Βρέθηκαν 1 συσκευή (ες).

Στάδιο 2: Ελέγξτε τη βιβλιοθήκη αισθητήρων

Ανοίξτε το αρχείο Adafruit_MMA8451.h και βρείτε τη διεύθυνση συσκευής

Αποτέλεσμα - Η διεύθυνση είναι διαφορετική από τη συσκευή μου;

/*================================================ ========================= ΔΙΕΥΘΥΝΣΗ/BITS I2C --------------------- ------------------------------------------------------ * /#define MMA8451_DEFAULT_ADDRESS (0x1D) //! <Προεπιλεγμένη διεύθυνση MMA8451 I2C, αν το A είναι GND, το 0x1C /*======================== ================================================== */

Do - Επεξεργασία αρχείου από σημειωματάριο (αλλαγή διεύθυνσης) + Αποθήκευση + Επανεκκίνηση IDE

Λειτουργεί. Μπορείτε να λάβετε τις αναγνώσεις σας.

Χωρίς….. ???

Στάδιο 3: Ελέγξτε ότι το Wire.begin αντικαθίσταται;

Ανοίξτε το αρχείο Adafruit_MMA8451.c και βρείτε το Wire.begin.

Αποτέλεσμα - Αυτή η δήλωση αντικαθίσταται

/********************************************* ***************************! @brief Ρυθμίζει το HW (διαβάζει τιμές συντελεστών κ.λπ.)* / / ******************************* *************************************/ bool Adafruit_MMA8451:: begin (uint8_t i2caddr) {Wire.begin (); _i2caddr = i2caddr;

Do - Επεξεργασία αρχείου από σημειωματάριο (δήλωση σχολίου) + Αποθήκευση + Επανεκκίνηση IDE

Και τέλος η συσκευή λειτουργεί …

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

Συνιστάται: