エントリー

タグ「FM」の検索結果は以下のとおりです。

ページ移動

  • ページ
  • 1
  • 前のページ
  • 次のページ

LRチャネル独立型FMラジオの作製

先日のDSP式FMステレオトランスミッターに合わせたLR単独動型受信機を作製している

名称に困って「LRチャネル独立型FMラジオ」って付けたが,つまりFMステレオ放送を受信して左右のどちらかだけアンプを通しスピーカーを鳴らすモノラルラジオということである

元々はゲーム音を耳元で鳴らしたいだけだったのだけど,以下の特徴がありそうだ

  • FMステレオトランスミッターを利用して自由なスピーカー配置で高品質の音楽を聴くことができる
  • 放送局の受信機能も付けるのでFMラジオを手軽に楽しめ,複数スピーカーの配置により臨場感を得るできる
基本設計概要
  • FMトランスミッターとしては77.0MHzを使用
  • 受信可能放送局をプリセット
  • LRの出力は切替
  • アンプ付きにして音量操作可能
  • エンクロージャー内に設置可能なサイズ
パーツ選定

IMG_20250815_162106.jpg

FMチューナー部はデジタル選局のほうが使い勝手が良いのでRDA5807M(右)を採用

  • 電源電圧:2.7V~3.6V(3V)
  • 消費電流:18mA(max)
  • 受信周波数:76MHz~108MHz
  • 通信方式:I2C(7bitAddress:0x10,0x11,0x60)
  • S/N比:60dB

RDA5807Mのドライブはプログラムサイズの関係からATtiny85(左)を使用

アンプは完成品だと大きくなるのでLM386N(中)を最小で構成

回路図

(チューナー部)

FIG2025081602.png

  • 電源電圧は3.3V
  • ANTへは100pFを追加する予定
  • LRの切り替えはSWではなくショートピンで行う
  • 周波数変更はタクトSW1個でループさせる(初期値はトランスミッターの77.0MHz)
  • タクトSWを2個で音量アップ・ダウン

(アンプ部)

FIG2025081603.png

  • 20ゲインで動作させる
  • R1,C8,R2は無くても問題ない(R1は200ゲイン時のノイズ対策用,C8,R2は発振対策用)
  • 最終的にC9は220μFに変更(47μF~470μFでの試行結果)

(電源部)

FIG2025081601.png

  • 省電力だったので三端子レギュレーターは50mAのS-812C33AY-B-Gに変更(ドロップ電圧が極小なのが魅力)
  • C2は22μFに変更
スケッチ

(最初)

RDA5807MはArduinoでRadioライブラリを使用して試したこと(こちら)があるので同じスケッチを更新して使用したが,ATtiny85はRAMが512BytesしかないのでRadioライブラリをそのまま使うとオーバー(800Bytes超)するため,ライブラリーのデバッグ部分(データとなる文字列があるため)を外して減らす必要があった

WS20250816.png

コード:53,94Bytes,データ:308Bytesになり,なんとかATtiny85用のコンパイルが完了して書き込み

IMG_20250814_161827.jpg

しかし,まったく動作しない

(Arduinoで試行)

ATtiny85でデバッグするのは困難なのでATMega328を搭載したArduinoで確認

IMG_20250815_094713.jpg

これが困ったことに動作済スケッチでありながら動作しないので調査開始

途中,既存のスケッチを探して,こちらのスケッチを使ってみると動作したためRadioライブラリの破壊してしまったのかと再インストールしてみたが変化なし

すったもんだの結果,初期化の際,以下のような順序で構成すると動作することが判る

//最初に実行(initは駄目)
radio.setup(RADIO_FMSPACING, RADIO_FMSPACING_100);

//待ち(whileの方が良いかも)
if(!radio.initWire(Wire)) {
  delay(1000)
}

//バンド設定
radio.setBandFrequency(FIX_BAND, FIX_STATION);

この構成でATtiny85でも動作確認できた

