Módulo TEA5767: Primeiros passos usando Arduino

Módulo TEA5767: Primeiros passos usando Arduino Deixe um comentário

Recentemente a MakerHero adicionou no catálogo de produtos o Módulo Rádio FM TEA5767 e o Arduino UNO R3 SMD. O módulo TEA5767 é muito prático e compacto para aplicações com rádio FM, o mesmo possui: entrada P2, entrada de antena e comunicação I2C.

Neste post iremos abordar um exemplo de aplicação de rádio FM com o módulo TEA5767 e Arduino UNO SMD, além de outros componentes.

Módulo Receptor Rádio FM TEA5767

O módulo TEA5767 é um dispositivo pequeno e prático para aplicações que englobam rádio FM. Basicamente ele possui 3 conexões: alimentação e comunicação com a placa de desenvolvimento (arduino, esp32, raspberry, etc), antena e alto falante. Alimentação/comunicação por barra pinos, antena e alto falante por P2 (ou ligação por fios).

Projeto com o módulo TEA5767

Para esse post foi elaborado um projeto prático de rádio, com o módulo TEA5767, amplificador, alto falantes, display e placa de desenvolvimento. Com isso tem-se um Rádio FM funcional que pode ser usado no cotidiano.

Materiais Necessários

Abaixo tem-se a lista de componentes utilizados nesse projeto:

01 – Arduino UNO R3 SMD
01 – Módulo Receptor Rádio FM com Antena TEA5767
01 – Módulo Amplificador de Áudio PAM8403
02 – Mini Alto Falante 3W 4 Ohms
01 – Display OLED 0.91″ 128×32 I2C
05 – Push-button
01 – 40 x Jumpers macho-macho

Esquematico Eletrônico

Esquemático Eletronico projeto com o módulo TEA5767
Esquemático Eletronico projeto com o módulo TEA5767 e Arduino

Observações:

  • Todos os periféricos interligados com o arduino são alimentados com 5 V (com exceção dos push-buttons)
  • Se achar necessário, utilize protoboard (matriz de contato) para facilitar as ligações, principalmente dos push buttons e da alimentação de 5 V dos periféricos
  • Os terminais SLA e SLC do TEA5767 e o display OLED são interligados juntos nos terminais A4 e A5 do Arduino. Ou seja, são ligados juntos na mesma entrada do Arduino
  • A utilização de barra-pinos é opcional. As únicas conexões que recomendamos que seja com solda é dos alto falantes a conexão do amplificador PAM8403 com o módulo TEA5767, conforme a imagem abaixo:
Conexão do amplificador PAM8403 com o módulo TEA5767
Conexão do amplificador PAM8403 com o módulo TEA5767

O restante das conexões fica a critério do usuário. Mas por se tratar de uma aplicação com rádio/som, o ideal é ter o máximo de conexões com solda, para evitar ruído e mau contato.

Programação do projeto com o módulo TEA5767

Para a programação, iremos utilizar a IDE do Arduino.

Devemos adicionar ao projeto algumas bibliotecas, conforme o passo a passo abaixo:

Biblioteca TEA5767

A biblioteca do módulo TEA5767 precisa ser instalada manualmente, baixando o arquivo do link abaixo:

https://drive.google.com/file/d/18cjVMP05dJUoFtjV30zIBretqc0y6DYs/view?usp=share_link

Para adicionar a biblioteca ao Arduino, vá em: Rascunho > Incluir Biblioteca e depois clique em “Adicionar Biblioteca .ZIP”. E escolha o arquivo baixado.

Bibliotecas Adafruit do display OLED 128×32 + GFX

Já as bibliotecas Adafruit podem ser instaladas através da própria Arduino IDE. Para isso, vá em: Ferramentas > Gerenciador de Bibliotecas e busque por “Adafruit SSD1306“ e “Adafruit GFX Library”:

Instalação da Biblioteca Adafruit SSD1306
Instalação da Biblioteca Adafruit SSD1306
Instalação da Biblioteca Adafruit GFX Library
Instalação da Biblioteca Adafruit GFX Library

Código

Importante: No código, você deve modificar 10 linhas, que seriam os 5 nomes das rádios + 5 frequências. Essas rádios serão selecionadas pelos 5 push-buttons.
Sugerimos não utilizar um nome maior que 10 caracteres, para a visualização ficar correta no display.

// Módulo TEA5767 com Arduino, amplificador e alto falante
// Autor: Makerhero

// OBS: Recomendamos que o nome da rádio não tenha mais que 10 caractéres.
// Caso tenha mais que 10 caracteres, o display irá imprimir na próxima linha.
const char *nome_radio1 = “Digite aqui o nome da radio 1”;
float freq_radio1 = 100.1; // Digite aqui a frequência da rádio, exemplos: 100.9 82.7 107.3 etc…

const char *nome_radio2 = “Digite aqui o nome da radio 2”;
float freq_radio2 = 100.2; // Digite aqui a frequência da rádio, exemplos: 100.9 82.7 107.3 etc…

