Índice:

Rádio na Internet usando um ESP32: 7 etapas (com imagens)
Rádio na Internet usando um ESP32: 7 etapas (com imagens)

Vídeo: Rádio na Internet usando um ESP32: 7 etapas (com imagens)

Vídeo: Rádio na Internet usando um ESP32: 7 etapas (com imagens)
Vídeo: ESP32 Internet Radio project with A 3.5" Nextion Display 2024, Setembro
Anonim
Image
Image
Rádio na Internet usando um ESP32
Rádio na Internet usando um ESP32
Rádio na Internet usando um ESP32
Rádio na Internet usando um ESP32

Caros amigos bem vindos a mais um Instructable! Hoje vamos construir um dispositivo de rádio da Internet com uma grande tela de 3,5”usando uma placa ESP32 barata. Acredite ou não, agora podemos construir um rádio na Internet em menos de 10 minutos e com menos de $ 30. Há muito o que abordar, então vamos começar!

Há alguns meses, concluí um projeto do Arduino FM Radio que funciona muito bem e parece ainda melhor na minha opinião. Se você quiser ver como construí este projeto, você pode ler o Instructable aqui. O problema é que, embora esse rádio pareça legal, não é prático porque moro em uma pequena cidade no sul da Grécia e as grandes rádios gregas que prefiro ouvir não têm transmissores por aqui. Por isso, ouço as minhas rádios preferidas online no meu portátil ou tablet pc, o que também não é muito prático. Então, hoje vou construir um dispositivo de rádio na Internet para poder ouvir minhas rádios favoritas de todo o mundo!

Como você pode ver, uma primeira versão do projeto está pronta em um breadboard. Vamos ligar. Como você pode ver, o projeto se conecta à Internet e, em seguida, transmite música de estações de rádio predefinidas.

Sintonizei a estação de rádio Real FM de Atenas e usando esses botões podemos mudar a estação de rádio que estamos ouvindo. Salvei minhas estações de rádio favoritas na memória do ESP32 para poder acessá-las facilmente. Com este potenciômetro, posso alterar o volume do alto-falante. Eu exibo o nome da estação de rádio que estamos ouvindo em um grande display de 3,5”com uma interface de usuário retro. O projeto funciona bem e é muito fácil de construir.

Você pode construir o mesmo projeto em menos de 10 minutos, mas precisa ter alguma experiência. Se este é seu primeiro projeto, considere construir um mais simples primeiro, para ganhar alguma experiência. Verifique meus Instructables para ideias de projetos simples e quando você estiver mais confortável com o Arduino, a eletrônica volta para construir este projeto legal. Vamos agora começar a construir nosso próprio rádio na Internet.

ATUALIZAÇÃO 2019-06-06

O problema de ruído foi resolvido adicionando um transformador isolador. Confira o diagrama semântico atualizado. Obrigado!

Etapa 1: Obtenha todas as peças

Obtenha todas as peças
Obtenha todas as peças

Vamos precisar das seguintes peças:

  • ESP32 ▶
  • Decodificador de MP3 ▶
  • Isolation Transformer ▶
  • Amplificador ▶
  • Alto-falante 3W ▶
  • Display Nextion de 3,5 "▶
  • Botões de pressão ▶
  • Breadboard ▶
  • Wires ▶

O custo total do projeto é de cerca de 40 $, mas se você não usar um display, o custo do projeto é de cerca de 20 $. Coisas incríveis. Podemos construir nossa própria rádio na Internet com apenas 20 $!

Etapa 2: Placa ESP32

Image
Image
Placa ESP32
Placa ESP32
Placa ESP32
Placa ESP32

O coração do projeto é, obviamente, a poderosa placa ESP32. Se você não estiver familiarizado com ele, o chip ESP32 é o sucessor do chip ESP8266 popular que usamos muitas vezes no passado. O ESP32 é uma fera! Ele oferece dois núcleos de processamento de 32 bits que operam a 160 MHz, uma enorme quantidade de memória, WiFi, Bluetooth e muitos outros recursos com um custo de cerca de 7 $! Coisas incríveis!

Por favor, assista à análise detalhada que preparei para este fórum. Anexei o vídeo neste Instructable. Isso ajudará a entender por que esse chip mudará a maneira como fazemos as coisas para sempre! Uma das coisas mais interessantes sobre o ESP32 é que, embora seja tão poderoso, ele oferece um modo de hibernação que requer apenas 10μΑs de corrente. Isso torna o ESP32 o chip ideal para aplicações de baixo consumo de energia.

