- Απαιτούμενα στοιχεία
- Σύντομη εισαγωγή στο Li-Fi
- Ενότητα πομπού Li-Fi χρησιμοποιώντας το Arduino
- Ενότητα δέκτη Li-Fi χρησιμοποιώντας το Arduino
- Κωδικοποίηση Arduino για Li-Fi
Το Li-Fi (Light Fidelity) είναι μια προηγμένη τεχνολογία που επιτρέπει τη μεταφορά δεδομένων χρησιμοποιώντας οπτική επικοινωνία, όπως ορατό φως. Τα δεδομένα Li-Fi μπορούν να ταξιδέψουν μέσω του φωτός και μετά να ερμηνευθούν από την πλευρά του δέκτη χρησιμοποιώντας οποιαδήποτε ευαίσθητη στο φως συσκευή όπως LDR ή φωτοδίοδος. Η επικοινωνία Li-Fi μπορεί να είναι 100 φορές ταχύτερη από το Wi-Fi.
Εδώ σε αυτό το έργο, θα δείξουμε την επικοινωνία Li-Fi χρησιμοποιώντας δύο Arduino. Εδώ τα δεδομένα κειμένου μεταδίδονται χρησιμοποιώντας πληκτρολόγιο LED και 4x4. Και αποκωδικοποιείται στην πλευρά του δέκτη χρησιμοποιώντας LDR. Στο παρελθόν εξηγήσαμε λεπτομερώς το Li-Fi και χρησιμοποιήσαμε το Li-Fi για τη μεταφορά σημάτων ήχου.
Απαιτούμενα στοιχεία
- Arduino UNO
- Αισθητήρας LDR
- Πληκτρολόγιο 4 * 4
- 16 * 2 αλφαριθμητική LCD
- Μονάδα διασύνδεσης I2C για LCD
- Ψωμί
- Συνδέοντας άλτες
- LED 5 mm
Σύντομη εισαγωγή στο Li-Fi
Όπως συζητήθηκε παραπάνω, το Li-Fi είναι μια προηγμένη τεχνολογία επικοινωνίας που μπορεί να είναι 100 φορές ταχύτερη από την επικοινωνία Wi-Fi. Χρησιμοποιώντας αυτήν την τεχνολογία, τα δεδομένα μπορούν να μεταφερθούν χρησιμοποιώντας πηγές ορατού φωτός. Φανταστείτε, εάν μπορείτε να αποκτήσετε πρόσβαση σε Internet υψηλής ταχύτητας χρησιμοποιώντας μόνο την πηγή φωτός σας. Δεν φαίνεται πολύ ενδιαφέρον;
Το Li-Fi χρησιμοποιεί ορατό φως ως μέσο επικοινωνίας για τη μετάδοση δεδομένων. Ένα LED μπορεί να λειτουργήσει ως πηγή φωτός και η φωτοδίοδος λειτουργεί ως πομποδέκτης που λαμβάνει φωτεινά σήματα και τα μεταδίδει πίσω. Με τον έλεγχο του παλμού φωτός στην πλευρά του πομπού, μπορούμε να στείλουμε μοναδικά μοτίβα δεδομένων. Αυτό το φαινόμενο εμφανίζεται με εξαιρετικά υψηλή ταχύτητα και δεν μπορεί να το δει κανείς μέσω του ανθρώπινου ματιού. Στη συνέχεια, στην πλευρά του δέκτη, η φωτοδίοδος ή η αντίσταση που εξαρτάται από το φως (LDR) μετατρέπει τα δεδομένα σε χρήσιμες πληροφορίες.
Ενότητα πομπού Li-Fi χρησιμοποιώντας το Arduino
Όπως φαίνεται στο παραπάνω σχήμα, στο τμήμα πομπού της επικοινωνίας Li-Fi, το πληκτρολόγιο χρησιμοποιείται ως είσοδος εδώ. Αυτό σημαίνει ότι θα επιλέξουμε το κείμενο που θα μεταδοθεί χρησιμοποιώντας το πληκτρολόγιο. Στη συνέχεια, η επεξεργασία των πληροφοριών γίνεται από τη μονάδα ελέγχου που δεν είναι τίποτα άλλο από το Arduino στην περίπτωσή μας. Το Arduino μετατρέπει τις πληροφορίες σε δυαδικούς παλμούς που μπορούν να τροφοδοτηθούν σε μια πηγή LED για μετάδοση. Στη συνέχεια, αυτά τα δεδομένα τροφοδοτούνται στο φως LED που στέλνει τους παλμούς ορατού φωτός στην πλευρά του δέκτη.
Διάγραμμα κυκλώματος του τμήματος πομπού:
Ρύθμιση υλικού για πλευρά πομπού:
Ενότητα δέκτη Li-Fi χρησιμοποιώντας το Arduino
Στην ενότητα δέκτη, ο αισθητήρας LDR δέχεται τους παλμούς ορατού φωτός από την πλευρά του πομπού και τον μετατρέπει σε ερμηνεύσιμους ηλεκτρικούς παλμούς, οι οποίοι τροφοδοτούνται στο Arduino (μονάδα ελέγχου). Ο Arduino λαμβάνει αυτόν τον παλμό και τον μετατρέπει σε πραγματικά δεδομένα και τον εμφανίζει σε οθόνη LCD 16x2.
Διάγραμμα κυκλώματος της ενότητας δέκτη:
Ρύθμιση υλικού για πλευρά δέκτη:
Κωδικοποίηση Arduino για Li-Fi
Όπως φαίνεται παραπάνω, έχουμε δύο ενότητες για πομπό και δέκτη Li-Fi. Οι πλήρεις κωδικοί για κάθε ενότητα δίνονται στο κάτω μέρος του σεμιναρίου και μια σταδιακή επεξήγηση των κωδικών δίνεται παρακάτω:
Κωδικός πομπού Arduino Li-Fi:
Στην πλευρά του πομπού, το Arduino Nano χρησιμοποιείται με πληκτρολόγιο 4x4 και LED. Πρώτα, όλα τα εξαρτώμενα αρχεία βιβλιοθήκης λαμβάνονται και εγκαθίστανται στο Arduino μέσω του Arduino IDE. Εδώ, η βιβλιοθήκη πληκτρολογίων χρησιμοποιείται για τη χρήση πληκτρολογίου 4 * 4, το οποίο μπορείτε να κατεβάσετε από αυτόν τον σύνδεσμο. Μάθετε περισσότερα σχετικά με τη διασύνδεση του πληκτρολογίου 4x4 με το Arduino εδώ.
#περιλαμβάνω
Μετά την επιτυχή εγκατάσταση αρχείων βιβλιοθήκης, ορίστε το no. από σειρές και τιμές στηλών που είναι 4 και για τα δύο καθώς έχουμε χρησιμοποιήσει ένα πληκτρολόγιο 4 * 4 εδώ.
const byte ROW = 4; const byte COL = 4; char keyscode = { {'1', '2', '3', 'A'}, {'4', '5', '6', 'B'}, {'7', '8', ' 9 ',' C '}, {' * ',' 0 ',' # ',' D '} };
Στη συνέχεια, ορίζονται οι καρφίτσες Arduino που χρησιμοποιούνται για διασύνδεση με το πληκτρολόγιο 4 * 4. Στην περίπτωσή μας, χρησιμοποιήσαμε τα A5, A4, A3 και A2 για R1, R2, R3, R4 αντίστοιχα και A1, A0, 12, 11 για C1, C2, C3 και C4 αντίστοιχα.
byte rowPin = {A5, A4, A3, A2}; byte colPin = {A1, A0, 12, 11}; Πληκτρολόγιο customKeypad = Πληκτρολόγιο (makeKeymap (κωδικός κλειδιού), rowPin, colPin, ROW, COL);
Μέσα στη ρύθμιση (), ο πείρος εξόδου ορίζεται, όπου είναι συνδεδεμένη η πηγή LED. Επίσης, διατηρείται ΑΝΕΝΕΡΓΟ κατά την ενεργοποίηση της συσκευής.
άκυρη ρύθμιση () { pinMode (8, OUTPUT); digitalWrite (8, ΧΑΜΗΛΗ); }
Inside while loop, οι τιμές που λαμβάνονται από το πληκτρολόγιο διαβάζονται χρησιμοποιώντας customKeypad.getKey () και συγκρίνεται στο if-else βρόχο, για τη δημιουργία μοναδικών παλμών σε κάθε πάτημα πλήκτρων. Μπορεί να φανεί στον κώδικα ότι τα χρονικά διαστήματα διατηρούνται μοναδικά για όλες τις βασικές τιμές.
char customKey = customKeypad.getKey (); if (customKey) { if (customKey == '1') { digitalWrite (8, ΥΨΗΛΟ); καθυστέρηση (10) digitalWrite (8, ΧΑΜΗΛΗ); }
Κωδικός δέκτη Arduino Li-Fi:
Στην πλευρά του δέκτη Li-Fi, το Arduino UNO συνδέεται με έναν αισθητήρα LDR όπως φαίνεται στο διάγραμμα κυκλώματος. Εδώ ο αισθητήρας LDR συνδέεται εν σειρά με μια αντίσταση για να σχηματίσει ένα κύκλωμα διαχωριστή τάσης και η αναλογική έξοδος τάσης από τον αισθητήρα τροφοδοτείται στο Arduino ως σήμα εισόδου. Εδώ χρησιμοποιούμε μια μονάδα I2C με LCD για τη μείωση του αριθ. συνδέσεων με το Arduino, καθώς αυτή η μονάδα απαιτεί μόνο 2 ακίδες δεδομένων SCL / SDA και 2 ακροδέκτες τροφοδοσίας.
Ξεκινήστε τον κώδικα συμπεριλαμβάνοντας όλα τα απαιτούμενα αρχεία βιβλιοθήκης στον κώδικα όπως Wire.h για επικοινωνία I2C, LiquidCrystal_I2C.h για LCD κ.λπ. Αυτές οι βιβλιοθήκες θα ήταν προεγκατεστημένες με το Arduino, οπότε δεν χρειάζεται να τις κατεβάσετε.
#περιλαμβάνω
Για χρήση της μονάδας I2C για αλφαριθμητική οθόνη LCD 16 * 2, διαμορφώστε τη χρησιμοποιώντας την κλάση LiquidCrystal_I2C . Εδώ πρέπει να περάσουμε τη διεύθυνση, τη σειρά και τον αριθμό στήλης που είναι 0x3f, 16 και 2 αντίστοιχα στην περίπτωσή μας.
LiquidCrystal_I2C lcd (0x3f, 16, 2);
Εσωτερική ρύθμιση (), δηλώστε τον ακροδέκτη εισόδου παλμού για τη λήψη του σήματος. Στη συνέχεια, εκτυπώστε ένα μήνυμα καλωσορίσματος στην οθόνη LCD που θα εμφανίζεται κατά την αρχικοποίηση του έργου.
άκυρη ρύθμιση () { pinMode (8, INPUT); Serial.begin (9600); lcd.init (); lcd.backlight (); lcd.setCursor (0, 0); lcd.print ("ΚΑΛΩΣ ΗΡΘΑΤΕ"); lcd.setCursor (0, 1); lcd.print ("CIRCUIT DIGEST"); καθυστέρηση (2000); lcd.clear (); }
Μέσα στο ενώ βρόχο, η διάρκεια εισόδου παλμό από LDR υπολογίζεται χρησιμοποιώντας pulseIn λειτουργία, και ο τύπος του παλμού ορίζεται η οποία είναι χαμηλή στην περίπτωσή μας. Η τιμή εκτυπώνεται στη σειριακή οθόνη για σκοπούς εντοπισμού σφαλμάτων. Προτείνεται να ελέγξετε τη διάρκεια, καθώς μπορεί να είναι διαφορετική για διαφορετικές ρυθμίσεις.
χωρίς υπογραφή μακρά διάρκεια = pulseIn (8, HIGH); Serial.println (διάρκεια);
Αφού ελέγξαμε τη διάρκεια όλων των παλμών πομπού, έχουμε τώρα 16 εύρη διάρκειας παλμού, τα οποία σημειώνονται για αναφορά. Τώρα συγκρίνετέ τα χρησιμοποιώντας έναν βρόχο IF-ELSE για να λάβετε τα ακριβή δεδομένα που έχουν μεταδοθεί. Ένα δείγμα βρόχου για το κλειδί 1 δίνεται παρακάτω:
εάν (διάρκεια> 10000 && διάρκεια <17000) { lcd.setCursor (0, 0); lcd.print ("Ελήφθη: 1"); }
Πομπός και δέκτης Li-Fi χρησιμοποιώντας το Arduino
Αφού ανεβάσετε τον πλήρη κώδικα και στα δύο Arduinos, πατήστε οποιοδήποτε κουμπί στο πληκτρολόγιο στην πλευρά του δέκτη και το ίδιο ψηφίο θα εμφανίζεται στην οθόνη LCD 16x2 στην πλευρά του δέκτη.
Έτσι μπορεί να χρησιμοποιηθεί το Li-Fi για τη μετάδοση δεδομένων μέσω φωτός. Ελπίζω να απολαύσατε το άρθρο και να μάθετε κάτι νέο από αυτό, εάν έχετε οποιαδήποτε αμφιβολία, μπορείτε να χρησιμοποιήσετε την ενότητα σχολίων ή να ρωτήσετε στα φόρουμ.