สารบัญ:
- ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด
- ขั้นตอนที่ 2: บอร์ด ESP32
- ขั้นตอนที่ 3: ตัวถอดรหัส MP3
- ขั้นตอนที่ 4: Nextion Display
- ขั้นตอนที่ 5: เชื่อมต่อทุกส่วน
- ขั้นตอนที่ 6: รหัสของโครงการ
- ขั้นตอนที่ 7: ความคิดและการปรับปรุงขั้นสุดท้าย
วีดีโอ: วิทยุอินเทอร์เน็ตโดยใช้ ESP32: 7 ขั้นตอน (พร้อมรูปภาพ)
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:05
เพื่อน ๆ ที่รักยินดีต้อนรับสู่ Instructable อื่น! วันนี้เราจะสร้างอุปกรณ์วิทยุอินเทอร์เน็ตที่มีหน้าจอขนาดใหญ่ 3.5 นิ้ว โดยใช้บอร์ด ESP32 ราคาไม่แพง เชื่อหรือไม่ว่าตอนนี้เราสามารถสร้างวิทยุทางอินเทอร์เน็ตได้ในเวลาไม่ถึง 10 นาทีและด้วยเงินน้อยกว่า 30 เหรียญ มีจำนวนมากที่จะครอบคลุมดังนั้นมาเริ่มกันเลย!
ไม่กี่เดือนที่ผ่านมา ฉันได้ทำโปรเจ็กต์ Arduino FM Radio ซึ่งใช้งานได้ดีและดูดียิ่งขึ้นไปอีกในความคิดของฉัน หากคุณต้องการดูว่าฉันสร้างโครงการนี้อย่างไร คุณสามารถอ่านคำแนะนำได้ที่นี่ ปัญหาคือ ถึงแม้ว่าวิทยุนี้จะดูเท่ แต่ก็ใช้ไม่ได้เพราะฉันอาศัยอยู่ในเมืองเล็กๆ ทางตอนใต้ของกรีซ และสถานีวิทยุขนาดใหญ่ของกรีกที่ฉันชอบฟัง แต่ไม่มีเครื่องส่งในบริเวณนี้ ดังนั้นฉันจึงฟังวิทยุออนไลน์ที่ชื่นชอบบนแล็ปท็อปหรือแท็บเล็ตพีซีซึ่งใช้งานไม่ได้จริง ดังนั้น วันนี้ฉันจะสร้างอุปกรณ์วิทยุอินเทอร์เน็ตเพื่อให้สามารถฟังสถานีวิทยุโปรดของฉันจากทั่วทุกมุมโลก!
อย่างที่คุณเห็น เวอร์ชันแรกของโปรเจ็กต์พร้อมแล้วบนเขียงหั่นขนม มาเพิ่มพลังกันเถอะ ดังที่คุณเห็นโครงการเชื่อมต่อกับอินเทอร์เน็ตแล้วสตรีมเพลงจากสถานีวิทยุที่กำหนดไว้ล่วงหน้า
ฉันได้เปิดสถานีวิทยุ Real FM จากเอเธนส์แล้ว และด้วยการใช้ปุ่มเหล่านี้ เราสามารถเปลี่ยนสถานีวิทยุที่เรากำลังฟังได้ ฉันได้บันทึกสถานีวิทยุที่ชื่นชอบลงในหน่วยความจำของ ESP32 เพื่อให้เข้าถึงได้ง่าย ด้วยโพเทนชิออมิเตอร์นี้ ฉันสามารถเปลี่ยนระดับเสียงของลำโพงได้ ฉันแสดงชื่อสถานีวิทยุที่เรากำลังฟังอยู่บนหน้าจอขนาดใหญ่ 3.5 นิ้วพร้อมอินเทอร์เฟซผู้ใช้ย้อนยุค โครงการทำงานได้ดีและสร้างได้ง่ายมาก
คุณสามารถสร้างโครงการเดียวกันได้ภายในเวลาไม่ถึง 10 นาที แต่คุณต้องมีประสบการณ์บ้าง หากนี่เป็นโครงการแรกของคุณ ให้ลองสร้างโครงการที่เรียบง่ายกว่านี้ก่อน เพื่อรับประสบการณ์ ตรวจสอบคำแนะนำของฉันสำหรับแนวคิดโครงการง่ายๆ และเมื่อคุณคุ้นเคยกับ Arduino มากขึ้น อุปกรณ์อิเล็กทรอนิกส์จะกลับมาสร้างโครงการที่ยอดเยี่ยมนี้ มาเริ่มสร้างวิทยุอินเทอร์เน็ตของเราเองกันเถอะ
UPDATE 6/6/2019
ปัญหาเสียงได้รับการแก้ไขโดยการเพิ่มหม้อแปลงแยก ตรวจสอบแผนภาพชีมาติกที่อัปเดต ขอบคุณ!
ขั้นตอนที่ 1: รับชิ้นส่วนทั้งหมด
เราต้องการชิ้นส่วนต่อไปนี้:
- ESP32 ▶
- ตัวถอดรหัส MP3 ▶
- หม้อแปลงแยก ▶
- เครื่องขยายเสียง ▶
- ลำโพง 3W ▶
- จอแสดงผล Nextion 3.5" ▶
- ปุ่มกด ▶
- เขียงหั่นขนม ▶
- สายไฟ ▶
ค่าใช้จ่ายทั้งหมดของโครงการอยู่ที่ประมาณ 40 เหรียญสหรัฐ แต่ถ้าคุณไม่ได้ใช้จอแสดงผล ค่าใช้จ่ายของโครงการจะอยู่ที่ประมาณ 20 เหรียญ สิ่งที่น่าอัศจรรย์ เราสามารถสร้างวิทยุอินเทอร์เน็ตของเราเองได้ด้วยเงินเพียง 20$!
ขั้นตอนที่ 2: บอร์ด ESP32
หัวใจของโครงการคือบอร์ด ESP32 อันทรงพลัง หากคุณไม่คุ้นเคย ชิป ESP32 เป็นตัวตายตัวแทนของชิป ESP8266 ยอดนิยมที่เราเคยใช้มาหลายครั้งแล้ว ESP32 เป็นสัตว์ร้าย! มันมีแกนประมวลผล 32 บิตสองตัวที่ทำงานที่ 160MHz หน่วยความจำจำนวนมาก WiFi บลูทู ธ และคุณสมบัติอื่น ๆ อีกมากมายด้วยราคาประมาณ 7 $! ของวิเศษ!
โปรดดูบทวิจารณ์โดยละเอียดที่ฉันเตรียมไว้สำหรับบอร์ดนี้ ฉันได้แนบวิดีโอในคำแนะนำนี้ จะช่วยให้เข้าใจว่าทำไมชิปตัวนี้จะเปลี่ยนวิธีที่เราทำสิ่งต่างๆ ไปตลอดกาล! สิ่งที่น่าตื่นเต้นที่สุดอย่างหนึ่งเกี่ยวกับ ESP32 คือถึงแม้จะทรงพลังมาก แต่ก็มีโหมดหลับลึกซึ่งต้องการกระแสไฟเพียง 10μΑs ทำให้ ESP32 เป็นชิปในอุดมคติสำหรับการใช้งานที่ใช้พลังงานต่ำ
ในโครงการนี้ บอร์ด ESP32 จะเชื่อมต่อกับอินเทอร์เน็ต จากนั้นจึงรับข้อมูล MP3 จากสถานีวิทยุที่เรากำลังฟังอยู่ และส่งคำสั่งบางอย่างไปยังจอแสดงผล
ขั้นตอนที่ 3: ตัวถอดรหัส MP3
ข้อมูล MP3 จะถูกส่งไปยังโมดูลตัวถอดรหัส MP3 โดยใช้อินเทอร์เฟซ SPI โมดูลนี้ใช้ VS1053 IC IC นี้เป็นตัวถอดรหัส MP3 สำหรับฮาร์ดแวร์โดยเฉพาะ รับข้อมูล MP3 จาก ESP32 และแปลงเป็นสัญญาณเสียงได้อย่างรวดเร็ว
สัญญาณเสียงที่ส่งออกที่แจ็คเสียงนี้อ่อนและมีเสียงรบกวน เราจึงต้องล้างมันออกจากสัญญาณรบกวนและขยายสัญญาณ (ถ้าคุณใช้หูฟังอยู่สัญญาณก็ไม่จำเป็นต้องเคลียร์จากนอยส์หรือแอมพลิฟายเออร์) นั่นเป็นเหตุผลที่ฉันใช้หม้อแปลงไอโซเลชั่นเพื่อล้างเสียงจากเสียงรบกวนและแอมพลิฟายเออร์เสียง PAM8403 เพื่อขยายสัญญาณเสียงแล้วส่ง ไปที่ลำโพง ฉันยังเชื่อมต่อปุ่มสองปุ่มกับ ESP32 เพื่อเปลี่ยนสตรีม MP3 ที่เราได้รับและหน้าจอ Nextion เพื่อแสดงสถานีวิทยุที่เรากำลังฟังอยู่
ขั้นตอนที่ 4: Nextion Display
ฉันเลือกใช้จอแสดงผล Nextion สำหรับโครงการนี้เนื่องจากใช้งานง่ายมาก เราต้องต่อสายเพียงเส้นเดียวเพื่อควบคุม
การแสดง Nextion เป็นการแสดงรูปแบบใหม่ พวกเขามีโปรเซสเซอร์ ARM ของตัวเองที่ด้านหลังซึ่งรับผิดชอบในการขับเคลื่อนจอแสดงผลและสร้างส่วนต่อประสานกราฟิกกับผู้ใช้ ดังนั้นเราจึงสามารถใช้พวกมันกับไมโครคอนโทรลเลอร์ใดก็ได้และบรรลุผลลัพธ์ที่น่าทึ่ง ฉันได้เตรียมการทบทวนโดยละเอียดของจอแสดงผล Nextion ซึ่งอธิบายในเชิงลึกถึงวิธีการทำงาน วิธีใช้งาน และข้อเสีย คุณสามารถอ่านได้ที่นี่ หรือชมวิดีโอที่แนบมา
ขั้นตอนที่ 5: เชื่อมต่อทุกส่วน
สิ่งที่เราต้องทำตอนนี้คือเชื่อมต่อทุกส่วนเข้าด้วยกันตามแผนผังนี้ คุณสามารถค้นหาแผนผังไดอะแกรมที่แนบมาที่นี่ การเชื่อมต่อนั้นตรงไปตรงมา
มีสองสิ่งที่ควรทราบแม้ว่า โมดูลตัวถอดรหัส MP3 ส่งสัญญาณเสียงสเตอริโอ แต่ฉันใช้ช่องสัญญาณเสียงเพียงช่องเดียวในโครงการนี้ เพื่อรับสัญญาณเสียง ฉันเชื่อมต่อสายสัญญาณเสียงกับแจ็คเสียงของโมดูล แล้วตัดออกเพื่อให้เห็นสายไฟสี่เส้นอยู่ข้างใน ฉันเชื่อมต่อสายไฟสองเส้น หนึ่งในนั้นคือ GND และอีกอันหนึ่งคือสัญญาณเสียงของหนึ่งในสองช่องสัญญาณเสียง หากคุณต้องการ คุณสามารถเชื่อมต่อทั้งสองช่องสัญญาณเข้ากับโมดูลเครื่องขยายเสียงและขับลำโพงสองตัว
ช่องสัญญาณเสียงแต่ละช่องต้องผ่านหม้อแปลงแยกเพื่อขจัดเสียงรบกวนก่อนเชื่อมต่อกับเครื่องขยายเสียง
ในการส่งข้อมูลไปยังจอแสดงผล เราต้องต่อสายเพียงเส้นเดียวเข้ากับพิน TX0 ของ ESP32 หลังจากเชื่อมต่อชิ้นส่วนต่างๆ แล้ว เราต้องโหลดโค้ดไปที่ ESP32 และต้องโหลด GUI ไปที่จอแสดงผล Nextion
ในการโหลด GUI ไปยังจอแสดงผล Nextion ให้คัดลอกไฟล์ InternetRadio.tft ฉันจะแชร์กับคุณไปยังการ์ด SD เปล่า ใส่การ์ด SD ลงในช่องเสียบการ์ด SD ที่ด้านหลังของจอแสดงผล จากนั้นเปิดเครื่องแสดงผล และ GUI จะถูกโหลด จากนั้นถอดการ์ด SD และเสียบปลั๊กอีกครั้ง
หลังจากโหลดโค้ดสำเร็จแล้ว เรามาเปิดโปรเจ็กต์กัน จะแสดงข้อความ "กำลังเชื่อมต่อ … " เป็นเวลาสองสามวินาทีบนหน้าจอ หลังจากเชื่อมต่ออินเทอร์เน็ต โครงการจะเชื่อมต่อกับสถานีวิทยุที่กำหนดไว้ล่วงหน้า ฮาร์ดแวร์ทำงานได้ตามที่คาดไว้ แต่ตอนนี้เรามาดูด้านซอฟต์แวร์ของโครงการกัน
ขั้นตอนที่ 6: รหัสของโครงการ
ก่อนอื่น ให้ฉันแสดงอะไรให้คุณดูก่อน รหัสของโครงการน้อยกว่า 140 บรรทัดของรหัส ลองคิดดู เราสามารถสร้างวิทยุทางอินเทอร์เน็ตด้วยจอแสดงผลขนาด 3.5 นิ้ว พร้อมโค้ด 140 บรรทัด นี่มันน่าทึ่งมาก เราสามารถบรรลุสิ่งนี้ได้โดยใช้ไลบรารีต่างๆ ที่มีโค้ดหลายพันบรรทัด นี่คือพลังของ Arduino และชุมชนโอเพ่นซอร์ส มันทำให้สิ่งต่าง ๆ เป็นเรื่องง่ายสำหรับผู้ผลิต
ในโครงการนี้ ฉันใช้ไลบรารี VS1053 สำหรับบอร์ด ESP32
ขั้นแรกเราต้องกำหนด SSID และรหัสผ่านของเครือข่าย Wi-Fi ต่อไปเราต้องบันทึกสถานีวิทยุบางส่วนไว้ที่นี่ เราต้องการ URL โฮสต์ เส้นทางที่สตรีมตั้งอยู่ และพอร์ตที่เราต้องใช้ เราบันทึกข้อมูลทั้งหมดนี้ลงในตัวแปรเหล่านี้
ถ่าน ssid = "yourSSID"; // เครือข่ายของคุณ SSID (ชื่อ) char pass = "yourWifiPassword"; // รหัสผ่านเครือข่ายของคุณ
// สถานีวิทยุไม่กี่แห่ง
ถ่าน *host[4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; ถ่าน *เส้นทาง[4] = {"/1", "/ert-kosmos", "/realfm", "/skai1003"}; พอร์ต int[4] = {8062, 80, 80, 80};
ฉันได้รวมสถานีวิทยุ 4 สถานีในตัวอย่างนี้
ในฟังก์ชันการตั้งค่า เราแนบการขัดจังหวะกับปุ่มต่างๆ เราเริ่มต้นโมดูลตัวถอดรหัส MP3 และเราเชื่อมต่อกับ Wi-Fi
การตั้งค่าเป็นโมฆะ () {
Serial.begin(9600); ล่าช้า (500); SPI.begin();
pinMode(ปุ่มก่อนหน้า, INPUT_PULLUP);
pinMode(ปุ่มถัดไป, INPUT_PULLUP);
แนบInterrupt(digitalPinToInterrupt(previousButton), PreviousButtonInterrupt, FALLING);
AttachInterrupt(digitalPinToInterrupt(nextButton), nextButtonInterrupt, FALLING); initMP3Decoder(); เชื่อมต่อกับ WIFI(); }
ในฟังก์ชันวนรอบ ก่อนอื่น เราจะตรวจสอบว่าผู้ใช้ได้เลือกสถานีวิทยุที่แตกต่างจากที่เราได้รับข้อมูลหรือไม่ หากเป็นเช่นนั้น เราจะเชื่อมต่อกับสถานีวิทยุใหม่อื่นที่เราได้รับข้อมูลจากสตรีม และส่งไปยังโมดูลถอดรหัส MP3
วงเป็นโมฆะ () { ถ้า (สถานีวิทยุ! = สถานีวิทยุก่อนหน้า) { station_connect (สถานีวิทยุ); PreviousRadioStation = สถานีวิทยุ; } if (client.available () > 0) { uint8_t bytesread = client.read (mp3buff, 32); player.playChunk (mp3buff, byteread); } }
นั่นคือทั้งหมด! เมื่อผู้ใช้กดปุ่ม การขัดจังหวะจะเกิดขึ้น และเปลี่ยนค่าของตัวแปรซึ่งจะบอกสตรีมที่จะเชื่อมต่อ
เป็นโมฆะ IRAM_ATTR PreviousButtonInterrupt () {
คงที่ unsigned นาน last_interrupt_time = 0;
ไม่ได้ลงชื่อ interrupt_time ยาว = millis(); if (interrupt_time - last_interrupt_time > 200) { if(radioStation>0) radioStation--; อื่น radioStation = 3; } last_interrupt_time = interrupt_time; }
ในการอัปเดตการแสดงผล เราเพียงแค่ส่งคำสั่งบางคำสั่งไปยังพอร์ตอนุกรม
เป็นโมฆะ drawRadioStationName (int id) { คำสั่งสตริง; สวิตช์ (id) { กรณีที่ 0: command = "p1.pic=2"; Serial.print(คำสั่ง); endNextionCommand(); หยุดพัก; //1940 UK Radio case 1: command = "p1.pic=3"; Serial.print(คำสั่ง); endNextionCommand(); หยุดพัก; //KOSMOS กรีกกรณีที่ 2: command = "p1.pic=4"; Serial.print(คำสั่ง); endNextionCommand(); หยุดพัก; // REAL FM กรีกกรณีที่ 3: command = "p1.pic=5"; Serial.print(คำสั่ง); endNextionCommand(); หยุดพัก; //SKAI 100.3 กรีก } }
ทีนี้มาดูที่ Nextion Display GUI Nextion GUI ประกอบด้วยรูปภาพพื้นหลังและรูปภาพที่แสดงชื่อสถานีวิทยุ บอร์ด ESP32 จะส่งคำสั่งให้เปลี่ยนชื่อสถานีวิทยุจากภาพที่ฝังไว้ มันง่ายมาก ๆ. โปรดดูบทช่วยสอนเกี่ยวกับการแสดงผล Nextion ที่ฉันได้เตรียมไว้เมื่อสักครู่นี้สำหรับข้อมูลเพิ่มเติม คุณสามารถออกแบบ GUI ของคุณเองได้อย่างรวดเร็วหากต้องการและแสดงสิ่งต่างๆ เพิ่มเติม
คุณจะพบรหัสของโครงการที่แนบมาในคำแนะนำนี้เช่นเคย
ขั้นตอนที่ 7: ความคิดและการปรับปรุงขั้นสุดท้าย
โครงการนี้ง่ายมาก ฉันต้องการโครงร่างโครงงานวิทยุทางอินเทอร์เน็ตอย่างง่ายที่จะใช้งานได้ ตอนนี้เวอร์ชันแรกของโปรเจ็กต์พร้อมแล้ว เราสามารถเพิ่มฟีเจอร์มากมายเพื่อปรับปรุงเวอร์ชันดังกล่าวได้ ก่อนอื่น ฉันต้องออกแบบตู้สำหรับใส่อุปกรณ์อิเล็กทรอนิกส์ทั้งหมด
ในหนังสือเล่มนี้เกี่ยวกับวิทยุที่สวยที่สุดเท่าที่เคยมีมา มีวิทยุเจ๋งๆ ให้เลือกเป็นโครงสำหรับโครงการนี้ ฉันคิดว่าฉันกำลังจะสร้างสิ่งที่แนบมารอบๆ วิทยุอาร์ตเดโคอันตระการตานี้ คุณคิดอย่างไร คุณชอบรูปลักษณ์ของวิทยุนี้หรือคุณชอบอะไรที่ล้ำสมัยกว่านี้ คุณมีแนวคิดเรื่องตู้อื่น ๆ หรือไม่? คุณชอบโปรเจ็กต์ Internet Radio นี้ไหม และฟีเจอร์ใดที่คิดว่าเราต้องเพิ่มเข้าไปเพื่อให้มีประโยชน์มากขึ้น ฉันชอบที่จะอ่านความคิดและความคิดของคุณดังนั้นโปรดโพสต์ในส่วนความคิดเห็นด้านล่าง
แนะนำ:
สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: 9 ขั้นตอน (พร้อมรูปภาพ)
สถานีตรวจอากาศระดับมืออาชีพโดยใช้ ESP8266 และ ESP32 DIY: LineaMeteoStazione เป็นสถานีตรวจอากาศที่สมบูรณ์แบบซึ่งสามารถเชื่อมต่อกับเซ็นเซอร์ระดับมืออาชีพจาก Sensirion รวมถึงส่วนประกอบ Davis Instrument (Rain Gauge, เครื่องวัดความเร็วลม) โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อเป็นสถานีตรวจอากาศแบบ DIY แต่ต้องใช้
ความแรงของสัญญาณ ESP32 TTGO WiFi: 8 ขั้นตอน (พร้อมรูปภาพ)
ความแรงของสัญญาณ WiFi ESP32 TTGO: ในบทช่วยสอนนี้ เราจะเรียนรู้วิธีแสดงความแรงของสัญญาณเครือข่าย WiFi โดยใช้บอร์ด ESP32 TTGO ดูวิดีโอ
เล่นวิดีโอด้วย ESP32: 10 ขั้นตอน (พร้อมรูปภาพ)
เล่นวิดีโอด้วย ESP32: คำแนะนำนี้แสดงบางอย่างเกี่ยวกับการเล่นวิดีโอและเสียงด้วย ESP32
MQTT Mood Lights พร้อม ESP32: 4 ขั้นตอน (พร้อมรูปภาพ)
MQTT Mood Lights พร้อม ESP32: ฉันถูกล่อลวงมาเป็นเวลานานแล้วที่จะกระโดดขึ้นไปบนแถบ LED ดังนั้นฉันจึงวิ่งออกไปหยิบแถบ LED ขึ้นมาเพื่อเล่น ฉันลงเอยด้วยการสร้างแสงอารมณ์เหล่านี้ สามารถควบคุมได้ด้วย MQTT ทำให้สามารถเพิ่มสมาร์ทได้ทุกประเภท นี่คือ
เริ่มต้นใช้งาน ESP32 - การติดตั้งบอร์ด ESP32 ใน Arduino IDE - ESP32 Blink Code: 3 ขั้นตอน
เริ่มต้นใช้งาน ESP32 | การติดตั้งบอร์ด ESP32 ใน Arduino IDE | รหัสการกะพริบของ ESP32: ในคำแนะนำนี้ เราจะดูวิธีการเริ่มทำงานกับ esp32 และวิธีการติดตั้งบอร์ด esp32 ลงใน Arduino IDE และเราจะตั้งโปรแกรม esp 32 เพื่อเรียกใช้โค้ดกะพริบโดยใช้ arduino ide