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

UChip - Serial Over IR!: 4 Βήματα
UChip - Serial Over IR!: 4 Βήματα

Βίντεο: UChip - Serial Over IR!: 4 Βήματα

Βίντεο: UChip - Serial Over IR!: 4 Βήματα
Βίντεο: Камеры засняли последние минуты Дебани Эскобар 2024, Νοέμβριος
Anonim
UChip - Serial Over IR!
UChip - Serial Over IR!
UChip - Serial Over IR!
UChip - Serial Over IR!

Η ασύρματη επικοινωνία έχει γίνει βασικό χαρακτηριστικό στα έργα μας σήμερα και μιλάμε για ασύρματο, το πρώτο πράγμα που μου έρχεται στο μυαλό είναι το Wi-Fi ή το BT, αλλά ο χειρισμός των πρωτοκόλλων επικοινωνίας Wi-Fi ή BT δεν είναι εύκολη υπόθεση και καταναλώνει πολύ πόρων MCU, αφήνοντας μικρό χώρο για την κωδικοποίηση της εφαρμογής μου. Ως εκ τούτου, συνήθως επιλέγω μια εξωτερική μονάδα Wi-Fi/BT σειριακά συνδεδεμένη με τον μικροελεγκτή προκειμένου να χωρίσω τους ρόλους και να αποκτήσω μεγαλύτερη ελευθερία.

Ωστόσο, μερικές φορές το Wi-Fi και το BT είναι «υπερβολικά» για ορισμένες εφαρμογές που απαιτούν χαμηλό ρυθμό bit και μικρή απόσταση επικοινωνίας. Επιπλέον, η χρήση Wi-Fi ή BT συνεπάγεται την ανάγκη σύνδεσης του Smartphone ή της συσκευής σας με τον κατάλληλο έλεγχο ταυτότητας.

Φανταστείτε ότι πρέπει απλώς να ενεργοποιήσετε/απενεργοποιήσετε ένα εξωτερικό φως ή να αλλάξετε την ένταση της λάμπας ή να ανοίξετε μια ηλεκτρική πύλη. Αξίζει να χρησιμοποιήσετε Wi-Fi ή BT;

Ανάλογα με το περιβάλλον και τις εφαρμογές, η ασύρματη επικοινωνία με μήκος κύματος IR (Υπέρυθρο) μπορεί να είναι χρήσιμη. Ένα Serial over IR, που υλοποιείται με λίγα εξωτερικά εξαρτήματα (3 διακριτά εξαρτήματα!), Και το uChip (ένας πολύ μικρός πίνακας συμβατό με Arduino) μπορεί να είναι η λύση που αναζητούσατε!

Λογαριασμός Υλικών (για μία συσκευή Tx-Rx):

1 x uChip

1 x IR IR: με μέγιστη τιμή εκπομπής στα 950nm

1 x TSOP-38238 (ισοδύναμου)

1 x 1KOhm αντίσταση

Σκεύη, εξαρτήματα

1 x breadboard/proto board

1 x Μαύρος Πλαστικός Σωλήνας: εσωτερική διάμετρος ίδιου μεγέθους με το LED IR, ο σωλήνας είναι απαραίτητος για την αποφυγή διασταυρούμενης συνομιλίας με τον δέκτη TSOP.

1 x φύλλο αλουμινίου (3cm x 3 cm)

1 x ταινία

ΣΥΜΒΟΥΛΗ: Μπορείτε να δημιουργήσετε μια συσκευή μόνο-TX ή μόνο-RX σε περίπτωση που χρειάζεστε επικοινωνία μιας κατεύθυνσης αφαιρώντας το περιττό υλικό RX/TX από το κύκλωμα ή ενεργοποιήστε/απενεργοποιήστε τον σχετικό κώδικα στο σκίτσο.

Βήμα 1: Καλωδίωση

Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση
Καλωδίωση

Συνδέστε τα εξαρτήματα ανάλογα με το σχηματικό σχήμα.

Λίγες σημειώσεις για το απλό σχηματικό. Δεδομένου ότι το TSOP-38238 επιτρέπει τροφοδοσία από 2,5V έως 5V και απορροφά 0,45mA το πολύ (βρείτε το φύλλο δεδομένων ΕΔΩ), θα τροφοδοτήσω τον δέκτη χρησιμοποιώντας δύο ακίδες, οι οποίες θα παρέχουν γείωση και τροφοδοσία αντίστοιχα. Αυτό επιτρέπει την ενεργοποίηση/απενεργοποίηση του δέκτη κατά παραγγελία και μια πολύ απλή ρύθμιση καλωδίωσης υλικού. Επιπλέον, σε περίπτωση που χρειάζεστε επικοινωνία μίας κατεύθυνσης, μπορείτε να επιλέξετε αν θα κάνετε μια συσκευή (Tx/Rx) μόνο απενεργοποιώντας/ενεργοποιώντας το TSOP-38238.