IMG_20250815_161802.jpg

(最終)

結果,Radioライブラリでも確認できたが,スケッチサイズが減らせることもあり(調査途中で使った)上のスケッチのライブラリを使わせてもらうことにした(ラズパイの時も利用させてもらったかな)

スケッチ(SJIS,TAB4)

ライブラリのクラス名は「RDA5807M」から「XRDA5807M」に変更

試作

電源部も追加して,3.6Vで動作させてみたところ,十分な音量もあるようなので高校野球を試聴しながら試行中

IMG_20250816_122417.jpg

現在1セットを基板に実装中

DSP FMモジュールの受信確認

NOAA受信チューナーを作製するため,評価として購入しておいたDSP FMモジュールの動作や受信性能を確認

FMモジュールは2つ

モジュール仕様

①LCD_FM_RX(DSPチップは不明)

IMG_20220417_133542.jpg

IMG_20220417_133529.jpg

  • コントローラーが載っているのでディスプレイ表示とボタン操作可能
  • シリアル接続でコマンド送出にて操作も可能(38400bps, N8)

コマンド

受信モード設定(76-108MHz):AT+CAMPUS=1
受信モード設定(87-108MHz):AT+CAMPUS=0
周波数指定:AT+FRE=892
周波数調整-0.1MHz:AT+FRED
周波数調整+0.1MHz:AT+FREU
保存した局番号を指定:AT+CH=01
前の局へ:AT+CHD
次の局へ:AT+CHU
自動選局:AT+SCAN
自動選局-:AT+SCAND
自動選局+:AT+SCANU
自動選局停止:AT+SCANSTOP
動作開始/一時停止:AT+PAUS
音量レベル指定(00-16):AT+VOL=16
音量-1:AT+VOLD
音量+1:AT+VOLU
バックライト点灯時間(秒、00:点灯しない、 01:常時点灯):AT+BANK=05
SNR/RSSI情報取得:AT+SNR_RSSI
工場出荷状態に戻る:AT+CR
設定前の状態に戻る:AT+RET

②RDA5807M

IMG_20220417_133645.jpg

  • I2C接続で操作
予備パーツ

ブレッドボードで使えるパーツも作製

(アンテナ接続用のSMA端子)

IMG_20220417_151027.jpg

(オーディオ出力用のミニプラグジャック)

IMG_20220417_151109.jpg

FM受信

①LCD_FM_RX

IMG_20220417_162112.jpg

SWの替わりに短絡線を利用して操作

IMG_20220417_175743.jpg

USBシリアルを接続してターミナルからコマンド送出して操作

コマンド行末はなく連続した文字列送出で機能する

