- Επεξήγηση εργασίας:
- Απαιτούμενα στοιχεία:
- Διάγραμμα κυκλώματος:
- Εργασία με την ενότητα ασύρματου πομποδέκτη nRF24L01 +:
- Προγραμματισμός του Arduinos:
- Πρόγραμμα επεξεργασίας:
- Δοκιμές:
Η δημιουργία ενός τοπικού δικτύου για κοινή χρήση προσωπικού και εμπιστευτικών δεδομένων έχει γίνει σχεδόν αδύνατη για έναν κοινό άνθρωπο στον σύγχρονο κόσμο μας. Αυτό συμβαίνει κυρίως επειδή όλες οι κοινές μέθοδοι συνομιλίας όπως το Whatsapp, το Facebook, το Hangout και σχεδόν όλα περιλαμβάνουν σύνδεση στο Διαδίκτυο.
Τι γίνεται αν θα μπορούσαμε να μοιραστούμε δεδομένα χωρίς το μέσο του Διαδικτύου;
Πόσο ωραίο θα ήταν αν μπορούσατε να επικοινωνήσετε με άτομα εντός του σπιτιού ή του χώρου εργασίας σας χωρίς net pack ή σύνδεση στο Internet;
Τι γίνεται αν θα μπορούσαμε να προσαρμόσουμε την οθόνη συνομιλίας με τις δικές μας φαντασίες;
Όλα αυτά είναι δυνατά με έναν μικροελεγκτή και ένα ασύρματο μέσο μετάδοσης. Αυτό το δωμάτιο συνομιλίας Arduino που χρησιμοποιεί το έργο nRF24L01 θα σας καθοδηγήσει στη δημιουργία μιας αίθουσας συνομιλίας χαμηλού κόστους στην περιοχή σας.
Ας περάσουμε λοιπόν και να δούμε πώς λειτουργεί.
Επεξήγηση εργασίας:
Βασικά για να δουλέψουμε αυτό το πράγμα, θα χρειαστούμε ένα ζευγάρι Arduino board και φτηνές ασύρματες μονάδες. Οι ασύρματες μονάδες που θα χρησιμοποιούμε εδώ είναι nRF24L01. Ο λόγος για την επιλογή αυτών των ενοτήτων είναι ότι αυτές είναι οι διάδοχοι του Zigbee και είναι εύκολο να συνεργαστεί με μια σύνδεση. Επίσης, αυτές οι λειτουργικές μονάδες λειτουργούν σε 2,4 GHz (ζώνη ISM) με επιλογές φάσματος μετάδοσης συχνότητας και επιλογές έκρηξης σοκ που μας κάνουν να νιώθουμε χαλαροί από προβλήματα παρεμβολών.
Τα Arduino και NRF24L01 μας συνδέονται μεταξύ τους για να δημιουργήσουν μια σειριακή επικοινωνία, ώστε να μπορούν να μιλούν μεταξύ τους. Το NRF24L01 είναι μονάδες πομποδέκτη μισού διπλού, επομένως μπορούν να στέλνουν και να λαμβάνουν δεδομένα. Τα δεδομένα συλλέγονται από τον χρήστη και μεταδίδονται αυτά τα δεδομένα μπορούν να ληφθούν από οποιαδήποτε (ή μία συγκεκριμένη) ενότητα και να τα εμφανίσουν στην οθόνη τους.
Αλλά!!!!! Θα συζητήσουμε χρησιμοποιώντας την οθόνη εντοπισμού σφαλμάτων του Arduino; Φυσικά και όχι. Θα χτίσουμε και θα προσαρμόσουμε τη δική μας οθόνη συνομιλίας με τη βοήθεια της «Επεξεργασίας». Η επεξεργασία είναι ένα λογισμικό που μπορεί να επικοινωνήσει με το Arduino χρησιμοποιώντας το UART. Θα δημιουργήσουμε ένα αρχείο.exe με γλώσσα επεξεργασίας, το οποίο θα μπορούσε να εκτελεστεί σε οποιονδήποτε υπολογιστή με Java Runtime. Για να συνομιλήσετε, πρέπει απλώς να συνδέσουμε το Arduino και να ανοίξουμε αυτό το αρχείο.exe και το Booooom !! βρισκόμαστε στο δικό μας Ιδιωτικοποιημένο εντελώς δωρεάν δωμάτιο συνομιλίας.
Αυτό το έργο περιορίζεται στην απλή προσθήκη δύο μελών στην αίθουσα συνομιλίας, αλλά το nRF24L01 έχει 6 αγωγούς και έτσι θα μπορούσαν να υπάρχουν έως 6 μέλη στην αίθουσα συνομιλίας μας. Αυτό το δωμάτιο char μπορεί να λειτουργήσει εντός των 100 μέτρων, ανάλογα με τις μονάδες nRF24L01.
Ας πάμε για ψώνια !!!!
Απαιτούμενα στοιχεία:
- Arduino (οποιαδήποτε έκδοση ή μοντέλο) - 2Nos
- nRF24L01 + Ασύρματη μονάδα πομποδέκτη - 2Nos
- 3.3 Ρυθμιστής τάσης - 2Nos. (Δεν είναι υποχρεωτικό)
- Σύνδεση καλωδίων
- Ενδιαφέρον (Lolz)
Διάγραμμα κυκλώματος:
Arduino Mega με nRF24L01:
Arduino Nano με nRF24L01:
Το έργο μας δεν περιλαμβάνει πολύπλοκες συνδέσεις. Έχω χρησιμοποιήσει ένα Arduino Mega και ένα Arduino Nano και οι συνδέσεις τους με το nRF24L01 φαίνονται παραπάνω. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε μοντέλα Arduino.
Εργασία με την ενότητα ασύρματου πομποδέκτη nRF24L01 +:
Ωστόσο, για να κάνουμε το nRF24L01 μας να λειτουργεί χωρίς θόρυβο, ίσως θέλουμε να λάβουμε υπόψη τα ακόλουθα πράγματα. Εργάζομαι σε αυτό το nRF24L01 + για πολύ καιρό και έμαθα ότι τα ακόλουθα σημεία μπορούν να σας βοηθήσουν να χτυπήσετε σε έναν τοίχο.
1. Οι περισσότερες από τις μονάδες nRF24L01 + στην αγορά είναι ψεύτικες. Τα φθηνά που μπορούμε να βρούμε στο Ebay και το Amazon είναι τα χειρότερα (Μην ανησυχείτε, με λίγα τσιμπήματα μπορούμε να τα κάνουμε να λειτουργούν)
2. Το κύριο πρόβλημα είναι η τροφοδοσία όχι ο κωδικός σας. Οι περισσότεροι από τους διαδικτυακούς κωδικούς θα λειτουργούν σωστά, εγώ ο ίδιος έχω έναν κωδικό εργασίας τον οποίο έχω δοκιμάσει προσωπικά.
3. Δώστε προσοχή γιατί οι μονάδες που εκτυπώνονται ως NRF24L01 + είναι στην πραγματικότητα Si24Ri (Ναι κινεζικό προϊόν).
4. Ο κλώνος και οι ψεύτικες μονάδες θα καταναλώνουν περισσότερη ισχύ, επομένως μην αναπτύσσετε το κύκλωμα ισχύος σας με βάση το φύλλο δεδομένων nRF24L01 +, επειδή το Si24Ri θα έχει υψηλή κατανάλωση ρεύματος περίπου 250mA.
5. Προσοχή στους κυματισμούς τάσης και τις τρέχουσες υπερτάσεις, αυτές οι μονάδες είναι πολύ ευαίσθητες και μπορεί εύκολα να καούν. (;-(μέχρι τώρα 2 ενότητες)
6. Η προσθήκη ενός ζεύγους πυκνωτή (10uF και 0.1uF) σε Vcc και Gnd της μονάδας βοηθά στο να κάνετε την τροφοδοσία σας καθαρή και αυτό λειτουργεί για τις περισσότερες από τις μονάδες.
Ακόμα αν έχετε προβλήματα αναφέρετε την ενότητα σχολίων ή διαβάστε αυτό.
Προγραμματισμός του Arduinos:
Το πρόγραμμα τόσο για το Arduino Nano όσο και για το Mega θα είναι παρόμοιο για την αλλαγή των καρφιτσών CE και CS. Θα εξηγήσω το πρόγραμμα χωρίζοντάς το σε μικρά τμήματα.
Δεδομένου ότι οι Arduino και nRF24L01 επικοινωνούν μέσω του SPI, ζητήσαμε τη βιβλιοθήκη SPI. Έχουμε συμπεριλάβει επίσης το Maniacbug RF24 lib για να λειτουργούν οι μονάδες RF. Κατεβάστε το αρχείο από εδώ και προσθέστε το στο IDE σας.
#περιλαμβάνω
Οι μονάδες NRF μας συνδέονται στους ακροδέκτες 8 και 10 με CE και CS αντίστοιχα.
RF24 myRadio (8, 10);
Δημιουργούμε ένα πακέτο δομημένων δεδομένων που ονομάζεται πακέτο . Το μεταβλητό κείμενο θα χρησιμοποιηθεί για τη μετάδοση δεδομένων στον αέρα.
πακέτο δομή {char κείμενο; // Κείμενο προς μετάδοση στον αέρα}; πακέτο typedef struct πακέτο? Δεδομένα πακέτου
Στη λειτουργία κενής ρύθμισης () , αρχικοποιούμε το ρυθμό baud σε 9600 και ρυθμίζουμε τις μονάδες μας σε 115 με κατανάλωση ισχύος MIN και ταχύτητα 250KBPS. Μπορείτε να παίξετε με αυτές τις τιμές αργότερα.
άκυρη ρύθμιση () {Serial.begin (9600); καθυστέρηση (1000) //Serial.print("Setup Initialized "); myRadio.begin (); myRadio.setChannel (115); // 115 ζώνη πάνω από το WIFI σηματοδοτεί το myRadio.setPALevel (RF24_PA_MIN); // Ισχύς MIN χαμηλής ισχύος myRadio.setDataRate (RF24_250KBPS); // Ελάχιστη ταχύτητα}
Η μονάδα έχει σχεδιαστεί για να λειτουργεί σε λειτουργία μετάδοσης εάν τα δεδομένα λαμβάνονται μέσω Serial buffer, αλλιώς θα είναι σε λειτουργία δέκτη αναζητώντας δεδομένα στον αέρα. Τα δεδομένα από το χρήστη αποθηκεύονται σε ένα Char Array και αποστέλλονται στο WriteData () για να τα μεταδίδουν.
void loop () {while (Serial.available ()> 0) // Λήψη τιμών από τον χρήστη {val = Serial.peek (); if (ευρετήριο <19) // Ένα μικρότερο από το μέγεθος του πίνακα {inChar = Serial.read (); // Διαβάστε έναν χαρακτήρα inData = inChar; // Αποθηκεύστε το ευρετήριο ++; // Αύξηση του πού θα γράψω το επόμενο inData = '\ 0'; // Null τερματίστε τη συμβολοσειρά} if (val == '#') {strcpy (data.text, inData); Γράψε δεδομένα (); // Τοποθετήστε τη μονάδα σε λειτουργία μετάδοσης ενώ (index! = 0) {inData = "; δείκτης--; }}} ReadData (); // Βάλτε την ενότητα Λειτουργία λήψης}
η συνάρτηση void WriteData () γράφει τα δεδομένα στη διεύθυνση 0xF0F0F0F0AA, αυτή η διεύθυνση χρησιμοποιείται ως σωλήνας εγγραφής σε άλλη ενότητα.
άκυρο WriteData () {myRadio.stopListening (); // Διακοπή λήψης και έναρξη transminitng myRadio.openWritingPipe (0xF0F0F0F066); // Αποστολή δεδομένων σε αυτήν τη διεύθυνση 40-bit myRadio.write (& data, sizeof (data)); καθυστέρηση (300) }
Η συνάρτηση void ReadData () γράφει τα δεδομένα στο 0xF0F0F0F066 αυτήν τη διεύθυνση, αυτή η διεύθυνση χρησιμοποιείται ως σωλήνας ανάγνωσης σε άλλη μονάδα.
άκυρο ReadData () {myRadio.openReadingPipe (1, 0xF0F0F0F0AA); // Ποιος σωλήνας να διαβάσει, 40 bit Διεύθυνση myRadio.startListening (); // Διακοπή μετάδοσης και έναρξη επανεξέτασης εάν (myRadio.available ()) {while (myRadio.available ()) {myRadio.read (& data, sizeof (data)); } Serial.println (data.text); }}
Αυτό είναι, το μέρος προγραμματισμού μας έχει τελειώσει. Εάν δεν μπορείτε να καταλάβετε λίγα πράγματα εδώ, ελέγξτε τα δύο προγράμματα και για τα δύο Arduinos, που αναφέρονται στην ενότητα Κώδικας παρακάτω, έχω προσθέσει γραμμές σχολίων για να εξηγήσω τα πράγματα πολύ καλύτερα.
Πρόγραμμα επεξεργασίας:
Το «Processing» είναι λογισμικό ανοιχτού κώδικα που χρησιμοποιείται από καλλιτέχνες για το σχεδιασμό γραφικών. Αυτό το λογισμικό χρησιμοποιείται για την ανάπτυξη λογισμικού και εφαρμογών Android. Είναι αρκετά εύκολο να αναπτυχθεί και μοιάζει πολύ με το Android Development IDE. Ως εκ τούτου, συντόμευα την εξήγηση.
Ο κώδικας επεξεργασίας και για τις δύο οθόνες συνομιλίας δίνεται εδώ:
- Οθόνη συνομιλίας 1 Κωδικός επεξεργασίας
- Οθόνη συνομιλίας οθόνης επεξεργασίας 2
Κάντε δεξί κλικ πάνω τους και κάντε κλικ στο «Αποθήκευση συνδέσμου ως..» για να τα κατεβάσετε και να τα ανοίξετε στον υπολογιστή σας μετά τη ρύθμιση του Arduinos. Πρέπει να εγκαταστήσετε το λογισμικό «Επεξεργασία» για να ανοίξετε αυτά τα αρχεία *.pde και στη συνέχεια «Εκτέλεση» για να ανοίξετε τα κουτιά συνομιλίας. Η ενότητα σχολίων είναι ανοιχτή για ερωτήματα. Το σκίτσο επεξεργασίας για τη μονάδα πομπού και δέκτη είναι ίδια.
Στην παρακάτω ενότητα κώδικα, το "port = new Serial (this, Serial.list (), 9600); // Διαβάζει το 4ο PORT στο 9600 baudrate" είναι σημαντικό καθώς αποφασίζει από ποια θύρα σε δεδομένα από.
άκυρη ρύθμιση () {μέγεθος (510.500); port = new Serial (αυτό, Serial.list (), 9600); // Διαβάζει το 4ο PORT στο 9600 baudrate println (Serial.list ()); φόντο (0); }
Εδώ έχω διαβάσει δεδομένα από την 4η θύρα από το Arduino μου.
Έτσι, για παράδειγμα, εάν έχετε COM COM COM COM
Στη συνέχεια, ο παραπάνω κώδικας θα διαβάσει δεδομένα από το COM.
Δοκιμές:
Τώρα, καθώς το σκίτσο επεξεργασίας και Arduino είναι έτοιμο, απλώς ανεβάστε το πρόγραμμα στο Arduino και αφήστε το συνδεδεμένο στον φορητό υπολογιστή σας. Ανοίξτε το σκίτσο επεξεργασίας και ξεκινήστε να πληκτρολογείτε και πατήστε "Enter" το μήνυμά σας θα μεταδοθεί στο άλλο Arduino, το οποίο θα εμφανίσει το ληφθέν κείμενο σε άλλη εφαρμογή επεξεργασίας συνδεδεμένη σε άλλο υπολογιστή. Περαιτέρω ελέγξτε το παρακάτω βίντεο για πλήρη επίδειξη.
Έτσι, πώς μπορείτε να μιλήσετε με τους φίλους και την οικογένειά σας στην περιοχή σας χωρίς να έχετε καμία σύνδεση στο Διαδίκτυο, χρησιμοποιώντας αυτό το φθηνό Arduino Chat Room.