Πρωτόκολλο επικοινωνίας Arduino

Protokollo Epikoinonias Arduino



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

Πρωτόκολλα επικοινωνίας Arduino

Χρησιμοποιώντας πρωτόκολλα επικοινωνίας, μπορούμε να στείλουμε και να λάβουμε δεδομένα οποιουδήποτε αισθητήρα στο Arduino.

Μερικοί απλοί αισθητήρες όπως οι υπέρυθρες (IR) μπορούν να επικοινωνήσουν απευθείας με το Arduino, αλλά ορισμένοι από τους πολύπλοκους αισθητήρες όπως η μονάδα Wi-Fi, η μονάδα κάρτας SD και το γυροσκόπιο δεν μπορούν να επικοινωνήσουν απευθείας με το Arduino χωρίς πρωτόκολλα επικοινωνίας. Γι' αυτό, λοιπόν, αυτά τα πρωτόκολλα αποτελούν αναπόσπαστο μέρος της επικοινωνίας του Arduino.







Το Arduino έχει πολλαπλά περιφερειακά συνδεδεμένα σε αυτό. Ανάμεσά τους υπάρχουν τρία περιφερειακά επικοινωνίας που χρησιμοποιούνται στις πλακέτες Arduino.



Πρωτόκολλα επικοινωνίας Arduino

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







UART

Το UART είναι γνωστό ως το Universal Asynchronous Receiver Transmitter. Το UART είναι ένα πρωτόκολλο σειριακής επικοινωνίας που σημαίνει ότι τα bit δεδομένων μεταφέρονται σε διαδοχική μορφή το ένα μετά το άλλο. Για τη ρύθμιση της επικοινωνίας UART χρειαζόμαστε δύο γραμμές. Η μία είναι η ακίδα Tx (D1) της πλακέτας Arduino και η δεύτερη είναι η καρφίτσα Rx(D0) της πλακέτας Arduino. Το Tx pin χρησιμοποιείται για τη μετάδοση δεδομένων σε συσκευές και το Rx pin χρησιμοποιείται για τη λήψη δεδομένων. Διαφορετικές πλακέτες Arduino έχουν πολλαπλές ακίδες UART.

Ψηφιακή καρφίτσα Arduino Καρφίτσα UART
Δ1 Tx
D0 Rx

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



Στο Arduino Uno, μια σειριακή θύρα είναι αφιερωμένη για επικοινωνία, η οποία συνήθως αναφέρεται ως θύρα USB. Όπως υποδηλώνει το όνομα Universal Serial Bus, έτσι είναι μια σειριακή θύρα. Χρησιμοποιώντας τη θύρα USB, το Arduino μπορεί να δημιουργήσει επικοινωνία με υπολογιστές. Η θύρα USB συνδέεται με τις ενσωματωμένες ακίδες Tx και Rx του Arduino. Χρησιμοποιώντας αυτές τις ακίδες, μπορούμε να συνδέσουμε οποιοδήποτε εξωτερικό υλικό εκτός από τον υπολογιστή μέσω USB. Το Arduino IDE παρέχει βιβλιοθήκη SoftwareSerial (SoftwareSerial.h) που επιτρέπει στους χρήστες να χρησιμοποιούν GPIO pins ως Serial Tx και Rx pin.

  • Το UART είναι απλό στη λειτουργία με το Arduino
  • Το UART δεν χρειάζεται σήμα ρολογιού
  • Ο ρυθμός Baud πρέπει να οριστεί εντός του ορίου 10% των συσκευών επικοινωνίας για να αποφευχθεί η απώλεια δεδομένων
  • Πολλές συσκευές με Arduino στη διαμόρφωση Master Slave δεν είναι δυνατές με το UART
  • Το UART είναι half duplex, πράγμα που σημαίνει ότι οι συσκευές δεν μπορούν να μεταδώσουν και να λάβουν δεδομένα ταυτόχρονα
  • Μόνο δύο συσκευές τη φορά μπορούν να επικοινωνούν με το πρωτόκολλο UART

Σειριακή περιφερειακή διεπαφή (SPI)

