Ir ao conteúdo
  • Cadastre-se

Arduino Uno + Nokia 5110 + TEA 5767


Ir à solução Resolvido por aphawk,

Posts recomendados

Srs. 

 

Boa tarde.

Montei um circuito contendo um Arduino, um display 5110 e o TEA5767.

Quando ligo o circuito o display comporta-se bem, consigo fazer o up e o down da frequência, só que o som não sai nada.

Estou utilizando uma caixa de som esta de computador (está tudo em ordem). O que poderia ter acontecido ?

Três hipóteses: Ou na hora de soldar a pequena placa do TEA posso ter aquecido demais ??? ou a antena não está legal (se bom que o sinal no display aparece cheio quando as frequências aqui estão sintonizadas ou parte do programa não esteja funcionando.

 

Ai vai o programa, o circuito vou atachar. 

 

// TEA5767 und Nokia 5110 LCD Display
 
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <Wire.h>
 
// Software SPI (slower updates, more flexible pin options):
// pin 7 - Serial clock out (SCLK)
// pin 6 - Serial data out (DIN)
// pin 5 - Data/Command select (D/C)
// pin 4 - LCD chip select (CS)
// pin 3 - LCD reset (RST)
 
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3);
 
 
#define button_frequency_up     13
#define button_frequency_down   12
#define button_mute             11
 
#define TEA5767_mute_left_right  0x06
#define TEA5767_MUTE_FULL        0x80
#define TEA5767_ADC_LEVEL_MASK   0xF0
#define TEA5767_STEREO_MASK      0x80
 
 
int old_frequency=-1;
int frequency=10260;
 
byte old_stereo=0;
byte stereo=1;
 
byte old_mute=1;
byte mute=0;
 
byte old_signal_level=1;
byte signal_level=0;
 
unsigned long last_pressed;
 
void setup(void) {
  
  pinMode(button_frequency_up, INPUT);
  pinMode(button_frequency_down, INPUT);
  pinMode(button_mute, INPUT);
  
  Wire.begin();
  
  TEA5767_set_frequency();
 
  display.begin();
  display.setContrast(25);
  display.clearDisplay();
   
  set_text(1,2,"FM Radio",BLACK,1);  
  //set_text(14,147,"blog.simtronyx.de",BLACK,1);
  
}
 
 
void loop() {
 
    if(frequency!=old_frequency){
      set_text(old_frequency>=10000?6:14,17,value_to_string(old_frequency),WHITE,2);
      set_text(frequency>=10000?6:14,17,value_to_string(frequency),BLACK,2);
      old_frequency=frequency;
    }
    
    TEA5767_read_data();
      
    if(old_stereo!=stereo){ 
        set_text(old_stereo?22:28,39,old_stereo?"Stereo":"Mono",WHITE,1);
        set_text(stereo?22:28,39,stereo?"Stereo":"Mono",BLACK,1);
        old_stereo=stereo;
    }
    
    if(old_signal_level!=signal_level){
        set_text(old_signal_level<10?76:70,39,String((int)old_signal_level),WHITE,1);
        set_text(signal_level<10?76:70,39,String((int)signal_level),BLACK,1);
        old_signal_level=signal_level;
        show_signal_level(signal_level);
    }
    
    if(old_mute!=mute){
        set_text(1,39,old_mute?"M":"S",WHITE,1);
        set_text(1,39,mute?"M":"S",BLACK,1);
        old_mute=mute;
    }
      
    delay(50);
    
  
  if(digitalRead(button_frequency_down)==HIGH){
    
    frequency=frequency-5;
    if(frequency<8750)frequency=10800;
    TEA5767_set_frequency();
  }
  if(digitalRead(button_frequency_up)==HIGH){
    
    frequency=frequency+5;
    if(frequency>10800)frequency=8750;
    TEA5767_set_frequency();
  }
 
  if(digitalRead(button_mute)==HIGH){
    
    TEA5767_mute();
  }
  
  delay(50);
  
}
 
unsigned char frequencyH = 0;
unsigned char frequencyL = 0;
 
unsigned int frequencyB;
 
unsigned char TEA5767_buffer[5]={0x00,0x00,0xB0,0x10,0x00};
 
void TEA5767_write_data(byte data_size){
   
  delay(50);
  
  Wire.beginTransmission(0x60);
  
  for(byte i=0;i<data_size;i++)
    Wire.write(TEA5767_buffer);
  
  Wire.endTransmission();
  
  delay(50);
}
 
void TEA5767_mute(){ 
  
  if(!mute){   
    mute = 1;   
    TEA5767_buffer[0] |= TEA5767_MUTE_FULL;
    TEA5767_write_data(2);
//    TEA5767_buffer[0] &= ~TEA5767_mute;
//    TEA5767_buffer[2] |= TEA5767_mute_left_right;
  }   
  else{
    mute = 0;   
    TEA5767_buffer[0] &= ~TEA5767_MUTE_FULL;
    TEA5767_write_data(2);
//    TEA5767_buffer[0] |= TEA5767_mute;
//    TEA5767_buffer[2] &= ~TEA5767_mute_left_right;
  }
    
//  TEA5767_write_data(3);
}
 