Πώς λειτουργεί το κύκλωμα;

Είναι αρκετά απλό. Ο πείρος εξόδου TSOP τραβιέται χαμηλά όταν ο αισθητήρας ανιχνεύσει ένα τρένο 6 παλμών ή περισσότερων στα 38KHz, από την άλλη πλευρά τραβιέται ψηλά όταν δεν υπάρχει τέτοιο σήμα. Επομένως, για να μεταδοθούν τα σειριακά δεδομένα μέσω IR, αυτό που κάνει το κύκλωμα είναι η τροφοδοσία της ανόδου LED με ένα PWM 38KHz διαμορφωμένο με το σειριακό σήμα TX που κατεβάζει χαμηλά την κάθοδο LED.

Κατά συνέπεια, σε υψηλό επίπεδο του σειριακού TX0, το LED δεν είναι προκατειλημμένο ή προκατειλημμένο ανάστροφα (χωρίς παλμούς) και ο πείρος εξόδου TSOP τραβιέται ψηλά. Μεταδίδοντας ένα χαμηλό επίπεδο στο σειριακό, το LED τροφοδοτείται και παράγει παλμούς IR ανάλογα με το εφαρμοζόμενο σήμα PWM. Επομένως, η έξοδος TSOP είναι χαμηλή.

Δεδομένου ότι η μετάδοση είναι άμεση (0-> 0 και 1-> 1) δεν υπάρχει ανάγκη για μετατροπείς ή άλλη λογική στην πλευρά του δέκτη.

Ρυθμίζω την οπτική ισχύ εξόδου LED επιλέγοντας τον κύκλο λειτουργίας PWM ανάλογα με την εφαρμογή. Όσο υψηλότερος είναι ο κύκλος λειτουργίας, τόσο μεγαλύτερη είναι η οπτική ισχύς εξόδου και, ως εκ τούτου, τόσο περισσότερο θα μεταδίδετε το μήνυμά σας.

Λάβετε υπόψη ότι πρέπει ακόμα να παράγουμε παλμούς! Επομένως, δεν πρέπει να υπερβείτε τον κύκλο λειτουργίας 90%, διαφορετικά το TSOP δεν θα ανιχνεύσει το σήμα ως παλμούς.

Χρειάζεστε περισσότερη δύναμη;

Για να αυξήσουμε το ρεύμα, μπορούμε απλά να μειώσουμε την τιμή της αντίστασης 1kOhm;

Maybeσως, απλά μην είστε πολύ απαιτητικοί! Το μέγιστο ρεύμα που λαμβάνετε από έναν πείρο του MCU περιορίζεται στα 7mA όταν οδηγείτε τον ακροδέκτη θύρας ισχυρότερος από το κανονικό (PINCFG. DRVSTR = 1 και VDD> 3V) όπως αναφέρεται στο φύλλο δεδομένων SAMD21.

Ωστόσο, η τυπική διαμόρφωση (η οποία υιοθετήθηκε από τις βιβλιοθήκες Arduino IDE ως προεπιλογή) περιορίζει το ρεύμα στα 2mA. Επομένως, η χρήση 1kOhm δίνει ήδη το τρέχον όριο με τις προεπιλεγμένες ρυθμίσεις!

Η αύξηση του ρεύματος δεν είναι μόνο θέμα ηλεκτρικών εξαρτημάτων. Εν ολίγοις:

  • Αλλάξτε την αντίσταση (η ελάχιστη τιμή της οποίας περιορίζεται σε περίπου 470Ohm -> VDD/470 ~ 7mA).
  • Ρυθμίστε το αντίστοιχα PORT-> PINCFG-> DRVSTR σε 1.

Θα δώσω τον κωδικό που περιλαμβάνει αυτήν τη δυνατότητα σε μελλοντική ενημέρωση.

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

Βήμα 2: Προγραμματισμός

Φορτώστε το σκίτσο "IRSerial.ino" στο uChip (ή τον συμβατό πίνακα Arduino που χρησιμοποιείτε).