SPI είναι ένα ακρωνύμιο της σειριακής περιφερειακής διεπαφής που έχει σχεδιαστεί ειδικά για να επικοινωνούν οι μικροελεγκτές μαζί τους. Το SPI λειτουργεί σε λειτουργία full-duplex που σημαίνει ότι το SPI μπορεί να στέλνει και να λαμβάνει δεδομένα ταυτόχρονα. Σε σύγκριση με το UART και το I2C, είναι το ταχύτερο περιφερειακό επικοινωνίας σε πλακέτες Arduino. Χρησιμοποιείται συνήθως όπου απαιτείται υψηλός ρυθμός μετάδοσης δεδομένων, όπως σε εφαρμογές οθόνης LCD και κάρτας Micro SD.

Οι ψηφιακές ακίδες SPI στο Arduino είναι προκαθορισμένες. Για το Arduino Uno SPI η διαμόρφωση pin έχει ως εξής:

Γραμμή SPI GPIO Καρφίτσα κεφαλίδας ICSP
SCK 13 3
MISO 12 1
ΚΑΠΝΟΣ έντεκα 4
SS 10
  • MOSI σημαίνει Master Out Slave In , το MOSI είναι γραμμή μετάδοσης δεδομένων για Master σε Slave.
  • Το SCK είναι α Γραμμή ρολογιού που ορίζει την ταχύτητα μετάδοσης και τα χαρακτηριστικά τέλους εκκίνησης.
  • SS σημαίνει Slave Select ; Η γραμμή SS επιτρέπει στον Master να επιλέξει μια συγκεκριμένη συσκευή Slave όταν λειτουργεί σε διαμόρφωση πολλαπλών Slave.
  • MISO σημαίνει Master στο Slave Out ; Το MISO είναι γραμμή μετάδοσης Slave to Master για δεδομένα.

Ένα από τα κύρια σημεία του πρωτοκόλλου SPI είναι η διαμόρφωση Master-Slave. Χρησιμοποιώντας το SPI μία συσκευή μπορεί να οριστεί ως Master για τον έλεγχο πολλών συσκευών Slave. Το Master έχει τον πλήρη έλεγχο των συσκευών Slave μέσω του πρωτοκόλλου SPI.

Το SPI είναι σύγχρονο πρωτόκολλο, που σημαίνει ότι η επικοινωνία συνδέεται με κοινό σήμα ρολογιού μεταξύ Master και Slave. Το SPI μπορεί να ελέγχει πολλές συσκευές ως Slave σε μία μόνο γραμμή μετάδοσης και λήψης. Όλοι οι Slaves συνδέονται με τον Master χρησιμοποιώντας κοινά MISO λήψη γραμμής μαζί με ΚΑΠΝΟΣ μία κοινή γραμμή μετάδοσης. SCK είναι επίσης η κοινή γραμμή ρολογιού μεταξύ των συσκευών Master και Slave. Η μόνη διαφορά στις συσκευές Slave είναι ότι κάθε slave συσκευή ελέγχεται με ξεχωριστή SS επιλέξτε γραμμή. Αυτό σημαίνει ότι κάθε Slave χρειάζεται μια επιπλέον καρφίτσα GPIO από την πλακέτα Arduino η οποία θα λειτουργεί ως γραμμή επιλογής για τη συγκεκριμένη συσκευή Slave.

Μερικά από τα κύρια σημεία του πρωτοκόλλου SPI παρατίθενται παρακάτω:

  • Το SPI είναι το ταχύτερο πρωτόκολλο από το I2C και το UART
  • Δεν απαιτούνται bit έναρξης και διακοπής όπως στο UART που σημαίνει ότι είναι δυνατή η συνεχής μετάδοση δεδομένων
  • Το Slave μπορεί εύκολα να αντιμετωπιστεί λόγω της απλής διαμόρφωσης Master Slave
  • Για κάθε Slave μια επιπλέον καρφίτσα καταλαμβάνεται στην πλακέτα Arduino. Πρακτικά 1 Master μπορεί να ελέγξει 4 συσκευές Slave
  • Η επιβεβαίωση δεδομένων λείπει όπως χρησιμοποιείται στο UART
  • Δεν είναι δυνατή η πολλαπλή διαμόρφωση Master

