- RDA5807M IC
- ไอซี PT2258
- แผนผัง
- ส่วนประกอบที่จำเป็น
- เราจะรับข้อมูลจาก Google Assistant ได้อย่างไร
- การตั้งค่าบัญชี Adafruit เพื่อการสื่อสาร
- การตั้งค่านายหน้า IFTTT สำหรับวิทยุ FM
- รหัส Arduino และคำอธิบาย
- การทดสอบวิทยุ FM ที่ควบคุมด้วยเสียงโดยใช้ Arduino
- การปรับปรุงเพิ่มเติม
ปัจจุบันพวกเราส่วนใหญ่ชอบฟังเพลงด้วยสมาร์ทโฟนของเรา แต่ไม่กี่ปีที่ผ่านมาไม่เป็นเช่นนั้น ณ เวลานั้นวิทยุ FM เป็นตัวเลือกแรกสำหรับการฟังเพลงพอดแคสต์ข่าวสารและอื่น ๆ ทุกวันนี้ไม่มีใครฟังวิทยุเพลงข่าวสารและอื่น ๆ อีกแล้วยายและปู่ถือเป็นข้อยกเว้น
ดังนั้นเพื่อฟื้นฟูความรุ่งเรืองเก่าของวิทยุ FM ในโครงการนี้ฉันจะสร้างวิทยุ FM ที่ควบคุมด้วยเสียงโดยใช้Google Assistance และRDA5870M Superheterodyne Receiver ICยอดนิยม
ตรวจสอบวงจรวิทยุ FM ก่อนหน้าของเราด้วย:
- วิทยุ FM ที่ใช้ Arduino
- สมาร์ทโฟนควบคุมวิทยุ FM โดยใช้ Arduino
- วงจรส่งสัญญาณ FM อย่างง่าย
- วิธีการสร้างวงจรส่งสัญญาณ FM
RDA5807M IC
RDA5807M เป็นเครื่องรับวิทยุ FM สเตอริโอแบบชิปเดี่ยวที่ทันสมัยมากพร้อมด้วยซินธิไซเซอร์แบบครบวงจร IF selectivity, RDS / RBDS และตัวถอดรหัส MPX ซึ่งรองรับช่วงความถี่ 50MHz ถึง 115MHz เป็น IC ตัวรับสัญญาณ FM แบบชิปเดี่ยวราคาถูกมากซึ่งต้องใช้ส่วนประกอบภายนอกเพียงเล็กน้อยในการทำงานตามหน้าที่ IC นี้ใช้อินเทอร์เฟซ I2C เพื่อสื่อสารกับอุปกรณ์หลักดังนั้นคุณสมบัติทั้งหมดนี้จึงเหมาะสำหรับอุปกรณ์พกพา
IC นี้มีตัวประมวลผลเสียงภายในซึ่งรับผิดชอบต่อคุณภาพเสียงที่ยอดเยี่ยม
คุณสมบัติพื้นฐานบางประการ ได้แก่ -
- รองรับคลื่นความถี่ทั่วโลก
- รองรับ RDS / RBDS
- เครื่องรับสัญญาณ IF ต่ำแบบดิจิตอล
- เครื่องสังเคราะห์ความถี่ดิจิตอลแบบครบวงจร
- Digital auto gain control (AGC)
- เพิ่มเสียงเบส
- รองรับการโหลดความต้านทาน32Ωโดยตรง
- ตัวควบคุม LDO ในตัวและอื่น ๆ
คุณสามารถเรียนรู้เพิ่มเติมเกี่ยวกับ IC นี้ได้โดยไปที่โครงการนี้โดยใช้วิทยุ FM Arduino โดยใช้ RDA5807
ไอซี PT2258
PT2258 เป็น IC ที่สร้างขึ้นเพื่อใช้เป็นตัวควบคุมระดับเสียงอิเล็กทรอนิกส์ 6 ช่องสัญญาณ IC นี้ใช้เทคโนโลยี CMOS ที่ออกแบบมาเป็นพิเศษสำหรับแอปพลิเคชันเสียงและวิดีโอแบบหลายช่องสัญญาณ
IC นี้มีอินเทอร์เฟซการควบคุม I2C พร้อมช่วงการลดทอนตั้งแต่ 0 ถึง -79dB ที่ 1dB / step และมาในแพ็คเกจ DIP หรือ SOP 20 พิน
คุณสมบัติพื้นฐานบางประการ ได้แก่ -
- 6 ช่องอินพุตและเอาต์พุต (สำหรับระบบเสียงภายในบ้าน 5.1)
- ที่อยู่ I2C ที่เลือกได้ (สำหรับแอปพลิเคชัน Daisy-chain)
- การแยกช่องสัญญาณสูง (สำหรับการใช้งานเสียงรบกวนต่ำ)
- อัตราส่วน S / N> 100dB
- แรงดันไฟฟ้าที่ใช้งานคือ 5 ถึง 9V
ก่อนหน้านี้เราได้อธิบายเกี่ยวกับ IC นี้ในโครงการควบคุมระดับเสียงดิจิตอล PT2258 คุณสามารถตรวจสอบโครงการนั้นได้หากต้องการทราบข้อมูลเพิ่มเติมเกี่ยวกับ IC นี้
แผนผัง
แผนภาพวงจรสำหรับวิทยุ FM ที่ควบคุมโดย Google Assistant แสดงไว้ด้านล่าง:
ส่วนประกอบที่จำเป็น
- ไมโครคอนโทรลเลอร์ NodeMCU - 1
- PT2258 Digital Volume Controller - 1
- โมดูลวิทยุ FM RDA5807 - 1
- SPDT รีเลย์ 6V - 1
- 1n4007 ไดโอด - 1
- ขั้วต่อสกรู 5mmx2 - 1
- แจ็คหูฟัง 3.5 มม. - 1
- ตัวแปลงระดับลอจิก - 1
- ตัวต้านทาน 10K, 5% - 4
- ตัวต้านทาน 150K, 5% - 4
- ตัวต้านทาน 100K, 5% - 2
- ตัวเก็บประจุ 10uF - 6
- ตัวเก็บประจุ 0.1uF - 1
- สายจัมเปอร์ - 10
เราจะรับข้อมูลจาก Google Assistant ได้อย่างไร
ภาพด้านบนให้แนวคิดพื้นฐานเกี่ยวกับกระบวนการสื่อสารระหว่าง Google Assistant และ NodeMCU
Google Assistant มีสิทธิ์แก้ไขข้อมูลในเซิร์ฟเวอร์ Adafruit IO เพื่อทำ IFTTT โดยมี MQTT ทำงานเป็นนายหน้า
หากมีการเปลี่ยนแปลงข้อมูลเกิดขึ้นบนฝั่งเซิร์ฟเวอร์ (Adafruit IO) ข้อมูลนั้นจะแสดงในฝั่ง NodeMCU เพื่อให้บรรลุเป้าหมายนี้คุณต้องปฏิบัติตามคำแนะนำด้านล่าง -
การตั้งค่าบัญชี Adafruit เพื่อการสื่อสาร
ขั้นแรกสร้างบัญชี Adafruit IO เข้าสู่ระบบ Adafruit IO ด้วยข้อมูลประจำตัวของคุณหรือลงทะเบียนหากคุณไม่มีบัญชี ก่อนหน้านี้เราใช้ Adafruit IO เพื่อสร้าง LED ที่ควบคุมโดย Alexa, ระบบอัตโนมัติภายในบ้าน Raspberry Pi และโครงการที่ใช้ IoT อื่น ๆ อีกมากมาย
หลังจากเข้าสู่ระบบบัญชี Adafruit แล้ว
คลิกที่แดชบอร์ดแล้วคลิกที่ การกระทำ> สร้างแดชบอร์ดใหม่
ต่อไปเราจะเพิ่มชื่อใหม่และคำอธิบายสั้น ๆ ของแดชบอร์ดใหม่ของเรา
หลังจากที่คุณสร้างแดชบอร์ดแล้วคุณจะต้องได้รับ Username และ Active Key จากบัญชีของคุณตามที่จำเป็นในรหัส Arduino คุณสามารถรับได้โดยคลิกที่ไอคอน KEY
หลังจากนั้นให้สร้างสามบล็อก บล็อกสลับหนึ่งบล็อกหนึ่งเกจบล็อกหนึ่งบล็อกข้อความ
บล็อกมีความสำคัญมากเนื่องจากบล็อกเหล่านี้มีหน้าที่ในการสื่อสารระหว่างความช่วยเหลือของ Google และ NodeMCU
ในการสร้างบล็อกคุณต้องคลิกที่เครื่องหมาย+ที่มุมขวาบน
ต่อไปเราจะสร้างบล็อค
ถัดไปคุณต้องตั้งค่าทุกบล็อกเพื่อที่คุณจะต้องทำเครื่องหมายที่บล็อกใดบล็อกหนึ่งแล้วคลิกขั้นตอนถัดไป
สำหรับโปรเจ็กต์นี้ไม่จำเป็นต้องเปลี่ยนการตั้งค่าใด ๆ ยกเว้นปุ่มสลับ
ข้อความในปุ่มสลับเป็นตัวพิมพ์ใหญ่คุณต้องทำให้เป็นตัวอักษรขนาดเล็กและอัปเดตการเปลี่ยนแปลง
นั่นคือทุกสิ่งที่คุณต้องตั้งค่าใน Adafruit IO
หน้าจอสุดท้ายของฉันเป็นแบบนี้ -
การตั้งค่านายหน้า IFTTT สำหรับวิทยุ FM
เช่นเคยลงทะเบียนหากคุณไม่มีบัญชีหรือลงชื่อเข้าใช้หากคุณมีบัญชีอยู่แล้ว
ตอนนี้คุณต้องสร้างAppletสำหรับสิ่งนั้นให้ทำตามขั้นตอนด้านล่าง:
ในการสร้างแอพเพล็ตให้คลิกที่ไอคอนบัญชีของคุณแล้วคลิกสร้าง
ในหน้าจอสร้างให้คลิกไอคอน+หลังจากนั้น
หลังจากนั้นคุณจะต้องอนุญาตให้เข้าถึงที่คุณบัญชีผู้ใช้ Google
เพื่อให้คุณค้นหา Google Assistant ในแถบค้นหาและคลิกที่ไอคอน Google Assistant
ในหน้าจอถัดไปเราจะต้องเลือกทริกเกอร์, อย่าลืมว่าเราสร้างบล็อกสามบล็อกในเซิร์ฟเวอร์ Adafruit IOเราจำเป็นต้องสร้างทริกเกอร์สำหรับสามบล็อกนั้น
ครั้งแรกที่สถานีวิทยุบล็อกสำหรับการที่เราต้องเลือกพูดวลีที่มีส่วนผสมข้อความที่
ในหน้าจอถัดไปเราต้องพิมพ์ สิ่งที่คุณต้องการจะพูด และสิ่งที่ผู้ช่วยของ Google ควรตอบกลับคุณด้วย
จากนั้นคลิกที่ปุ่มสร้างทริกเกอร์
หน้าจอถัดไปลักษณะบางอย่างเช่นนี้ที่คุณได้เสร็จสิ้น หาก ส่วนเวลาสำหรับ แล้ว ส่วนหนึ่งคลิก+เข้าสู่ระบบหลังจากนั้น
คุณจะเห็นหน้าจอเหมือนภาพด้านล่างค้นหาAdafruitและคลิกที่ไอคอน Adafruit
จากนั้นให้อนุญาตบัญชี Adafruit ของคุณกับ IFTTT จากนั้นคลิกเชื่อมต่อ
จากนั้นคุณต้องคลิกที่ส่งข้อมูลไปยัง Adafruit IO
จากนั้นคุณจะเห็นรายการแบบเลื่อนลงของฟีดที่คุณสร้างไว้ก่อนหน้านี้ในบัญชี Adafruit
เลือกรายการใดรายการหนึ่งและคลิกที่สร้างการกระทำคุณต้องทำสิ่งนี้สำหรับทั้งสาม
และด้วยเหตุนี้จึงถือเป็นจุดสิ้นสุดของกระบวนการ IFTTT หน้าจอแอพเพล็ตสุดท้ายของฉันจะเป็นเช่นนี้
รหัส Arduino และคำอธิบาย
รหัส Arduino มีไว้เพื่อจัดการการสื่อสารทั้งหมดระหว่าง IC และการสื่อสารระหว่าง Adafruit IO IFTTT และ WIFI รหัสที่สมบูรณ์สำหรับArduino Nano FM Radioมีให้ในตอนท้ายของบทช่วยสอนนี้ โค้ดมีความยาวและซับซ้อนเล็กน้อยที่นี่เราได้อธิบายโค้ดทั้งหมดทีละบรรทัด
ขั้นแรกเราต้องรวมไลบรารีที่จำเป็นทั้งหมด ได้แก่:
# รวม
จากนั้นกำหนด SSID และรหัสผ่านสำหรับ WI-FI นี่คือ SSID และรหัสผ่านของเราเตอร์ของคุณ
const ถ่าน * ssid = "Android"; // SSID ของเราเตอร์ const char * password = "12345678"; // รหัสผ่านของเราเตอร์ของคุณ
จากนั้นเรากำหนดสองบูลีนและตัวแปรบูลีนจะใช้เพื่อเก็บสถานะการสื่อสารของ IC และตัวแปรโวลุ่มใช้เพื่อตั้งค่าระดับเสียง
bool potStatus; // 1 เมื่อสร้างการสื่อสารระหว่าง MCU และ IC bool radioStatus; // 1 เมื่อสร้างการสื่อสารระหว่าง MCU และ IC int volume = 15; // ระดับเสียงเริ่มต้นด้วย IC เริ่มต้นด้วย
จากนั้นตั้งค่าพิน GPIO ชื่อ Relay_Pin เพื่อเปิดหรือปิดเครื่องขยายเสียง
#define Relay_Pin D7 // พินนี้ใช้เพื่อเปิดและปิดวิทยุ
ต่อไปเราต้องกำหนดนิยามที่จำเป็นทั้งหมดเพื่อสื่อสารกับ Adafruit IO
#define AIO_SERVER "io.adafruit.com" #define AIO_SERVERPORT 1883 // ใช้ 8883 สำหรับ SSL #define AIO_USERNAME "debashis13" // แทนที่ด้วยชื่อผู้ใช้ของคุณ #define AIO_KEY "aio_Qyal47xo1fYhc55QB1lEPEir ของคุณ
คำจำกัดความด้านล่าง FIX_BAND เป็นคำจำกัดความที่เป็นกรรมสิทธิ์ที่ใช้โดยไลบรารี
คำสั่งที่กำหนดถัดไปจะตั้งค่าระดับเสียงภายในของโมดูล
# กำหนด FIX_BAND RADIO_BAND_FM // <แถบนี้จะปรับแต่งโดยร่างนี้คือ FM # กำหนด FIX_RADIO_VOLUME 6 /// <ระดับเสียงเริ่มต้นของโมดูล
จากนั้นสร้างอ็อบเจ็กต์ที่ต้องการสำหรับ PT2258, RDA5807M และ WiFiClient
PT2258 digitalPot; // PT2258 Object RDA5807M วิทยุ; // ไคลเอนต์ RDA5807M Object WiFiClient; // วัตถุ WiFiClient
จากนั้นตั้งค่าคลาสไคลเอนต์ MQTT โดยส่งผ่านไคลเอนต์ WiFi และเซิร์ฟเวอร์ MQTT และรายละเอียดการเข้าสู่ระบบ
Adafruit_MQTT_Client mqtt (& ลูกค้า, 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"); // วิธีการที่ใช้สมัคร Feed Adafruit_MQTT_Subscribe Toggle_FM = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / Toggle_FM"); // วิธีการที่ใช้สมัคร Feed Adafruit_MQTT_Subscribe Volume = Adafruit_MQTT_Subscribe (& mqtt, AIO_USERNAME "/ feeds / Volume"); // วิธีที่ใช้ในการสมัครรับฟีด
ด้านล่างนี้คือต้นแบบฟังก์ชั่นสำหรับ MQTT_connect () ฟังก์ชั่น
โมฆะ MQTT_connect (); // Function Prototype สำหรับ MQTT Connect
จากนั้นเราจะเริ่มกระบวนการตั้งค่าของเรา ในตอนแรกเราจะเริ่มการสื่อสาร UART ด้วยวิธีการเริ่มต้น
Serial.begin (9600); // UART เริ่ม Serial.println (); // เพิ่มบรรทัดพิเศษสำหรับการเว้นวรรค Serial.println (); // เพิ่มบรรทัดพิเศษสำหรับการเว้นวรรคถัดไปเราทำทุกอย่างตามปกติเพื่อเชื่อมต่อกับ WiFI **************** สิ่งปกติทั้งหมดที่จำเป็นสำหรับการเชื่อมต่อ WiFi *********************** / Serial.print ("เชื่อมต่อกับ"); Serial.println (ssid); WiFi.mode (WIFI_STA); WiFi.begin (ssid รหัสผ่าน); ในขณะที่ (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 เนื่องจากเป็นความเร็วเต็มของ PT2258 IC
Wire.begin (); // เริ่มลำดับเริ่มต้นของ I2C Wire.setClock (100000); // ตั้งค่านาฬิกา I2C เป็น 100KHz
จากนั้นเรียกใช้เมธอด init () สำหรับทั้ง PT2258 และ RDA5807 IC และถือสถานะการส่งคืนเป็นบูลีนที่กำหนดไว้ก่อนหน้านี้
potStatus = digitalPot.init (); radioStatus = radio.init ();
จากนั้นตรวจสอบว่า MCU สามารถสื่อสารกับ IC ได้หรือไม่ เราทำสิ่งนี้ด้วยคำสั่ง if else สองรายการ
ถ้า (potStatus) {Serial.println ("พบอุปกรณ์ PT2258!"); } else {Serial.println ("ล้มเหลวในการเริ่มต้น PT2258"); } if (radioStatus) {Serial.println ("พบอุปกรณ์ RDA5807M!"); } else {Serial.println ("ล้มเหลวในการเริ่มต้น RDA5807M"); }
จากนั้นเรียกใช้วิธีการสมัครสมาชิกจากไลบรารี MQTT เราจะได้รับแจ้งจากเซิร์ฟเวอร์ MQTT หากมีการเปลี่ยนแปลงเกิดขึ้นในฟีดที่สมัครเป็นสมาชิกของเรา
mqtt.subscribe (& Radio_Station); // ตั้งค่าการสมัครสมาชิก MQTT สำหรับฟีด Radio_Station mqtt.subscribe (& Toggle_FM); // ตั้งค่าการสมัคร MQTT สำหรับ Toggle_FM feed mqtt.subscribe (& Volume); // ตั้งค่าการสมัคร MQTT สำหรับ Volume feed
ต่อไปเราตั้งค่าพินรีเลย์เป็นเอาต์พุตและสถานะพินเป็น LOW
PinMode (D7, เอาท์พุท); digitalWrite (D7, ต่ำ);
จากนั้นตั้งค่าระดับเสียงวิทยุที่กำหนดไว้ล่วงหน้าพารามิเตอร์นี้จะตั้งค่าระดับเสียงภายในของ RDA5807 IC ซึ่งถือเป็นการสิ้นสุดกระบวนการตั้งค่าของเรา
radio.setVolume (FIX_RADIO_VOLUME); // ต่อไปเราจะตั้งค่าปรับระดับเสียงวิทยุ radio.setMono (เท็จ); // เราไม่ต้องการให้ชิปส่งสัญญาณออกโมโน radio.setMute (เท็จ); // เราไม่ต้องการให้ชิปปิดเสียงตั้งแต่เริ่มต้น
เราเริ่มลูปโดยเรียกใช้ ฟังก์ชัน MQTT_connect () ซึ่งสร้างการเชื่อมต่อกับเซิร์ฟเวอร์ MQTT
ในฟังก์ชันการเชื่อมต่อ MQTT เราพยายามสามครั้งเพื่อเชื่อมต่อกับเซิร์ฟเวอร์ MQTT
หากประสบความสำเร็จเราจะได้รับข้อความแสดงความสำเร็จมิฉะนั้นจะได้รับข้อความแสดงข้อผิดพลาด
โมฆะ MQTT_connect () {int8_t ret; // จำนวนเต็ม 8 บิตเพื่อจัดเก็บการลองใหม่ // หยุดหากเชื่อมต่อแล้ว ถ้า (mqtt.connected ()) {return; } 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)))
หากการหมดเวลาเกิดขึ้นการเติมลูป while จะล้มเหลว หากไม่เป็นเช่นนั้นเราจะเปรียบเทียบการสมัครรับข้อมูลและจะได้รับการสมัครรับข้อมูลที่เรารู้จัก
ในรหัสนี้เราใช้กับฟีดที่สมัครรับข้อมูลทั้งสามรายการ
ถ้า (สมัครสมาชิก == & Toggle_FM) ถ้า (สมัครสมาชิก == & Radio_Station) ถ้า (สมัครสมาชิก == & ระดับเสียง)
นี่คือพารามิเตอร์หลักสามประการที่คุณต้องเข้าใจในส่วนลูป
โค้ดส่วนนี้ใช้เพื่อตรวจสอบและตั้งค่าฟีด Toggle_FM
ถ้า (สมัครสมาชิก == & Toggle_FM) // เป็นข้อความจาก Toggle_FM Feed {Serial.print (F ("Got:")); Serial.println ((ถ่าน *) Toggle_FM.lastread); // พิมพ์ข้อมูลฟีดสำหรับการดีบัก if (String ((char *) Toggle_FM.lastread) == String ("on")) // เราเปรียบเทียบข้อมูลที่ได้รับกับพารามิเตอร์ที่ทราบในกรณีนี้เราคาดหวังว่า "on "มาจากเซิร์ฟเวอร์ {// แต่ก่อนที่เราจะทำนั้นเราต้องทำให้มันเป็นสตริงที่ทำให้การเปรียบเทียบ digitalWrite (D7, HIGH) ง่ายสุด ๆ; // ถ้าเราได้รับสตริง" on "จากเซิร์ฟเวอร์ที่เรากำลังสร้าง D7 พิน HIGH} ถ้า (String ((char *) Toggle_FM.lastread) == String ("off")) // อีกครั้งเรากำลังตรวจสอบสตริงปิด {digitalWrite (D7, LOW); // ถ้าเราได้รับ สตริง "off" จากเซิร์ฟเวอร์เรากำลังสร้างพิน D7 LOW}}
รหัสส่วนนี้ใช้เพื่อตรวจสอบและตั้งค่าฟีด Radio_Station
ถ้า (สมัครสมาชิก == & Radio_Station) {Serial.print (F ("Got:")); Serial.println ((ถ่าน *) Radio_Station.lastread); if (String ((char *) Radio_Station.lastread) == String ("Big FM")) // ได้ยินว่าเรากำลังตรวจสอบสตริง Big FM {radio.setBandFrequency (FIX_BAND, 9270); // หากเงื่อนไขข้างต้นเป็นจริงเรากำลังตั้งค่าช่อง radoi เป็น 92.7MHz} // ขั้นตอนที่กล่าวถึงข้างต้นจะดำเนินต่อไปด้านล่าง if (String ((char *) Radio_Station.lastread) == String ("Red FM")) { radio.setBandFrequency (FIX_BAND, 9350); } if (String ((ถ่าน *) Radio_Station.lastread) == String ("วิทยุ Mirchi")) {radio.setBandFrequency (FIX_BAND, 9830); }}
โค้ดส่วนนี้ใช้เพื่อตรวจสอบและตั้งค่า Volume feed
ถ้า (การสมัคร == & ระดับเสียง) // // ได้ยินว่าเรากำลังตรวจสอบสตริง Volume และเป็นค่าจำนวนเต็มในรูปแบบสตริง // เราต้องแปลงกลับเป็นจำนวนเต็มเพื่อเปลี่ยนระดับเสียงด้วยความช่วยเหลือของ PT2258 IC Serial.print (F ("Got:")); Serial.println ((ถ่าน *) Volume.lastread); ปริมาตร = atoi ((ถ่าน *) Volume.lastread); // เราใช้ atoi () methode เพื่อแปลงตัวชี้อักขระเป็นปริมาตรจำนวนเต็ม = แผนที่ (ปริมาตร 0,100,79,0); // map (value, fromLow, fromHigh, toLow, toHigh) // เนื่องจาก pt2258 เข้าใจเฉพาะค่าจำนวนเต็มใน dB // เรากำลังแมปค่า 0dB - 79dB เป็น 0% - 100% digitalPot.setChannelVolume (ระดับเสียง 0); // หลังจากนั้นเรากำลังตั้งค่าระดับเสียงสำหรับช่อง 0 ของ PT2258 IC digitalPot.setChannelVolume (volume, 1); // หลังจากนั้นเรากำลังตั้งค่าระดับเสียงสำหรับช่อง 1 ของ PT2258 IC}}
การทดสอบวิทยุ FM ที่ควบคุมด้วยเสียงโดยใช้ Arduino
ในการทดสอบวงจรใช้อุปกรณ์ต่อไปนี้ -
- หม้อแปลงไฟฟ้าที่มี Tap 13-0-13
- ลำโพง4Ω 20W สองตัวเป็นโหลด
- โทรศัพท์เพื่อใช้ Google Assistant
ในบทความก่อนหน้านี้ฉันได้แสดงวิธีสร้างแอมพลิฟายเออร์เสียง 2x32 วัตต์อย่างง่ายด้วย TDA2050 IC ไปแล้วฉันจะใช้มันสำหรับการสาธิตนี้เช่นกัน
ฉันทำโพเทนชิออมิเตอร์แบบกลไกไม่เป็นระเบียบและทำให้สายไฟสองเส้นสั้นลงด้วยสายจัมเปอร์ขนาดเล็กสองเส้น ตอนนี้ด้วยความช่วยเหลือของปุ่มกดสองปุ่มฉันสามารถเปลี่ยนระดับเสียงของเครื่องขยายเสียงได้
การปรับปรุงเพิ่มเติม
มีการปรับปรุงเพิ่มเติมอีกมากมายที่สามารถทำได้กับวงจรนี้
- มีปัญหาเสียงรบกวนหลายประการเนื่องจากแหล่งกำเนิดเสียงทำงานข้าง NodeMCU ดังนั้นเราจึงจำเป็นต้องใช้การป้องกันเพิ่มเติมเพื่อปรับปรุงการป้องกันเสียงรบกวน
- การสร้างวงจรโดยรวมเป็น PCB จะช่วยเพิ่มภูมิคุ้มกันด้านเสียง
- สามารถเพิ่มตัวกรองเพิ่มเติมใน IC นี้เพื่อกำจัดสัญญาณรบกวน
ฉันหวังว่าคุณจะชอบบทความนี้และเรียนรู้สิ่งใหม่ ๆ จากบทความนี้ หากคุณมีข้อสงสัยคุณสามารถถามได้ในความคิดเห็นด้านล่างหรือสามารถใช้ฟอรัมของเราสำหรับการอภิปรายโดยละเอียด