27 KiB
C, προφέρεται I-squared-C, είναι ένα πρωτόκολλο πολλαπλών ελεγκτών και περιφερειακών, όπου κάθε συνδεδεμένη συσκευή μπορεί να λειτουργήσει είτε ως ελεγκτής είτε ως περιφερειακή συσκευή, επικοινωνώντας μέσω του I²C bus (το όνομα για ένα σύστημα επικοινωνίας που μεταφέρει δεδομένα). Τα δεδομένα αποστέλλονται ως πακέτα με διεύθυνση, με κάθε πακέτο να περιέχει τη διεύθυνση της συνδεδεμένης συσκευής για την οποία προορίζεται.
💁 Αυτό το μοντέλο παλαιότερα αναφερόταν ως master/slave, αλλά αυτή η ορολογία εγκαταλείπεται λόγω της σύνδεσής της με τη δουλεία. Η Open Source Hardware Association έχει υιοθετήσει τους όρους controller/peripheral, αλλά μπορεί να εξακολουθείτε να βλέπετε αναφορές στην παλιά ορολογία.
Οι συσκευές έχουν μια διεύθυνση που χρησιμοποιείται όταν συνδέονται στο I²C bus, και συνήθως είναι προεπιλεγμένη στη συσκευή. Για παράδειγμα, κάθε τύπος αισθητήρα Grove από την Seeed έχει την ίδια διεύθυνση, έτσι όλοι οι αισθητήρες φωτός έχουν την ίδια διεύθυνση, όλοι οι διακόπτες έχουν μια διεύθυνση διαφορετική από αυτή των αισθητήρων φωτός. Ορισμένες συσκευές έχουν τρόπους να αλλάξουν τη διεύθυνση, αλλάζοντας τις ρυθμίσεις των jumpers ή συγκολλώντας ακροδέκτες μαζί.
Το I²C έχει ένα bus που αποτελείται από 2 κύρια καλώδια, μαζί με 2 καλώδια τροφοδοσίας:
Καλώδιο | Όνομα | Περιγραφή |
---|---|---|
SDA | Serial Data | Αυτό το καλώδιο χρησιμοποιείται για την αποστολή δεδομένων μεταξύ συσκευών. |
SCL | Serial Clock | Αυτό το καλώδιο στέλνει ένα σήμα ρολογιού με ρυθμό που καθορίζεται από τον ελεγκτή. |
VCC | Voltage common collector | Η τροφοδοσία για τις συσκευές. Αυτό συνδέεται με τα καλώδια SDA και SCL για να παρέχει την τροφοδοσία τους μέσω ενός pull-up αντιστάτη που απενεργοποιεί το σήμα όταν καμία συσκευή δεν είναι ελεγκτής. |
GND | Ground | Παρέχει κοινή γείωση για το ηλεκτρικό κύκλωμα. |
Για να σταλούν δεδομένα, μια συσκευή θα εκδώσει μια συνθήκη εκκίνησης για να δείξει ότι είναι έτοιμη να στείλει δεδομένα. Στη συνέχεια, θα γίνει ο ελεγκτής. Ο ελεγκτής στη συνέχεια στέλνει τη διεύθυνση της συσκευής με την οποία θέλει να επικοινωνήσει, μαζί με το αν θέλει να διαβάσει ή να γράψει δεδομένα. Μετά τη μετάδοση των δεδομένων, ο ελεγκτής στέλνει μια συνθήκη τερματισμού για να υποδείξει ότι έχει τελειώσει. Μετά από αυτό, μια άλλη συσκευή μπορεί να γίνει ελεγκτής και να στείλει ή να λάβει δεδομένα.
Το I2C έχει όρια ταχύτητας, με 3 διαφορετικές λειτουργίες που τρέχουν σε σταθερές ταχύτητες. Η πιο γρήγορη είναι η λειτουργία Υψηλής Ταχύτητας με μέγιστη ταχύτητα 3.4Mbps (megabits ανά δευτερόλεπτο), αν και πολύ λίγες συσκευές υποστηρίζουν αυτή την ταχύτητα. Το Raspberry Pi, για παράδειγμα, περιορίζεται στη γρήγορη λειτουργία στα 400Kbps (kilobits ανά δευτερόλεπτο). Η τυπική λειτουργία τρέχει στα 100Kbps.
💁 Εάν χρησιμοποιείτε ένα Raspberry Pi με ένα Grove Base hat ως το υλικό IoT σας, θα μπορείτε να δείτε αρκετές υποδοχές I2C στην πλακέτα που μπορείτε να χρησιμοποιήσετε για να επικοινωνήσετε με αισθητήρες I2C. Οι αναλογικοί αισθητήρες Grove χρησιμοποιούν επίσης το I2C με έναν ADC για να στέλνουν αναλογικές τιμές ως ψηφιακά δεδομένα, έτσι ο αισθητήρας φωτός που χρησιμοποιήσατε προσομοίαζε μια αναλογική ακίδα, με την τιμή να αποστέλλεται μέσω I2C καθώς το Raspberry Pi υποστηρίζει μόνο ψηφιακές ακίδες.
Universal asynchronous receiver-transmitter (UART)
Το UART περιλαμβάνει φυσικά κυκλώματα που επιτρέπουν σε δύο συσκευές να επικοινωνούν. Κάθε συσκευή έχει 2 ακίδες επικοινωνίας - μετάδοση (Tx) και λήψη (Rx), με την ακίδα Tx της πρώτης συσκευής να συνδέεται με την ακίδα Rx της δεύτερης, και την ακίδα Tx της δεύτερης συσκευής να συνδέεται με την ακίδα Rx της πρώτης. Αυτό επιτρέπει την αποστολή δεδομένων και προς τις δύο κατευθύνσεις.
- Η συσκευή 1 μεταδίδει δεδομένα από την ακίδα Tx της, τα οποία λαμβάνονται από τη συσκευή 2 στην ακίδα Rx της
- Η συσκευή 1 λαμβάνει δεδομένα στην ακίδα Rx της που μεταδίδονται από τη συσκευή 2 από την ακίδα Tx της
🎓 Τα δεδομένα αποστέλλονται ένα bit τη φορά, και αυτό είναι γνωστό ως σειριακή επικοινωνία. Τα περισσότερα λειτουργικά συστήματα και μικροελεγκτές έχουν σειριακές θύρες, δηλαδή συνδέσεις που μπορούν να στείλουν και να λάβουν σειριακά δεδομένα και είναι διαθέσιμες στον κώδικά σας.
Οι συσκευές UART έχουν έναν ρυθμό baud (γνωστός και ως ρυθμός συμβόλων), που είναι η ταχύτητα με την οποία τα δεδομένα θα αποστέλλονται και θα λαμβάνονται σε bits ανά δευτερόλεπτο. Ένας κοινός ρυθμός baud είναι 9,600, που σημαίνει ότι 9,600 bits (0s και 1s) δεδομένων αποστέλλονται κάθε δευτερόλεπτο.
Το UART χρησιμοποιεί bits έναρξης και τερματισμού - δηλαδή στέλνει ένα bit έναρξης για να υποδείξει ότι πρόκειται να στείλει ένα byte (8 bits) δεδομένων, και στη συνέχεια ένα bit τερματισμού αφού στείλει τα 8 bits.
Η ταχύτητα του UART εξαρτάται από το υλικό, αλλά ακόμη και οι πιο γρήγορες υλοποιήσεις δεν υπερβαίνουν τα 6.5 Mbps (megabits ανά δευτερόλεπτο, ή εκατομμύρια bits, 0 ή 1, που αποστέλλονται ανά δευτερόλεπτο).
Μπορείτε να χρησιμοποιήσετε το UART μέσω ακίδων GPIO - μπορείτε να ορίσετε μία ακίδα ως Tx και μία άλλη ως Rx, και στη συνέχεια να τις συνδέσετε σε μια άλλη συσκευή.
💁 Εάν χρησιμοποιείτε ένα Raspberry Pi με ένα Grove Base hat ως το υλικό IoT σας, θα μπορείτε να δείτε μια υποδοχή UART στην πλακέτα που μπορείτε να χρησιμοποιήσετε για να επικοινωνήσετε με αισθητήρες που χρησιμοποιούν το πρωτόκολλο UART.
Serial Peripheral Interface (SPI)
Το SPI έχει σχεδιαστεί για επικοινωνία σε μικρές αποστάσεις, όπως σε έναν μικροελεγκτή για να επικοινωνεί με μια συσκευή αποθήκευσης όπως η μνήμη flash. Βασίζεται σε ένα μοντέλο ελεγκτή/περιφερειακής συσκευής με έναν μόνο ελεγκτή (συνήθως ο επεξεργαστής της συσκευής IoT) που αλληλεπιδρά με πολλαπλές περιφερειακές συσκευές. Ο ελεγκτής ελέγχει τα πάντα επιλέγοντας μια περιφερειακή συσκευή και στέλνοντας ή ζητώντας δεδομένα.
💁 Όπως και το I2C, οι όροι ελεγκτής και περιφερειακή συσκευή είναι πρόσφατες αλλαγές, οπότε μπορεί να δείτε τους παλαιότερους όρους να χρησιμοποιούνται ακόμα.
Οι ελεγκτές SPI χρησιμοποιούν 3 καλώδια, μαζί με 1 επιπλέον καλώδιο ανά περιφερειακή συσκευή. Οι περιφερειακές συσκευές χρησιμοποιούν 4 καλώδια. Αυτά τα καλώδια είναι:
Καλώδιο | Όνομα | Περιγραφή |
---|---|---|
COPI | Έξοδος Ελεγκτή, Είσοδος Περιφερειακής Συσκευής | Αυτό το καλώδιο χρησιμοποιείται για την αποστολή δεδομένων από τον ελεγκτή στην περιφερειακή συσκευή. |
CIPO | Είσοδος Ελεγκτή, Έξοδος Περιφερειακής Συσκευής | Αυτό το καλώδιο χρησιμοποιείται για την αποστολή δεδομένων από την περιφερειακή συσκευή στον ελεγκτή. |
SCLK | Σειριακό Ρολόι | Αυτό το καλώδιο στέλνει ένα σήμα ρολογιού με ρυθμό που ορίζεται από τον ελεγκτή. |
CS | Επιλογή Τσιπ | Ο ελεγκτής έχει πολλαπλά καλώδια, ένα ανά περιφερειακή συσκευή, και κάθε καλώδιο συνδέεται με το καλώδιο CS στην αντίστοιχη περιφερειακή συσκευή. |
Το καλώδιο CS χρησιμοποιείται για την ενεργοποίηση μιας περιφερειακής συσκευής τη φορά, επικοινωνώντας μέσω των καλωδίων COPI και CIPO. Όταν ο ελεγκτής χρειάζεται να αλλάξει περιφερειακή συσκευή, απενεργοποιεί το καλώδιο CS που συνδέεται με την τρέχουσα ενεργή περιφερειακή συσκευή, και στη συνέχεια ενεργοποιεί το καλώδιο που συνδέεται με την περιφερειακή συσκευή με την οποία θέλει να επικοινωνήσει στη συνέχεια.
Το SPI είναι πλήρους διπλής κατεύθυνσης, που σημαίνει ότι ο ελεγκτής μπορεί να στείλει και να λάβει δεδομένα ταυτόχρονα από την ίδια περιφερειακή συσκευή χρησιμοποιώντας τα καλώδια COPI και CIPO. Το SPI χρησιμοποιεί ένα σήμα ρολογιού στο καλώδιο SCLK για να διατηρεί τις συσκευές συγχρονισμένες, οπότε σε αντίθεση με την αποστολή απευθείας μέσω UART δεν χρειάζεται bits έναρξης και τερματισμού.
Δεν υπάρχουν καθορισμένα όρια ταχύτητας για το SPI, με υλοποιήσεις που συχνά μπορούν να μεταδώσουν πολλαπλά megabytes δεδομένων ανά δευτερόλεπτο.
Τα κιτ ανάπτυξης IoT συχνά υποστηρίζουν το SPI μέσω ορισμένων ακίδων GPIO. Για παράδειγμα, σε ένα Raspberry Pi μπορείτε να χρησιμοποιήσετε τις ακίδες GPIO 19, 21, 23, 24 και 26 για SPI.
Ασύρματη επικοινωνία
Ορισμένοι αισθητήρες μπορούν να επικοινωνούν μέσω τυπικών ασύρματων πρωτοκόλλων, όπως Bluetooth (κυρίως Bluetooth Low Energy, ή BLE), LoRaWAN (ένα πρωτόκολλο δικτύωσης χαμηλής ισχύος μεγάλης εμβέλειας), ή WiFi. Αυτά επιτρέπουν τη χρήση απομακρυσμένων αισθητήρων που δεν συνδέονται φυσικά με μια συσκευή IoT.
Ένα τέτοιο παράδειγμα είναι οι εμπορικοί αισθητήρες υγρασίας εδάφους. Αυτοί μετρούν την υγρασία του εδάφους σε ένα χωράφι και στη συνέχεια στέλνουν τα δεδομένα μέσω LoRaWAN σε μια κεντρική συσκευή, η οποία επεξεργάζεται τα δεδομένα ή τα στέλνει μέσω του Διαδικτύου. Αυτό επιτρέπει στον αισθητήρα να βρίσκεται μακριά από τη συσκευή IoT που διαχειρίζεται τα δεδομένα, μειώνοντας την κατανάλωση ενέργειας και την ανάγκη για μεγάλα δίκτυα WiFi ή μακριά καλώδια.
Το BLE είναι δημοφιλές για προηγμένους αισθητήρες όπως οι συσκευές παρακολούθησης φυσικής κατάστασης που φοριούνται στον καρπό. Αυτές συνδυάζουν πολλαπλούς αισθητήρες και στέλνουν τα δεδομένα των αισθητήρων σε μια συσκευή IoT, όπως το τηλέφωνό σας, μέσω BLE.
✅ Έχετε αισθητήρες Bluetooth πάνω σας, στο σπίτι σας ή στο σχολείο σας; Αυτοί μπορεί να περιλαμβάνουν αισθητήρες θερμοκρασίας, αισθητήρες παρουσίας, συσκευές εντοπισμού και συσκευές φυσικής κατάστασης.
Ένας δημοφιλής τρόπος για τη σύνδεση εμπορικών συσκευών είναι το Zigbee. Το Zigbee χρησιμοποιεί WiFi για να σχηματίσει δικτυακά πλέγματα μεταξύ συσκευών, όπου κάθε συσκευή συνδέεται με όσο το δυνατόν περισσότερες κοντινές συσκευές, σχηματίζοντας έναν μεγάλο αριθμό συνδέσεων σαν ιστός αράχνης. Όταν μια συσκευή θέλει να στείλει ένα μήνυμα στο Διαδίκτυο, μπορεί να το στείλει στις κοντινότερες συσκευές, οι οποίες στη συνέχεια το προωθούν σε άλλες κοντινές συσκευές και ούτω καθεξής, μέχρι να φτάσει σε έναν συντονιστή και να σταλεί στο Διαδίκτυο.
🐝 Το όνομα Zigbee αναφέρεται στον χορό "ζιγκ-ζαγκ" των μελισσών μετά την επιστροφή τους στην κυψέλη.
Μέτρηση επιπέδων υγρασίας στο έδαφος
Μπορείτε να μετρήσετε το επίπεδο υγρασίας στο έδαφος χρησιμοποιώντας έναν αισθητήρα υγρασίας εδάφους, μια συσκευή IoT και ένα φυτό εσωτερικού χώρου ή ένα κοντινό κομμάτι εδάφους.
Εργασία - μέτρηση υγρασίας εδάφους
Ακολουθήστε τον αντίστοιχο οδηγό για να μετρήσετε την υγρασία του εδάφους χρησιμοποιώντας τη συσκευή IoT σας:
- Arduino - Wio Terminal
- Υπολογιστής μονού πίνακα - Raspberry Pi
- Υπολογιστής μονού πίνακα - Εικονική συσκευή
Βαθμονόμηση αισθητήρων
Οι αισθητήρες βασίζονται στη μέτρηση ηλεκτρικών ιδιοτήτων όπως η αντίσταση ή η χωρητικότητα.
🎓 Η αντίσταση, μετρημένη σε ohms (Ω), είναι το πόση αντίσταση υπάρχει στη ροή του ηλεκτρικού ρεύματος μέσα από κάτι. Όταν εφαρμόζεται τάση σε ένα υλικό, η ποσότητα του ρεύματος που περνάει εξαρτάται από την αντίσταση του υλικού. Μπορείτε να διαβάσετε περισσότερα στη σελίδα για την ηλεκτρική αντίσταση στη Wikipedia.
🎓 Η χωρητικότητα, μετρημένη σε farads (F), είναι η ικανότητα ενός εξαρτήματος ή κυκλώματος να συλλέγει και να αποθηκεύει ηλεκτρική ενέργεια. Μπορείτε να διαβάσετε περισσότερα για τη χωρητικότητα στη σελίδα για τη χωρητικότητα στη Wikipedia.
Αυτές οι μετρήσεις δεν είναι πάντα χρήσιμες - φανταστείτε έναν αισθητήρα θερμοκρασίας που σας δίνει μια μέτρηση 22.5KΩ! Αντίθετα, η τιμή που μετράται πρέπει να μετατραπεί σε μια χρήσιμη μονάδα μέσω βαθμονόμησης - δηλαδή αντιστοίχιση των τιμών που μετρήθηκαν με την ποσότητα που μετρήθηκε, ώστε να επιτρέπεται η μετατροπή νέων μετρήσεων στη σωστή μονάδα.
Ορισμένοι αισθητήρες έρχονται προ-βαθμονομημένοι. Για παράδειγμα, ο αισθητήρας θερμοκρασίας που χρησιμοποιήσατε στο προηγούμενο μάθημα ήταν ήδη βαθμονομημένος ώστε να μπορεί να επιστρέψει μια μέτρηση θερμοκρασίας σε °C. Στο εργοστάσιο, ο πρώτος αισθητήρας που δημιουργήθηκε θα εκτεθεί σε μια σειρά γνωστών θερμοκρασιών και η αντίσταση θα μετρηθεί. Αυτό θα χρησιμοποιηθεί για τη δημιουργία ενός υπολογισμού που μπορεί να μετατρέψει από την τιμή που μετρήθηκε σε Ω (η μονάδα της αντίστασης) σε °C.
💁 Ο τύπος για τον υπολογισμό της αντίστασης από τη θερμοκρασία ονομάζεται εξίσωση Steinhart–Hart.
Βαθμονόμηση αισθητήρα υγρασίας εδάφους
Η υγρασία του εδάφους μετριέται χρησιμοποιώντας τη βαρύτητα ή τον όγκο του νερού.
- Η βαρύτητα είναι το βάρος του νερού σε μια μονάδα βάρους εδάφους, μετρημένο ως ο αριθμός των κιλών νερού ανά κιλό ξηρού εδάφους
- Ο όγκος είναι ο όγκος του νερού σε μια μονάδα όγκου εδάφους, μετρημένος ως ο αριθμός των κυβικών μέτρων νερού ανά κυβικά μέτρα ξηρού εδάφους
🇺🇸 Για τους Αμερικανούς, λόγω της συνέπειας των μονάδων, αυτά μπορούν να μετρηθούν σε λίβρες αντί για κιλά ή σε κυβικά πόδια αντί για κυβικά μέτρα.
Οι αισθητήρες υγρασίας εδάφους μετρούν ηλεκτρική αντίσταση ή χωρητικότητα - αυτό όχι μόνο ποικίλλει ανάλογα με την υγρασία του εδάφους, αλλά και με τον τύπο του εδάφους, καθώς τα συστατικά του εδάφους μπορούν να αλλάξουν τα ηλεκτρικά χαρακτηριστικά του. Ιδανικά, οι αισθητήρες πρέπει να βαθμονομηθούν - δηλαδή να ληφθούν μετρήσεις από τον αισθητήρα και να συγκριθούν με μετρήσεις που βρέθηκαν χρησιμοποιώντας μια πιο επιστημονική προσέγγιση. Για παράδειγμα, ένα εργαστήριο μπορεί να υπολογίσει τη βαρύτητα της υγρασίας του εδάφους χρησιμοποιώντας δείγματα από ένα συγκεκριμένο χωράφι που λαμβάνονται μερικές φορές τον χρόνο, και αυτοί οι αριθμοί να χρησιμοποιηθούν για τη βαθμονόμηση του αισθητήρα, αντιστοιχίζοντας την ένδειξη του αισθητήρα με τη βαρύτητα της υγρασίας του εδάφους.
Το παραπάνω γράφημα δείχνει πώς να βαθμονομήσετε έναν αισθητήρα. Η τάση καταγράφεται για ένα δείγμα εδάφους που στη συνέχεια μετριέται σε ένα εργαστήριο συγκρίνοντας το υγρό βάρος με το ξηρό βάρος (μετρώντας το βάρος υγρό, στη συνέχεια στεγνώνοντας σε φούρνο και μετρώντας το ξηρό). Αφού ληφθούν μερικές μετρήσεις, αυτές μπορούν να σχεδιαστούν σε ένα γράφημα και να προσαρμοστεί μια γραμμή στα σημεία. Αυτή η γραμμή μπορεί στη συνέχεια να χρησιμοποιηθεί για τη μετατροπή των μετρήσεων του αισθητήρα υγρασίας εδάφους που λαμβάνονται από μια συσκευή IoT σε πραγματικές μετρήσεις υγρασίας εδάφους.
💁 Για τους αισθητήρες υγρασίας εδάφους με αντίσταση, η τάση αυξάνεται καθώς αυξάνεται η υγρασία του εδάφους. Για τους αισθη
Αποποίηση ευθύνης:
Αυτό το έγγραφο έχει μεταφραστεί χρησιμοποιώντας την υπηρεσία αυτόματης μετάφρασης Co-op Translator. Παρόλο που καταβάλλουμε προσπάθειες για ακρίβεια, παρακαλούμε να έχετε υπόψη ότι οι αυτόματες μεταφράσεις ενδέχεται να περιέχουν σφάλματα ή ανακρίβειες. Το πρωτότυπο έγγραφο στη μητρική του γλώσσα θα πρέπει να θεωρείται η αυθεντική πηγή. Για κρίσιμες πληροφορίες, συνιστάται επαγγελματική ανθρώπινη μετάφραση. Δεν φέρουμε ευθύνη για τυχόν παρεξηγήσεις ή εσφαλμένες ερμηνείες που προκύπτουν από τη χρήση αυτής της μετάφρασης.