FM модуль RDA5807M

Spider
Offline
Зарегистрирован: 09.01.2016

Здравствуйте, форумчане)
Помогите, пожалуйста, разобраться с данным модулем. В интернете нашёл (http://www.5v.ru/start/em5807m-arduino-nano-30.htm) одну инструкцию, но непонятно, как кнопки добавить, как информацию на дисплей вывести, в общем нужна подробная инструкция, или подскажите, где можно подробно прочитать про него.

[​IMG]

Logik
Offline
Зарегистрирован: 05.08.2014

Так по Вашей же ссылке готовый скетч лежит! Загружаем пробуем (он даже компилируется, я попробовал) и погнали, погнали.. И datasheet тамже. В нем ответы на остальные Ваши вопросы.

Спасибо кстати за ссылку, мне такой модуль месяца три как приехал, может теперь попробую. Лежит пока, покупал его совершенно безцельно. А Вы зачем его брали? 

StrangerM
Offline
Зарегистрирован: 02.11.2013

Да, кстати. Я вот этот модуль хотел попробовать приспособить для приема АИС сигнала (162 МГц). Увы, модуль тянет только до 133 примерно. Дальше надо менять элементы в ГУНе ФАПЧа. И колдовать с кварцем и его настройками. Но уж больно элементы ГУНа  маленькие. Забросил эту ветвь. А вещалки он ловит, но мне не очень понравилось.

mkvmaks
Offline
Зарегистрирован: 07.07.2013

А подскажите какой динамик и как правильно подключить его к пинам 2,3. Может есть схема раписновки через джек 3,5?

Spider
Offline
Зарегистрирован: 09.01.2016

Здравствуйте я собирал акустику и решил туда прикрутьть радио и за одно с микроконтролерами поупрожняться ))

mkvmaks
Offline
Зарегистрирован: 07.07.2013

А динамики к этомцу  модулю как подключали??? Через усилител TDA?

Spider
Offline
Зарегистрирован: 09.01.2016

mkvmaks пишет:

А динамики к этомцу  модулю как подключали??? Через усилител TDA?

Пока еше некак я его на макетной плате расположил потклучил к наушникам я пока разбираюсь с интерфейсом и ардуино я новичок в этом деле и решил начать с радио кокрас есть куда прикрутить.

Вот нашол исчерпывайший мануал правда на английском http://www.mathertel.de/Arduino/RadioLibrary.aspx

Spider
Offline
Зарегистрирован: 09.01.2016

Цифровой FM приемник на Arduino и модуле RDA5807 с графическим дисплеем и функцией RDS

Вот схема покоторой наушники цеплял

 

mkvmaks
Offline
Зарегистрирован: 07.07.2013

За мануал спасибо. Сам искал, но толкого пока не  нашел. Ну  вот такой  разве что http://studio-diy.3dn.ru/news/rda5807m/2014-11-15-27

Bomberboy
Offline
Зарегистрирован: 08.07.2013

http://full-chip.net/arduino-proekty/97-cifrovoy-fm-priemnik-na-arduino-...

Гуглить не пробывали, инфы море, схем подключения и конструкций навалом.

StrangerM
Offline
Зарегистрирован: 02.11.2013
Spider
Offline
Зарегистрирован: 09.01.2016

Bomberboy пишет:

http://full-chip.net/arduino-proekty/97-cifrovoy-fm-priemnik-na-arduino-...

Гуглить не пробывали, инфы море, схем подключения и конструкций навалом.

Неругайся пробывал гуглить но спросить у живых людей всегда лучше неправдоли)

Всем откликнувшимся большой спасибо.

StrangerM
Offline
Зарегистрирован: 02.11.2013

А вот такой уже с усилителем, дисплеем и кнопками http://www.ebay.com/itm/271826963768?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Spider
Offline
Зарегистрирован: 09.01.2016

StrangerM пишет:

А вот такой уже с усилителем, дисплеем и кнопками http://www.ebay.com/itm/271826963768?_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT

Согласен с вами надо было такой покупать для новичка самое оно воткнул и работает)

Logik
Offline
Зарегистрирован: 05.08.2014

Добрался я сегодня и до этого чуда. Покупал здесь - http://ru.aliexpress.com/item/FM-Stereo-Radio-Module-RDA5807M-Wireless-Module-Profor-For-Arduino-RRD-102V2-0/32452351790.html

Завелся на таком коде.


#define  RDA5807_adrr 0x60       
#define RDA5807_SDA A1
#define RDA5807_SCL A0


#define  ARDUINO_PORT(a)        ((a<8)?PORTD:(a<14?PORTB:PORTC))
#define  ARDUINO_PIN(a)           ((a<8)?PIND:(a<14?PINB:PINC))
#define  ARDUINO_DDR(a)          ((a<8)?DDRD:(a<14?DDRB:DDRC))
#define  ARDUINO_PIN_NUM(a)  ((a<8)?a:(a<14?(a-8):(a-14)))