void TEA5767_set_frequency()
{
  frequencyB = 4 * (frequency * 10000 + 225000) / 32768;
  TEA5767_buffer[0] = frequencyB >> 8;
  if(mute)TEA5767_buffer[0] |= TEA5767_MUTE_FULL;
  TEA5767_buffer[1] = frequencyB & 0XFF;
  
  TEA5767_write_data(5);
}
 
int TEA5767_read_data() {
  
  unsigned char buf[5];
  memset (buf, 0, 5);
  
  Wire.requestFrom (0x60, 5); 
 
  if (Wire.available ()) {
    for (int i = 0; i < 5; i++) {
      buf = Wire.read ();
    }
        
    stereo = (buf[2] & TEA5767_STEREO_MASK)?1:0;
    signal_level = ((buf[3] & TEA5767_ADC_LEVEL_MASK) >> 4);
    
    return 1;
  } 
  else return 0;
}
 
void show_signal_level(int level){
  
  byte xs=68;
  byte ys=8;
  for(int i=0;i<15;i++){
    if(i%2!=0)display.drawLine(xs+i,ys,xs+i,ys-i/2,level>=i?BLACK:WHITE);
  }
}
 
void set_text(int x,int y,String text,int color,int textsize){
  
  display.setTextSize(textsize);
  display.setTextColor(color); 
  display.setCursor(x,y);     
  display.println(text);      
  display.display();         
}
 
 
String value_to_string(int value){
  
  String value_string = String(value / 100);
  value_string = value_string + '.' + ((value%100<10)?"0":"") + (value % 100);
  return value_string;
}

post-564920-0-93095400-1403205158_thumb.

Link para o comentário
Compartilhar em outros sites

@janascimento,

 

Bom, parece que voce seguiu exatamente este artigo :

 

http://blog.simtronyx.de/en/simple-fm-stereo-radio-with-a-tea5767-breakout-module-and-an-arduino/

 

Supondo que voce não fez nenhuma alteração.... a saída de áudio do TEA é de baixo nível, precisa ser amplificada ANTES de voce entregar a uma caixa acústica amplificada.

 

Da maneira que voce está ligando, nãi vai sair nada mesmo... eu montei algo semelhante , mas usei um módulo amplificador desses chineses de US$ 2 e funcionou perfeitamente.

 

Paulo

Link para o comentário
Compartilhar em outros sites

Boa noite Paulo.

 

Realmente foi dai que copiei, fiz uma pequena mudança no código uma vez que o Arduino 1.0.5 tinha um bug e não deixava compilar para o Arduino.

O sinal do áudio apliquei nesta caixa amplificada que possui este módulo de 1W ou 3W de potência. Tenho a impressão que dei uma borrada com o ferro de solda num dos resistores SMD da placa. Amanhã olharei com a lupa contra o sol para ver se foi realmente isto.

 

Consegui um código para testar os nokia, postarei para a galera em outro tópico.

 

Abraços e obrigado pela resposta.

 

JA 

Link para o comentário
Compartilhar em outros sites

@janascimento,

 

Opa, boa noite hehehe,

 

Olha, eu também sofrí na soldagem dos terminais de saída de áudio do módulo... deu um curto entre uma das saídas e uma trilha muito próxima que só peguei com lupa também, aí funcionou direitinho.

 

Foi por causa de módulos como esse que eu resolví comprar um ferro de soldar que parece ferramenta de cirurgião, tem 15W de potência e uma ponta super-fina,

 

Mas não se iluda com a sua caixa acústica amplificada. Elas possuem baixa impedância de entrada justamente por causa da saída da placa de som do computador, assim ajuda a eliminar interferências causadas por aparelhos celulares próximos. E essa saída do TEA possui alta impedância e baixa amplitude.....

 

Se quiser dar uma bela incrementada no som, use um controle de tonalidade I2C, veja esse que eu montei :

 

http://forum.clubedohardware.com.br/forums/topic/937085-tutorial-de-projetos-com-avr-design-programação-em-basic-e-simulação-no-proteus/?p=5715586

 

 

Paulo

Link para o comentário
Compartilhar em outros sites

Paulo, 

 

bom dia.

 

Realmente foi a solda que fiz, observei na lupa e tinham 2 resistores SMD em curto (ocasionado pela solda). Está 100% funcional.

As caixas estão operacional. 

 

100%.

 

Moderador pode fechar o tópico. Galera do Clube irei postar um circuito com o seu respectivo código para testar o display Nokia na pasta postem aqui os seus projetos.

 

Valeu Galera.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...