Neste projeto, a placa ESP32 se conecta à Internet e depois recebe os dados MP3 da estação de rádio que estamos ouvindo e envia alguns comandos para o display.

Etapa 3: decodificador de MP3

Decodificador MP3
Decodificador MP3
Decodificador MP3
Decodificador MP3

Os dados MP3 são então enviados para o módulo decodificador de MP3 usando a interface SPI. Este módulo usa o IC VS1053. Este IC é um decodificador de MP3 de hardware dedicado. Ele obtém os dados MP3 do ESP32 e os converte muito rápido em um sinal de áudio.

O sinal de áudio que ele produz neste conector de áudio é fraco e barulhento, portanto, precisamos eliminá-lo do ruído e amplificá-lo. (Se você estiver usando fones de ouvido, o sinal não precisa ser eliminado do ruído ou amplificado.) É por isso que estou usando um transformador de isolamento para limpar o áudio do ruído e um amplificador de áudio PAM8403 para amplificar o sinal de áudio e enviá-lo para um alto-falante. Também conectei dois botões ao ESP32 apenas para alterar o fluxo de MP3 do qual estamos obtendo dados e um display Nextion para exibir a estação de rádio que estamos ouvindo.

Etapa 4: Nextion Display

Image
Image
Conectando todas as partes
Conectando todas as partes

Escolhi usar um display Nextion para este projeto, pois é muito fácil de usar. Só precisamos conectar um fio para controlá-lo.

Os visores Nextion são novos tipos de visores. Eles têm seu próprio processador ARM na parte traseira, que é responsável por conduzir o display e criar a interface gráfica do usuário. Assim, podemos usá-los com qualquer microcontrolador e obter resultados espetaculares. Eu preparei uma revisão detalhada deste display Nextion que explica em detalhes como eles funcionam, como usá-los e suas desvantagens. Você pode ler aqui ou assistir ao vídeo em anexo.

Etapa 5: Conectando todas as peças

Conectando todas as partes
Conectando todas as partes
Conectando todas as partes
Conectando todas as partes

Tudo o que temos que fazer agora é conectar todas as partes de acordo com este diagrama esquemático. Você pode encontrar o diagrama esquemático anexado aqui. A conexão é direta.

No entanto, há duas coisas a serem observadas. O módulo decodificador de MP3 emite um sinal estéreo, mas estou usando apenas um canal de áudio neste projeto. Para obter o sinal de áudio, conectei um cabo de áudio ao conector de áudio do módulo e o cortei para revelar quatro fios internos. Eu conectei dois dos fios. Um deles é o GND e o outro é o sinal de áudio de um dos dois canais de áudio. Se desejar, você pode conectar os dois canais ao módulo amplificador e acionar dois alto-falantes.

Cada canal de áudio deve passar pelo transformador de isolamento para limpar qualquer ruído presente antes de conectar ao amplificador

Para enviar dados ao display, só precisamos conectar um fio ao pino TX0 do ESP32. Depois de conectar as partes, temos que carregar o código para o ESP32, e temos que carregar a GUI para o display do Nextion.

Para carregar a GUI para o display do Nextion, copie o arquivo InternetRadio.tft que vou compartilhar com você para um cartão SD vazio. Coloque o cartão SD no slot de cartão SD na parte de trás da tela. Em seguida, ligue o monitor e a GUI será carregada. Em seguida, remova o cartão SD e conecte a alimentação novamente.

Depois de carregar o código com sucesso, vamos ligar o projeto. Ele exibe o texto “Conectando…” por alguns segundos no visor. Depois de se conectar à Internet, o projeto se conecta a uma estação de rádio predefinida. O hardware está funcionando conforme o esperado, mas agora vamos ver o lado do software do projeto.

Etapa 6: O Código do Projeto

O Código do Projeto
O Código do Projeto
O Código do Projeto
O Código do Projeto

Em primeiro lugar, deixe-me mostrar uma coisa. O código do projeto tem menos de 140 linhas de código. Pense nisso, podemos construir um Internet Radio com um display de 3,5”com 140 linhas de código, isso é incrível. Podemos conseguir tudo isso usando várias bibliotecas, é claro, que contêm milhares de linhas de código. Este é o poder do Arduino e da comunidade de código aberto. Facilita as coisas para os criadores.

Neste projeto, estou usando a biblioteca VS1053 para a placa ESP32.

