NOAA受信チューナーを作製するため,評価として購入しておいたDSP FMモジュールの動作や受信性能を確認
FMモジュールは2つ
モジュール仕様
①LCD_FM_RX(DSPチップは不明)
- コントローラーが載っているのでディスプレイ表示とボタン操作可能
- シリアル接続でコマンド送出にて操作も可能(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
予備パーツ
ブレッドボードで使えるパーツも作製
(アンテナ接続用のSMA端子)
(オーディオ出力用のミニプラグジャック)
FM受信
①LCD_FM_RX
SWの替わりに短絡線を利用して操作
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
ピンが2mmピッチなので無理やり2.54ピッチに変換
上の写真の位置で左上が1番ピン
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を使えるように基板に載せた
このモジュールは直接周波数を合わせて選局するのではなく,周波数スキャンしてメモリー登録した局を選局するようになっている
尚,下記の回路図で作製したところ(動作確認から)「選局+」「選局ー」それぞれ「PIN6」「PIN7」になっているが逆と思われる
(追加:2022.05.14)
RDA5807Mを使い周波数をロータリーエンコーダで変更できるようにしてブレッドボードに展開
これにクリコンを追加してNOAA受信を確認しようかと考えている
上手くいけばシリアルで外部コントロールできるようにして「WXtoImg」の対応チューナーに仕上げる予定