0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣用ESP32主板制作一個(gè)帶有3.5英寸顯示屏的網(wǎng)絡(luò)收音機(jī)設(shè)備

454398 ? 來源:工程師吳畏 ? 2019-08-21 11:35 ? 次閱讀

第1步:獲取所有部件

怎樣用ESP32主板制作一個(gè)帶有3.5英寸顯示屏的網(wǎng)絡(luò)收音機(jī)設(shè)備

我們需要以下部分:

ESP32

MP3解碼器

隔離變壓器

放大器

3W揚(yáng)聲器

3.5“Nextion Display

按鈕

面包板

Wire

The該項(xiàng)目的總成本約為40美元,但如果您不使用顯示器,該項(xiàng)目的成本約為20美元。令人驚奇的東西。我們可以用20美元建立我們自己的網(wǎng)絡(luò)電臺(tái)!

第2步:ESP32 Board

項(xiàng)目的核心是,當(dāng)然,強(qiáng)大的ESP32板。如果您不熟悉它,ESP32芯片是我們過去多次使用的流行的ESP8266芯片的繼承者。 ESP32是一個(gè)野獸!它提供兩個(gè)32位處理核心,工作頻率為160MHz,大量內(nèi)存,WiFi,藍(lán)牙和許多其他功能,成本約為7美元!驚人的東西!

請(qǐng)觀看我為此委員會(huì)準(zhǔn)備的詳細(xì)評(píng)論。我已將視頻附加到此Instructable上。它將有助于理解為什么這個(gè)芯片會(huì)改變我們永遠(yuǎn)做事的方式!關(guān)于ESP32最激動(dòng)人心的事情之一就是即使它非常強(qiáng)大,它也提供深度睡眠模式,只需要10μA的電流。這使ESP32成為低功耗應(yīng)用的理想芯片。

在這個(gè)項(xiàng)目中,ESP32板連接到Internet,然后它從我們正在收聽的無線電臺(tái)接收MP3數(shù)據(jù),并發(fā)送一些命令到顯示器。

步驟3:MP3解碼器

然后MP3數(shù)據(jù)使用SPI接口發(fā)送到MP3解碼器模塊。該模塊使用VS1053 IC。該IC是專用的硬件MP3解碼器。它從ESP32獲取MP3數(shù)據(jù)并將其快速轉(zhuǎn)換為音頻信號(hào)

它在此音頻插孔輸出的音頻信號(hào)很弱且噪音很大,所以我們需要從噪聲中清除它放大它。 (如果你使用耳機(jī),信號(hào)不需要從噪聲中清除或放大。)這就是為什么我使用隔離變壓器來清除噪聲中的音頻和PAM8403音頻放大器來放大音頻信號(hào)然后發(fā)送它發(fā)言者我還將兩個(gè)按鈕連接到ESP32,只是為了改變我們從中獲取數(shù)據(jù)的MP3流和用于顯示我們正在收聽的無線電臺(tái)的Nextion顯示。

步驟4:Nextion Display

我選擇使用Nextion顯示 此項(xiàng)目,因?yàn)樗浅R子谑褂?。我們只需要連接一根電線來控制它。

Nextion顯示器是一種新型顯示器。他們?cè)诤竺嬗凶约旱?a target="_blank">ARM處理器,負(fù)責(zé)驅(qū)動(dòng)顯示器并創(chuàng)建圖形用戶界面。因此,我們可以將它們與任何微控制器一起使用并獲得驚人的效我已經(jīng)準(zhǔn)備好了這個(gè)Nextion顯示器的詳細(xì)評(píng)論,它深入地解釋了它們?nèi)绾喂ぷ?,如何使用它們以及它們的缺點(diǎn)。您可以在這里閱讀,或觀看附加的視頻。

步驟5:連接所有部件

現(xiàn)在我們要做的就是連接根據(jù)該示意圖將所有部件組合在一起。您可以在此處找到原理圖。連接很簡(jiǎn)單。

但有兩點(diǎn)需要注意。 MP3解碼器模塊輸出立體聲信號(hào),但我在這個(gè)項(xiàng)目中只使用一個(gè)音頻通道。為了獲得音頻信號(hào),我將音頻線連接到模塊的音頻插孔,并將其切斷以顯示內(nèi)部的四根線。我連接了兩根電線。其中一個(gè)是GND,另一個(gè)是兩個(gè)音頻通道之一的音頻信號(hào)。如果您希望可以將兩個(gè)通道連接到放大器模塊并驅(qū)動(dòng)兩個(gè)揚(yáng)聲器。