Πρωτόκολλο επικοινωνίας I2C

Το Inter Integrated Circuit (I2C) είναι ένα άλλο πρωτόκολλο επικοινωνίας που χρησιμοποιείται από τις πλακέτες Arduino. Το I2C είναι το πιο δύσκολο και περίπλοκο πρωτόκολλο για εφαρμογή με το Arduino και άλλες συσκευές. Παρά την πολυπλοκότητά του, προσφέρει πολλαπλές δυνατότητες που λείπουν σε άλλα πρωτόκολλα, όπως πολλαπλές διαμορφώσεις Master και πολλαπλών Slaves. Το I2C επιτρέπει τη σύνδεση έως και 128 συσκευών στην κύρια πλακέτα Arduino. Αυτό είναι δυνατό μόνο επειδή το I2C μοιράζεται ένα καλώδιο μεταξύ όλων των συσκευών Slave. Το I2C στο Arduino χρησιμοποιεί ένα σύστημα διευθύνσεων, δηλαδή πριν στείλει δεδομένα στη συσκευή Slave το Arduino πρέπει πρώτα να επιλέξει Slave συσκευή στέλνοντας μοναδική διεύθυνση. Το I2C χρησιμοποιεί μόνο δύο καλώδια που μειώνουν τον συνολικό αριθμό ακίδων του Arduino, αλλά το κακό του είναι ότι το I2C είναι πιο αργό από το πρωτόκολλο SPI.

Arduino Analog Pin I2C Pin
Α4 SDA
Α5 SCL

Σε επίπεδο υλικού, το I2C περιορίζεται σε μόνο δύο καλώδια, το ένα για μια γραμμή δεδομένων γνωστή ως SDA (σειριακά δεδομένα) και το δεύτερο για τη γραμμή του ρολογιού SCL (σειριακό ρολόι). Στην κατάσταση αδράνειας τόσο το SDA όσο και το SCL τραβιέται ψηλά. Όταν χρειάζεται να μεταδοθούν δεδομένα, αυτές οι γραμμές έλκονται χαμηλά χρησιμοποιώντας κύκλωμα MOSFET. Χρησιμοποιώντας το I2C σε έργα, είναι υποχρεωτική η χρήση αντιστάσεων έλξης με κανονική τιμή 4,7 Kohm. Αυτές οι αντιστάσεις έλξης διασφαλίζουν ότι και οι δύο γραμμές SDA και SCL παραμένουν ψηλά στην εκκίνηση του ρελαντί.

Μερικά από τα κύρια σημεία των πρωτοκόλλων I2C είναι:

  • Ο αριθμός των απαιτούμενων ακίδων είναι πολύ μικρός
  • Μπορούν να συνδεθούν πολλές συσκευές Master Slaves
  • Χρησιμοποιεί μόνο 2 καλώδια
  • Η ταχύτητα είναι πιο αργή σε σύγκριση με το SPI λόγω των αντιστάσεων έλξης
  • Οι αντιστάσεις χρειάζονται περισσότερο χώρο στο κύκλωμα
  • Η πολυπλοκότητα του έργου αυξάνεται με την αύξηση του αριθμού των συσκευών

Σύγκριση μεταξύ UART vs I2C vs SPI

Πρωτόκολλο UART SPI 2C
Ταχύτητα Πιο αργό Ο πιο γρήγορος Ταχύτερα από το UART
Αριθμός συσκευών Έως 2 4 συσκευές Έως 128 συσκευές
Απαιτούνται καλώδια 2 (Tx,Rx) 4 (SCK, SMOKE, EYES, SS) 2 (SDA, SCL)
Λειτουργία διπλής όψης Λειτουργία Full Duplex Λειτουργία Full Duplex Half Duplex
Δυνατός αριθμός Master-Slaves Μοναδικός Κύριος-Μοναδικός Σκλάβος Single Master-Multiple Slaves Πολλαπλοί Κύριοι-Πολλαπλοί Σκλάβοι
Περίπλοκο Απλός Μπορεί εύκολα να ελέγξει πολλές συσκευές Πολύπλοκο με αύξηση των συσκευών
Λίγο αναγνώρισης Όχι Όχι Ναί

συμπέρασμα

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