Σε περίπτωση που χρειαστεί να αλλάξετε την καρφίτσα που δημιουργεί το PWM, βεβαιωθείτε ότι χρησιμοποιείτε μια καρφίτσα συνδεδεμένη σε χρονοδιακόπτη TCC, καθώς αυτή η έκδοση του κώδικα λειτουργεί μόνο με χρονοδιακόπτες TCC (ελέγξτε το "variant.c" της πλακέτας σας για αυτές τις πληροφορίες). Θα προσθέσω τον κώδικα για να χρησιμοποιήσω επίσης χρονοδιακόπτες TC σε μελλοντικές ενημερώσεις.

Ο κώδικας είναι αρκετά απλός. Αφού ρυθμίσετε το χαμηλό PIN_5 (παρέχει TSOP GND) και το PIN_6 υψηλό (τροφοδοτεί το TSOP), το MCU ξεκινά το PWM στον PIN_1, ρυθμίζοντας την χρονική περίοδο και τη λήψη συγκρίνοντας ανάλογα με την απαραίτητη διαμόρφωση συχνότητας (στην περίπτωσή μου είναι 38KHz) και καθήκον κύκλου (12,5% ως προεπιλογή). Αυτό γίνεται χρησιμοποιώντας την τυπική συνάρτηση analogWrite () στους ακροδέκτες PWM και αλλάζοντας μόνο τον καταχωρητή PER_REG (μητρώο περιόδου) και τον καταχωρητή CC (σύλληψη σύγκρισης) (ο γραπτός κώδικας είναι απλά μια αποκοπή και επικόλληση από τη βιβλιοθήκη wiring_analog). Μπορείτε να ορίσετε την απαραίτητη συχνότητα ανάλογα με τον αισθητήρα TSOP που αλλάζει PER_REG (το οποίο είναι το ανώτατο όριο για την επαναφορά του μετρητή χρονοδιακόπτη), ενώ ορίζετε CC αναλογικά με την τιμή της περιόδου στο επιθυμητό ποσοστό κύκλου λειτουργίας.

Στη συνέχεια, ο κώδικας ορίζει τη σειριακή θύρα χρησιμοποιώντας το σωστό ρυθμό baud που είναι 2400bps. Γιατί τόσο χαμηλό ποσοστό baud;! Η απάντηση βρίσκεται στο φύλλο δεδομένων TSOP που μπορείτε να βρείτε ΕΔΩ. Δεδομένου ότι το TSOP διαθέτει φίλτρα απόρριψης υψηλού θορύβου για να αποτρέψει την ανεπιθύμητη εναλλαγή, είναι απαραίτητο να στείλετε μια αμαξοστοιχία πολλαπλών παλμών για να κατεβάσετε τον πείρο εξόδου TSOP (ο αριθμός των παλμών εξαρτάται από την έκδοση TSOP, 6 είναι η τυπική τιμή). Ομοίως, η έξοδος TSOP τραβιέται ψηλά μετά από ελάχιστο χρονικό διάστημα που ισοδυναμεί με 10 παλμούς ή περισσότερους. Κατά συνέπεια, για να ορίσετε την έξοδο TSOP ως διαμορφωτικό σήμα TX0, είναι απαραίτητο να ορίσετε τον ρυθμό baud λαμβάνοντας υπόψη την ακόλουθη εξίσωση:

Serial Baud <PWM_frequency/10

Χρησιμοποιώντας 38KHz αυτό οδηγεί σε baudrate χαμηλότερο από 3800bps, πράγμα που σημαίνει ότι ο υψηλότερος "τυπικός" επιτρεπόμενος ρυθμός baud είναι 2400pbs, όπως αναμενόταν προηγουμένως.

Θέλετε να αυξήσετε το ποσοστό baud; Υπάρχουν δύο επιλογές.

Η ευκολότερη επιλογή είναι η αλλαγή του TSOP σε έκδοση υψηλότερης συχνότητας (όπως το TSOP38256), η οποία θα σας επιτρέψει να διπλασιάσετε τον ρυθμό baud (4800bps)

Οχι αρκετά?! Στη συνέχεια, πρέπει να δημιουργήσετε τον δικό σας οπτικό σύνδεσμο χρησιμοποιώντας ένα απλό κύκλωμα IR φωτοδιόδου και ενίσχυσης IR IR+. Ωστόσο, αυτή η λύση απαιτεί πολλή τεχνογνωσία κωδικοποίησης και ηλεκτρονικής για να αποτρέψει τον θόρυβο να επηρεάσει τα μεταδιδόμενα δεδομένα και επομένως η εφαρμογή της δεν είναι καθόλου εύκολη! Ωστόσο, εάν αισθάνεστε αρκετά σίγουροι, είστε περισσότερο από ευπρόσδεκτοι να δοκιμάσετε να φτιάξετε το δικό σας σύστημα TSOP!:)