每個(gè)音頻通道必須通過隔離變壓器,以清除連接到放大器之前出現(xiàn)的任何噪聲。

要將數(shù)據(jù)發(fā)送到顯示器,我們只需要將一根線連接到ESP32的TX0引腳。連接部件后,我們必須將代碼加載到ESP32,我們必須將GUI加載到Nextion顯示器。

要將GUI加載到Nextion顯示器,請(qǐng)復(fù)制InternetRadio.tft文件I我要和你分享一張空的SD卡。將SD卡放入顯示器背面的SD卡插槽中。然后打開顯示器電源,將加載GUI。然后取出SD卡并重新連接電源。

成功加載代碼后,讓我們啟動(dòng)項(xiàng)目。它在顯示屏上顯示文本“正在連接。..”幾秒鐘。連接到互聯(lián)網(wǎng)后,項(xiàng)目連接到預(yù)定義的無線電臺(tái)。硬件按預(yù)期工作,但現(xiàn)在讓我們看看項(xiàng)目的軟件方面。

步驟6:項(xiàng)目代碼

首先,讓我告訴你一些事情。 T 項(xiàng)目代碼不如 140行代碼??紤]一下,我們可以使用帶有140行代碼的3.5英寸顯示器構(gòu)建一個(gè)網(wǎng)絡(luò)電臺(tái),這太棒了。我們可以使用包含數(shù)千行代碼的各種庫來實(shí)現(xiàn)所有這些。這是Arduino和開源社區(qū)的力量。它使制造商變得容易。

在這個(gè)項(xiàng)目中,我使用VS1053庫作為ESP32板。

首先,我們必須定義SSID和密碼。 Wi-Fi網(wǎng)絡(luò)。接下來,我們必須在這里保存一些電臺(tái)。我們需要主機(jī)URL,流所在的路徑以及我們需要使用的端口。我們將所有這些信息保存到這些變量中。

char ssid[] = “yourSSID”; // your network SSID (name)

char pass[] = “yourWifiPassword”; // your network password

// Few Radio Stations

char *host[4] = {“149.255.59.162”,“radiostreaming.ert.gr”,“realfm.live24.gr”, “secure1.live24.gr”};

char *path[4] = {“/1”,“/ert-kosmos”,“/realfm”,“/skai1003”};

int port[4] = {8062,80,80,80};

在這個(gè)例子中我已經(jīng)包含了4個(gè)電臺(tái)。

在設(shè)置功能中我們將中斷連接到按鈕,我們初始化MP3解碼器模塊,我們連接到Wi-Fi。

void setup () {

Serial.begin(9600);

delay(500);

SPI.begin();

pinMode(previousButton, INPUT_PULLUP);

pinMode(nextButton, INPUT_PULLUP);

attachInterrupt(digitalPinToInterrupt(previousButton), previousButtonInterrupt, FALLING);

attachInterrupt(digitalPinToInterrupt(nextButton), nextButtonInterrupt, FALLING);

initMP3Decoder();

connectToWIFI();

}

在循環(huán)功能中,首先,我們檢查用戶是否選擇了不同于我們從中獲取數(shù)據(jù)的無線電臺(tái)。如果是這樣,我們連接到新的無線電臺(tái),否則我們從流中獲取數(shù)據(jù)并將它們發(fā)送到MP3解碼器模塊。

void loop() {

if(radioStation!=previousRadioStation)

{

station_connect(radioStation);

previousRadioStation = radioStation;

}

if (client.available() 》 0)

{

uint8_t bytesread = client.read(mp3buff, 32);

player.playChunk(mp3buff, bytesread);

}

}

這就是全部!當(dāng)用戶按下按鈕時(shí),會(huì)發(fā)生中斷,并更改變量的值,該變量告訴連接哪個(gè)流。

void IRAM_ATTR previousButtonInterrupt() {

static unsigned long last_interrupt_time = 0;

unsigned long interrupt_time = millis();

if (interrupt_time - last_interrupt_time 》 200)

{

if(radioStation》0)

radioStation--;

else

radioStation = 3;

}

last_interrupt_time = interrupt_time;

}

