Собрал приемник по этой схеме: http://labkit.ru/html/radio_shm?id=465 Работает отлично, спасибо автору, рекомендую к повторению.
Видео Самодельный FM-приемник на RDA5807M канала Сергей Рудаков
Показать
Как сделать ФМ приемник своими руками на модуле fm rda5807m Нам понадобится всего 4 кнопки и Ардуино.
Ссылка на видео
Библиотека разработанная для этого модуля позволяет сканировать частоты в поиске радиостанций, выводить на дисплей RDS, создавать каналы и записывать их в EEPROM память, загружать последнюю станцию которую вы слушали перед отключением, управление радио через монитор порта.
Очень маленькое энергопотребление. Питание от 3,3 Вольт. Связь с Ардуиной всего по 2 проводам, по интерфейсу I2C. Рабочие частоты от 50 МГц до 115 МГц. В видео показано rda5807m подключение. Приложен рабочий скетч с выводом на дисплей, Названия радиостанции, частота, номера канала, громкость звука.
Loading…
ÐоÑÑаÑивнÑй FM пÑиемник на ÑадиомодÑле RDA5807M Ñ RDS
РинÑеÑнеÑе вÑÑÑеÑаÑÑÑÑ Ð´Ð¾ÑÑаÑоÑно много ваÑианÑов ÑадиолÑбиÑелÑÑкиÑ
ФРпÑиемников на ÑадиомодÑле Ñ Ð¼Ð¸ÐºÑоÑÑ
емой RDA5807M, либо микÑоÑÑ
еме RDA5807FP. Ðо многие ваÑианÑÑ Ð½Ðµ ÑвлÑÑÑÑÑ Ð¿Ð¾ÑÑаÑивнÑми и миниаÑÑÑнÑми, пиÑаÑÑÑÑ Ð¾Ñ Ð¸ÑÑоÑника пиÑÐ°Ð½Ð¸Ñ 3..5Ð, огÑаниÑÐµÐ½Ñ Ð¿Ð¾ ÑÑнкÑионалÑ. ÐаÑ
оÑелоÑÑ ÑоздаÑÑ Ð¿Ñиемник, коÑоÑÑй Ð±Ñ ÑдовлеÑвоÑÑл вÑем моим ÑÑебованиÑм, а именно:
— миниаÑÑÑнÑй (помеÑаеÑÑÑ Ð² каÑман ÑÑбаÑки);
— пиÑание Ð¾Ñ 2 «Ð¿Ð°Ð»ÑÑиковÑÑ
» или «Ð¼Ð¸Ð·Ð¸Ð½ÑиковÑÑ
» аккÑмÑлÑÑоÑов или баÑаÑеек, ÑоÑ
ÑанÑÐµÑ ÑабоÑÑ Ð´Ð¾ 2Ð;
— ÑÑкий OLED ÑкÑан;
— два Ñежима ÑабоÑÑ – Ñежим ÑканиÑÐ¾Ð²Ð°Ð½Ð¸Ñ ÑаÑÑоÑÑ Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑÑ Ð·Ð°Ð¿Ð¾Ð¼Ð¸Ð½Ð°Ð½Ð¸Ñ ÑÑанÑий и Ñежим ÑикÑиÑованнÑÑ
наÑÑÑоек;
— авÑооÑклÑÑение пиÑаниÑ;
— блокиÑовка ÐºÐ»Ð°Ð²Ð¸Ñ Ð¾Ñ ÑлÑÑайного нажаÑиÑ;
— вклÑÑение/оÑклÑÑение пиÑÐ°Ð½Ð¸Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¾Ð¹;
— ÑегÑлиÑовка гÑомкоÑÑи кнопками.
Ð ÑезÑлÑÑаÑе бÑл ÑазÑабоÑан пÑиемник, ÑÑ ÐµÐ¼Ð° коÑоÑого пÑиведена ниже. Ðазвание кнопок в Ñ Ð°Ð¾ÑиÑном поÑÑдке ÑолÑко Ð´Ð»Ñ ÑиÑабелÑноÑÑи ÑÑ ÐµÐ¼Ñ.
ÐеÑеÑÐµÐ½Ñ ÑлеменÑов:
ZQ1 ÐваÑÑевÑй ÑезонаÑÐ¾Ñ 4.000 ÐÐÑ HC-49SM -1ÑÑ.
С1,С2 ÐонденÑаÑÐ¾Ñ 0805 22пФ — 2ÑÑ.
С3,С7-С9 ÐонденÑаÑÐ¾Ñ 0805 0,1 мкФ — 4ÑÑ.
С4,С12,С13 ÐонденÑаÑÐ¾Ñ ÑанÑаловÑй Ñип D 470 мкФ x 10Ð — 3 ÑÑ.
С5,С6 ÐонденÑаÑÐ¾Ñ 0805 1,0 мкФ — 2ÑÑ.
С10 ÐонденÑаÑÐ¾Ñ 0805 10,0 мкФ -1ÑÑ.
С11 ÐонденÑаÑÐ¾Ñ Ð¿Ð¾Ð´ÑÑÑоеÑнÑй ÐТ4-23 5-25 пФ (можно аналог. имп.) — 1ÑÑ.
С14 ÐонденÑаÑÐ¾Ñ 0805 2,2 мкФ — 1ÑÑ.
DD1 ÐикÑоконÑÑÐ¾Ð»Ð»ÐµÑ ATmega328p-AU -1ÑÑ
HG1 OLED 0.96 128Ñ 64 желÑо-голÑбой -1 ÑÑ.
L1 ÐаÑÑÑка 0,1 мкÐн 5 виÑков пÑовода 0,5мм на опÑавке 4мм -1ÑÑ.
L2,L3 ÐÑоÑÑÐµÐ»Ñ LQH32MN6R8K 6.8 мкÐн — 2ÑÑ.
SB1-SB13 Ðнопка мембÑÐ°Ð½Ð½Ð°Ñ SOP-114HST — 13ÑÑ.
U1 ÐодÑÐ»Ñ rrd-102v2.0 — 1ÑÑ
X1 Ðилка PLD2-12S — 1ÑÑ.
X2 РозеÑка PJ-327A — 1ÑÑ.
ÐлаÑа пÑиемника изгоÑовлена меÑодом ÐУТ. РкÑÑглÑÑ Ð¿Ð»Ð¾ÑÐ°Ð´ÐºÐ°Ñ Ð¿ÑоÑвеÑÐ»ÐµÐ½Ñ Ð¾ÑвеÑÑÑÐ¸Ñ Ð¸ впаÑÐ¼Ñ Ð¼ÐµÐ¶ÑлойнÑе пеÑемÑÑки.
СобÑÐ°Ð½Ð½Ð°Ñ Ð¿Ð»Ð°Ñа:
РкаÑеÑÑве коÑпÑÑа пÑиемника иÑполÑзÑеÑÑÑ ÐºÐ¾ÑпÑÑ Ð¾Ñ ÐºÐ¸ÑайÑкого пÑиемника Ñ Aliexspress. ÐÐ»Ñ Ð¿ÑогÑаммиÑÐ¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¸ÐºÑоконÑÑоллеÑа иÑполÑзовалаÑÑ Ð¿ÑогÑамма AVRDUDE. ÐÐ¾Ñ FUSE:
ÐÑиемник в коÑпÑÑе:
Ð, наконеÑ, ÑабоÑий пÑиемник:
ÐÐ»Ñ Ð¿ÑоÑлÑÑÐ¸Ð²Ð°Ð½Ð¸Ñ Ð¸ÑполÑзовалиÑÑ Ð½Ð°ÑÑники Urbanfun hi-fi. ÐаÑеÑÑво звÑка Ñ Ð¾ÑоÑее, пÑиÑÑÑÑÑвÑÐµÑ Ð±Ð°ÑÑ.
ÐÐ¾Ñ ÐºÐ°Ðº-Ñо Ñак.
ФайлÑ:
ÐÑÑ
ив ZIP
ÐÑе вопÑоÑÑ Ð²
ФоÑÑм.
| Ðак вам ÑÑа ÑÑаÑÑÑ? | ÐаÑабоÑало ли ÑÑо ÑÑÑÑойÑÑво Ñ Ð²Ð°Ñ? |
ÐÑи ÑÑаÑÑи вам Ñоже могÑÑ Ð¿ÑигодиÑÑÑÑ:
От Alex 17.10.2018 | 12:10
Опубликовано в Самоделки, Электроника
Загрузка…
9 356
Очень простой и тем не менее качественный цифровой FM радиоприёмник можно собрать на китайском модуле RDA5807M и в качестве управления этим модулем и вывода различной информации на ЖК дисплей будет использоваться Arduino. Кроме самого приёма станций модуль умеет получать цифровую информацию RDS от этих станций.
Цифровой радомодуль RDA5807, представляет собой крохотную плату с маленькой микросхемой с 10-тью ножками и кварцем и при своём маленьком размере обеспечивает качественный, чистый приём в диапазоне частот 76 – 108 МГц в стерео режиме, также он имеет цифровую шину I2C по которой общается с микроконтроллером и передаёт данные RDS.
FM радио на модуле RDA5807 и Ардуино
Несколько справочных данных о модуле RDA5807:
- Поддерживаемый диапазон частот: 50 – 115 МГц;
- Шаг перестройки: 100 КГц, 200 КГц, 50 КГц и 25 КГц;
- Потребляемый ток: 20 mA при напряжении 3В;
- Поддержка цифровых данных формата RDS/RBDS;
- Напряжение питания от 1.8 до 3.3В.
Для того чтобы сделать FM приёмник нам понадобится:
- Модуль FM радиоприёмника RDA5807M;
- Плата Arduino Uno;
- Дисплейный модуль с дисплеем от Nokia 5110;
- 3 тактовые кнопки;
- 3 резистора на 10к;
- Макетная плата с проводками;
- Гнездо для наушников;
- Наушники.
Собираем ФМ приёмник на модуле RDA5807m по этой схеме:
FM радио на модуле RDA5807 и Ардуино
FM радио на модуле RDA5807 и Ардуино
FM радио на модуле RDA5807 и Ардуино
Наушники подключаем по такой схеме:
FM радио на модуле RDA5807 и Ардуино
Подключаем Ардуино USB кабелем к компьютеру и заливаем этот скетч (или вторую версию) — RDA5807_fmradio_3buttons_ver0.ino.
Во второй версии скетча я добавил возможность сохранять значение текущей частоты и шага перестройки в памяти EEPROM — RDA5807_fmradio_3buttons_ver1.ino.
FM радио на модуле RDA5807 и Ардуино
FM радио на модуле RDA5807 и Ардуино
FM радио на модуле RDA5807 и Ардуино
FM радио на модуле RDA5807 и Ардуино
На дисплее вы можете увидеть:
- Уровень сигнала;
- В каком режиме идёт приём, стерео или моно;
- То, что вы можете выбрать кнопками: автопоиск, информация о станции, ручной поиск и громкость;
- Информация RDS (статические и прокручивающие тексты).
FM радио на модуле RDA5807 и Ардуино
Всё, такой вот несложный и функциональный FM радиоприёмник на модуле RDA5807 и Ардуино получился за короткое время. Вы можете поместить всё в красивый корпус, добавить по желанию усилитель и динамик и получится отличный приёмник с качественным звуком.
FM радио на модуле RDA5807 и Ардуино
#include <Wire.h>
/* Select the frequency we want to tune to by way
* of selecting the channel for the desired frequency
*/
uint16_t channel = 187;
/*
* предполагаем что диапазон начинается с частоты 87.0MHz (для приведенных ниже настроек)
* расстояние между каналами составляет 100kHz (0.1MHz) (per settings below)
* тогда номер канала можно вычислить с помощью следующего выражения:
*
* channel = (<desired freq in MHz> — 87.0) / 0.1
*
* или можно записать это выражение в другом виде:
* <10 x desired freq in MHz> — 870
*/
#define RDA5807M_ADDRESS 0b0010000 // 0x10
#define BOOT_CONFIG_LEN 12
#define TUNE_CONFIG_LEN 4
/*
* Эти байты устанавливают нашу первоначальную конфигурацию
* На этом этапе мы не беспокоимся о настройке приемника на нужный канал.
* Здесь мы производим сброс модуля.
*/
uint8_t boot_config[] = {
/* register 0x02 */
0b11000001,
/*
* DHIZ audio output high-z disable
* 1 = normal operation
*
* DMUTE mute disable
* 1 = normal operation
*
* MONO mono select
* 0 = stereo
*
* BASS bass boost
* 0 = disabled
*
* RCLK NON-CALIBRATE MODE
* 0 = RCLK is always supplied
*
* RCLK DIRECT INPUT MODE
* 0 = ??? not certain what this does
*
* SEEKUP
* 0 = seek in down direction
*
* SEEK
* 0 = disable / stop seek (i.e. don’t seek)
*/
0b00000011,
/*
* SKMODE seek mode:
* 0 = wrap at upper or lower band limit and contiue seeking
*
* CLK_MODE clock mode
* 000 = 32.768kHZ clock rate (match the watch cystal on the module)
*
* RDS_EN radio data system enable
* 0 = disable radio data system
*
* NEW_METHOD use new demodulate method for improved sensitivity
* 0 = presumably disabled
*
* SOFT_RESET
* 1 = perform a reset
*
* ENABLE power up enable:
* 1 = enabled
*/
/* register 0x03 */
/* Don’t bother to tune to a channel at this stage*/
0b00000000,
/*
* CHAN channel select 8 most significant bits of 10 in total
* 0000 0000 = don’t boher to program a channel at this time
*/
0b00000000,
/*
* CHAN two least significant bits of 10 in total
* 00 = don’t bother to program a channel at this time
*
* DIRECT MODE used only when test
* 0 = presumably disabled
*
* TUNE commence tune operation
* 0 = disable (i.e. don’t tune to selected channel)
*
* BAND band select
* 00 = select the 87-108MHz band
*
* SPACE channel spacing
* 00 = select spacing of 100kHz between channels
*/
/* register 0x04 */
0b00001010,
/*
* RESERVED 15
* 0
*
* PRESUMABLY RESERVED 14
* 0
*
* RESERVED 13:12
* 00
*
* DE de-emphasis:
* 1 = 50us de-emphasis as used in Australia
*
* RESERVED
* 0
*
* SOFTMUTE_EN
* 1 = soft mute enabled
*
* AFCD AFC disable
* 0 = AFC enabled
*/
0b00000000,
/*
* Bits 7-0 are not specified, so assume all 0’s
* 0000 0000
*/
/* register 0x05 */
0b10001000,
/*
* INT_MODE
* 1 = interrupt last until read reg 0x0C
*
* RESERVED 14:12
* 000
*
* SEEKTH seek signal to noise ratio threshold
* 1000 = suggested default
*/
0b00001111,
/*
* PRESUMABLY RESERVED 7:6
* 00
*
* RESERVED 5:4
* 00
*
* VOLUME
* 1111 = loudest volume
*/
/* register 0x06 */
0b00000000,
/*
* RESERVED 15
* 0
*
* OPEN_MODE open reserved registers mode
* 00 = suggested default
*
* Bits 12:8 are not specified, so assume all 0’s
* 00000
*/
0b00000000,
/*
* Bits 7:0 are not specified, so assume all 0’s
* 00000000
*/
/* register 0x07 */
0b01000010,
/*
* RESERVED 15
* 0
*
* TH_SOFRBLEND threshhold for noise soft blend setting
* 10000 = using default value
*
* 65M_50M MODE
* 1 = only applies to BAND setting of 0b11, so could probably use 0 here too
*
* RESERVED 8
* 0
*/
0b00000010,
/*
* SEEK_TH_OLD seek threshold for old seek mode
* 000000
*
* SOFTBLEND_EN soft blend enable
* 1 = using default value
*
* FREQ_MODE
* 0 = используем значение по умолчанию
*/
};
/* After reset, we can tune the device
* We only need program the first 4 bytes in order to do this
*/
uint8_t tune_config[] = {
/* register 0x02 */
0b11000000,
/*
* DHIZ audio output high-z disable
* 1 = normal operation
*
* DMUTE mute disable
* 1 = normal operation
*
* MONO mono select
* 0 = mono
*
* BASS bass boost
* 0 = disabled
*
* RCLK NON-CALIBRATE MODE
* 0 = RCLK is always supplied
*
* RCLK DIRECT INPUT MODE
* 0 = ??? not certain what this does
*
* SEEKUP
* 0 = seek in down direction
*
* SEEK
* 0 = disable / stop seek (i.e. don’t seek)
*/
0b00000001,
/*
* SKMODE seek mode:
* 0 = wrap at upper or lower band limit and contiue seeking
*
* CLK_MODE clock mode
* 000 = 32.768kHZ clock rate (match the watch cystal on the module)
*
* RDS_EN radio data system enable
* 0 = disable radio data system
*
* NEW_METHOD use new demodulate method for improved sensitivity
* 0 = presumably disabled
*
* SOFT_RESET
* 0 = don’t reset this time around
*
* ENABLE power up enable:
* 1 = enabled
*/
/* register 0x03 */
/* Here’s where we set the frequency we want to tune to */
(channel >> 2),
/* CHAN channel select 8 most significant bits of 10 in total */
((channel & 0b11) << 6 ) | 0b00010000
/*
* CHAN two least significant bits of 10 in total
*
* DIRECT MODE used only when test
* 0 = presumably disabled
*
* TUNE commence tune operation
* 1 = enable (i.e. tune to selected channel)
*
* BAND band select
* 00 = select the 87-108MHz band
*
* SPACE channel spacing
* 00 = select spacing of 100kHz between channels
*/
};
void setup()
{
Serial.begin(9600);
pinMode(A0,INPUT);
Wire.begin();
Wire.beginTransmission(RDA5807M_ADDRESS);
Wire.write(boot_config, BOOT_CONFIG_LEN);
Wire.endTransmission();
Wire.beginTransmission(RDA5807M_ADDRESS);
Wire.write(tune_config, TUNE_CONFIG_LEN);
Wire.endTransmission();
}//setup end
void loop()
{
int channel1 =90,newA;
static int oldA = 0; // set the oldA as HIGH
int result = 0;
newA = analogRead(A0);
if ((newA — oldA) > 10 || (oldA — newA) > 10){
Serial.println(newA);
if(newA!= oldA){
channel = channel1+(newA/10);
myChangeChannel(channel);
oldA=newA;
}
}
uint16_t frequency = channel+870;
uint16_t num1 = (frequency / 1000) % 10;
uint16_t num2 = (frequency / 100) % 10;
uint16_t num3 = (frequency / 10) % 10;
uint16_t num4 = frequency % 10;
Serial.print(num1);
Serial.print(num2);
Serial.print(num3);
Serial.print(num4);
Serial.print(«—«);
Serial.println(channel+870);
}//конец цикла loop
/*
* функция для изменения канала в модуле RDA5807
* Example: channel = 191
*/
void myChangeChannel(int channel){ /* void if nothing is returned else int */
/*
* первым делом записываем новый канал в массив tune_config, потом передаем его значение модулю RDA5807
*/
tune_config[2] = (channel >> 2);
tune_config[3] = ((channel & 0b11) << 6 ) | 0b00010000;
Wire.begin();
Wire.beginTransmission(RDA5807M_ADDRESS);
Wire.write(tune_config, TUNE_CONFIG_LEN);
Wire.endTransmission();
}
- ×òî äåëàòü?
- Âèäåî
- Êàðòèíêè
- Êàðòû è ìàðøðóòû
-
Ïî÷èòàòü æóðíàë ïîòðåáèòåëÿ
- NoFolloW çà íàìè â Twitter!
- Êàòàëîã /
- Âèäåî /
- ÊÂ- ðàäèîïðèåìíèê,…
Twix UwU
Ïîõîæèå âèäåî
Ïðèåìíèê íà ïîëåâèêå
Äëèííîâîëíîâûé ðàäèîïðèåìíèê ñâîèìè ðóêàìè íà 3 òðàíçèñòîðàõ
Ðåãåíåðàòèâíûé ïðè¸ìíèê AM SSB íà ëàìïàõ ñâîèìè ðóêàìè.
Ñâåðõðåãåíåðàòèâíûé ïðèåìíèê íà 27ÌÃö,Ñè-Áè, èç èãðóøêè ñâîèìè ðóêàìè.
Ïðèñïîñîáëåíèå äëÿ óñòàíîâêè ðåçüáîâûõ çàêë¸ïîê
Êàê ïðèíèìàòü ðàäèîëþáèòåëåé CW+SSB íà ïðîñòîé ÊÂ-ðàäèîïðèåìíèê
64 ôåððèòîâûõ àíòåííû ïðèåìíèê ïðÿìîãî óñèëåíèÿ âèäåî ¹ 9 èñïûòàíèå. ñàìîäåëüíîå ðàäèî.
radio fm RDA5807M è arduino. Ïîäêëþ÷åíèå, íàñòðîéêà, îïèñàíèå.
Êîíâåðòåð èç FM 88-108 ÌÃö â ÓÊÂ 65-74ÌÃö.Ìóçëî íà ñîâåòñêèé ðàäèîïðèåìíèê.Íà îäíîì òðàíçèñòîðå.
Ïðèåìíèê êîðîòêîâîëíîâèêà íàáëþäàòåëÿ Ïîëÿêîâà RA3AAE
Äâóõòàêòíûé ãåíåðàòîð íà êò315.Êàêóþ ìîùíîñòü ìîæíî ñíÿòü ñ âêëþ÷åíèåì òðàíçèñòîðîâ â ïàðàëëåëü.
AM/FM/SW/LW ðàäèîïðèåìíèê Si4730/Si4735
































