Close Menu

    Yeni yazılardan haberdar olun!

    3D yazıcı, elektronik, Arduino ve daha onlarca konuda en yeni blog yazılarını ve haberleri kaçırmayın.

    Trendler

    CH340 Driver Kurulumu? Nasıl İndirilir?

    🧑‍💻 ESP32 Kullanımı – Esp32’ye Nasıl Kod Atılır?

    PID (Proportional Integral Derivative) Kontrol Algoritması Nedir?

    Instagram YouTube X (Twitter) Facebook LinkedIn Reddit Discord WhatsApp
    Popüler
    • 14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri
    • CH340 Driver Kurulumu? Nasıl İndirilir?
    • Arduino ile FM Radyo Uygulaması
    • STM32 ile I2C Oled Ekran Kullanımı
    YouTube Instagram X (Twitter) Reddit LinkedIn Discord WhatsApp
    Robo90 – BlogRobo90 – Blog
    • Anasayfa
    • 3D Baskı
    • Eğitim Serileri
      1. Arduino Eğitim Serisi
      2. IoT Eğitim Serisi
      3. Fusion 360 Eğitim Serisi
      4. Raspberry Pi Eğitim Serisi
      5. STM Eğitim Serisi
      6. View All

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      HC-06 ve HC-05 Aralarında Nasıl Haberleşir?

      8 Ağustos 2023

      Arduino ile A4988 ve Nema-17 (Step Motor) Kullanımı

      26 Temmuz 2023

      ESP32CAM ve OV2640 Nasıl Kullanılır?

      5 Ağustos 2023

      🧑‍💻 ESP32 Kullanımı – Esp32’ye Nasıl Kod Atılır?

      26 Temmuz 2023

      🌐 ESP32 ve Arduino IOT ile LED Nasıl Kontrol Edilir?

      26 Temmuz 2023

      Fusion 360’ta Dikdörtgen Komutları – Fusion 360 Eğitim Serisi – Bölüm 3

      21 Eylül 2023

      Fusion 360 Nasıl Kullanılır? – Fusion 360 Eğitim Serisi – Bölüm 2

      24 Ağustos 2023

      Autodesk Fusion 360 Nedir?

      8 Ağustos 2023

      Fusion 360 Öğrenci Lisansı Nedir? Nasıl Alınır?

      5 Ağustos 2023

      Raspberry Pi Pico ile Potansiyometre Kullanarak Buzzer Kullanımı – Bölüm 4

      22 Eylül 2023

      Raspberry Pi Pico ile Potansiyometre Okuma – Bölüm 3

      22 Eylül 2023

      Raspberry Pi Pico ile LED Yakma – Bölüm 2

      17 Ağustos 2023

      Raspberry Pi Pico Nedir? Nasıl Kullanılır? – Bölüm 1

      9 Ağustos 2023

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      Raspberry Pi Pico ile Potansiyometre Kullanarak Buzzer Kullanımı – Bölüm 4

      22 Eylül 2023

      Raspberry Pi Pico ile Potansiyometre Okuma – Bölüm 3

      22 Eylül 2023
    • Projeler
      1. 3D Yazıcı Projeleri
      2. Arduino Projeleri
      3. IoT Projeleri
      4. Raspberry Pi Projeleri
      5. View All

      🐉 Creality Ender 3 Neo İnceleme Yazısı

      26 Temmuz 2023

      Ultimaker Cura’da Filament Değiştirme Özelliği Nedir? Tüm Detaylarıyla Nasıl Kullanılır?

      24 Temmuz 2023

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      Arduino ile EGGBOT Yapımı

      22 Ağustos 2023

      Servo Motor ve LDR ile Güneş Takip Sistemi

      17 Ağustos 2023

      HC-06 ve HC-05 Aralarında Nasıl Haberleşir?

      8 Ağustos 2023

      ESP32CAM ve OV2640 Nasıl Kullanılır?

      5 Ağustos 2023

      ESP-NOW ile RGB LED Kontrolü 🎛️

      4 Ağustos 2023

      📡 Yeni Başlayanlar için ESP-NOW

      3 Ağustos 2023

      ESP32-CAM ile Baskılarınız Yanmasın 📛

      29 Temmuz 2023

      Raspberry Pi Pico ile LED Yakma – Bölüm 2

      17 Ağustos 2023

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      Arduino ile EGGBOT Yapımı

      22 Ağustos 2023

      Raspberry Pi Pico ile LED Yakma – Bölüm 2

      17 Ağustos 2023
    • İncelemeler
      1. 🐉 Creality Ender 3 Neo İnceleme Yazısı
      2. 🧑‍💻 ESP32 ‘ye Program Nasıl Yazılır ?
      3. 🌐 ESP32 ve Arduino IOT ile LED Nasıl Kontrol Edilir?
      4. View All

      14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

      10 Şubat 2025

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

      10 Şubat 2025

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

      10 Şubat 2025

      CH340 Driver Kurulumu? Nasıl İndirilir?

      22 Temmuz 2024

      Arduino ile FM Radyo Uygulaması

      19 Nisan 2024

      STM32 ile I2C Oled Ekran Kullanımı

      14 Kasım 2023

      14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

      10 Şubat 2025

      Creality K1 ve K1 Max 3D Yazıcı Karşılaştırması – İncelemesi

      27 Eylül 2023

      Priz Tipi Wattmetre Hakkında Merak Edilen Her Şey

      7 Ağustos 2023

      BL-Touch Nedir? Nasıl Çalışır? (3D Yazıcı Otomatik Seviyeleme)

      5 Ağustos 2023
    • Mağaza
    Robo90 – BlogRobo90 – Blog
    Home»Projeler»Arduino Projeleri

    Arduino ile FM Radyo Uygulaması

    Şirzat AçıkgözŞirzat Açıkgöz01.3024 Mins Read
    Paylaş
    Twitter LinkedIn Facebook Reddit Email Telegram WhatsApp

    Merhabalar, Robo90 firmasından satın almış olduğum aşağıdaki elektronik parçalar ve Arduino kodlama ile yapmış olduğum FM Radyo devresi çalışmasını aşağıda görecekseniz.

    İçindekiler gizle
    1. FM Radyo Uygulama Videosu
    2. Kablo Şeması ve Bağlantılar
    3. Arduino Kodu

    Elektronik Parçalar;

    1-Nokia 5110 LCD Ekran – 84×48 – Arduino Uyumlu https://www.robo90.com/nokia-5110-lcd-ekran-84×48-arduino-uyumlu

    2-TEA5767 FM Stereo Radyo Modülü: FM sinyalleri almak için tercih ettiğim radyo modülü. https://www.robo90.com/tea5767-fm-stereo-radyo-modulu

    3-Arduino Nano Klon: Projenin beyni olarak görev yapan Arduino Nano. https://www.robo90.com/arduino-nano-klon-usb-kablo-hediyeli

    4-PAM8403 2x3W Mini Ses Yükseltici Kartı – Stereo – Amfi-Potlu: Stereo amfi olarak kullanılarak sesi hoparlöre aktarıyor. https://www.robo90.com/pam8403-2x3w-mini-ses-yukseltici-karti-stereo-amfi-potlu

    5-Rotary Encoder Modülü – KY-040 – Arduino Uyumlu: Radyo frekansını ayarlamak için kullanılan döner enkoder. https://www.robo90.com/rotary-encoder-modulu-ky-040-arduino-uyumlu

    6-Hoparlör: 4 ohm 3 watt

    7-Seetronic MTP3C Stereo 3.5mm Jak (TEA5767 hoparlör çıkışı için)

    FM radyo projemizde, Arduino Nano ile frekans ayarlamalarını yapabiliyoruz ve radyo sinyallerini TEA5767 modülü ile alıyoruz. Ekran olarak Nokia 5110 kullanarak radyo frekansını ve kanal bilgilerini görüntüleyebiliyoruz. Ses yükseltme kartı (PAM8403) ise sinyali hoparlöre aktarıyor. Rotary Encoder, frekans ayarını hassas bir şekilde yapmamızı sağlıyor.

    FM Radyo Uygulama Videosu

    FM radyo devremizin nasıl çalıştığını görmek isterseniz aşağıdaki video bağlantısından uygulama videosunu izleyebilirsiniz.

    Arduino kod yazılımını da aşağıya ekliyorum. 

    Dikkat etmeniz gerekenler için;

    1- Kod içinde kullanılan kütüphanelerin linkleri aynı satırda verilmiştir. Bu linkleri kullanarak kütüphaneleri indirebilirsiniz.

    2- FreeSerif18pt7b, FreeSerifItalic9pt7b ve FreeMono12pt7b kütüphanelerini indirdikten sonra, aşağıdaki kodlarla oluşturacağınız .ino uzantılı arduino programının yer aldığı klasör içine taşıyın ve sırasında program kodlarınızı Arduino Nano içine yükleyin.

    Kablo Şeması ve Bağlantılar

    Bu devrede Arduino Nano, TEA5767 radyo modülü, PAM8403 ses yükseltici ve Nokia 5110 ekranı belirli pin bağlantıları üzerinden birbirine bağlanır. Kablo bağlantılarını doğru yapmak, projenin sorunsuz çalışması açısından önemlidir.

    Arduino ile FM Radyo Uygulaması - Robo90 - Blog 11

    Arduino Kodu

    Aşağıda projenin Arduino kodlarını göreceksiniz. Bu kodlar sayesinde radyo frekansını ayarlayabilir, kanalları kaydedebilir ve LCD ekranda kanal bilgilerini görüntüleyebilirsiniz. Kodlar, frekans değişimlerini hafızaya alarak en son ayarlanan frekansa geri dönme işlevine de sahiptir.

    #include <TEA5767N.h>  //https://github.com/mroger/TEA5767
    #include <SPI.h>
    #include <Adafruit_GFX.h>  //https://github.com/adafruit/Adafruit-GFX-Library
    #include <Adafruit_PCD8544.h> //https://github.com/adafruit/Adafruit-PCD8544-Nokia-5110-LCD-library
    
    #include "FreeSerif18pt7b.h" //https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Fonts/FreeSerif18pt7b.h
    #include "FreeSerifItalic9pt7b.h" //https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Fonts/FreeSerifItalic9pt7b.h
    #include "FreeMono12pt7b.h" //https://github.com/adafruit/Adafruit-GFX-Library/blob/master/Fonts/FreeMono12pt7b.h
    
    #include "splash.h"
    #include <ClickEncoder.h> //https://github.com/0xPIT/encoder
    #include <TimerOne.h>  //https://github.com/PaulStoffregen/TimerOne
    #include <EEPROM.h>
    
    Adafruit_PCD8544 display = Adafruit_PCD8544(5, 4, 3);
    
    int SaniyeOtoKayit = 300;
    float onceki_frekans = 0;
    float frekans = 95.0f;
    
    ClickEncoder *encoder;
    int16_t son_deger, value;
    
    boolean yukari = false;
    boolean asagi = false;
    boolean orta = false;
    
    long saniye_degeri = 0;
    long oncekiler = 0; 
    
    bool arkaisikACIK = false;
    
    long aralik = 1000; 
      
    TEA5767N radyo = TEA5767N();
    
    void setup() 
    {
      pinMode(7, OUTPUT);
      digitalWrite(7,HIGH);
      
      initDisplay();
      
      acilissayfasigoster();
      
      radyo.setMonoReception();
      
      radyo.setStereoNoiseCancellingOn();
    
      RotaryEncoderVeri();
      
      Serial.begin(9600);
    
      frekans = readFrequencyFromEEPROM();
    
      if(isnan(frekans))
      {
        Serial.println("setup(): EEPROM icinde frekans degeri yoktur.");
        frekans = 88.0;
        writeFrequencyToEEPROM(&frekans);
      }
        
      printText(String(frekans,1),String(frekans,1));
    }
    
    void loop() {
    
      unsigned long mevcutlar = millis();
    
      RotaryEncoderKontrol();
    
      if(mevcutlar - oncekiler > aralik) 
      {
        if(frekans!=onceki_frekans)
        {
          onceki_frekans = frekans;
          radyo.selectFrequency(frekans);  
          saniye_degeri = 0;
        }else
        {
          saniye_degeri++;
          if(saniye_degeri == SaniyeOtoKayit)
          {
              float frekans_oku = readFrequencyFromEEPROM();
              if(frekans_oku!=frekans)
              {
                Serial.println("Dongu(): Yeni frekans EEPROM icine kaydediliyor.");
                writeFrequencyToEEPROM(&frekans);
              }
          }
        }
        oncekiler = mevcutlar; 
        Serial.println("loop(): "+String(saniye_degeri));  
      }
    
     readRotaryEncoder();
    
     if(yukari)
     {
      yukari = false;
      onceki_frekans = frekans;
      frekans = frekans+0.1f;
      printText(String(frekans,1),String(onceki_frekans,1));
     }
    
     if(asagi)
     {
      asagi = false;
      onceki_frekans = frekans;
      frekans = frekans-0.1f;
      printText(String(frekans,1),String(onceki_frekans,1));
     }
    }
    
    void printText(String yazi, String onceki_yazi)
    {
      display.clearDisplay();   // clears the screen and, WHITE buffer  
    
      if(onceki_yazi.length() == 4)
      {
        display.setFont(&FreeSerifItalic9pt7b);
      }else
      {
        display.setFont(&FreeSerifItalic9pt7b);
      }
      display.setTextColor(WHITE);
      display.setCursor(5,11);
      display.println("Gulru FM");
       display.setFont(&FreeSerif18pt7b);
      display.setCursor(4,44);
      display.println(onceki_yazi);
      display.display();
      
      if(yazi.length() == 4)
      {
        
        display.setFont(&FreeSerifItalic9pt7b);
      }else
      {
        display.setFont(&FreeSerifItalic9pt7b);
      }
      display.setTextColor(BLACK);
      display.setCursor(5,11);
      display.println("Gulru FM");
       display.setFont(&FreeSerif18pt7b);
      display.setCursor(4,44);
      display.println(yazi);
      display.display();
    }
    
    void RotaryEncoderVeri()
    {
      encoder = new ClickEncoder(A1, A0, A2);
      encoder->setAccelerationEnabled(false);
       
      Timer1.initialize(1000);
      Timer1.attachInterrupt(timerIsr); 
    
      son_deger = encoder->getValue();  
    }
    
    void initDisplay()
    {
      display.begin();
      display.setContrast(60);
      display.clearDisplay();   // clears the screen and, WHITE buffer  
      display.display();
    }
    
     void timerIsr() 
    {
      encoder->service();
    }
    
    void acilissayfasigoster()
    {
      display.clearDisplay();
      //display.drawBitmap(0, 0,  SPLASH, 84, 48, 1);
      
    display.setTextSize(2);
      display.setCursor(3, 0);
      display.print(" GULRU");
      display.setCursor(3, 20);
      display.print(" RADYO");
      display.display();
      delay(5000);
      display.clearDisplay();   // clears the screen and, WHITE buffer  
      
    display.setTextSize(1);
    }
    
    void writeFrequencyToEEPROM(float *freq)
    {
     byte ByteArray[4];
     memcpy(ByteArray, freq, 4);
     for(int x = 0; x < 4; x++)
     {
       EEPROM.write(x, ByteArray[x]);
     }  
     Serial.println("writeFrequencyFromEEPROM(): "+String(frekans));
    }
    
    float readFrequencyFromEEPROM()
    {
      float frekans = 86.0;
      byte ByteArray[4];
      for(int x = 0; x < 4; x++)
      {
       ByteArray[x] = EEPROM.read(x);    
      }
      memcpy(&frekans, ByteArray, 4);
      Serial.println("readFrequencyFromEEPROM(): "+String(frekans));
      return frekans;
    }
    
    void RotaryEncoderKontrol()
    {
        ClickEncoder::Button b = encoder->getButton();
      if (b != ClickEncoder::Open) {
        if(b==ClickEncoder::Clicked)
        {
          Serial.println("Toggle BackLight");
          if(arkaisikACIK == false)
          {
            arkaisikACIK = true;
            turnOnBacklight();
          }else
          {
            arkaisikACIK = false;
            turnOffBacklight();
          }
        }
      }
    }
    
    void turnOnBacklight()
    {
      digitalWrite(7,LOW);
    }
    
    void turnOffBacklight()
    {
      digitalWrite(7,HIGH);
    }
    
    void readRotaryEncoder()
    {
      value += encoder->getValue();
      
      if (value/2 > son_deger) {
        son_deger = value/2;
        yukari = true;
        delay(50);
      }else   if (value/2 < son_deger) {
        son_deger = value/2;
        asagi = true;
        delay(50);
      }
    }

    Bu proje ile ilgili sorularınız veya yardıma ihtiyaç duyduğunuz konular varsa yorum yaparak bana ulaşabilirsiniz. Keyifli projeler dilerim!

    fm radyo
    Share. Twitter Facebook LinkedIn Reddit Email Telegram WhatsApp
    Previous ArticleSTM32 ile I2C Oled Ekran Kullanımı
    Next Article CH340 Driver Kurulumu? Nasıl İndirilir?
    Şirzat Açıkgöz

    Benzer Yazılar

    14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

    5 Mins Read0438 ViewsBy Ali Berk Ercan

    Transistör Nedir? Ne İşe Yarar? Nasıl Çalışır?

    4 Mins Read01.092 ViewsBy Ali Berk Ercan

    Peltier İle Evinizi Kışın Isıtabilir/Yazın Serinletebilirsiniz!

    4 Mins Read01.152 ViewsBy Ali Berk Ercan

    Arduino ile EGGBOT Yapımı

    4 Mins Read0386 ViewsBy Baki Ateş

    Raspberry Pi Pico ile LED Yakma – Bölüm 2

    2 Mins Read0586 ViewsBy Ahmet Miraç Çıtak

    Servo Motor ve LDR ile Güneş Takip Sistemi

    4 Mins Read01.163 ViewsBy Sevginur Yeşilyaprak
    Add A Comment
    Leave A Reply Cancel Reply

    Popüler Yazılar
    Arduino Eğitim Serisi

    CH340 Driver Kurulumu? Nasıl İndirilir?

    4 Mins Read0By Ali Berk Ercan
    Featured

    🧑‍💻 ESP32 Kullanımı – Esp32’ye Nasıl Kod Atılır?

    3 Mins Read1By Mustafa Topal
    Teknik

    PID (Proportional Integral Derivative) Kontrol Algoritması Nedir?

    6 Mins Read0By Alperen Alpaydın
    Gündem

    14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

    10 Şubat 2025

    CH340 Driver Kurulumu? Nasıl İndirilir?

    22 Temmuz 2024

    Arduino ile FM Radyo Uygulaması

    19 Nisan 2024

    STM32 ile I2C Oled Ekran Kullanımı

    14 Kasım 2023
    • Facebook 381
    • Twitter 165
    • Instagram 3.8K
    • YouTube 19.2K
    İçindekiler gizle
    1. FM Radyo Uygulama Videosu
    2. Kablo Şeması ve Bağlantılar
    3. Arduino Kodu
    Hakkımızda
    Hakkımızda

    Robo90, 2021 yılında Ankara'da kurulmuş bir firmadır. Makerlara, mühendislere, elektronik ve teknoloji tutkunlarına kaliteli bir alışveriş deneyimi sunmayı amaçlamaktadır. Arduino, 3D yazıcı modelleri, 3D yazıcı parçaları, Raspberry Pi, sensörler, devre elemanları, elektronik kartlar, komponentler ve robotik kodlama eğitim ürünleri gibi geniş bir yelpazede kaliteli binlerce çeşit ürünü uygun fiyatlarla bulabileceğiniz güvenilir bir platform oluşturmayı ve bunu korumayı hedeflemektedir.

    E-posta: info@robo90.com
    WhatsApp: 0312 429 01 90

    Yeni Yazılar

    14 Şubat İçin 14 Hediye – 3D Baskılı Sevgililer Günü Hediyeleri

    10 Şubat 2025

    CH340 Driver Kurulumu? Nasıl İndirilir?

    22 Temmuz 2024

    Arduino ile FM Radyo Uygulaması

    19 Nisan 2024

    STM32 ile I2C Oled Ekran Kullanımı

    14 Kasım 2023
    Çok Okunanlar

    CH340 Driver Kurulumu? Nasıl İndirilir?

    22 Temmuz 2024

    🧑‍💻 ESP32 Kullanımı – Esp32’ye Nasıl Kod Atılır?

    26 Temmuz 2023

    PID (Proportional Integral Derivative) Kontrol Algoritması Nedir?

    22 Eylül 2023

    Nokia 5110 LCD – HC-SR04 ve Arduino Radar Yapımı

    31 Temmuz 2023
    YouTube Instagram LinkedIn Discord Facebook X (Twitter) WhatsApp
    • Anasayfa
    • 3D Baskı Hizmeti – Fiyat Teklifi Alın
    • Yazılar
    • Mağaza
    • Yazar Ekibimiz
    • İletişim
    © 2026 Robo90. Tüm hakları saklıdır. Robo90 Blog.

    Type above and press Enter to search. Press Esc to cancel.