- RDA5807M IC
- IC PT2258
- Σχηματικός
- Απαιτούμενα στοιχεία
- Πώς λαμβάνουμε δεδομένα από τον Βοηθό Google;
- Δημιουργία λογαριασμού Adafruit για επικοινωνία
- Δημιουργία χρηματιστηρίου IFTTT για ραδιόφωνο FM
- Κωδικός και εξήγηση Arduino
- Δοκιμή του ραδιοφώνου FM που ελέγχεται με φωνή χρησιμοποιώντας το Arduino
- Περαιτέρω βελτίωση
Σήμερα, οι περισσότεροι από εμάς θέλουμε να ακούμε μουσική, με τα smartphone μας. Αλλά πριν από λίγα χρόνια, αυτό δεν συνέβη, εκείνη τη στιγμή, τα ραδιόφωνα FM ήταν η πρώτη επιλογή για ακρόαση μουσικής, podcasts, ειδήσεις και άλλα. Σήμερα κανείς δεν ακούει ραδιόφωνο για μουσική, ειδήσεις και άλλα, η γιαγιά και ο παππούς αποτελούν εξαίρεση.
Έτσι, για να αναζωογονήσω λίγο την παλιά δόξα του ραδιοφώνου FM, σε αυτό το έργο, πρόκειται να δημιουργήσω ένα ραδιόφωνο FM με φωνητικό έλεγχο χρησιμοποιώντας το Google Assistance και το δημοφιλές RDA5870M Superheterodyne Receiver IC.
Επίσης, ελέγξτε τα προηγούμενα κυκλώματα ραδιοφώνου FM:
- Ραδιόφωνο FM με βάση το Arduino
- Ραδιόφωνο FM ελεγχόμενο από έξυπνο τηλέφωνο χρησιμοποιώντας το Arduino
- Απλό κύκλωμα πομπού FM
- Τρόπος δημιουργίας κυκλώματος πομπού FM
RDA5807M IC
Ο RDA5807M είναι ένας πολύ σύγχρονος στερεοφωνικός ραδιοφωνικός δέκτης FM με ένα ολοκληρωμένο συνθεσάιζερ, επιλεκτικότητα IF, RDS / RBDS και αποκωδικοποιητή MPX που υποστηρίζει το εύρος συχνοτήτων 50MHz έως 115MHz. Είναι ένα πολύ φθηνό IC δέκτη FM ενός τσιπ που απαιτεί πολύ λίγα εξωτερικά στοιχεία για να λειτουργήσει λειτουργικά. Αυτό το IC χρησιμοποιεί τη διεπαφή I2C για επικοινωνία με οποιαδήποτε κύρια συσκευή, οπότε όλη αυτή η δυνατότητα το καθιστά πολύ κατάλληλο για φορητές συσκευές.
Αυτό το IC διαθέτει έναν εσωτερικό επεξεργαστή ήχου που είναι υπεύθυνος για την εξαιρετική του ποιότητα ήχου.
Μερικά από τα βασικά χαρακτηριστικά περιλαμβάνουν:
- Υποστήριξη για παγκόσμιες ζώνες συχνοτήτων
- Υποστήριξη για RDS / RBDS
- Ψηφιακός δέκτης χαμηλής IF
- Πλήρως ενσωματωμένος συνθέτης ψηφιακής συχνότητας
- Ψηφιακός έλεγχος αυτόματου κέρδους (AGC)
- Ενίσχυση μπάσου
- Υποστηρίζει άμεσα τη φόρτιση αντίστασης 32Ω
- Ενσωματωμένος ρυθμιστής LDO & άλλα
Μπορείτε να μάθετε περισσότερα για αυτό το IC πηγαίνοντας σε αυτό το έργο FM Radio με βάση το Arduino χρησιμοποιώντας το RDA5807.
IC PT2258
Το PT2258 είναι ένα IC κατασκευασμένο για χρήση ως ηλεκτρονικός ελεγκτής έντασης 6 καναλιών, αυτό το IC χρησιμοποιεί τεχνολογία CMOS ειδικά σχεδιασμένη για εφαρμογές πολλαπλών καναλιών ήχου-βίντεο.
Αυτό το IC παρέχει διασύνδεση ελέγχου I2C με εύρος εξασθένησης 0 έως -79dB σε 1dB / βήμα και έρχεται σε πακέτο DIP ή SOP 20 ακίδων.
Μερικά από τα βασικά χαρακτηριστικά περιλαμβάνουν:
- 6-κανάλια εισόδου και εξόδου (για 5.1 οικιακά συστήματα ήχου)
- Επιλέξιμη διεύθυνση I2C (Για εφαρμογή Daisy-chain)
- Διαχωρισμός υψηλού καναλιού (για εφαρμογή χαμηλού θορύβου)
- Αναλογία S / N> 100dB
- Η τάση λειτουργίας είναι 5 έως 9V
Είχαμε εξηγήσει προηγουμένως σχετικά με αυτό το IC στο Έργο ελέγχου έντασης ήχου PT2258 Digital. Μπορείτε να ελέγξετε αυτό το έργο εάν θέλετε να μάθετε περισσότερα για αυτό το IC.
Σχηματικός
Το διάγραμμα κυκλώματος για το Google Assistant Controlled FM Radio δίνεται παρακάτω:
Απαιτούμενα στοιχεία
- Μικροελεγκτής NodeMCU - 1
- PT2258 Ψηφιακός ελεγκτής έντασης - 1
- RDA5807 FM Radio Module - 1
- Ρελέ SPDT 6V - 1
- 1n4007 Δίοδος - 1
- Ακροδέκτης βίδας 5mmx2 - 1
- Υποδοχή ακουστικών 3,5 mm - 1
- Μετατροπέας επιπέδου λογικής - 1
- Αντίσταση 10K, 5% - 4
- Αντίσταση 150K, 5% - 4
- 100K Αντίσταση, 5% - 2
- Πυκνωτής 10uF - 6
- Πυκνωτής 0.1uF - 1
- Jumper Wire - 10
Πώς λαμβάνουμε δεδομένα από τον Βοηθό Google;
Η παραπάνω εικόνα σας δίνει τη βασική ιδέα της διαδικασίας επικοινωνίας μεταξύ του Βοηθού Google και του NodeMCU.
Ο Βοηθός Google έχει την εξουσία να τροποποιεί δεδομένα στον διακομιστή Adafruit IO για να κάνει ότι το IFTTT με το MQTT λειτουργεί ως μεσίτης.
Εάν προκύψει οποιαδήποτε αλλαγή δεδομένων από την πλευρά του διακομιστή (Adafruit IO), αυτό αντικατοπτρίζεται στην πλευρά NodeMCU. Για να το επιτύχετε αυτό, πρέπει να ακολουθήσετε τις οδηγίες που δίνονται παρακάτω-
Δημιουργία λογαριασμού Adafruit για επικοινωνία
Πρώτα, δημιουργήστε έναν λογαριασμό Adafruit IO. Συνδεθείτε στο Adafruit IO με τα διαπιστευτήριά σας ή εγγραφείτε εάν δεν έχετε λογαριασμό. Χρησιμοποιήσαμε προηγουμένως το Adafruit IO για την κατασκευή LED ελεγχόμενης Alexa, οικιακού αυτοματισμού Raspberry Pi και πολλών άλλων έργων με βάση το IoT.
Αφού συνδεθείτε στο λογαριασμό Adafruit, Κάντε κλικ στο Dashboards και, στη συνέχεια , κάντε κλικ στο Action> Δημιουργία νέου πίνακα εργαλείων .
Στη συνέχεια, θα προσθέσουμε ένα νέο όνομα και μια σύντομη περιγραφή του νέου μας Πίνακα ελέγχου.
Αφού δημιουργήσετε τον πίνακα ελέγχου, θα πρέπει να λάβετε το Όνομα χρήστη και το Ενεργό κλειδί από τον λογαριασμό σας, όπως απαιτείται στον κωδικό Arduino. Μπορείτε να το αποκτήσετε κάνοντας κλικ στο εικονίδιο KEY.
Μετά από αυτό, φτιάξτε τρία μπλοκ. ένα μπλοκ Toggle, ένα μπλοκ Gauge, ένα μπλοκ κειμένου.
Τα μπλοκ είναι πολύ σημαντικά, καθώς αυτά τα μπλοκ είναι υπεύθυνα για την επικοινωνία μεταξύ της βοήθειας google και του NodeMCU.
Για να δημιουργήσετε ένα μπλοκ, πρέπει να κάνετε κλικ στο σύμβολο + στην επάνω δεξιά γωνία.
Στη συνέχεια, θα φτιάξουμε τα μπλοκ.
Στη συνέχεια, πρέπει να ρυθμίσετε κάθε μπλοκ, για αυτό, πρέπει να σημειώσετε ένα συγκεκριμένο μπλοκ και να κάνετε κλικ στο Επόμενο βήμα.
Για αυτό το έργο, δεν χρειάζεται να αλλάξετε ρυθμίσεις εκτός από το κουμπί εναλλαγής.
Το κείμενο στο κουμπί εναλλαγής είναι με κεφαλαία γράμματα, πρέπει να το κάνετε ένα μικρό γράμμα και να ενημερώσετε τις αλλαγές.
Αυτό είναι, όλα είναι τα πράγματα που πρέπει να ρυθμίσετε στο Adafruit IO.
Η τελική μου οθόνη μοιάζει με αυτό-
Δημιουργία χρηματιστηρίου IFTTT για ραδιόφωνο FM
Όπως πάντα, εγγραφείτε εάν δεν έχετε λογαριασμό ή συνδεθείτε εάν έχετε ήδη λογαριασμό.
Τώρα, πρέπει να δημιουργήσετε ένα Applet. Για αυτό, ακολουθήστε τα παρακάτω βήματα:
Για να δημιουργήσετε μια μικροεφαρμογή, κάντε κλικ στο εικονίδιο του λογαριασμού σας και κάντε κλικ στο Δημιουργία.
Στην οθόνη δημιουργίας, κάντε κλικ στο εικονίδιο + μετά εάν.
Μετά από αυτό, πρέπει να επιτρέψετε την πρόσβαση στον λογαριασμό σας Google.
Για αυτό, πρέπει να αναζητήσετε τον Βοηθό Google στη γραμμή αναζήτησης και να κάνετε κλικ στο εικονίδιο του Βοηθού Google.
Στην επόμενη οθόνη, πρέπει να επιλέξουμε μια σκανδάλη, Θυμηθείτε, δημιουργήσαμε τρία μπλοκ στον Adafruit IO Server, πρέπει να κάνουμε εκεί ενεργοποιήσεις για αυτά τα τρία μπλοκ.
Κατ 'αρχάς, το Block Station Radio, για αυτό, πρέπει να επιλέξετε Πείτε μια φράση με ένα συστατικό κειμένου .
Στην επόμενη οθόνη, πρέπει να πληκτρολογήσουμε τι θέλετε να πείτε και τι θα πρέπει να σας απαντήσει ο βοηθός Google.
Στη συνέχεια, κάντε κλικ στο κουμπί Δημιουργία σκανδάλης.
Η επόμενη οθόνη μοιάζει με αυτό, καθώς έχετε ολοκληρώσει το τμήμα If , ήρθε η ώρα για το τότε μέρος, κάντε κλικ στο σύμβολο + μετά από αυτό .
Θα εμφανιστεί μια οθόνη όπως η παρακάτω εικόνα, να αναζητήσετε Adafruit και να κάνετε κλικ στο εικονίδιο Adafruit.
Στη συνέχεια, εξουσιοδοτήστε τον λογαριασμό σας Adafruit με IFTTT και, στη συνέχεια, κάντε κλικ στην επιλογή Σύνδεση.
Στη συνέχεια, πρέπει να κάνετε κλικ στο Αποστολή δεδομένων στο Adafruit IO.
Στη συνέχεια, θα εμφανιστεί ένα αναπτυσσόμενο μενού ροών που έχετε δημιουργήσει νωρίτερα στον λογαριασμό Adafruit.
Επιλέξτε οποιοδήποτε και κάντε κλικ στη δημιουργία ενέργειας, πρέπει να το κάνετε και για τα τρία.
Και με αυτό, σηματοδοτεί το τέλος της διαδικασίας IFTTT, η τελική οθόνη applet μου μοιάζει με αυτό,
Κωδικός και εξήγηση Arduino
Ο κωδικός Arduino υπάρχει για τη διαχείριση όλων των επικοινωνιών μεταξύ του IC και της επικοινωνίας μεταξύ Adafruit IO IFTTT και WIFI. Ο πλήρης κωδικός για αυτό το ραδιόφωνο Arduino Nano FM δίνεται στο τέλος αυτού του σεμιναρίου. Ο κώδικας είναι λίγο μακρύς και περίπλοκος, εδώ έχουμε εξηγήσει τον πλήρη κώδικα ανά γραμμή.
Πρώτον, πρέπει να συμπεριλάβουμε όλες τις απαιτούμενες βιβλιοθήκες, είναι:
#περιλαμβάνω
Στη συνέχεια, ορίστε το SSID και τον κωδικό πρόσβασης για το WI-FI, αυτό είναι το SSID και ο Κωδικός πρόσβασης του δρομολογητή σας.
const char * ssid = "Android"; // SSID του δρομολογητή σας const char * password = "12345678"; // Κωδικός πρόσβασης του δρομολογητή σας
Στη συνέχεια, ορίζουμε δύο booleans και μια μεταβλητή, τα booleans χρησιμοποιούνται για να διατηρήσουν την κατάσταση επικοινωνίας των IC και η μεταβλητή έντασης χρησιμοποιείται για να ορίσει το επίπεδο έντασης.
bool potStatus; // 1 όταν πραγματοποιείται επικοινωνία μεταξύ του MCU και του IC bool radioStatus. // 1 όταν πραγματοποιείται επικοινωνία μεταξύ της MCU και της έντασης IC IC = 15; // προεπιλεγμένο επίπεδο έντασης με το IC ξεκινά με
Στη συνέχεια, δημιουργήσαμε έναν ακροδέκτη GPIO με το όνομα Relay_Pin για ενεργοποίηση ή απενεργοποίηση του ενισχυτή.
#define Relay_Pin D7 // Αυτός ο πείρος χρησιμοποιείται για την ενεργοποίηση και απενεργοποίηση του ραδιοφώνου
Στη συνέχεια, πρέπει να ορίσουμε όλους τους απαραίτητους ορισμούς για επικοινωνία με το Adafruit IO.
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 // use 8883 for SSL #define AIO_USERNAME "debashis13" // Αντικαταστήστε το με το όνομα χρήστη σας #define AIO_KEY "aio_Qyal47xo1fYhc55QB1lEPEir
Οι παρακάτω ορισμοί FIX_BAND είναι ένας αποκλειστικός ορισμός που χρησιμοποιείται από τη βιβλιοθήκη.
Η επόμενη καθορισμένη δήλωση ορίζει τον εσωτερικό τόμο της λειτουργικής μονάδας.
#define FIX_BAND RADIO_BAND_FM // <Η μπάντα θα συντονιστεί από αυτό το σκίτσο είναι FM. #define FIX_RADIO_VOLUME 6 /// <Προεπιλεγμένος τόμος της μονάδας.
Στη συνέχεια, δημιουργήστε τα απαιτούμενα αντικείμενα για το PT2258, το RDA5807M και το WiFiClient.
PT2258 digitalPot; // PT2258 αντικείμενο RDA5807M ραδιόφωνο; // RDA5807M Object WiFiClient client; // Αντικείμενο WiFiClient
Στη συνέχεια, ρυθμίστε την κλάση πελάτη MQTT περνώντας στον πελάτη WiFi και στο διακομιστή MQTT και τα στοιχεία σύνδεσης.
Adafruit_MQTT_Client mqtt (& client, AIO_SERVER, AIO_SERVERPORT, AIO_USERNAME, AIO_KEY);
// Ρυθμίστε την κλάση πελάτη MQTT περνώντας στον πελάτη WiFi και στο διακομιστή MQTT και τα στοιχεία σύνδεσης.
Τότε πρέπει να εγγραφείτε σε μια ροή. Τι σας κάνει να ρωτήσετε;
Εάν αλλάξουν ορισμένες τιμές, ορισμένες παράμετροι στο διακομιστή Adafruit, οι αλλαγές θα αντικατοπτρίζονται εδώ.
Adafruit_MQTT_Subscribe Radio_Station = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / Radio_Station"); // Μέθοδοι που χρησιμοποιούνται για την εγγραφή σε μια ροή Adafruit_MQTT_Subscribe Toggle_FM = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / Toggle_FM"); // Μέθοδοι που χρησιμοποιούνται για την εγγραφή σε μια ροή Adafruit_MQTT_Subscribe Volume = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / Volume") // Μέθοδοι που χρησιμοποιούνται για την εγγραφή σε μια ροή
Ακολουθεί το πρωτότυπο της συνάρτησης για τη συνάρτηση MQTT_connect () .
void MQTT_connect (); // Πρωτότυπο λειτουργίας για MQTT Connect
Στη συνέχεια ξεκινάμε τη διαδικασία εγκατάστασης. Αρχικά, ξεκινάμε την επικοινωνία UART με τη μέθοδο έναρξης.
Serial.begin (9600); // UART έναρξη Serial.println (); // προσθέτει μια επιπλέον γραμμή για το διάστημα Serial.println (); // προσθέτει μια επιπλέον γραμμή για το διάστημα Στη συνέχεια, κάνουμε όλα τα συνηθισμένα πράγματα για να συνδεθείτε στο WiFI **************** όλα τα συνηθισμένα πράγματα που απαιτούνται για σύνδεση WiFi *********************** / Serial.print ("σύνδεση με"); Serial.println (SSD); WiFi.mode (WIFI_STA); WiFi.begin (SSD, κωδικός πρόσβασης); ενώ (WiFi.status ()! = WL_CONNECTED) {καθυστέρηση (500); Serial.print ("."); } Serial.println (""); Serial.println ("συνδεδεμένο WiFi"); Serial.println ("Διεύθυνση IP:"); Serial.println (WiFi.localIP ()); / **************** όλα τα συνηθισμένα πράγματα που απαιτούνται για σύνδεση WiFi *********************** /
Στη συνέχεια, καλέστε τη μέθοδο Wire.begin () για να δημιουργήσετε μια σύνδεση I2C και καλούμε τη μέθοδο Wire.setClock () για να διορθώσετε τη συχνότητα I2C στα 100KHz, καθώς είναι η πλήρης ταχύτητα του IC PT2258.
Wire.begin (); // ξεκινήστε την ακολουθία εκκίνησης I2C Wire.setClock (100000); // ρύθμιση του ρολογιού I2C στα 100KHz
Στη συνέχεια, καλέστε τη μέθοδο init () τόσο για το PT2258 όσο και για το RDA5807 IC και κρατήστε την κατάσταση επιστροφής στα προηγούμενα καθορισμένα booleans
potStatus = digitalPot.init (); radioStatus = radio.init ();
Στη συνέχεια, ελέγξτε αν το MCU ήταν σε θέση να επικοινωνήσει με το IC ή όχι. Το κάνουμε αυτό με δύο δηλώσεις αλλιώς .
if (potStatus) {Serial.println ("Βρέθηκε συσκευή PT2258!"); } αλλιώς {Serial.println ("Αποτυχία έναρξης PT2258"); } εάν (radioStatus) {Serial.println ("Βρέθηκε συσκευή RDA5807M!"); } αλλιώς {Serial.println ("Αποτυχία έναρξης RDA5807M"); }
Στη συνέχεια, καλέστε τη μέθοδο εγγραφής από τη βιβλιοθήκη MQTT. Θα ειδοποιηθούμε από τον διακομιστή MQTT εάν συνέβησαν αλλαγές στις εγγραφές μας.
mqtt.subscribe (& Radio_Station); // Ρύθμιση συνδρομής MQTT για ροή Radio_Station mqtt.subscribe (& Toggle_FM); // Ρύθμιση συνδρομής MQTT για το Toggle_FM feed mqtt.subscribe (& Volume); // Ρύθμιση συνδρομής MQTT για ροή όγκου
Στη συνέχεια, ορίζουμε τον πείρο ρελέ ως έξοδο και την κατάσταση του πείρου σε LOW
pinMode (D7, OUTPUT); digitalWrite (D7, LOW);
Στη συνέχεια, ορίστε μια προκαθορισμένη ένταση ραδιοφώνου, αυτή η παράμετρος ορίζει τον εσωτερικό όγκο του RDA5807 IC, το οποίο σηματοδοτεί το τέλος της διαδικασίας εγκατάστασης.
radio.setVolume (FIX_RADIO_VOLUME); // Στη συνέχεια, ρυθμίζουμε την ομαλοποίηση ραδιοφώνου radio.setMono (false); // δεν θέλουμε το chip να δώσει μονοφωνική έξοδο radio.setMute (false). // δεν θέλουμε το chip να σβήνει στην αρχή
Ξεκινάμε τον βρόχο καλώντας τη λειτουργία MQTT_connect () που δημιουργεί σύνδεση με τον διακομιστή MQTT.
Στη λειτουργία σύνδεσης MQTT, προσπαθούμε τρεις φορές να πραγματοποιήσουμε σύνδεση με τον διακομιστή MQTT.
Εάν είναι επιτυχής, λαμβάνουμε ένα μήνυμα επιτυχίας αλλιώς θα λάβουμε ένα μήνυμα σφάλματος.
άκυρο MQTT_connect () {int8_t ret; // ακέραιος αριθμός 8 bit για αποθήκευση των προσπαθειών // Διακοπή, εάν είναι ήδη συνδεδεμένος. if (mqtt.connected ()) {επιστροφή; } Serial.print ("Σύνδεση με MQTT…"); uint8_t επαναλαμβάνει = 3; ενώ ((ret = mqtt.connect ())! = 0) {// connect θα επιστρέψει 0 για συνδεδεμένο Serial.println (mqtt.connectErrorString (ret)); Serial.println ("Επανάληψη σύνδεσης MQTT σε 5 δευτερόλεπτα…"); mqtt.disconnect (); καθυστέρηση (5000) // περιμένετε 5 δευτερόλεπτα επαναλάβετε--; αν (επαναλάβει == 0) {// βασικά πεθάνει και περιμένετε να επαναφέρει το WDT ενώ (1); }} Serial.println ("MQTT Connected!"); }
Στη συνέχεια, ξεκινήστε δημιουργώντας ένα δείκτη σε ένα αντικείμενο Adafruit_MQTT_Subscribe . Θα το χρησιμοποιήσουμε για να προσδιορίσουμε ποια συνδρομή ελήφθη.
Adafruit_MQTT_Subscribe * συνδρομή;
Στη συνέχεια, περιμένουμε ένα μήνυμα συνδρομής.
Το mqtt.readSubscription (timeInMilliseconds) θα ακούσει μια συγκεκριμένη ώρα, για τυχόν μηνύματα που προέρχονται από τον διακομιστή MQTT.
Εάν λάβει ένα μήνυμα πριν από το χρονικό όριο, θα απαντήσει με έναν δείκτη στη συνδρομή ή θα λήξει και θα επιστρέψει 0. Σε αυτήν την περίπτωση, θα περιμένει 2 δευτερόλεπτα
ενώ ((συνδρομή = mqtt.readSubscription (20000)))
Εάν προκύψει χρονικό όριο, η συμπλήρωση βρόχου ενώ αποτυγχάνει Εάν όχι, συγκρίνουμε ποια συνδρομή και θα λάβουμε τις γνωστές συνδρομές μας.
Σε αυτόν τον κώδικα, το κάνουμε και για τις τρεις από τις συνδρομητικές ροές μας.
εάν (συνδρομή == & Εναλλαγή_FM) εάν (συνδρομή == & Ραδιοφωνικός σταθμός) εάν (συνδρομή == & Όγκος)
Αυτές ήταν οι τρεις βασικές παράμετροι που πρέπει να κατανοήσετε στην ενότητα βρόχου.
Αυτή η ενότητα του κώδικα χρησιμοποιείται για την παρακολούθηση και ρύθμιση της ροής Toggle_FM .
if (subscription == & Toggle_FM) // είναι μήνυμα από τη ροή Toggle_FM {Serial.print (F ("Got:")); Serial.println ((char *) Toggle_FM.lastread); // εκτυπώστε τα δεδομένα ροής μόνο για εντοπισμό σφαλμάτων εάν (String ((char *) Toggle_FM.lastread) == String ("on")) // συγκρίνουμε τα ληφθέντα δεδομένα με μια γνωστή παράμετρο σε αυτήν την περίπτωση περιμένουμε ότι "on "προέρχεται από τη διακοπή {// αλλά πριν το κάνουμε αυτό πρέπει να κάνουμε μια συμβολοσειρά που καθιστά το συγκρίσιμο εξαιρετικά εύκολο digitalWrite (D7, HIGH); // εάν λάβουμε μια συμβολοσειρά" on "από τον διακομιστή που κάνουμε η καρφίτσα D7 HIGH} if (String ((char *) Toggle_FM.lastread) == String ("off")) // ξανά ελέγχουμε για τη συμβολοσειρά off {digitalWrite (D7, LOW); // εάν λάβουμε συμβολοσειρά "off" από το διακομιστή που φτιάχνουμε το D7 pin LOW}}
Αυτή η ενότητα του κώδικα χρησιμοποιείται για την παρακολούθηση και ρύθμιση της ροής Radio_Station .
if (συνδρομή == & Radio_Station) {Serial.print (F ("Got:")); Serial.println ((char *) Radio_Station.lastread); if (String ((char *) Radio_Station.lastread) == String ("Big FM")) // ακούστε ότι ελέγχουμε τη συμβολοσειρά Big FM {radio.setBandFrequency (FIX_BAND, 9270); // εάν ισχύει η παραπάνω συνθήκη, ρυθμίζουμε το κανάλι radoi στα 92,7MHz} // Οι προαναφερόμενες διαδικασίες συνεχίζονται παρακάτω εάν (String ((char *) Radio_Station.lastread) == String ("Red FM")) { radio.setBandFrequency (FIX_BAND, 9350); } if (String ((char *) Radio_Station.lastread) == String ("Radio Mirchi")) {radio.setBandFrequency (FIX_BAND, 9830); }}
Αυτή η ενότητα του κώδικα χρησιμοποιείται για την παρακολούθηση & ρύθμιση της ροής έντασης.
αν (συνδρομή == & Όγκος) // // ακούστε ελέγξουμε τον τόμο συμβολοσειράς και είναι ακέραια τιμή σε μορφή συμβολοσειράς // Πρέπει να το μετατρέψουμε σε ακέραιο για να αλλάξουμε την ένταση με τη βοήθεια του PT2258 IC Serial.print (F ("Πήρε:")); Serial.println ((char *) Volume.lastread); volume = atoi ((char *) Volume.lastread); // Χρησιμοποιούμε τη μέθοδο atoi () για να μετατρέψουμε έναν δείκτη χαρακτήρων σε ακέραιο τόμο = χάρτη (τόμος, 0,100,79,0). // map (τιμή, fromLow, fromHigh, toLow, toHigh) // καθώς το pt2258 κατανοεί μόνο ακέραιες τιμές στο dB // χαρτογραφούμε την τιμή 0dB - 79dB σε 0% - 100%. digitalPot.setChannelVolume (τόμος, 0); // μετά από όλα αυτά ρυθμίζουμε την ένταση για το κανάλι 0 του PT2258 IC digitalPot.setChannelVolume (τόμος, 1); // μετά από όλα αυτά ρυθμίζουμε την ένταση για το κανάλι 1 του PT2258 IC}}
Δοκιμή του ραδιοφώνου FM που ελέγχεται με φωνή χρησιμοποιώντας το Arduino
Για να ελέγξετε το κύκλωμα, χρησιμοποιήθηκε η ακόλουθη συσκευή-
- Ένας μετασχηματιστής που έχει 13-0-13 Πατήστε
- Δύο ηχεία 4Ω 20W ως φορτίο.
- Τηλέφωνο για χρήση του Βοηθού Google.
Σε ένα προηγούμενο άρθρο, σας έχω δείξει πώς να φτιάξετε έναν απλό ενισχυτή ήχου 2x32 Watt με το TDA2050 IC, θα το χρησιμοποιήσω και για αυτήν την επίδειξη, επίσης, Έχω διαταράξει το μηχανικό ποτενσιόμετρο και έκοψα δύο καλώδια με δύο μικρά καλώδια αλτών. Τώρα, με τη βοήθεια δύο μπουτόν, μπόρεσα να αλλάξω την ένταση του ενισχυτή.
Περαιτέρω βελτίωση
Υπάρχουν πολλές περαιτέρω βελτιώσεις που μπορούν να γίνουν σε αυτό το κύκλωμα.
- Υπάρχουν διάφορα ζητήματα θορύβου επειδή μια πηγή ήχου λειτουργεί δίπλα στο NodeMCU, επομένως πρέπει να εφαρμόσουμε επιπλέον θωράκιση για να βελτιώσουμε την ασυλία θορύβου.
- Η κατασκευή του συνολικού κυκλώματος σε ένα PCB θα βελτιώσει την ασυλία θορύβου.
- Πρόσθετα φίλτρα μπορούν να προστεθούν σε αυτό το IC για την εξάλειψη του θορύβου.
Ελπίζω να σας άρεσε αυτό το άρθρο και να μάθετε κάτι νέο από αυτό. Εάν έχετε οποιαδήποτε αμφιβολία, μπορείτε να ρωτήσετε στα παρακάτω σχόλια ή να χρησιμοποιήσετε τα φόρουμ μας για λεπτομερή συζήτηση.