const char *nome_radio3 = “Digite aqui o nome da radio 3”;
float freq_radio3 = 100.3; // Digite aqui a frequência da rádio, exemplos: 100.9 82.7 107.3 etc…

const char *nome_radio4 = “Digite aqui o nome da radio 4”;
float freq_radio4 = 100.4; // Digite aqui a frequência da rádio, exemplos: 100.9 82.7 107.3 etc…

const char *nome_radio5 = “Digite aqui o nome da radio 5”;
float freq_radio5 = 100.5; // Digite aqui a frequência da rádio, exemplos: 100.9 82.7 107.3 etc…

float frequencia;
String nome;

#include <TEA5767.h> // Biblioteca do módulo TEA5767
#include <SPI.h> // Biblioteca padrão SPI
#include <Wire.h> // Biblioteca padrão I2C
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>

TEA5767 radio = TEA5767(); // Inicialização do módulo TEA5767

#define LARGURA_OLED 128
#define ALTURA_OLED 32
#define RESET_OLED 4
Adafruit_SSD1306 display(LARGURA_OLED, ALTURA_OLED, &Wire, RESET_OLED); // Definição do display OLED que será utilizado

void setup()
{
Serial.begin(9600);

if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Endereço 0x3C para o display OLED
Serial.println(F(“Falha no SSD1306”)); // Serial irá imprimir um erro caso não consiga comunicar com o display
for (;;);
}

pinMode(2, INPUT_PULLUP); // Definição do botão da primeira rádio
pinMode(4, INPUT_PULLUP); // Definição do botão da segunda rádio
pinMode(7, INPUT_PULLUP); // Definição do botão da terceira rádio
pinMode(8, INPUT_PULLUP); // Definição do botão da quarta rádio
pinMode(12, INPUT_PULLUP); // Definição do botão da quinta rádio

// Ao inicializar o sistema, a primeira rádio irá tocar
nome = (String) nome_radio1;
frequencia = freq_radio1;
display.clearDisplay(); // Limpeza do display
display.setTextSize(2); // Para uma melhor visualização, será usado tamanho de fonte 2 para o display
display.setTextColor(SSD1306_WHITE); // Será mostrado as letras em cor branca
display.setCursor(0, 0); // Definição da posição inicial da escrita do nome da rádio
display.println(nome); // Escrita do nome da rádio

// A rotina abaixo simplesmente imprime a frequência da rádio no final da segunda linha, dependendo do tamanho dela
if (frequencia >= 100.0)
{
display.setCursor(68, 18);
}
else
{
display.setCursor(80, 18);
}

display.println(frequencia, 1); // Escrita da frequência da rádio
display.display(); // Mostra no display as informações
radio.setFrequency(frequencia); // O módulo irá tocar a rádio selecionada
delay(100);
}

void loop()
{

// Abaixo tem-se 5 if que irão detectar o aberto dos botões com as rádios pré definidas pelo usuário
// A função “troca_radio()” faz a troca da rádio caso algum botão seja pressionado.
if (digitalRead(2) == 0) // Botão 1
{
nome = (String) nome_radio1;
frequencia = freq_radio1;
delay(100);
troca_radio();
}

if (digitalRead(4) == 0) // Botão 2
{
nome = (String) nome_radio2;
frequencia = freq_radio2;
delay(100);
troca_radio();
}

if (digitalRead(7) == 0) // Botão 3
{
nome = (String) nome_radio3;
frequencia = freq_radio3;
delay(100);
troca_radio();
}

if (digitalRead(8) == 0) // Botão 4
{
nome = (String) nome_radio4;
frequencia = freq_radio4;
delay(100);
troca_radio();
}

if (digitalRead(12) == 0) // Botão 5
{
nome = (String) nome_radio5;
frequencia = freq_radio5;
delay(100);
troca_radio();
}
delay(100);
}

void troca_radio()
{
display.clearDisplay(); // Limpeza do display
display.setTextSize(2); // Para uma melhor visualização, será usado tamanho de fonte 2 para o display
display.setTextColor(SSD1306_WHITE); // Será mostrado as letras em cor branca
display.setCursor(0, 0); // Definição da posição inicial da escrita do nome da rádio
display.println(nome); // Escrita do nome da rádio

// A rotina abaixo simplesmente imprime no display a frequência da rádio no final da segunda linha, dependendo do tamanho
if (frequencia >= 100.0)
{
display.setCursor(68, 18);
}
else
{
display.setCursor(80, 18);
}

display.println(frequencia, 1); // Escrita da frequência da rádio
display.display(); // Mostra no display as informações
radio.setFrequency(frequencia); // O módulo irá tocar a rádio selecionada
delay(100);
}

Funcionamento

O funcionamento desse sistema é semelhante a um rádio automotivo: o usuário pressiona o botão correspondente a rádio que deseja ouvir, ajusta o volume e visualiza nome + frequência da rádio pelo display.
Importante: Não esqueça de conectar a antena ao módulo TEA5767.

E aí, gostou desse projeto? Deixe um comentário abaixo contando o que achou. E não esqueça de nos seguir no Instagram para ficar por dentro dos próximos projetos do blog.

Faça seu comentário

Acesse sua conta e participe