ESP8266制御RDA5807M FMラジオモジュールによる受信。ローカルFM局をタクトスイッチで選局(OLED表示)。
参考サイト
回路図
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);
}
}

.png)
0 件のコメント:
コメントを投稿