要更新顯示,我們只需向其發(fā)送一些命令即可。串口。

void drawRadioStationName(int id)

{

String command;

switch (id)

{

case 0: command = “p1.pic=2”; Serial.print(command); endNextionCommand(); break; //1940 UK Radio

case 1: command = “p1.pic=3”; Serial.print(command); endNextionCommand(); break; //KOSMOS GREEK

case 2: command = “p1.pic=4”; Serial.print(command); endNextionCommand(); break; //REAL FM GREEK

case 3: command = “p1.pic=5”; Serial.print(command); endNextionCommand(); break; //SKAI 100.3 GREEK

}

}

現(xiàn)在讓我們來看看Nextion Display GUI。 Nextion GUI由背景圖片和顯示電臺(tái)名稱的圖片組成。 ESP32板發(fā)送命令以從嵌入的圖像中更改無線電臺(tái)的名稱。這很容易。請(qǐng)觀看我前段時(shí)間準(zhǔn)備的Nextion顯示教程,以獲取更多信息。如果您愿意,可以快速設(shè)計(jì)自己的GUI并在其上顯示更多內(nèi)容。

一如既往,您可以找到此Instructable附帶的項(xiàng)目代碼。

第7步:最后的想法和改進(jìn)

這個(gè)項(xiàng)目非常簡(jiǎn)單。 我想 一個(gè)簡(jiǎn)單的Internet廣播項(xiàng)目框架?,F(xiàn)在項(xiàng)目的第一個(gè)版本已準(zhǔn)備好,我們可以添加許多功能來改進(jìn)它。首先,我需要設(shè)計(jì)一個(gè)可容納所有電子設(shè)備的外殼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 網(wǎng)絡(luò)收音機(jī)

    關(guān)注

    1

    文章

    11

    瀏覽量

    7895
  • ESP32
    +關(guān)注

    關(guān)注

    18

    文章

    971

    瀏覽量

    17430
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    天馬攜手康寧推出最新柔性O(shè)LED車載顯示屏

    在CES 2025上,天馬攜手康寧聯(lián)合推出雙方共創(chuàng)的最新車載顯示成果——雙13英寸多曲率體黑OLED顯示屏和13英寸OLED滑移
    的頭像 發(fā)表于 01-13 09:41 ?97次閱讀

    開源項(xiàng)目!基于ESP32的圓形顯示屏互動(dòng)式圣誕雪球

    基于矽遞科技(Seeed Studio)圓形顯示屏互動(dòng)式圣誕雪球,借助互動(dòng)式雪球模擬體驗(yàn)圣誕的魔力!使用矽遞科技的圓形顯示屏以及XIAO ESP32S3 開發(fā)板。
    發(fā)表于 12-16 14:24

    3.5英寸軟驅(qū)位利用起來!ICY DOCK打造電腦擴(kuò)容新方案

    眾多電腦用戶或許都曾面臨這樣個(gè)難題:機(jī)箱內(nèi)那個(gè)孤零零的3.5英寸軟驅(qū)位,閑置不用顯得頗為可惜。為此,我們有
    的頭像 發(fā)表于 12-06 16:19 ?157次閱讀
    <b class='flag-5'>3.5</b><b class='flag-5'>英寸</b>軟驅(qū)位利用起來!ICY DOCK打造電腦擴(kuò)容新方案

    esp32什么軟件編程

    ESP32款由樂鑫(Espressif)推出的低功耗、高性能的Wi-Fi和藍(lán)牙雙模微控制器,廣泛應(yīng)用于物聯(lián)網(wǎng)、智能家居、智能穿戴等領(lǐng)域。要對(duì)ESP32進(jìn)行編程,需要選擇合適的編程軟件和開發(fā)環(huán)境
    的頭像 發(fā)表于 08-19 17:24 ?3960次閱讀

    開源DIY!基于 ESP32-S3 的開源智能手表

    ?MAKER:rahmanshaber 這是個(gè)基于 ESP32-S3 MCU 的開源智能手表項(xiàng)目。其外觀盡可能借鑒蘋果手表的設(shè)計(jì)風(fēng)格,搭載 1.7 英寸
    發(fā)表于 07-26 11:30

    想用ESP32-S2接8080顯示屏,對(duì)應(yīng)的引腳需要怎么分配?

    請(qǐng)教下,我想用ESP32-S2接8080顯示屏,對(duì)應(yīng)的引腳需要怎么分配,有沒有相關(guān)的參考文檔?
    發(fā)表于 07-01 08:28

    ESP32,做了個(gè)siri?!開源了!

    工程名稱:ESP32直接對(duì)話大語言模型人工智能語音助手前言ESP32做了個(gè)語言模型,就像
    的頭像 發(fā)表于 06-29 08:04 ?328次閱讀
    <b class='flag-5'>用</b><b class='flag-5'>ESP32</b>,做了<b class='flag-5'>個(gè)</b>siri?!開源了!

    請(qǐng)問ESP32硬定時(shí)器可以用來掃描HUB75D的LED32*16的顯示屏嗎?

    1,如題:ESP32硬定時(shí)器,可以用來掃描,HUB75D的LED32*16的顯示屏嗎? 2,問題,我使用ESP32來做一個(gè)時(shí)鐘產(chǎn)品,HUB75D的LED32*16的
    發(fā)表于 06-17 07:42

    如何用esp32s3實(shí)現(xiàn)驅(qū)動(dòng)rgb顯示屏?

    esp32s3實(shí)現(xiàn)驅(qū)動(dòng)rgb顯示屏
    發(fā)表于 06-13 07:36

    ESP32以太網(wǎng)和SPI顯示屏使用會(huì)導(dǎo)致屏幕錯(cuò)位怎么解決?

    使用的是ESP32 ethernet development kit開發(fā)板,在iperf例程的基礎(chǔ)上添加了lvgl, 進(jìn)行長時(shí)間ping包測(cè)試和iperf測(cè)試會(huì)導(dǎo)致顯示屏刷新的元素錯(cuò)位,在不連接網(wǎng)線的情況下顯示屏就不會(huì)錯(cuò)位了
    發(fā)表于 06-07 06:47

    手搓了個(gè)ESP32墨水閱讀器,蠻簡(jiǎn)單的

    工程名稱:3.7墨水閱讀器時(shí)鐘溫濕度TXT/Epub前言帥小伙手搓ESP32墨水閱讀器!可輕松續(xù)航100天!01閱讀器功能/亮點(diǎn)?1.具有閱讀器、時(shí)鐘、溫濕度監(jiān)測(cè)、鬧鐘、番茄鐘功
    的頭像 發(fā)表于 05-27 08:04 ?331次閱讀
    手搓了<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>ESP32</b>墨水<b class='flag-5'>屏</b>閱讀器,蠻簡(jiǎn)單的

    iPhone 16 Pro Max機(jī)模亮相:6.9英寸,4676mAh大電池

    據(jù)了解,iPhone 16 Pro Max將配備有史以來最大的Pro Max系列顯示屏——6.9英寸。相比之下,iPhone 15 Pro Max則采用了6.7英寸顯示屏。
    的頭像 發(fā)表于 05-16 11:19 ?961次閱讀

    【開源項(xiàng)目】ESP32一個(gè)數(shù)字沙漏

    。 這個(gè)項(xiàng)目的構(gòu)建和編程都相當(dāng)簡(jiǎn)單,只需要你有些基礎(chǔ)的Arduino知識(shí)就行。同時(shí),沙漏在外觀設(shè)計(jì)上也留有很大的發(fā)揮空間。 所需材料 ESP32 2個(gè) GC9a01 圓形顯示屏
    發(fā)表于 04-28 11:44

    款基于ESP32的情侶互動(dòng)小電視,如何含蓄地告訴你對(duì)象你想她了?

    都說工程師里面直男多,但工程師浪漫起來就沒小鮮肉什么事兒了。今天社長帶來的是款基于ESP32的情侶互動(dòng)小電視:具備天氣時(shí)鐘、戀愛紀(jì)念日及情話顯示、想你啦互動(dòng)等功能(天知道單身狗社長抱著怎樣
    發(fā)表于 03-28 09:27

    【開源作品】基于樹莓派4B、ESP32制作的桌面機(jī)器人、氣象站、立方光!

    BME280 傳感器: 第 1 步:Inkplate6 彩色電子紙顯示屏 這是個(gè)6英寸的彩色電子紙顯示板。我已經(jīng)做了十多年了,我對(duì)電子
    發(fā)表于 03-05 16:52