#define SDA_OUT_HAL(sda)     void  SDA_OUT  (void){bitSet(ARDUINO_DDR(sda), ARDUINO_PIN_NUM(sda));}    
#define SDA_IN_HAL(sda)      void  SDA_IN   (void){bitClear(ARDUINO_DDR(sda), ARDUINO_PIN_NUM(sda));} 
#define SDA_HIGHT_HAL(sda)   void  SDA_HIGHT(void){bitSet(ARDUINO_PORT(sda), ARDUINO_PIN_NUM(sda));} 
#define SDA_LOW_HAL(sda)     void  SDA_LOW  (void){bitClear(ARDUINO_PORT(sda), ARDUINO_PIN_NUM(sda));} 
#define SCL_HIGHT_HAL(scl)   void  SCL_HIGHT(void){bitSet(ARDUINO_PORT(scl), ARDUINO_PIN_NUM(scl));asm volatile ("nop");}
#define SCL_LOW_HAL(scl)     void  SCL_LOW  (void){bitClear(ARDUINO_PORT(scl), ARDUINO_PIN_NUM(scl));asm volatile ("nop");asm volatile ("nop");}
#define SCL_OUT_HAL(scl)     void  SCL_OUT  (void){bitSet(ARDUINO_DDR(scl), ARDUINO_PIN_NUM(scl));}
#define WITE_HIGHT_SDA_HAL(sda)  void WITE_HIGHT_SDA (void){loop_until_bit_is_clear(ARDUINO_PIN(sda), ARDUINO_PIN_NUM(sda));}

#define _i2c(scl,sda)  \
  SDA_OUT_HAL(sda)   \
  SDA_IN_HAL(sda)    \
  SDA_HIGHT_HAL(sda) \
  SDA_LOW_HAL(sda)   \
  SCL_HIGHT_HAL(scl) \
  SCL_LOW_HAL(scl)   \
  SCL_OUT_HAL(scl)   \
  WITE_HIGHT_SDA_HAL(sda) 
  
_i2c(RDA5807_SCL, RDA5807_SDA);

void _i2cWriteByte(byte v)           
{                                            
    SDA_OUT();                       
    for (byte i=8;i;i--)  { if (v & 0x80)   SDA_HIGHT();  else  SDA_LOW();SCL_HIGHT();  v <<=1; SCL_LOW(); }                
  SDA_IN();SDA_HIGHT(); SCL_HIGHT(); WITE_HIGHT_SDA(); SCL_LOW();        
}
   enum                                                                                 
    {
       OPERATION_SEND_START,
       OPERATION_SEND_STOP,
       OPERATION_SEND_ACK,
       OPERATION_INIT
    } I2C_OPERATION;                                                                                            


   void _i2cBusOperation(byte OperationID)        
    {                                                                                                
       switch (OperationID)                                                              
       {                                                                                            
          case  OPERATION_SEND_START:                   
             SDA_OUT(); SDA_HIGHT();SCL_HIGHT();SDA_LOW();SCL_LOW(); _i2cWriteByte(RDA5807_adrr<<1);break;                                
          case  OPERATION_SEND_STOP:                    
             SDA_OUT();    SDA_LOW();    SCL_HIGHT();    SDA_HIGHT();    SDA_IN(); break; 
          case  OPERATION_SEND_ACK:                      
             SDA_OUT();    SCL_LOW();    SDA_LOW();    SCL_HIGHT();    SCL_LOW();    SDA_IN();  break; 
          case  OPERATION_INIT:  SCL_OUT();break;  
       }  
    }



double f_ini=95.6; 

void setFrequency(double fmhz)  // Функция загрузки частоты настройки в модуль EM5807M.
{
  int  frequencyB = 4 * (fmhz * 1000000 + 225000) / 32768;
  char frequencyH = frequencyB >> 8;     // Старший байт.
  char frequencyL = frequencyB & 0XFF;   // Накладываем маску 0xFF на младший байт.
  
   _i2cBusOperation(OPERATION_SEND_START);
   _i2cWriteByte(frequencyH);
   _i2cWriteByte(frequencyL);
   _i2cWriteByte(0xB8);
   _i2cWriteByte(0x10);
   _i2cWriteByte(0x00);
   _i2cBusOperation(OPERATION_SEND_STOP);
} 

// the setup routine runs once when you press reset:
void setup() 
{
  SCL_OUT();
  setFrequency(f_ini); 
   pinMode(13, OUTPUT);
}

byte vol=0;
void loop()
{
  digitalWrite(13,HIGH);
   vol++;
  delay(300);
  digitalWrite(13,LOW);
  delay(2000);
f_ini=f_ini+0.1;
setFrequency(f_ini);
}

Ни одного описания соответствующего этому коду не попалось ))) Чип на плате помечен как RDA5807M. Как ему громкость регулировать?

Годный. Хочу к нему ещё усилок D класса на 15Вт прицепить.

maksmkv
Offline
Зарегистрирован: 07.04.2013

Как динамики к нему подключили - напрямую или по  схеме выше???  Можно  фотку/схему - спасибо.

Logik
Offline
Зарегистрирован: 05.08.2014

maksmkv пишет:

Как динамики к нему подключили - напрямую или по  схеме выше???  Можно  фотку/схему - спасибо.

А нету схемки никакой. SDA и SCL на А1 и А0, землю и 3,3В от ардуины, на выход наушники от мобилки. Динамик можно напрямую, но 32Ома. Обычные 4/8 Ом через усилок, пока еще не пробовал.

Русл@н
Offline
Зарегистрирован: 14.04.2016

Я собрал радио на этом модуле. Усилитель прицепил на TDA7056. Тут добавил печатку УНЧ. Скетч взял отсюда.

 Заработало сразу) Осталось только корпус подобрать. Кстати качество приема модуля среднее.

с динамиком напрямую рискуем спалить микруху, при на 12 Ом она начинает аццки греться.

Logik
Offline
Зарегистрирован: 05.08.2014

А чип RDA5807 или RDA5807M?

Русл@н
Offline
Зарегистрирован: 14.04.2016

Как у автора топика RDA5807M, RDA5807 видимо отличается количеством ног и размером.

Logik
Offline
Зарегистрирован: 05.08.2014

Думаю и регистры разные, по даташитам без М та что с М у меня заработала только частично.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

Доброго времени суток,возникла проблема при компилировании проектов с вот этой библиотекой https://github.com/mathertel/Radio

На работе машина на Linux Mint посставил версию 1.8.3.  при компиляции примеров из библиотеки  ,начинает ругаться вот такой фразой  "No such file or directory #include <arduino.h>"

Подскажите как победить.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

StrangerM пишет:

Да, кстати. Я вот этот модуль хотел попробовать приспособить для приема АИС сигнала (162 МГц). Увы, модуль тянет только до 133 примерно. Дальше надо менять элементы в ГУНе ФАПЧа. И колдовать с кварцем и его настройками. Но уж больно элементы ГУНа  маленькие. Забросил эту ветвь. А вещалки он ловит, но мне не очень понравилось.

 

Этот модуль думал использовать для приема спутников NOAA ,плюс конвертер который переносит со 137 мгц на Фм диапазон.Но так в задумках и осталось

p-a-h-a
Offline
Зарегистрирован: 17.01.2019

Написал библиотеку под этот модуль. Тестовый скеч прикрепляю (в библиотеке он есть)

https://drive.google.com/file/d/1UC76ne0fgzVc9WwlQz_wA7zIapd_Tx6e/view?usp=sharing

#include "RDA5807M.h"
RDA5807M radio;// создаем объект radio

void setup() {
  Serial.begin(115200);
  radio.begin();
  radio.setFrequency(1070);//Задаем частоту 107,0 // После этой строки радио начнет играть. Остальные настройки не обязательны
  radio.antena(2);// 0 -отключена 1 - земля, 2 - вход FMIN 3 - оба источника
  radio.bass(true);// Усиление баса
  radio.setStereo(false); // включаем моно режим. По умолчанию стерео
  radio.setVolume(15);//0..15
  radio.mute(true);
  radio.mute(false);
  radio.powerOFF(true);
  radio.powerOFF(false); // тоже что и radio.begin();
  radio.noisReduction(31); // от 0 до 31 шумодав
}

void loop() {
  //byte i = radio.getRSSI();
  radio.nextStation();// Автоматический поиск вперед
  //radio.prevStation();// Автоматический поиск назад
  delay(1000);// Задержка для ожидания стереосигнала чтоб отобразить в сериал
  Serial.println("Frequency = " + String((float)radio.getFrequency () / 10, 1) + " : RSSI = " + String (radio.getRSSI()) + " : Stereo = " + String(radio.getStereo()) + ";");
  delay(30000);
}

 

xfvlad
Offline
Зарегистрирован: 06.02.2021

Это переделанная стандартная библиотека?

p-a-h-a
Offline
Зарегистрирован: 17.01.2019

Нет, просто сделана на основании даташита.

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

А какие максимальные вверх и вниз частоты можно выжать из модуля?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

50 - 108 МГц  FM

fly245
fly245 аватар
Offline
Зарегистрирован: 25.08.2013

То есть выше 108 мгц  прием не возможен?

negavoid2
negavoid2 аватар
Offline
Зарегистрирован: 06.05.2020

У этого модуля невозможен. А чем вас rtl-sdr не устраивает?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

fly245 пишет:

То есть выше 108 мгц  прием не возможен?

Недокументированно, он до 115 перестраивается.  Но не выше. 

SLKH
Offline
Зарегистрирован: 17.08.2015

DetSimen пишет:

fly245 пишет:

То есть выше 108 мгц  прием не возможен?

Недокументированно, он до 115 перестраивается.  Но не выше. 

115 вполне себе документировано:

The RDA5807M series support frequency range is from 50MHz to 115MHz. (SINGLE-CHIP BROADCAST FM RADIO TUNER Rev.1.1–July.2011)