29 Mart 2024 Cuma
Arduino Projeleri

Arduino ile Tea 5767 Modulü Kullanarak Fm Radyo Alıcısı Yapmak

4.4kviews

İyi Günler Sıkı Toprak Hattı Takipçileri

 

 

Bu gün sizler ile Tea 5767 kullanarak evinizde, işinizde, arabanızda ve dilediğiniz her yerde kullanabileceğiniz bir radyo yapmaya ne dersiniz. Evet dediğinizi duyar gibiyim.  Amacımız tabiki sadece bu değil arduinomuzun işlevinin ne kadar uçsuz olduğunu bir kere daha görmek.

Malzeme Listesi

1 ADET ARDUİNO

1 ADET TEA5767 RADİO MODÜL

1 ADET 5110 LCD EKRAN (48X84)

2 ADET BUTON

YETERİ KADAR JUMPER KABLO.

Öncelikle TEA5767 entegresini tanıyarak başlayalım.

NXP Semiconductor (Philips) tarafından üretilen bu entegre, I2C haberleşmeye sahiptir. Böylelikle Arduino veya Raspberry Pi gibi popüler geliştirme kartları ile sorunsuzca kullanılabilir. Detaylı olarak incelemek isterseniz entegrenin datasheet’ine başvurabilirsiniz. Bu modül, oldukça küçük boyutludur ve bağlantı bacakları breadboard’lar ile uyumlu değildir. Bu sebepten dolayı piyasada çok sayıda bu entegrenin kolay prototiplenmesi için hazır halde modül bulunmaktadır. Ek olarak TDA1308 amfi entegresi ve kulaklık ile anten bağlantıları sayesinde oldukça pratik bir kullanıma sahiptir.

 

 

 

Bizim de sistemizde kullanacağımız olan modulü ise şu şekildedir.

TEA5767 Modülünün pin bağlantısı

+5v ARDUİNO ÜZERİNDEKİ 5V
SDA ARDUİNO ÜZERİNDE A4
SLC ARDUİNO ÜZERİNDE A5
GND ARDUİNO ÜZERİNDE GND

Bağlantı Şeması:

Arkadaşlar fritzing içinde TEA5767 modülü olmadığı için. Ve özel olarak başka bir kişi yapıp koymadığı için proğram içindeki 4 ayaklı bir elemanı gereken modül gibi ayarlayıp bağlantı yaptım. Şimdiden kusura bakmayın 🙂

/*         
  ***********************************************************************************
  *          Arduino Digital FM Radyo                                               *
  * kütüphane & bağlantı şema: https://www.toprakhatti.com/arduino-digital-fm-radio/ *
  *      dev: Mehmet Dusgun // Tarih 02/1/2018 // Version 1.0                       *
  ***********************************************************************************
                                                                                     */

//Kütüphaneler:
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <Adafruit_PCD8544.h>
#include <TEA5767.h>
#include <Wire.h>
#include <Button.h>

//Sabiteler :
Adafruit_PCD8544 display = Adafruit_PCD8544(7, 6, 5, 4, 3 ); //Sırasıyla pin çıkışları:(SCLK, DIN, DC, CS, RST)
TEA5767 Radio; //TEA5767 modulunun SLC ve SDA - bağlantı yeri SLC=A5  SDA=A4
Button btn_forward(11, PULLUP); //ileri istasyon ara
Button btn_backward(12, PULLUP);//geri istasyon ara 

//Değişkenler:
double old_frequency;
double frequency;
int search_mode = 0;
int search_direction;
unsigned long last_pressed;
unsigned char buf[5];
int stereo;
int signal_level;
double current_freq;
unsigned long current_millis = millis();


void setup () {
  //Başlangıcta
  Wire.begin();
  Radio.init();
  Radio.set_frequency(95.2); //Çalıştığında ilk 95.2 adlı kanala git
  display.begin();
  display.setContrast(100);
  display.clearDisplay();
}

void loop () {

  if (Radio.read_status(buf) == 1) {
    current_freq =  floor (Radio.frequency_available (buf) / 100000 + .5) / 10;
    stereo = Radio.stereo(buf);
    signal_level = Radio.signal_level(buf);

   display.setTextSize(2);
   display.setTextColor(BLACK);
   display.setCursor(0,0);
   display.print(display.print(current_freq));
   display.setCursor(47,15);
   display.print("MHz");
   display.setCursor(0,20);
   display.setTextSize(1);
   display.setTextColor(BLACK);
   //gelen frekans stereo yada mono mu?
   if (stereo) display.print("STEREO"); 
   else display.print("MONO");
   // display seviyesi gelen FM sinyal değerine göre..
   display.setCursor(0,35);
   display.setTextSize(1);
   display.setTextColor(WHITE, BLACK);
   display.print(signal_level);
   display.print("/15 ");
   display.display();
   delay (500);
   display.clearDisplay(); 
   //Sinyal seviyesini üçgen olarak gösters...
   display.drawLine(80, 30, 80, 45, BLACK);
   display.drawLine(80, 45, 50, 45, BLACK);
   display.drawLine(50, 45, 80, 30, BLACK);
   //Fill triangle with signal strength
   int sl = signal_level;
   for (int x = 0; x < sl; x++)
   { 
   display.drawLine(50+2*x, 45, 50+2*x, 45-x, BLACK);
   }
  }
  //eğer butona basılırsa, yeni istasyon ara
  if (search_mode == 1) {
      if (Radio.process_search (buf, search_direction) == 1) {
          search_mode = 0;
      }
  }
  //eğer sonraki kanal butonuna basılırsa frekans arttır
  if (btn_forward.isPressed()) {
    last_pressed = current_millis;
    search_mode = 1;
    search_direction = TEA5767_SEARCH_DIR_UP;
    Radio.search_up(buf);
    delay(500);
  }
  //eğer önceki kanal butonuna basılırsa frekans düşür
  if (btn_backward.isPressed()) {
    last_pressed = current_millis;
    search_mode = 1;
    search_direction = TEA5767_SEARCH_DIR_DOWN;
    Radio.search_down(buf);
    delay(500);
  } 
   delay(100);
}

Gerekli koda ve Kütüphanelere Buraya Tıklıyarak indirip kullanabilirsiniz. 

 

Bu projeyi yapmak istememim sebebi hem duyduğum merak ve bunun yanında okula götürmek için hem basit aynı zamanda da görselleştirildiğinde güzel not bırakıcak bir devreydi. Bu devreyi geliştirmeyi düşüyorum, harici bağlıyacağımız bir kart okuyucu yanında bir amplifikatör devresi ile ister radyo ister mp3 çalar olarak kullanıla bilir. 

Görüşlerinizi yorum olarak bırakmanız aynı şekilde anlamadığınız yada hatalı olan bir yer olursa yazmaktan asla çekinmeyin.

 

Ne dersiniz sizce mp3 çalar kısmını ekleyelim mi ?

 

2 Comments

  1. fm-radyo-arduino:3:10: fatal error: ArduinoTEA5767.h: No such file or directory

    #include

    ^~~~~~~~~~~~~~~~~~

    compilation terminated.

    exit status 1
    ArduinoTEA5767.h: No such file or directory


    HATASINI ALIYORUM.
    Not: Arduino IDE Microsoft Store ile yüklenmiştir.

Mehmet için bir cevap yazın Cevabı iptal et

mdusgun
Don't keep up on your dreams. Keep sleeping.