Em primeiro lugar, temos que definir o SSID e a senha da rede wi-fi. Em seguida, temos que salvar algumas estações de rádio aqui. Precisamos da URL do host, o caminho onde o stream está localizado e a porta que precisamos usar. Salvamos todas essas informações nessas variáveis.

char ssid = "seuSSID"; // SSID da sua rede (nome) char pass = "yourWifiPassword"; // sua senha de rede

// Poucas estações de rádio

char * host [4] = {"149.255.59.162", "radiostreaming.ert.gr", "realfm.live24.gr", "secure1.live24.gr"}; char * path [4] = {"/ 1", "/ ert-kosmos", "/ realfm", "/ skai1003"}; porta interna [4] = {8062, 80, 80, 80};

Incluí 4 estações de rádio neste exemplo.

Na função de configuração, colocamos interrupções nos botões, inicializamos o módulo decodificador de MP3 e nos conectamos ao Wi-Fi.

void setup () {

Serial.begin (9600); atraso (500); SPI.begin ();

pinMode (previousButton, INPUT_PULLUP);

pinMode (nextButton, INPUT_PULLUP);

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

attachInterrupt (digitalPinToInterrupt (nextButton), nextButtonInterrupt, FALLING); initMP3Decoder (); connectToWIFI (); }

Na função de loop, em primeiro lugar, verificamos se o usuário selecionou uma estação de rádio diferente daquela da qual estamos recebendo os dados. Nesse caso, nos conectamos à nova estação de rádio, senão pegamos dados do stream e os enviamos para o módulo decodificador de 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); }}

Isso é tudo! Quando o usuário pressiona um botão, ocorre uma interrupção e altera o valor de uma variável que informa a qual fluxo se conectar.

void IRAM_ATTR previousButtonInterrupt () {

estático não assinado long last_interrupt_time = 0;

longo interrupt_time sem sinal = millis (); if (interrupt_time - last_interrupt_time> 200) {if (radioStation> 0) radioStation--; senão radioStation = 3; } last_interrupt_time = interrupt_time; }

Para atualizar o display, simplesmente enviamos alguns comandos para a porta serial.

void drawRadioStationName (int id) {comando String; switch (id) {case 0: command = "p1.pic = 2"; Serial.print (comando); endNextionCommand (); pausa; // 1940 UK Radio case 1: command = "p1.pic = 3"; Serial.print (comando); endNextionCommand (); pausa; // Caso 2 do KOSMOS GREK: command = "p1.pic = 4"; Serial.print (comando); endNextionCommand (); pausa; // Caso 3 REAL FM GREGO: command = "p1.pic = 5"; Serial.print (comando); endNextionCommand (); pausa; // SKAI 100,3 GREGO}}

Agora, vamos dar uma olhada na GUI da tela do Nextion. O Nextion GUI consiste em uma imagem de fundo e uma imagem que exibe o nome da estação de rádio. A placa ESP32 envia comandos para alterar o nome da estação de rádio a partir das imagens incorporadas. Isso é muito fácil. Por favor, assista ao tutorial de exibição do Nextion que preparei há algum tempo para obter mais informações. Você pode criar rapidamente sua própria GUI se desejar e exibir mais coisas nela.

Como sempre, você pode encontrar o código do projeto anexado neste Instructable.

Etapa 7: Considerações Finais e Melhorias

Reflexões finais e melhorias
Reflexões finais e melhorias
Reflexões finais e melhorias
Reflexões finais e melhorias
Reflexões finais e melhorias
Reflexões finais e melhorias
Reflexões finais e melhorias
Reflexões finais e melhorias

Este projeto é muito simples. Eu queria um esqueleto simples de projeto de rádio na Internet para trabalhar. Agora que a primeira versão do projeto está pronta, podemos adicionar muitos recursos para melhorá-la. Em primeiro lugar, preciso projetar um gabinete para abrigar todos os componentes eletrônicos.

Neste livro sobre os rádios mais bonitos já feitos, há rádios muito legais para escolher como um gabinete para este projeto. Acho que vou construir um recinto em torno deste rádio Art Déco espetacular. O que você acha, gosta do visual dessa rádio ou prefere algo mais moderno? Você tem alguma outra ideia de gabinete? Além disso, você gosta deste projeto de Rádio na Internet e quais recursos acha que precisamos adicionar a ele para torná-lo mais útil? Eu adoraria ler seus pensamentos e idéias, por favor, poste-os na seção de comentários abaixo.

Recomendado: