1

Тема: Радио Si4703

Данный контент доступен только зарегистрированным пользователям.

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
#include <SparkFunSi4703.h>
#include <EEPROM.h>
  LiquidCrystal_I2C lcd(0x27,16,2);  // Устанавливаем дисплей
  Si4703_Breakout radio(2, A4, A5, 3);// RST,SDIO,SCLK,SEN
int vol=1;
int channel[11]{1010,1015,1019,1030,1035,1039,1044,1062,1068,1073}; 
char rdsBuffer[20];
int w,c,i;

void setup(){
  lcd.init();lcd.backlight();// Включаем подсветку дисплея
  pinMode(12,INPUT);// Cannel +
  pinMode(11,INPUT);// Cannel -
  pinMode(10,INPUT);// Volume +
  pinMode(9,INPUT); // Volume -
  c = EEPROM.read(0);vol = EEPROM.read(1);
  radio.powerOn();
  radio.setVolume(vol);
  radio.setChannel(channel[c]);
}

void loop(){ 
    radio.readRDS(rdsBuffer); 
    if(digitalRead(12)==HIGH){w=1;delay(200);}
    if(digitalRead(11)==HIGH){w=2;delay(200);}
    if(digitalRead(10)==HIGH){w=3;delay(200);}
    if(digitalRead(9)==HIGH){w=4;delay(200);}
    if(w==1){c++;if(c>9){c=9;}radio.setChannel(channel[c]);cl();radio.setChannel(channel[c]);EEPROM.update(0,c);}
    if(w==2){c--;if(c<0){c=0;}radio.setChannel(channel[c]);cl();radio.setChannel(channel[c]);EEPROM.update(0,c);}
    if(w==3){vol++;if(vol>15){vol=15;}radio.setVolume(vol);cl1();EEPROM.update(1,vol);}
    if(w==4){vol--;if(vol<0){vol=0;}radio.setVolume(vol);cl1();EEPROM.update(1,vol);}
    
    lcd.setCursor(0, 0); lcd.print((float)channel[c]/10,1);lcd.print(" MHz ");lcd.print("VOL ");lcd.print(vol);lcd.print(" ");
    lcd.setCursor(0, 1);lcd.print("C"); lcd.print(c+1);lcd.print(" ");
    lcd.setCursor(6, 1); lcd.print(rdsBuffer);
}

void cl(){delay(100);w=0;lcd.clear();for(i=0;i<20;i++){rdsBuffer[i]=NULL;}}
void cl1(){delay(100);w=0;}

2

Re: Радио Si4703

Привет. Сколько частот можно забить в скетч ? У меня около 20 частот .

3

Re: Радио Si4703

20 и более, соответственно поправив строчки:
int channel[11]{1010,1015,1019,1030,1035,1039,1044,1062,1068,1073};
if(w==1){c++;if(c>9)

4

Re: Радио Si4703

А частота 94.90=0949

5

Re: Радио Si4703

949

6

Re: Радио Si4703

Ясно. А почему нет конструкции на st32 ?

7

Re: Радио Si4703

st32 ?

8

Re: Радио Si4703

Да

9

Re: Радио Si4703

STM32?

10

Re: Радио Si4703

Была у меня опечатка. stm32- правильно.

11

Re: Радио Si4703

Под нее мало библиотек. Пока Ардуино вполне справляется с небольшими проектами.

Re: Радио Si4703

http://forum.rcl-radio.ru/uploads/images/2020/10/e7d51050ba67fda2ad56bcb0f4c66e27.jpg

Re: Радио Si4703

почему ошибка

14

Re: Радио Si4703

Опубликуйте текст ошибки

Re: Радио Si4703

no matching function for call to si4703_breakout

16

Re: Радио Si4703

Вы установили библиотеку с этого источника http://forum.rcl-radio.ru/misc.php?acti … download=1
?

Re: Радио Si4703

да  разные

Re: Радио Si4703

прошился на другом компе теперь нет звука

Re: Радио Si4703

прошился на другом компе теперь нет звука

20

Re: Радио Si4703

Мне сложно понять почему у Вас не работает скетч, возможно все дело в библиотеке. Проверьте библиотеку, она должна быть установлена с источника который я указал.

Re: Радио Si4703

ладно еще  раз попробую или модуль дохлый звука нет и не рдс

22

Re: Радио Si4703

Не заработал. Индикатор работает, частоты свои прописал, кнопки работают и отображаются изменения на экране. В наушниках слышно управление чипом или гармоники этих частот управления. Звука радио и РДС нет, усилитель на модуле работает. Поднял чип на радиомодуле, промыл, припаял, ситуация не изменилась. Грешу на радиомодуль. В раздумьях, как бы его проверить.

23

Re: Радио Si4703

Тестовый скетч из библиотеки, если звука не будет, то точно модуль не исправен

#include <SparkFunSi4703.h>
#include <Wire.h>

int resetPin = 2;
int SDIO = A4;
int SCLK = A5;
int STC = 3;

Si4703_Breakout radio(resetPin, SDIO, SCLK, STC);
int channel;
int volume;
char rdsBuffer[10];

void setup()
{
  Serial.begin(9600);
  Serial.println("\n\nSi4703_Breakout Test Sketch");
  Serial.println("===========================");  
  Serial.println("a b     Favourite stations");
  Serial.println("+ -     Volume (max 15)");
  Serial.println("u d     Seek up / down");
  Serial.println("r       Listen for RDS Data (15 sec timeout)");
  Serial.println("Send me a command letter.");
  

  radio.powerOn();
  radio.setVolume(0);
}

void loop()
{
  if (Serial.available())
  {
    char ch = Serial.read();
    if (ch == 'u') 
    {
      channel = radio.seekUp();
      displayInfo();
    } 
    else if (ch == 'd') 
    {
      channel = radio.seekDown();
      displayInfo();
    } 
    else if (ch == '+') 
    {
      volume ++;
      if (volume == 16) volume = 15;
      radio.setVolume(volume);
      displayInfo();
    } 
    else if (ch == '-') 
    {
      volume --;
      if (volume < 0) volume = 0;
      radio.setVolume(volume);
      displayInfo();
    } 
    else if (ch == 'a')
    {
      channel = 930; // Rock FM
      radio.setChannel(channel);
      displayInfo();
    }
    else if (ch == 'b')
    {
      channel = 974; // BBC R4
      radio.setChannel(channel);
      displayInfo();
    }
    else if (ch == 'r')
    {
      Serial.println("RDS listening");
      radio.readRDS(rdsBuffer, 15000);
      Serial.print("RDS heard:");
      Serial.println(rdsBuffer);      
    }
  }
}

void displayInfo()
{
   Serial.print("Channel:"); Serial.print(channel); 
   Serial.print(" Volume:"); Serial.println(volume); 
}

24

Re: Радио Si4703

Пример из библиотеки я сразу попробовал, изменил свои частоты и убрал 15000 из строчки
radio.readRDS(rdsBuffer, 15000);
иначе не компилировалось. Звука не было. Попробовал сегодня убрать управление с экрана, не помогло, фильтрация питания 3,3 в не помогла, любое изменение в соединении с радиомодулем приводит к пустому экрану, кроме вывода SEN. Получается, что с чипом радиомодуля общение идет, не работает радиоканал. Очень вероятно неисправен чип радиомодуля.
Отложу в сторону, закажу модуль и попробую еще раз. Спасибо.

25

Re: Радио Si4703

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