ログ(エコーバックがないのでターミナルでローカルエコー

AT+CAMPUS=0CAMPUS_OFF
AT+FRE=875FRE=875
FRE=875
AT+CAMPUS=1CAMPUS_ON
AT+BANK=01BANK_ON
AT+BANK=05BANK=05s
AT+SCANSCAN
SCAN RETURN:
FRE=920
CH=01
CH_ALL=01
SCAN RETURN:
FRE=938
CH=02
CH_ALL=02
SCAN RETURN:
FRE=947
CH=03
CH_ALL=03
SCAN RETURN:
FRE=951
CH=04
CH_ALL=04
SCAN RETURN:
FRE=960
CH=05
CH_ALL=05
SCAN RETURN:
FRE=965
CH=06
CH_ALL=06
SCAN RETURN:
FRE=978
CH=07
CH_ALL=07
SCAN RETURN:
FRE=987
CH=08
CH_ALL=08
SCAN RETURN:
FRE=991
CH=09
CH_ALL=09
SCAN RETURN:
FRE=1000
CH=10
CH_ALL=10
SCAN OK
FRE=920
CH=01
CH_ALL=10
AT+SCANSCAN
SCAN RETURN:
FRE=870
CH=01
CH_ALL=01
AT+FRE=892FRE=892
FM mode
AT+FRE=9762FRE=976
AT+FRE=971FRE=971

音質は良好だが周波数が3桁しか指定できないのでNOAA受信は不可

②RDA5807M

IMG_20220417_151008.jpg

ピンが2mmピッチなので無理やり2.54ピッチに変換

上の写真の位置で左上が1番ピン

IMG_20220417_171234.jpg

3Vロジックなのだが電源だけ3.3Vにして(ミスって)5Vでピン接続

テスト用プログラムはこちらを利用

#include <Arduino.h>
#include <Wire.h>
#include <radio.h>
#include <RDA5807M.h>

#define FIX_BAND RADIO_BAND_FMWORLD //Radio Band (was RADIO_BAND_FM)
#define FIX_STATION 8920 //Station Tuned = 89.2 MHz.
#define FIX_VOLUME 5 //Audio Volume Level 5.

RDA5807M radio;

void setup() {
Serial.begin(9600);
Serial.println("FM Radio");
delay(200);

radio.init();
radio.debugEnable();

radio.setBandFrequency(FIX_BAND, FIX_STATION);
radio.setVolume(FIX_VOLUME);
radio.setMono(false);
radio.setMute(false);
}

void loop() {
char s[12];
radio.formatFrequency(s, sizeof(s));
Serial.print("Station:");
Serial.println(s);

Serial.print("Radio:");
radio.debugRadioInfo();

Serial.print("Audio:");
radio.debugAudioInfo();

delay(3000);
}

ログ

FM Radio
>setBand(2)
>-_saveRegister(0x3, 0x8)
>setFrequency(8920)
>-_saveRegister(0x2, 0xC009)
>-_saveRegister(0x3, 0x2118)
>-_saveRegister(0x5, 0x9081)
>-_saveRegister(0x5, 0x9085)
>setMono(0)
>-_saveRegister(0x2, 0xC009)
>-_saveRegister(0x2, 0xC009)
Station: 89.20 MHz
Radio: --- ----- MONO RSSI: 9 SNR: 0
Audio: ---- -------- ----
Station: 89.20 MHz
Radio: --- TUNED STEREO RSSI: 14 SNR: 0
Audio: ---- -------- ----
Station: 89.20 MHz
Radio: --- TUNED STEREO RSSI: 14 SNR: 0
Audio: ---- -------- ----
Station: 89.20 MHz
Radio: --- TUNED STEREO RSSI: 14 SNR: 0
Audio: ---- -------- ----

音質は良好で周波数指定が4桁なのでNOAA受信は実際に受信してみないと不明

(追加:2022.05.04)

LCD_FM_RXを使えるように基板に載せた

IMG_20220504_202954.jpg

このモジュールは直接周波数を合わせて選局するのではなく,周波数スキャンしてメモリー登録した局を選局するようになっている

尚,下記の回路図で作製したところ(動作確認から)「選局+」「選局ー」それぞれ「PIN6」「PIN7」になっているが逆と思われる

LCD_FM_RX.png

(追加:2022.05.14)

RDA5807Mを使い周波数をロータリーエンコーダで変更できるようにしてブレッドボードに展開

IMG_20220514_214752.jpg

これにクリコンを追加してNOAA受信を確認しようかと考えている

上手くいけばシリアルで外部コントロールできるようにして「WXtoImg」の対応チューナーに仕上げる予定

ページ移動

  • 前のページ
  • 次のページ
  • ページ
  • 1

ユーティリティ

検索

エントリー検索フォーム
キーワード

新着コメント

Re:NOAA受信システム復旧
2025/06/11 from admin
Re:NOAA受信システム復旧
2025/06/11 from とおりすがり
Re:SDRplay社RSP1クローンを購入
2025/05/25 from 匿名希望
Re:Mozilla FirefoxではNHKプラスを再生できない件
2025/05/09 from Donabeyaki
Re:ATS-25を作製する
2025/03/23 from kazu

過去ログ

Feed