- Walkie Talkie χρησιμοποιώντας nRF24L01 RF Module
- Απαιτείται συστατικό για το Walkie Talkie που βασίζεται στο Arduino
- Διάγραμμα κυκλώματος Arduino Walkie Talkie
- Κωδικός Walkie Talkie Arduino
Ζούμε στην εποχή των συσκευών με δυνατότητα 5G και 5G. Ωστόσο, οι παλιές τεχνολογίες όπως το σύστημα walkie-talkie και το σύστημα επικοινωνίας RF εξακολουθούν να είναι πρωταρχικής σημασίας σε σενάρια όπου απαιτείται απομακρυσμένη, μικρή απόσταση, φθηνή και χαμηλού κόστους επικοινωνία. Για παράδειγμα, εάν έχετε μια οικοδομική ή βαρέων βαρών κατασκευαστική εταιρεία, τότε οι εργαζόμενοι πρέπει να επικοινωνούν μεταξύ τους για συντονισμένη εργασία. Με τη βοήθεια ενός φορητού ραδιοτηλέφωνο, μπορούν να επικοινωνήσουν μεταξύ τους και να απλώσουν σύντομο μασάζ ή οδηγίες πατώντας απλά το κουμπί "PTT" για να μεταδώσουν φωνή για άλλους εργαζόμενους, ώστε να ακούσουν και να ακολουθήσουν τις οδηγίες. Μια άλλη εφαρμογή θα μπορούσε να είναι στα έξυπνα κράνηγια να επικοινωνήσετε μεταξύ ενός πακέτου αναβατών κατά τη διάρκεια μιας μεγάλης διαδρομής, το προτεινόμενο μοντέλο εδώ μπορεί να επικοινωνεί μεταξύ έξι ατόμων κάθε φορά. Αν θέλετε να ελέγξετε άλλους τύπους έργων ασύρματης μετάδοσης ήχου μικρής εμβέλειας, επισκεφθείτε το έργο IR Wireless Transmitter και Li-Fi Audio Transmitter χρησιμοποιώντας τους συνδέσμους.
Walkie Talkie χρησιμοποιώντας nRF24L01 RF Module
Το κύριο συστατικό αυτού του έργου είναι η μονάδα RF NRF24L01 και το Arduino Uno που είναι ο εγκέφαλος ή ο επεξεργαστής. Έχουμε ήδη μάθει πώς να διασυνδέουμε το Nrf24L01 με το Arduino ελέγχοντας έναν σέρβο κινητήρα από απόσταση. Για αυτό το έργο, η μονάδα NRF24L01 RF επιλέγεται επειδή έχει πολλά πλεονεκτήματα σε σχέση με ένα μέσο ψηφιακής επικοινωνίας. Έχει ζώνη ISM 2,4 GHz πολύ υψηλής συχνότητας και ο ρυθμός δεδομένων μπορεί να είναι 250kbps, 1Mbps, 2 Mbps. Έχει 125 πιθανά κανάλια σε απόσταση μεταξύ 1Mhz, οπότε η μονάδα μπορεί να χρησιμοποιήσει 125 διαφορετικά κανάλια, γεγονός που καθιστά δυνατή την ύπαρξη ενός δικτύου 125 μόντεμ που λειτουργεί ανεξάρτητα σε ένα μέρος.
Το πιο σημαντικό, τα σήματα NRF24L01 δεν αλληλεπικαλύπτονται ή αλληλοεπικαλύπτονται με άλλα συστήματα walkie-talkie, όπως το walkie-talkie της αστυνομίας και το walkie-talkie των σιδηροδρόμων και δεν ενοχλεί άλλα walkie-talkie. Μια μεμονωμένη μονάδα nrf24l01 μπορεί να επικοινωνήσει με τις άλλες 6 μονάδες nrf24l01 τη στιγμή που βρίσκονται στην κατάσταση λήψης. Επίσης, είναι μια μονάδα χαμηλής κατανάλωσης ενέργειας που είναι ένα πρόσθετο πλεονέκτημα. Υπάρχουν δύο τύποι μονάδων NRF24L01 που είναι ευρέως διαθέσιμοι και χρησιμοποιούνται ευρέως, ένας είναι NRF24L01 + και ένας άλλος είναι NRF24L01 + PA + LNA (φαίνεται παρακάτω) με ενσωματωμένη κεραία.
Το NRF24L01 + διαθέτει ενσωματωμένη κεραία και απόσταση 100 μέτρων. Είναι καλό μόνο για εσωτερική χρήση και δεν είναι κατάλληλο για εξωτερικές επικοινωνίες μεγάλων αποστάσεων. Επιπλέον, εάν υπάρχει ένα τοίχωμα μεταξύ του πομπού και του δέκτη, η μετάδοση σήματος είναι πολύ κακή. Το NRF24L01 + PA + LNA με εξωτερική κεραία διαθέτει PA που αυξάνει την ισχύ του σήματος πριν από τη μετάδοση. Το LNA σημαίνει ενισχυτή χαμηλού θορύβου. Είναι σαφές, φιλτράρει τον θόρυβο και αυξάνει το εξαιρετικά αδύναμο και αβέβαιο χαμηλό επίπεδο του σήματος που λαμβάνεται από την κεραία. Βοηθά στη δημιουργία χρήσιμων επιπέδων σήματος και διαθέτει εξωτερική κεραία 2dB μέσω της οποίας μπορεί να μεταδώσει 1000 μέτρα κάλυψης εμβέλειας on-air, οπότε είναι ιδανικό για τα υπαίθρια έργα επικοινωνίας με φορητό ραδιοτηλέφωνο.
Απαιτείται συστατικό για το Walkie Talkie που βασίζεται στο Arduino
- NRF24L01 + PA + LNA με εξωτερική κεραία 2DB (2 τεμ)
- Arduino UNO ή οποιαδήποτε έκδοση του Arduino
- Ενισχυτής ήχου (2τμχ)
- Κύκλωμα μικροφώνου: Μπορείτε να το κάνετε μόνοι σας (θα συζητηθεί αργότερα) ή να αγοράσετε μια μονάδα αισθητήρα ήχου.
- Ενισχυτική μονάδα ενίσχυσης DC σε DC (2 τεμάχια)
- 3.3V AMS1117 μονάδα ρυθμιστή τάσης
- LED ένδειξης ισχύος (2τμχ)
- 470 ohms αντίσταση (2τμχ)
- Ένα μεγάφωνο 4 ιντσών (2 τεμάχια)
- μπουτόν (για κουμπί PTT)
- 104 PF για κατασκευή κουμπιού PTT (2 τεμάχια)
- Πυκνωτής 100 NF για NRF24L01 (2τμχ)
- 1k αντίσταση για κουμπί PTT (2τμχ)
- 2 σετ μπαταρίας ιόντων λιθίου
- Ενότητα φόρτισης μπαταρίας ιόντων λιθίου και προστασίας μπαταρίας (2 τεμάχια)
- Μερικά καλώδια βραχυκυκλωτήρα, καρφίτσα κεφαλής αρσενικού, διάστικτη σανίδα vero
Διάγραμμα κυκλώματος Arduino Walkie Talkie
Το πλήρες διάγραμμα κυκλώματος για το Arduino Walkie Talkie φαίνεται στην παρακάτω εικόνα. Το διάγραμμα κυκλώματος δείχνει όλες τις συνδέσεις, συμπεριλαμβανομένου του κουμπιού PTT, του κυκλώματος μικροφώνου και της εξόδου στερεοφωνικού ήχου.
Σημαντικό: Το εύρος εισόδου τάσης μονάδας NRF24L01 είναι 1,9v έως 3,6 volt το μέγιστο και για σταθερότητα τάσης και ρεύματος πρέπει να χρησιμοποιήσετε έναν πυκνωτή 100nf στο + VCC και - GND, αλλά άλλες ακίδες της μονάδας nrf24l01 μπορούν να ανεχθούν το σήμα 5-volt επίπεδα.
Βήμα 1: Ξεκίνησα με την κατασκευή σπιτικών προσαρμοσμένων πλακέτων PCB και Arduino Atmega328p. Είχα βάλει το IC Atmega328p στον προγραμματιστή και το λάμψα και έπειτα ανέβασα τον κωδικό. Στη συνέχεια, πρόσθεσα 16 MHz κρύσταλλο στο Atmega328p IC στον (PB6, PB7) pin 9 και 10. Οι εικόνες του προσαρμοσμένου PCB και του συναρμολογημένου πίνακα με προγραμματισμένο IC φαίνονται παρακάτω.
Βήμα 2: Συνδέθηκα τις μονάδες NRF24L01 όπως φαίνεται στο διάγραμμα κυκλώματος με την ακόλουθη σειρά. CE σε ψηφιακό ακροδέκτη αριθμό 7, CSN σε καρφίτσα αριθμό 8, SCK σε ψηφιακό ακροδέκτη 13, MOSI σε ψηφιακό ακροδέκτη 11, MISO σε ψηφιακό ακροδέκτη 12 και IRQ σε ψηφιακό ακροδέκτη 2.
Για την τροφοδοσία, πρέπει πρώτα να μειώσετε την τάση από 5 volt στα 3,3v με καλή σταθερότητα ρεύματος. Επίσης, πρέπει να βάλετε έναν πυκνωτή 100nF στο VCC και στη γείωση της μονάδας nrf24l01. Έτσι, χρησιμοποίησα το AMS1117 που είναι ρυθμιστής τάσης 3,3 volt, η μονάδα μειώνει επίσης το μέγεθος του έργου σας και το κάνει συμπαγές.
Εάν θέλετε να φτιάξετε μόνοι σας αυτήν την πλακέτα ρυθμιστή τάσης, μπορείτε να αγοράσετε μόνο IC ρυθμιστή 3,3 volt και μπορείτε να το κάνετε προσθέτοντας μερικά καπάκια, αντίσταση στην είσοδο και την έξοδο, καθώς είναι πολύ σημαντικό για τη μονάδα RF σας, επειδή είναι μια ευαίσθητη συσκευή. Εναλλακτικά, μπορείτε να χρησιμοποιήσετε τον ρυθμιστή μεταβλητής τάσης LM317 για να δημιουργήσετε ένα κύκλωμα ρυθμιζόμενου 3.3V όπως κάναμε στο έργο τροφοδοσίας Breadboard.
Βήμα 3: Μπορείτε να αγοράσετε έναν αισθητήρα ήχου ή να δημιουργήσετε ένα απλό κύκλωμα μικροφώνου, όπως φαίνεται στο διάγραμμα κυκλώματος. Αποτελείται από μόνο ένα τρανζίστορ- 2n3904 NPN τρανζίστορ. Η παρακάτω εικόνα δείχνει το σπιτικό κύκλωμα μικροφώνου που είναι χτισμένο σε μια πλακέτα Vero. Μπορείτε επίσης να ελέγξετε αυτό το απλό κύκλωμα προενισχυτή ήχου για περισσότερες πληροφορίες.
Για καλύτερη κατανόηση, έχω κάνει μια άλλη αναπαράσταση της όλης σύνδεσης με τις τιμές των συστατικών, όπως μπορείτε να δείτε παρακάτω
Βήμα 4: Για, πραγματοποιώντας σύνδεση από τον ψηφιακό ακροδέκτη μικροελεγκτή 9 & 10 με τον ενισχυτή ήχου, έχω χρησιμοποιήσει τον στερεοφωνικό ενισχυτή ήχου PAM8403, επειδή από προεπιλογή η έξοδος ήχου Arduino είναι πολύ χαμηλή (συνήθως μπορείτε να ακούτε ήχο μόνο με ακουστικά, όχι ένα μεγάφωνο, επομένως χρειαζόμαστε ένα στάδιο ενίσχυσης). Η μονάδα μπορεί να οδηγήσει δύο ηχεία φορητού υπολογιστή εύκολα και διατίθεται με πολύ χαμηλό κόστος. Επίσης, έρχεται με έναν πολύ ισχυρό ενισχυτή ήχου σε ένα πακέτο SMD που απαιτεί πολύ λίγο χώρο. Η ενότητα ενισχυτή ήχου PAM8403 φαίνεται παρακάτω.
Η σύνδεση είναι πολύ απλή, απαιτείται τροφοδοσία 3,7V έως 5V για την τροφοδοσία του ενισχυτή ήχου. Η είσοδος ήχου αριστερού και δεξιού καναλιού από τους πείρους Arduino 9 και 10 μαζί με τον πείρο γείωσης θα πρέπει να παρέχεται ως είσοδος για αυτήν την ενότητα ενισχυτή όπως φαίνεται στο διάγραμμα κυκλώματος. Στην περίπτωσή μου, έχω χρησιμοποιήσει ένα μόνο ηχείο 4 ίντσας 8 ohms και χρησιμοποίησα μόνο δικαίωμα εξόδου καναλιού. Εάν θέλετε, μπορείτε να χρησιμοποιήσετε δύο ηχεία με αυτήν την ενότητα.
Βήμα 5: Στη συνέχεια, έχτισα το διακόπτη PTT χρησιμοποιώντας ένα απλό κουμπί. Πρόσθεσα έναν πυκνωτή 104PF ή 0.1uf για να αποτρέψω την αναπήδηση του διακόπτη ή τα ακανόνιστα σήματα όταν πατηθεί ο διακόπτης. Το Pin 4 είναι τώρα άμεσα συνδεδεμένο με τον Arduino Digital pin D3 καθώς ένας κωδικοποιημένος ακροδέκτης έχει αντιστοιχιστεί στην κωδικοποίηση.
Το NRF24L01 + PA + LNA κατά τη μετάδοση ενός ηχητικού σήματος ή πακέτων DATA καταναλώνει περισσότερη ισχύ, επομένως καταναλώνει περισσότερο ρεύμα. Όταν πατάτε ξαφνικά το κουμπί PTT, η κατανάλωση ενέργειας αυξάνεται. Για να χειριστείτε αυτό το ξαφνικά αυξημένο φορτίο, πρέπει να χρησιμοποιήσετε έναν πυκνωτή 100nF σε + vcc και Γείωση για τη σταθερότητα μετάδοσης της μονάδας NRF24L01 + PA + LNA.
Όταν πατηθεί ο διακόπτης, η πλακέτα Arduino λαμβάνει μια διακοπή Arduino στον πείρο D3. Στο πρόγραμμα, θα δηλώσουμε ότι ο ψηφιακός ακροδέκτης 3 του Arduino ελέγχει συνεχώς την τάση εισόδου του. Εάν η τάση εισόδου είναι χαμηλή, διατηρεί το φορητό ραδιοτηλέφωνο σε λειτουργία λήψης και εάν ο ψηφιακός ακροδέκτης αριθμός 3 είναι υψηλός, αλλάζει το φορητό ραδιοτηλέφωνο σε λειτουργία μετάδοσης για την αποστολή φωνητικού σήματος που λαμβάνεται από τη διαδικασία μικροφώνου μέσω μικροελεγκτή και μεταδίδει NRF24L01 + PA + LNA με εξωτερική κεραία.
Βήμα 6: Για την τροφοδοσία, επέλεξα αυτήν την μπαταρία ιόντων λιθίου. Για τροφοδοσία, όλα τα εξαρτήματα, όπως Arduino IC Atmega328p, NRF24L01 + PA + LNA, ενισχυτής ήχου, κουμπί PTT και κύκλωμα μικροφώνου, χρησιμοποίησα 2 σετ μπαταρίας ιόντων λιθίου για αυτό το έργο, όπως φαίνεται παρακάτω.
Ένα καλό κελί έχει επίπεδο τάσης 3,8v έως 4,2 volt και η τάση φόρτισης είναι μόνο 4v έως 4,2 volt Για να μάθετε περισσότερα σχετικά με τις μπαταρίες λιθίου μπορείτε να δείτε το συνδεδεμένο άρθρο. Αυτές οι μπαταρίες χρησιμοποιούνται πολύ δημοφιλώς σε φορητές ηλεκτρονικές συσκευές και ηλεκτρικά οχήματα. Ωστόσο, τα στοιχεία μπαταρίας ιόντων λιθίου δεν είναι τόσο ισχυρά όσο άλλες μπαταρίες, χρειάζονται προστασία από υπερβολική φόρτιση και αποφόρτιση πολύ γρήγορα, πράγμα που σημαίνει ότι το ρεύμα φόρτισης / εκφόρτισης και η τάση πρέπει να διατηρούνται εντός ασφαλών ορίων. Ως εκ τούτου, χρησιμοποίησα την πιο προωστή μονάδα φόρτισης μπαταρίας ιόντων λιθίου - TP4056. Έχουμε χρησιμοποιήσει προηγουμένως αυτήν την ενότητα για την κατασκευή μιας φορητής τράπεζας ισχύος, μπορείτε να το ελέγξετε για περισσότερες λεπτομέρειες σε αυτόν τον πίνακα.
Βήμα 7: Έχω χρησιμοποιήσει μια μονάδα ενίσχυσης 2 Amp dc to dc , επειδή το Arduino atmega328p, ο ενισχυτής ήχου, το κύκλωμα μικροφώνου, το κουμπί PTT χρειάζονται όλα 5 volt, αλλά η μπαταρία μου μπορεί να τροφοδοτήσει μόνο 3,7V έως 4,2V, οπότε χρειάζομαι μετατροπέα ενίσχυσης για να φτάσετε στα 5V με πάνω από 1 Amp σταθερής ισχύος.
Αφού δημιουργήσετε το κύκλωμα, μπορείτε να το συναρμολογήσετε σε ένα μικρό περίβλημα. Χρησιμοποίησα ένα πλαστικό κουτί και τοποθέτησα τα κυκλώματά μου όπως φαίνεται στην παρακάτω εικόνα
Κωδικός Walkie Talkie Arduino
Το πλήρες πρόγραμμα για το φορητό ραδιοτηλέφωνο Arduino βρίσκεται στο κάτω μέρος αυτής της σελίδας. Σε αυτήν την ενότητα, ας συζητήσουμε πώς λειτουργεί το πρόγραμμα. Πριν φτάσετε εκεί, πρέπει να συμπεριλάβετε μερικές βιβλιοθήκες που παρατίθενται παρακάτω.
- Βιβλιοθήκη nRF24
- Βιβλιοθήκη ήχων nRF24
- Βιβλιοθήκη Maniaxbug RF24
Ξεκινήστε τον προγραμματισμό συμπεριλαμβάνοντας τις κεφαλίδες της Βιβλιοθήκης ραδιοφώνου και ήχου όπως φαίνεται παρακάτω
#περιλαμβάνω
Αρχικοποιήστε το ραδιόφωνο RF στις ακίδες 7 και 8 και ρυθμίστε τον αριθμό ραδιοφώνου ήχου σε 0. Επίσης, αρχικοποιήστε το κουμπί ppt στην καρφίτσα 3.
Ραδιόφωνο RF24 (7,8); // Ρύθμιση ραδιοφώνου χρησιμοποιώντας ακίδες 7 (CE) 8 (CS) RF24Audio rfAudio (ραδιόφωνο, 0); // Ρυθμίστε τον ήχο χρησιμοποιώντας το ραδιόφωνο και ορίστε τον αριθμό ραδιοφώνου 0 int talkButton = 3;
Μέσα στη λειτουργία εγκατάστασης, ξεκινήστε την σειριακή οθόνη στο ρυθμό baud 115200 για εντοπισμό σφαλμάτων. Στη συνέχεια, αρχικοποιήστε το κουμπί ppt συνδέστε το pin 3 ως pin pin.
άκυρη ρύθμιση () {Serial.begin (115200); printf_begin (); radio.begin (); radio.printDetails (); rfAudio.begin (); pinMode (talkButton, INPUT); // θέτει το διακόπτη για να ελέγξει για κουμπιά ομιλίας κουμπί abutton πατήστε attachInterrupt (digitalPinToInterrupt (talkButton), ομιλία, ΑΛΛΑΓΗ); // ορίζει την προεπιλεγμένη κατάσταση για κάθε μονάδα να λαμβάνει rfAudio.receive (); }
Στη συνέχεια, έχουμε μια συνάρτηση που ονομάζεται ομιλία () η οποία καλείται ως απάντηση στη διακοπή. Το πρόγραμμα ελέγχει την κατάσταση του κουμπιού εάν το κουμπί πατηθεί και κρατηθεί, μπαίνει σε λειτουργία μετάδοσης για να στείλει τον ήχο. Εάν το κουμπί απελευθερωθεί, μπαίνει στη λειτουργία λήψης.
void talk () {if (digitalRead (talkButton)) rfAudio.transmit (); αλλιώς rfAudio.receive (); } άκυρος βρόχος () {}
Η πλήρης εργασία αυτού του έργου βρίσκεται στο παρακάτω βίντεο. Το Walkie Talkie παράγει θόρυβο κατά τη λειτουργία, αυτός είναι ο θόρυβος από τη συχνότητα φορέα της μονάδας nRF24L01. Μπορεί να μειωθεί χρησιμοποιώντας έναν καλό αισθητήρα ήχου ή μονάδα μικροφώνου. Εάν έχετε οποιεσδήποτε ερωτήσεις σχετικά με αυτό το έργο, μπορείτε να τα αφήσετε στην ενότητα σχολίων παρακάτω. Μπορείτε επίσης να χρησιμοποιήσετε τα φόρουμ μας για να λάβετε γρήγορες απαντήσεις σε άλλα τεχνικά ερωτήματά σας.