2026年2月1日日曜日

RDA5807M - ESP8266制御 FMラジオモジュール

ESP8266制御RDA5807M FMラジオモジュールによる受信。ローカルFM局をタクトスイッチで選局(OLED表示)。   
 

 









参考サイト
●絨毯スピーカー型DSPラジオ(RDA5807M+Arduino Promini)【https://qiita.com/Momopi/items/11e7df9532a12c10207e



回路図




















RDA5807M
RDA5807M RRD-102 Ver.2.0 V2.0 FMラジオモジュールにピンヘッダーを曲げ合わせてハンダする。
●アマゾン商品説明 モジュール:RDA5807M , 動作電圧:DC 2.7V~3.6V , 通信方式: I2C通信 , FMバンド周波数:76-108MHz











Arduino libraries











プログラム  Arduino IDE【ボード:Generic ESP8266 Module
#include <Arduino.h>
#include <Wire.h>
#include <radio.h>
#include <RDA5807M.h>
#include <SPI.h>
#include <Adafruit_GFX.h>
#include <ESP_Adafruit_SSD1306.h>
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

#define SW 16
int channel = 0;
String station;
int freq;

#define FIX_BAND    RADIO_BAND_FMWORLD //Radio Band (was RADIO_BAND_FM)
#define FIX_VOLUME  5                  //Audio Volume Level 5.
RDA5807M radio;

void set_oled(String station, int freq){
    display.clearDisplay();  
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0, 0);
    display.println(station);
    display.setCursor(0, 17);
    float float_freq = float(freq) / 100;
    display.setTextSize(4);
    display.println(String(float_freq));
    display.setTextSize(2);
    display.setCursor(80, 50);    
    display.println("MHz");
    display.display();  
}

void setup() {  
    pinMode(SW, INPUT);
    Wire.begin(4,5);  // (SDA,SCL):ESP8266(IO_0)-OLED(SDA),(IO_1)-OLED(SCL)    
    display.begin(SSD1306_SWITCHCAPVCC, 0x78>>1); // OLED ADDRESS
    display.clearDisplay();
    display.setTextSize(2);
    display.setTextColor(WHITE);
    display.setCursor(0, 0);
    display.println("ESP8266");
    display.setCursor(0, 17);
    display.println("FM Radio");
    display.display();  
     
    radio.init();
    radio.debugEnable();    
    radio.setVolume(FIX_VOLUME);
    radio.setBandFrequency(FIX_BAND, 7950);
    radio.setMono(false);
    radio.setMute(false);    
    delay(2000);    
}

void loop() {  
if(digitalRead(SW) == LOW){    
  switch (channel) {
  case 0:
    station = "FM_ASMO";
    freq = 7950;
    radio.setBandFrequency(FIX_BAND, freq);
    set_oled(station, freq);
    break;
  case 1:
    station = "FM_IWATE";
    freq = 8030;
    radio.setBandFrequency(FIX_BAND, freq);
    set_oled(station, freq);
    break;
  case 2:
    station = "NHK_FM";
    freq = 8380;
    radio.setBandFrequency(FIX_BAND, freq);
    set_oled(station, freq);
    break;  
  }

  channel=channel + 1;
  if(channel == 3){
      channel = 0;
     }
     delay(1000);
 }
 }
     
 










0 件のコメント:

コメントを投稿

SI4732 - ESP32制御 DSPラジオモジュール

aitendo : SI4732 DSPラジオ モジュールを使用して、ESP32制御DSPラジオをブレッドボードに組立。スケッチはPU2CLR 氏:pu2clr/SI4735 ライブラリーESP32【OLED_ALL_IN_ONE】を選択、AM放送・7MHz SSB CW・FM放...