Τέλος, έθεσα τη θύρα SerialUSB (2400bps) την οποία χρησιμοποιώ για την αποστολή και λήψη δεδομένων στη σειριακή οθόνη.

Η συνάρτηση βρόχου () περιλαμβάνει τον κωδικό που απαιτείται για τη μετάβαση δεδομένων στα δύο σειριακά και αντιγράφεται απευθείας από το παράδειγμα σκίτσο SerialPassthrough αλλάζοντας μόνο τα ονόματα σειρών.

Βήμα 3: Θωράκιση IR LED

IR LED θωράκισης
IR LED θωράκισης
IR LED θωράκισης
IR LED θωράκισης

Εάν ενεργοποιήσετε το παραπάνω κύκλωμα μετά τη φόρτωση του κώδικα "IRSerial.ino", ελέγξτε το Serial Monitor στο Arduino IDE και προσπαθήστε να στείλετε μια συμβολοσειρά. Πιθανότατα θα δείτε ότι το uChip λαμβάνει ακριβώς αυτό που μεταδίδει! Υπάρχει διασταύρωση στο κύκλωμα λόγω οπτικής επικοινωνίας μεταξύ του IR LED και του TSOP της ίδιας συσκευής!

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

Πώς σπάμε τον βρόχο;

Πρώτη επιλογή, μειώνετε τον κύκλο λειτουργίας PWM, μειώνοντας έτσι την οπτική ισχύ εξόδου του LED. Ωστόσο, αυτή η προσέγγιση μειώνει επίσης την απόσταση κατά την οποία λαμβάνετε ένα αξιόπιστο σειριακό κανάλι IR. Η δεύτερη επιλογή είναι η θωράκιση της λυχνίας IR IR, δημιουργώντας έτσι μια "δέσμη" IR κατεύθυνσης. Είναι θέμα προσπάθειας και λάθους. επιτέλους, χρησιμοποιώντας ένα κομμάτι μαύρου πνευματικού εύκαμπτου σωλήνα αέρα τυλιγμένο σε αλουμινόχαρτο και ταινία (παρέχοντας ηλεκτρική μόνωση) κατάφερα να σπάσω την εγκάρσια ομιλία. Η τοποθέτηση του LED μετάδοσης IR μέσα στο σωλήνα εμποδίζει την επικοινωνία μεταξύ του TX και του RX της ίδιας συσκευής.

Κοιτάξτε την εικόνα για να δείτε τη λύση μου, αλλά μη διστάσετε να δοκιμάσετε άλλες μεθόδους ή/και να προτείνετε τη δική σας! Δεν υπάρχει απόλυτη λύση σε αυτό το ζήτημα (εκτός εάν χρειάζεστε ένα απλό κανάλι μιας κατεύθυνσης) και πιθανώς πρέπει να ρυθμίσετε τη διάταξη των κυκλωμάτων, τον κύκλο λειτουργίας PWM και την ασπίδα IR ανάλογα με τις ανάγκες σας.

Μόλις σπάσετε τη διασταυρούμενη ομιλία, μπορείτε να επαληθεύσετε ότι η συσκευή σας εξακολουθεί να λειτουργεί δημιουργώντας έναν βρόχο στη συσκευή Tx-Rx αξιοποιώντας την αντανάκλαση του μήκους κύματος IR στις ανακλαστικές επιφάνειες IR.

Βήμα 4: Επικοινωνήστε

ΕΠΙΚΟΙΝΩΝΩ!
ΕΠΙΚΟΙΝΩΝΩ!
ΕΠΙΚΟΙΝΩΝΩ!
ΕΠΙΚΟΙΝΩΝΩ!

Αυτό είναι όλο

Η σειρά σας μέσω συσκευής IR είναι έτοιμη για επικοινωνία, χρησιμοποιήστε τα για να στείλετε δεδομένα μέσω IR, ενεργοποιήστε/απενεργοποιήστε οτιδήποτε σας αρέσει ή ελέγξτε την κατάσταση ενός αισθητήρα που κρύβετε κρυφά!

Η απόσταση στην οποία η επικοινωνία είναι αξιόπιστη δεν είναι τόσο μεγάλη όσο για μια συσκευή WiFi ή BT. Ωστόσο, είναι κατευθυντικό (ανάλογα με το διάφραγμα LED και το εφαρμοζόμενο σύστημα θωράκισης IR), το οποίο μπορεί να είναι πολύ χρήσιμο σε ορισμένες εφαρμογές!

Σύντομα θα ανεβάσω ένα βίντεο όπου μπορείτε να δείτε μερικά παραδείγματα των εφαρμογών που έκανα. Απολαμβάνω!

Συνιστάται: