エントリー

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」の対応チューナーに仕上げる予定

ラジオ受信用スピーカーを作製(今回は簡易)

必要になったので(45年前にも作ったが)ラジオ受信用(通信受信用と言ってもよい)スピーカーを作製

回路的には音声を重視した音声周波数である1.5~2kHzの出力を中心としたモノラルスピーカーとなる

音声中心再生にするためには低音やビビりを排除する方が良いのでスピーカーボックスは重く後方へ大きくし空間に収音材を詰め込むのが良い(はずである)

・・・

なんだけど,今回は早急にラジオ用の再生スピーカーが欲しかったのであり合わせで作製

IMG_20220416_174619.jpgIMG_20220416_174610.jpg

  • スピーカーユニットは前にDAISOスピーカー改造で使った余りを利用
  • アンプ部はAmazon購入品(PAM8403)を使用
  • ステレオで入力したのをモノラルで変換出力しようとしたが動作不良だったのでLのみ出力にした
  • 2kHzのLPFの切り替えを付ける予定がケース作製を断念したため設置場所が無く排除
材料

IMG_20220416_130003.jpg

※)抵抗はモノラル変換用で不必要となる

(ミニジャック仕様)

IMG_20220416_130703.jpgIMG_20220416_132311.jpg

加工

IMG_20220416_165008.jpgIMG_20220416_164939.jpgIMG_20220416_164950.jpg

  • 各ユニットに分け接続とした
組立

IMG_20220416_173236.jpgIMG_20220416_173149.jpgIMG_20220416_173105.jpg

  • ミニジャックは基板取付けタイプだったので嵌め込みにして接着
  • 電源は5Vのみ
完成
  • ラジオ添付のスピーカーよりは十分な音質
  • 音量を上げるとケースのビビりが出る(ケースの強度の問題)

SDRplay社RSP1クローンを購入

Aliexpressで見つけたSDR機を購入

IMG_20220408_202406.jpg

特徴として以下が記載されていた

  • MSi2500 MSi001スキームを採用,RSP1回路を簡略化,インターフェイスはUSB type-Cを採用
  • 異なる周波数帯域に対応する5つのSMAインターフェイス
  • 10kHz~1GHzの有効周波数範囲,12ビットADC解像度,10MHzのフルリアルタイム視覚帯域幅 (10MHzの広い信号範囲のリアルタイムモニタリング,430~440MHzなど)
  • 周波数変調,AM信号変調,SSB片側帯域,広帯域および狭帯域アナログ,DRMデジタル放送などに適した幅広いアプリケーション
  • Win,Linux,MacOS,Androidの4つのプラットフォームと互換性
  • HDSDR,SDRConsol,GNUradioなどの主流のソフトウェアを完全にサポート(Android用デバイスはotgを要サポート)

購入後にドライバとかセットアップしている段階で,SDRplay社RSP1のクローンであることが判る

WS_20220410_011.jpg

WS_20220410_012.jpg

ケース付きを購入したので中身は見てないが,以下の様なボードだと思われる

IMG_20220410_01.jpg

アンテナの切り替えが省かれているので5本のSMAコネクタが付いている

マニュアルもないのでドライバはどうするのか,ネットの情報もあまりないので苦労(Win10がダウンする現象も発生)したが,RSP1のソフトウェアである「SDRuno」をセットアップしたら認識(USBを接続しないでセットアップする事)

そして「SDRuno」が(全機能は確認していないが)動作した

WS_20220410_001.jpg

HDSDRで動作させるにはSDRplayのサイトから(RSP1とOSを選択)「SDRplay_ExtIO_Installer_1.2.exe」をDLしてセットアップ,「ExtIO_SDRplay_RSP1.dll」をHDSDRのフォルダーに置いて起動

WS_20220410_003.jpg

DLLを指定すれば動作する

WS_20220410_004.jpg

SDRConsole (V3)の場合は新規にハードウェア(SDPlay RSP1)を選択登録すれば利用できる

WS_20220410_006.jpg

WS_20220410_007.jpg

その他,SDRSharpは利用できていない,sodiraSDRはHDSDRと同じ方法でつかえるようだ

ドングルSDRと比べて(驚きの)高感度であり,アルミケース付き(ロッドアンテナも付属)で3.3k,ボードのみなら2kで販売しているのでコスパは良い

継続して,な!百葉箱の補修

昨日,補修が完了したと思っていた「な!百葉箱」が正常に動作していない

他にやりたいこともあったので腰を据えて新しいケースで復活させようかとも思ったが(どうしても目の前の障害は置いておきたくないので)原因を探ることにした

案の定・・・嵌った・・・

結果は・・・ESP8266の異常であり,厳密には一部のピンが動作不良となっていた・・・なので難しかった

先ずは分解

IMG_20220409_145556.jpg

各所をチェック

IMG_20220409_145640.jpg

バッテリー:電圧は3.8Vで低かったが,充電で満タンになり問題なし(だけど,実はバッテリー電圧の測定値に問題ありの信号が当たっていた)

3.3V電源:バッテリーからの入力を3.3Vにしているが問題なし

FAN:出力電圧が1.7Vで異常,入力も1.7Vだけど昇圧DCDCは問題なし,FANも5Vで正常に回る

つまり,FANへの出力電圧が異常なのであるが,FANが動作しなくても測定値をDB登録できるはずなので通信をテスト用ブレッドボードでチェック

IMG_20220409_153523.jpg

この時点でESP8266を疑っていて3個準備してプログラムを書き込み動作させてみたが1度だけ何故か通信が成功した以外まったくDB登録できなかった

IMG_20220409_150720.jpg

ついに通信を疑いAPのファーム更新や再起動を行ったが状況は変わらず

更にはデバッグコードを埋め込み通信関係のチェックして遂にプログラムの問題を発見

if(WiFi.SSID() != ssid) {
//設定が記憶されていないなら接続し記憶させる
WiFi.persistent(true); //ssidとpasswordを保存させる設定
WiFi.mode(WIFI_STA); //STA(子機)モード
WiFi.setAutoConnect(true); //次回起動時に保存内容で接続
WiFi.begin(ssid, password); //初回接続
}

ネットワーク接続時のWiFiコネクトで前回接続の残り(つまりタイムアウト内)なら前回リソースで時間を費やさないようにコネクトしているが保持判定方法に問題があった

if(beginning || WiFi.SSID() != ssid) {
//最初の起動時,もしくは設定が記憶されていないなら接続し記憶させる
beginning = false;
WiFi.persistent(true); //ssidとpasswordを保存させる設定
WiFi.mode(WIFI_STA); //STA(子機)モード
WiFi.setAutoConnect(true); //次回起動時に保存内容で接続
WiFi.begin(ssid, password); //初回接続
}

コネクト問題は初回フラグで対応したが全体の動作は解決せず

結果ESP8266のピン出力がプログラム通りされていない事が判明

ピンの接触不良の疑いもあったが,新しいESP8266に変更したところ改版プログラムにて正常動作したので解決したとしてヒートランテスト中(明日には復旧となる見込み)

IMG_20220409_202810.jpg

今回は調査中に電源指しミスで昇圧DCDCを燃やしてしまって要反省

(追加)

ESP8266が異常となるのは2個目であるが,そんなに壊れることはないんじゃないかと思いボードのパターンが切れているのかもしれないと考えた

よく見ると,ところどころパターンが錆びて切れているように見える(元画像:1.27MB

IMG_20220410_081100.jpg

自然冷却用の隙間から雨が入り錆びたと考えられるため対策しておいたほうが無難である

基板の周囲に壁でも付けるかニスでも塗っておくか考えたが今回はテープで養生することにした

IMG_20220410_115809.jpg

新しいケースで構築し直そうと思う

ユーティリティ

検索

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

過去ログ

Feed