ライセンスフリー無線情報 >> 無線ブログ集 >> jl7gmnのblog

無線ブログ集

リンク 単体表示 UTF-8 形式


link jl7gmnのblog jl7gmnのblog (2024/3/11 19:35:35)

feed TRX-DUO SDRスタートその3 (2024/3/9 1:29:35)
TRX-DUO のレッドピタヤのクローン版でのウィジェットアイコンを出したいためにいろいろとレッドピタヤのホームページの手順1のQuick startを読んでいて、おおよそわかってきました。SDカードにはLinuxを入れてありLinuxでの起動しているということです。Windowsのアプリとして起動しているわけではないということです。なので、まず最初にSDカードに最新版のOSのイメージをダウンロードしました。
Latest Stable(2.00-23)になります。結果から言うとOSインストールは必要です。最初はOSを入れずにアプリのインストール処理のみ行ったので、SDRとしては起動はできますが、今までのSDカードへ入れたアプリでの処理ではウィジェットアイコンのページは出ません。
OSをbalenaEtcherのイメージ書き込みアプリをダウンロードしてOSイメージをSDカードへフラッシュインストールしました。書き込み完了後TRX-DUOにSDを差し込み電源ONしたところきちんと青LEDが点灯してくれました。この状態でAdvanced IP ScannerでTRX-DUOのIPアドレスを確認しました。ちゃんとSDRアプリの時と同じIPで確認できました。HTTP,My Red Pitaya(nginx 1.19.10)をクリックしてみましたらSDRのときはWebのアプリ一覧でしたが、今度は間違いなくウィジェットアイコンページが起動できました。感激しました。!できなかったことがやっとできた時のうれしさです。

ウィジェット 2024-03-08 041301

右下のアイコンをクリックしてアップデートをおこないましたが、アップデートの途中でエラーメッセージが出ました。最新版は現状のLinuxバージョンではサポートしていないようなメッセージです。
error 2024-03-08 070438

まずはこのOS最新版はやめて、次のベータ版に期待をこめました。
Latest Beta(2.00-30)
各ボードに対応するOSのような感じなのでさっそくダウンロードして同様にインストールし、SDカードにフラッシュ展開しTRX-DUOにSDカードを差し込み電源ONしました。結果はアップデートのiも右下には出ていなくOKのようです。
beta 2024-03-08 063846

画面サイズの関係で2ページにわたっていたため、全部のアイコンが出ていなく、再度サイズを調整して全部のアイコンが表示されるようにしました。
beta OK2024-03-08 072737

ただし、Red Pitaya OS 2.00-30/STEMlab 125-14 LN v1.1 で対応しているようです。14ビットのボード用で対応してるかと思われます。Hi!
(他に過去のOSでSDRlab 122-16用の 1.04-15を入れてみましたが起動しませんでした。何か設定が必要なのかもしれません。)
16ビットボード用として対応する方法が別にあるのかと思いますが、まずはアップデートエラーがないので、この状態でいろいろと試してゆくことにします。

つづく?



feed TRX-DUO SDRスタートその2 (2024/3/5 3:56:07)
TRX-DUOでThetis v2.10.3.6 x64(01/28/24)(FW v3.2 Protocol 1) dev_2の最新版をインストールしてみました。

スクリーンショット 2024-03-05 024254
今まで上位のバージョンのThetisのインストール時にフルインストールをしていて、動作しなかったのですが、何も選択なしに標準設定でインストールすると動作することが分かりました。さっそく起動できたので、youtube動画でSメータのアナログ版を表示設定したものがあったので、これをやりたくてこのバージョンをインストールしています。(Sメータの追加ができるようになったバージョンの最初はThetis-v2.9.0.8.x64からだと思います。これより以降はSメータの追加ができるようになっているようです。)
セットアップにて設定選択するだけで追加することができました。
Appearance → Multi Metersで下記の設定フォームが出ます。
Add TRX1Containerでコンテナを設定しそこに左のリストのなかからAnam Multi Meterを選ぶだけです。Sメータコンテナーのサイズは右下コーナークリックで自由に変更できます。
RⅩ2の受信器の場合はAdd TRX2 Containerで分けて設定です。RⅩ1の受信用、RⅩ2の受信用とそれぞれで、追加設定できます。

スクリーンショット 2024-03-05 031218

コンテナーはThetisフォーム内設定とフォーム外の設定が可能でピン止めもありました。
Sメータのパワー目盛りも任意に変更できます。200W用に設定してみました。
セットアップで簡単に現存のバータイプのメータの種類設定がいろいろとできるようです。アナログタイプのSメータは使っている無線機も針アナログSメータなのでこのタイプのSメータはとても良い感じで気に入っています。
スクリーンショット 2024-03-05 030903
ついでなので、時計と、まだRFのリニアアンプとかはつけてませんが、送信用時用にクロスSWRパワーメータも追加してみました。追加しただけです。クロスSWRパワーメータのパワーは100Wです。設定で変更できます。
200W用に設定してみたクロスSWRパワーメータです。
スクリーンショット 2024-03-05 034405

いろいろ設定があるので、楽しめるThetis です。

つづく?


feed TRX-DUO SDRスタートその1 (2024/3/9 12:14:17)
最近SDR Radioにまたどっぷりつかり始めました。無線交信してた局長さんでRedPitayaというハードを使用して無線器を制作し運用していた方を思い出していろいろと調べていると、例のごとくクローン版が中華製で割と安い値段で出ていることが分かりました。本物購入は、試しのクローンでうまくゆけば考えるとして、多少の勇気をだして、aliexpressにてポチッとクリックして注文しました。いつものごとく配達が保留されただの、こちらが慌てる様ないい加減な配達情報をメールでよこしたりして、何のことない、通常通りに無事に届きました。とにかくメールで訳された配達情報の内容はいい加減な翻訳となり来ていることが多いです。特にAliexpressのレビューはひどい訳文が多いです。ものが届いたので、開けてみました。大枚を出したわりに、物は超小型で、なんか損した気分に少しなりました。それはさておいて、このTRX-DUOに関しての設定の情報はほんの少ししかありません。販売元の動画説明が一番詳しい感じです。RedPitayaを購入しているOMさんたちの中には、TRX-DUOを購入してRedPitayaと比較するというすでに動くという情報は出してくれていますが、その点は安心です。ですが、設定となるとさっぱりです。Hi!
一番悩んでしまうこととして、本家のRedPitayaのWebページでのquickスタートの手順をみていて、OSのイメージのファームウェアをSDカードにいれてゆく手順があります。これは、購入したTRX-DUOでやる必要があるのかどうかについて、最初悩みました。コンパチ器ということなので、まずはOSには関係せず、この手順はしないで設定をしてゆくことにしました。これは結果から言うと正解のようです。
本家本元のWEB情報の Red Pitaya Notes のなかのアプリケーションの中の SDR transceiver compatible with HPSDR をたどるのですが、その前にGIthubのRedtapiya のSDカードにインストール(コピペ)するファイルをダウンロードしておく必要があります。TRX-DUOの説明動画には古いバージョンの例がありますが、最新のバージョンのものをダウンロードして、解凍し準備しておきます。

古いバージョンについてはTRX-DUO関連ページから TRX_duo_firwmare&Quick startをダウンロードできますが、この中の下記のフォルダーのバージョンは2022年03月22日のバージョンです。
FW_alpine-3.14-armv7-20220322 のフォルダがあります。
FW_alpine-3.14-armv7-20220322 このフォルダの中のファイルを使うように資料にはあります。
中身は下記のフォルダとファイルです。
--------------------------------------------------------
apps はフォルダ
cache  はフォルダ
wifi はフォルダ
boot.bin はファイル
devicetree.dtb はファイル
modloop ファイル
red-pitaya.apkovl.tar 圧縮アーカイブ
uEnv ファイル
uImage ファイル
uInitrd ファイル
--------------------------------------------------------
スクリーンショット 2024-03-04 015407

つぎですが、上記のappsのフォルダの中にあるSDR関連のフォルダのなかのsdr_transceiver_hpsdr のフォルダのなかの starts.sh(SHファイル)を上記の中にコピーして、それら全部をSDカードにコピーして使う手順です。
やり方は同じで、最新バージョンで上記と同じようにSDカードにコピーし用意します。
最新バージョンは今日現在は下記のファイルです。
red-pitaya-alpine-3.18-armv7-20240204の圧縮ファイルを解凍した同じフォルダ名のものを使います。

Githubのpavel-demin/red-pitaya-notes (public)
スクリーンショット 2024-03-04 021309

上記のなかの
red-pitaya-alpine-3.18-armv7-20240204.zip 98.9MB  last monthの圧縮ファイルをダウンロードして解凍します。手順は前のと同じやり方です。

ちなみにTRX-DUOの動画では上記のReleaseの下のほうにある下記のRelease版を説明で使用しているようです。
スクリーンショット 2024-03-04 021657

red-pitaya-alpine-3.14-armv7-20220322.zip  101MB Mar 23,2022 の圧縮ファイルです。

上記は使わず最新のリリース版をSDカードにstart.shを一番トップの階層にコピーしておき、全部のデータをSDカードにコピーして準備完成です。

もう一つ、ネット環境として、別途無線LAN接続用の子機を用意して無線LAN回線につなげておきます。私は古いですが、BUFFALO のAir Station WLAE-AG300N 300Mbps 802.11n対応のものを使いました。できれば新しいのが安心です。最初無線LANへつなげるのに取説見ながらやりましたが、少し手間取りました。パソコンでインターネットが見れれば無線LAN接続設定OKです。本家本元のRedPitayaのWebページ説明の中には、ほかに直接のLAN回線接続もありました。また直接のPCへTRX-DUOをLANケーブルでつなぐ方法もあるようでした。私はWebでみた無線LAN子機接続を採用しました。
ということで、データをコピーして準備したSDカードとLAN接続OKの無線子機も準備できたら、さっそくTRX-DUOにmicroSDカードを差し込みます。そしてLAN回線に無線でつながっている子機とTRX-DUOをLANケーブルでつなぎます。そして、運命のTypeCの5V電源をONです。うまくいくと数十秒でTRX-DUOのLED0が青に点灯します。ここまでくれSDRアプリインストールして、うまく動いてくれます。この状態でネット回線のipを確認します。ipを確認するアプリはあるOMさんが便利と推奨していましたので、ダウンロードして使っています。
Advanced IP Scanner というアプリです。LAN回線につながっているデータをすべて表示してくれます。
因みにTRX-DUOの製造社名はInstrumentation Technologies d.d とでました。ほかにMACアドレスも表示されます。RedPitayaの場合はアクセス用に rp-f0xxxx.local とf0xxxx とイーサーネットコネクターのマックアドレスでWebアクセスし、アイコンのツール類が表示されるようです。TRX-DUOのAdvanced Ip Scannerでは上記のrp-f0xxxx.local ではなく HTTP,Red Pitaya Appsと表示されるようになっていました。このアプリ上でこの表示をクリックするとブラウザでIPを入力しクリックしたのと同じようにブラウザが次のWebを表示してくれます。

スクリーンショット 2024-03-04 030330
最初の説明の5.のSDR transceiver compatible with HPSDR が出てきましたので、クリックします。
するとSDR programs がいくつかのファイル、システムと一緒に表示されます。
スクリーンショット 2024-03-04 031056

最初のSDRアプリ PowerSDR mRX PS をリンク先からダウンロードします。
ダウンロードするファイルは

PowerSDR_mRX_PS_v3.4.9.0_Setup.msi    14.8MB  Sep 21, 2018

です。

スクリーンショット 2024-03-04 031643

Windows用のインストールファイルmsiをWindows11上でインストールします。
このOpenHPSDR-PowerSDR mRX PS v3.4.9のインストールは結構時間がかかります。気長にDOSプロンプト上に表示される文字があまり変化がないので、しばらくほっておいてもよいかと思います。インストール完了してPowerSDR mRXPSのアイコンがデスクトップにできるので、クリックしてSDRが表示されればもうすぐです。

スクリーンショット 2024-03-04 032526
SDRのメニューのSetupを開きます。
Generalの主な箇所の下記を設定します。

Radio Model : HERMES または ANAN-100D どちらでも動きました。ここら辺がよくわからないとこです。
Hardware Options : Alex
Region : Japan
Limit Stitched Receiver :1-Receive にチェックそのまま
Pure Signal: Disable Pure Signal にチェックそのまま
PRO Latency:4にチェックそのまま
Connection Type:◎Hermes :Reuse Last IP Addressにチェックそのまま
これは後でUse Static IP Addressにチェック変えたほうが良いかと思う。
あとは、無線LANで確認できたTRX-DUPのLAN回線IPを記入して Select IPボタンを押します。
そしてApplyボタンを押します。その後OKボタンで閉じます。
再度PowerSDR OpenHPSDR mRX を閉じます。そしてアイコンをクリックして再起動します。
これで起動しました。
起動時に音が出ないので SetupのAudioでVAC 1のEnable VAC 1にチェックを入れると音が出るようになります。
RX2受信の場合は 同様に Enable VAC 2にチェックを入れます。
Virtual Audio Cable SetupのドライバーはMME、InputはMicrosoftサウンドマッパー、Outputも同じです。他は初期設定そのままでいじってません。
下記は7MHzでSSGでAM変調信号をFMモードで受信した画面です。FM変調にすればきれいな変調音が聞こえますが、SSGのFM変調バランスが悪かったのでAM変調にしました。見た目のバランスよい信号画像をとるためで、AMモードの意味はありません。

PowerSDR OpenHPSDRmRX PSV.3.4.9

上記のPowerSDRは最近のThetis-V2.9.0x64の元となったSDRアプリでほとんど同じように使用できます。またセットアップもほぼ同じ設定方法です。
一応インストールしてみました。問題なく動作してくれました。
Thetis-V2.9.0x64

まだ、使い始め1日目なので、何とか受信できるところまではたどりつけました。
TRX-DUOは互換性動作問題なしといったところです。ブログではうまくいった事ばかりを書いてますが、かなりSDカードのところで手間取り何回もダウンロードしては、解凍、コピーをくり返してTRX-DUOの電源ONを行いました。起動の青LEDがつかなくて悩みました。できてみると、同じことをやっていてなんでできなかったかが不思議です。
本家本元のアイコンでアプリや設定選択はまだできていません。できるかどうかはこれからです。TRX-DUOのWeb動画ではできていたので、できるのでしょう!これもこれから確認です。誰か、やってみてうまくいった人が情報を出してくれるとありがたいのですが。中華製はあまり手を出さないかもしれませんね。本家本元のPavel-demin氏もTRX-DUOは互換で動作しますか?などの質問に答えていましたが、使わないからわかりません。とはっきりとした回答です。信頼性のないパーツを使ってるとか、安物買いの銭失いだから、本物を買ってくださいの回答でした。そりゃそうですよね?
ただ、世界にはTRX-DUOをうまく使っている人も間違いなくいます。
まっ!今回はお勉強としてのTRX-DUOとしております。Hi!
また、触れませんでしたが、16bitのA/Dコンバーターはドングルとは、やはりランクが桁違い感はあります。ドングルはほんとの入門用、無線で本格的にやるならば、それなりのハードが必要ということですね。
まだまだいろいろと未知の世界なので、ほんとのヨチヨチ第一歩といったところです。受信以外の送信もありますから、まだまだ先が長いです。

つづく?




feed RDA5708Mモジュール50MHz受信器その1 (2024/2/27 7:23:16)
FMラジオの受信用として、とても安い価格のRDA5807Mモジュールをアマゾンで3個のものを注文し入手してあったので、試しにArduinoNANOで50MHzのFM受信機をスケッチし作製してみることにしました。
この価格でも安いですが、以前はこれよりもかなり安かったようです。

rdm5807-amazon

元々FMラジオ用として使用するものですが、データシートを確認してみると、レジスターアドレス03Hの2ビットめ3ビットめの2つのビットの設定でバンドセレクト(各国のFM周波数帯選択)ができるようになっています。下記のなかの11の設定で試してみるという方法で確認しました。結果から言うと、実際の受信できる周波数範囲はバンドセレクトの仕様とは異なり、受信感度も問題なく45.60MHzから119.60MHzと言う仕様よりも広範囲な受信周波数範囲で受信ができました。FMのインプットレンジが全部対応という事です。(仕様ではMIN:50MHzーMAX:115MHz)また、感度も50MHzではS/N=26dBで標準で1.4μV(EMF)という仕様の様です。びっくりです。

00:87-108MHz(US/Europe)
01:76-91MHz(Japan)
10:76-108MHz(World wide)
11:65-76MHz(East Europe) or 50-65MHz

このモジュールの取り付けピッチは2mmで通常の2.54mmのピッチに変換すると
ボードで使用できるので変換用に蛇の目基板を使い変換しています。時間をかけて半田ゴテをあててしまい、1個はモジュール側のメッキ部が取れて半田付けができなくなり失敗してしまいました。注意点として、早めの半田付のテクニックがいるかと思います。Hi!
RDA5708M-1

ArduinoNANOを使いましたがArduinoUnoでも問題なく使用できます。
RDA5708M-FM-ArduinoNANO

50MHz帯は51MHzからFMバンド帯なので起動時の周波数は51.00MHzに設定してあります。
ロータリーエンコーダ1クリックアップ時では、ステップ10KHzで、51.01MHzとなります。
RDA5708M-OLED-Display

今回のアマチュア無線バンドの50MHz帯の受信器の実験の参考にしたホームページは下記です。

愛天堂のAVRベースFMラジオキット[K-FM1602]を50MHzで動かしてみた。

面白いのは、レジスター60Hに書き込むとRDA5807Mで50MHzでも動かせるというものです。この隠しコマンドがあるということで、50MHz帯が受信できるように設定できるというものです。
他、スケッチのフレームとしてロータリーエンコーダ化も必要なので外国のアマチュア無線家 PU2CLR 局が作製してるデータを参考にしました。この局は他のDSPハード(SI4732)でSSB受信化できるライブラリを作った作者で、NETには数多くのDSPライブラリを使用した受信機の制作ページがありました。とても興味をそそる記事がたくさんあるようです。いつか試しにハードウェアを注文し確認してみたいと思います。ライブラリは基本的なもので改良、改変はOKとのことです。Hi! 今回はハードウェアはRDM5807なのでGithubに数多くデータを公開している中の、RDA5807_07_NANO_OLEDを参考に使用しました。また、表示DISPLAYは異なるものでしたので、手持ちのOLEDタイプのSD1306ASCiiのI2cタイプに変更してあります。

pu2clr/RDA5807

今回は単純にロータリーエンコーダーで周波数を10KHzステップで受信する機能のみです。ArduinoNANOにつなぐSWポートのD4、D5、D6、D14、D7の各ポートは設定のみです。スケッチはまだありません。(機能を付けてません。)ハード上追加できる機能としては上記のポートに対応してボリュームUP、ボリュームDOWN、オーディオMUTE、受信信号スキャン、オーディオBASSセットなどがあるのですが、他のハード用(ATtiny84)でしたので、今回の使用のハード用に下記のWireコマンドでソフトウェア設定する必要があります。機能追加するには、RDA5807Mのデータシートを確認しながらテストする必要があります。今後の検討課題としてあります。

Wire.beginTransmission(0x**);
Wire.write(0x**);
Wire.endTransmission();

下記は50MHz帯のFM信号をロータリーエンコーダで10KHzステップで変えて受信するという機能のみのスケッチです。メインとなっているのは、アップダウンのスケッチ部です。
PU2CLR局が使用したハード(ATtiny84)がArduinoNANOと異なるのでスケッチで変えたところはレム化し、残してあります。また使用していない変数設定も一部アリます。Hi!

/*
  Test and validation of RDA5807 on UNO/NANO or other ATMEGA328 based device.
  It is FM receiver with

   Nano and RDA5807 wireup

  Wire up on Arduino UNO, Nano or Pro mini

  | Device name      | Device Pin / Description  |  Arduino Pin  |
  |-----------------------|-----------------------------------|------------ |
  | OLED - I2C        |                                          |               |
  |                           |  SDA                                 |     A4      |
  |                           |  SCLK                               |     A5      |
  | ----------------------|-----------------------------------|-------------|
  | RDA5807           |                                          |               |
  |                           | SDA/SDIO                        |     A4      |
  |                           | SCLK (Clock)                   |     A5      |
  | ----------------------| ----------------------------------|-------------|
  | Buttons              |                                          |                |
  |                           | Volume Up                        |      4        |
  |                           | Volume Down                   |      5        |
  |                           | Mute                                 |      6        |
  |                           | Bass                                 |      7        |
  |                           | SEEK (encoder button)    |  D14/A0  |
  | --------------------------| ------------------------------|-------------|
  | Encoder             |                                          |               |
  |                           | A                                       |       2      |
  |                           | B                                       |       3      |

   By Ricardo Lima Caratti, 2020.
*/

#include "src/SSD1306AsciiAvrI2c.h"
#include "src/SSD1306Ascii.h"
SSD1306AsciiAvrI2c oled;
#define I2C_ADDRESS 0x3C  //0x3C,0x3A

#define FIX_VOLUME 4

#include <Wire.h>
#include <TEA5767Radio.h>
TEA5767Radio rx;

//#include <Tiny4kOLED.h>
//#define RDA_FM_BAND_SPECIAL 3    //!< 65 –76 MHz(East Europe) or 50 - 65MHz(see bit 9 of gegister 0x07)
#include "Rotary.h"

// Please, check the ATtiny84 physical pins

#define VOLUME_UP     4
#define VOLUME_DOWN   5
#define AUDIO_MUTE    6
#define AUDIO_BASS    7
#define SEEK_STATION 14 // A0 = D14

// Enconder PINs
#define ENCODER_PIN_A 2
#define ENCODER_PIN_B 3

bool bBass = false;
bool bMute = false;

volatile int encoderCount = 0;
int encorderCount = 0;
uint8_t seekDirection = 1; // 0 = Down; 1 = Up. This value is set by the last encoder direction.
long elapsedTimeEncoder = millis();

// Encoder control
Rotary encoder = Rotary(ENCODER_PIN_A, ENCODER_PIN_B);

unsigned char frequencyH=0;
unsigned char frequencyL=0;
unsigned int frequencyB;
double frequency=0;
double freq_available=0; //receivef
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;

void setup()
{
  pinMode(ENCODER_PIN_A, INPUT_PULLUP);
  pinMode(ENCODER_PIN_B, INPUT_PULLUP);

  // Push button pin
//#define VOLUME_UP 4
//#define VOLUME_DOWN 5
//#define AUDIO_MUTE  6
//#define AUDIO_BASS  7
#define SEEK_STATION 14 // A0 = D14
 
  pinMode(VOLUME_UP, INPUT_PULLUP);     //D4
  pinMode(VOLUME_DOWN, INPUT_PULLUP);   //D5
  pinMode(AUDIO_MUTE, INPUT_PULLUP);    //D6
  pinMode(AUDIO_BASS, INPUT_PULLUP);    //D7
  pinMode(SEEK_STATION, INPUT_PULLUP);  //D14
  oled.begin(&Adafruit128x64,I2C_ADDRESS);
  //oled.begin();
  oled.clear();
  //oled.on();
   
  oled.setFont(Adafruit5x7);
 // oled.setFont(FONT8X16);
 
  oled.set2X();
  oled.setCursor(0, 10);
  oled.println("RDA5807OLED");
 
  oled.setCursor(0,40);
  oled.println("By PU2CLR   ");
  oled.setCursor(0,90);
  oled.println("Modefy By");
  oled.setCursor(0,140);
  oled.println("  JL7GMN");
  delay(3000);
  oled.clear();
/*
    Reads encoder via interrupt
    Use Rotary.h and  Rotary.cpp implementation to process encoder via interrupt
*/
  // Encoder interrupt
  attachInterrupt(digitalPinToInterrupt(ENCODER_PIN_A), rotaryEncoder, CHANGE);
  attachInterrupt(digitalPinToInterrupt(ENCODER_PIN_B), rotaryEncoder, CHANGE);

// frequency initialize -------------------------------------------------
  frequency=51.00; //starting frequency ABALABLE MIN 45.60MHz TO MAX 119.60MHz
  frequencyB=4*(frequency*1000000+225000)/32768; //calculating PLL word
  frequencyH=frequencyB>>8;
  frequencyL=frequencyB&0XFF;
  delay(100);
//tune set to 0
  Wire.beginTransmission(0X10); //continuous write
                              //no need to specify register
  Wire.write(0X00); // 02h(HighByte02) DMUTE0
  Wire.write(0X00); // 02l(LowByte02)
  Wire.write(0X00); // 03h
  Wire.write(0X00); // 03l TUNE0 ENABLE0
  Wire.endTransmission();

  Wire.beginTransmission(0x60);   //writing TEA5767
  Wire.write(frequencyH);
  Wire.write(frequencyL);
  Wire.write(0xB0);
  Wire.write(0x00);// F0->10
  Wire.write(0x00);
  Wire.endTransmission();

/*
  Wire.beginTransmission(0X11); //normal i2c
  Wire.write(0X05); // specify register 05h
  Wire.write(0X88); // 05h
  Wire.write(0b10001000); // 05l VOLUMExxxx
 Wire.endTransmission();  
*/
 
  //radio.setVolume(15);
  //oled.setFont(Adafruit5x7);
  oled.setFont(X11fixed7x14B);
 
  oled.clear();
  oled.setCursor(1, 0);
  ;
 
  delay(10);
//----------------------------------------------------------
  showStatus();
}



void rotaryEncoder()
{ // rotary encoder events
  uint8_t encoderStatus = encoder.process();
  if (encoderStatus)
    encoderCount = (encoderStatus == DIR_CW) ? 1 : -1;
}

void showStatus()
{
  ;
  oled.set2X();
  oled.setCursor(0, 0);
  oled.println("FM ");

  oled.setCursor(0, 95);
  oled.println("       ");
  oled.setCursor(0, 95);
  oled.set2X();
  oled.print(frequency);
 
  oled.setCursor(75, 75);
  oled.println("MHz");

}

void loop()
{
  oled.set1X();

  // Check if the encoder has moved.
  if (encoderCount != 0)
  {
    if (encoderCount == 1)
    {
      //  seekDirection = RDA_SEEK_UP;
      //frequency=(freq_available/1000000)+0.05; //f=receivef+0.05
      frequency=(frequency+(freq_available/1000000)+0.01); //f=receivef+0.05
      frequencyB=4*(frequency*1000000+225000)/32768+1;
      frequencyH=frequencyB>>8;
      frequencyL=frequencyB&0XFF;   

    //tune set to 0
      Wire.beginTransmission(0X10); //continuous write
                              //no need to specify register
      Wire.write(0X00); // 02h(HighByte02) DMUTE0
      Wire.write(0X00); // 02l(LowByte02)
      Wire.write(0X00); // 03h
      Wire.write(0X00); // 03l TUNE0 ENABLE0
      Wire.endTransmission();
     
      Wire.beginTransmission(0x60);   
      Wire.write(frequencyH);
      Wire.write(frequencyL);
      Wire.write(0xB0);
      Wire.write(0x00);//Wire.write(0x1F);
      Wire.write(0x00);
    //Wire.write(0x88); // 05h
    //Wire.write(0x81); // 05l volulme001
      Wire.endTransmission();
      //////////////////////
      b=100;
    }
    else
    {
    //  seekDirection = RDA_SEEK_DOWN;
      //frequency=(freq_available/1000000)-0.05; //f=receivef-0.05
      frequency=(frequency+(freq_available/1000000)-0.01); //f=receivef-0.05
      frequencyB=4*(frequency*1000000+225000)/32768+1;
      frequencyH=frequencyB>>8;
      frequencyL=frequencyB&0XFF;

    //tune set to 0
      Wire.beginTransmission(0X10); //continuous write
                                    //no need to specify register
      Wire.write(0X00); // 02h(HighByte02) DMUTE0
      Wire.write(0X00); // 02l(LowByte02)
      Wire.write(0X00); // 03h
      Wire.write(0X00); // 03l TUNE0 ENABLE0
      Wire.endTransmission();
      
      Wire.beginTransmission(0x60);   
      Wire.write(frequencyH);
      Wire.write(frequencyL);
      Wire.write(0x30);
      Wire.write(0x00);//Wire.write(      
    // rx.setVolume(15);
    //TEA5767Radio::setVolume(15);0x1F);
      Wire.write(0x00);
    //Wire.write(0x88); // 05h
    //Wire.write(0x81); // 05l volulme001
      Wire.endTransmission();
      c=100;

    }
    showStatus();
    encoderCount = 0;
  }
 
  else if (digitalRead(VOLUME_UP) == LOW)     // D4
   {;// rx.setVolumeUp();
    
   }
  else if (digitalRead(VOLUME_DOWN) == LOW)   // D5
   {;// rx.setVolumeDown();

   }
  else if (digitalRead(AUDIO_MUTE) == LOW)    // D6
   {;// rx.setMute(bMute = !bMute);  

   }
  else if (digitalRead(SEEK_STATION) == LOW)  //D14
  { ; // rx.seek(RDA_SEEK_WRAP, seekDirection, showStatus); // showFrequency will be called by the seek function during the process.
    
    delay(200);
  }
  else if (digitalRead(AUDIO_BASS) == LOW)    //D7
  {;//  rx.setBass(bBass = !bBass);
    
    delay(50);
  }
}

上記のArduinoNANOスケッチで50MHz帯のFMが受信できました。
なおSSGで受信を確認してみたところ、FM受信は仕様上のチャンネルスペースの設定範囲が200KHz,100KHz,50KHz,25KHの中からの設定です。最低でも25KHz間隔です。なので見かけ上スケッチにて10KHz間隔で周波数表示対応できてはいますが選択したスペースで受信されているようです。やはりFM放送受信用ということでしょうか?
FM受信周波数にしてFMラジオとして使うのが一番無難なのかもしれません。Hi!

つづく?



feed RTL-SDR対応HFUPコンバーターとSDR Console V3その1 (2024/2/5 23:33:05)
つい最近また、SDRの世界を覗いたところ64bit対応のSDR Console V3という新しいタイプのSDRアプリがあることを知りました。最初は、HDSDRで29MHzのFMを受信してみたくなったのがきっかけで、ヤフーオークションで重い腰を上げプチっと落札した0から30MHzを100MHzから130MHzに変換するボードを用い、SDRアプリがダウンロードできるようになったWindows10でHDSDRアプリが動作するかを見ていこうと思っていました。Webで今までと違った名前のSDRのアプリ名だったのを控えておいて、ダウンロードできるようになったので、Windows10に実際にインストールしてみました。感覚的な事ですが、プログラム的には、ハム日誌Logger32++のような感じに思えます。それは別として、機能が豊富です。3Ⅾでのウォーターフォールも2画面使用する事を前提に用意されていたり、各バンド事にマルチでSDR画面を設定準備できたりと、いままでのSDRとは違った飽きないほどのフィチャーがあります、Memoryあり、DⅩクラスターあり、Registoryアプリ起動ができたり、録画・再生ができたり、と驚くばかりです。特に対応するSDRハードが桁違いに多いというのもあります。驚いたのは、SDRラジオではよく言われる再生音の遅延に関して、本当に遅延が少ないということです。以前はエコーどころか、地球の裏側からの放送のように遅れて信号が再生されて、リアルタイムの使用には無理なのではと思えてました。今回もHDSDRを使用して無線機からの受信音と比較してみるとやはり遅れて受信信号が再生されています。しかしこのSDR Console V3アプリでの受信信号のAudioの遅延は無線機の受信音と比べてもとても少ないということがわかります。素晴らしいことだと思います。
フォームの下側にはCPU表示がありデュアルコア(2つ)表示されています。audioの再生遅延時間の表示?もあります。
7MHzでの北京放送-中国国際日本語放送を聞いている画面です。

sdr-view

ただ、残念なことに私のWindows10では時々Please Waitの小画面が出て時々クラッシュの発生があります。マウス操作を頻繁にしてると発生する感じです。発展途上ということでしょうか?下記の情報収集画面が表示されます。音声は問題なく再生されていますが、大のFFT波形表示がフリーズしています。左のオーディオ域の小画面の波形は問題なく動いています。作成者の方では、SDR Console画面を出してクラッシュ情報を集めて送れるようになっている様です。

sdr-console

ほか、Paypalでの寄付(Donate)機能もついています。

簡便なドングルでもかなり良く受信できていますので、もう少しグレードアップしたハードのSDRで試してみたいところです。
ドングルで10mFM受信音を確認しましたが、JR‐310のNE567のFM復調音よりSDR ConsoleV3のNFMでの受信音はきれいに復調できているように思えます。(帯域を選ぶ事ができるので,いい音の帯域に合わすことができます。)
ほんのチョットかじった程度なので、SDR Console V3について少し情報を調べてみたいと思います。
別のPCのWindows11ではクラッシュするのかなども確認してみたいと思います。

つづく?


feed IEエッジでダウンロード不可改善方法最終版 (2024/2/5 22:05:20)
Windows10でEdgeを使ってのpdfファイルの保存はプリンターでの印刷をpdfファイルにすることで可能とはなっていましたが、一番ダウンロードしたいプログラムなどは実行ファイルであり、pdf等と種類が異なるため対策にはなっていません。そこで、話は飛びますが、昔よくWindowsファイルが削除できない状態のときに使う魔法のアプリを思い出しました。ダウンロード時のエラーのメッセージはセキュリティアプリがダウンロードをできない検出をした状態であることより、今回のダウンロードには以前使用してたセキュリティアプリのMaccafeeがかかわっていると思いました。まずは最初のステップとして一通りアプリのアンインストールを行いました。が、アンインストールできなくて、PCに居座ったままの状態のMacafee関係のフォルダがありました。残念ながら、ネットで見ても、最終の対策はWindowsのクリーンインストールが良いような回答ばかりです。せっかく有用なアプリインストールしてあるPCをクリーンインストールなんてできません。したくありません。設定を一からやり直すのもかなり大変です。インストールして使用しているアプリの数は相当ありますから!やはり問題となっている箇所を取り除きたいのが本心でそれがベストな方法です。ということで、マカフィー関連の居座りフォルダ内の削除できないファイルを強制削除する方法をとることにしたわけです。
まずは、マカフィーの関連ファイルやフォルダの状況から言いますと、Program Filesのmacafeeフォルダー、Program Files(x86)Macafeeフォルダーの両方(いつまでもアンインストールしたファイル以外のMacafeeの極悪プログラム??)が私のアンインストールの意に反して残り居座っています。商売とは言え、アンインストールの行為はきちんと守るのがメーカーだと思うのですが、この辺りに関しては本当にあきれてしまいます。しかもこのウィルス対策メーカーアプリのせいでダウンロードができない状態が起きているのです。本当にどこかの車屋と同じ感じに思えてしまいます。ダウンロードできないようにしている状態にしていて、自分のウィルスセキュリテイ対策アプリを入れろと言わんばかりに思えます。
ここで居座っているアプリを根こそぎ削除する魔法のアプリの正式プログラム名は、unlocker.exe の登場です。ただし、フォルダ指定で全部の中身を削除とかはできないので、1ファイルずつ消すしかありませんがめぼしい拡張子を優先に削除してゆきます。今は昔とちがう別の便利なフォルダ内のファイルを全部強制削除できるアプリができているかもしれません。調べてないので不明です。あれば便利ですHi!
昔のunlocker.exeもWindows10で動作してくれました。

Windows10でのアイコンです
unlockerIcon

起動時のUnlockerのフォームです。

ここからWindowsのProgramFiles(x86)、ProgramFilesのなかのマカフィー関連のフォルダの中のファイルを開き、削除してゆきます。
unlocker起動


今回はこのアンインストールしても残っているMacafee関連のフォルダのなかのDLLライブラリ、実行ファイルを主に削除することで元通りにアプリもダウンロードできるようになります。ただ、フォルダの中身が膨大なファイルがあるので、目星をつけて実行ファイルとDLLライブラリ関係を削除しています。今回は全ファイルは削除していませんが、Program Filesのなかのmacafeeのフォルダの中の一部のファイルがダウンロードをできないようにしていました。今回は、昔のハードディスクの中にダウンロードしたUnlocker.exeがあったのでコピーしてWindows10で実行しました。どこかのフリーアプリでダウンロードできるようになっていると思います。挑戦してみてください。ファイルを指定して通常の削除でも削除できなかったファイルを Deleteにしてからボタンできれいに削除できます。私のWindow10がつい、昨日ですが、今までダウンロードできなかったアプリがダウンロードできるようになりました。完全復旧しました。生き返ってほっとしています。

つづく?



feed JR-310プチレストアその36 (2024/1/5 6:05:53)
トーンデコーダー等でよく使われるNE567NによるFM復調回路のWEB情報より実際に回路を作製し実験をしてきて、ある点で勘違いしていたことがわかりました。思い込みといいますか、PLL LOCK/UNLOCKに関してです。NE567Nの8番ピン端子にPLLがアンロック時パルスが出てきますが、今回のFM復調回路として使用する場合は、出力はでてきません。と言うか、常にロック状態で使用するため、最初に調整ロックしてしまえば、ずーっとそのまま”L”レベルでロック動作したままでいます。これをキャリア信号が入った時にロックし、キャリア信号がなくなった時にアンロックすると勘違いしていました。455KHzの信号は常にJR-310よりきていますから、ある程度のレベルでNE567Nの入力端子に入り最初にVRでアジャストロックさせます。受信信号があろうが、なかろうが455KHzのIF信号は有るのでロックします。
添付の動画の左側のNE567NのPLL LOCK/UNLOCK LEDはロックして常に点灯したままです。Hi!
ということで、8番ピン端子は”L”レベル時のロック安定状態表示確認用として利用するもので、今回のようなスケルチとしては使用出来無いということです。やはり、キャリア信号が有るなしの判断するスケルチ回路が別途必要と言う事になります。

ということで、新たにスケルチ回路を組む事にしました。新たに組むと言っても以前のワイス検波回路で使用したものとほぼ同じ回路になります。前の回路に455KHz用のトランジスタのIF-AMPを1段追加しました。3段のIF-AMPの2段めのトランジスタのコレクタからNE567Nの入力端子3番ピンにコンデンサを通してつなげています。まずは、結果から言いますと、実験により確認したNE567NによるFM復調はとても簡単で素晴らしいです。全く問題ありません。うまく復調してくれています。昨日は中国の29MHzの信号が出ていたので確認しましたが、とても良く復調してくれました。SSGでなく、実際の信号の方が回路の確認には都合がいいです。なお、NE567Nは電源は5Vで動作させています。

【NE567NのFM復調とスケルチを確認したときの動画】



ボードに作製したNE567NのFM復調回路とスケルチ回路
NE567N-FM復調-SQ
ワイス検波のようなIFTコイルがないので、本当にIC化されたFM復調回路はシンプルです。
回路の調整は動作時のLOCKのみです。他の調整は無いので、とても楽にFM復調が出来ます。とても感激しています。今回のJR-310にFMモードを追加するには最適なNE567NのFM復調回路と思います。SQ回路は様々ありますが、ワイス検波で使用したものの実績が有るので、同じ回路構成にしています。

回路図もCAD(EAGLE)で作製しました。パターンはまだ作製は行っていません。若干の回路の変更を予定しています。スケルチは基板外の取り付けしたVRにてメイン調整できるように回路変更の確認を行ってからの予定でいます。
FM-DETECTOR-NE567

スケルチ動作用のミュート機能で使用している4016は1回路しか使用していません。少しもったいないですが良しとしてます。

つづく?


feed JR-310プチレストアその35 (2023/12/16 11:33:52)
以前にJR-310プチレストアその12で検討してたトーンデコーダー用ICのNE567を使ったFM復調回路を再度使用出来ないか確認してみました。以前はロックの状態が外れるときに出力にノイズが出る現象があり採用はしませんでしたが、今回少し対策を取れないかを含めて最考してみることにしました。ワイス検波を採用していますが、回路的には、コイルがない分調整を含めてNE567のICの方が作製が楽な為でもあります。
対策はロックが外れるとき、または外れた時に矩形パルスが8pinから出力されます。この状態のときにNE567のFM復調出力から変調信号にパルスが乗ってノイズ音になります。8pinのロック出力を使いロックはずれ時のノイズ出力を閉じる対応をするためにアナログSWのゲートICでコントロールする方法です。
8pin出力の矩形波を単純に積分してやり平滑化により、トランジスター石でスィッチングを行います。SWした出力はゲートIC4016のSWでNE567のFM復調出力をON/OFFします。また、ON用とOFF用表示のLEDを付ける為もう一石トランジスタスイッチング回路も付けました。
一般に使われるスケルチとは違って、信号があると出力が出て、ロックが外れかかると出力が遮断されると言う動作なので、ノイズの出ないFMチューナー的な動作に近いかもしれません?信号が弱いときはロックがかからず矩形波が出力されるので、FM出力は遮断されたままとなります。なので、周波数を固定した待受受信での使用に適しているかもと言う感じです。信号がない時のノイズが聞こえないので、ダイヤルを回してチューニングするには向いてないかもしれません。
実際のサンプル回路を作製しました。FM信号でロックかかる時と外れる時のFM信号をSSGで出してチェックしていますが、うまく動作してくれています。

NE567-FM

NE567-FM-DET

JR-310につないでの確認も後で行いたいと思います。

このFM復調回路ではVFOをチャンネル方式にしたほうが良いかもしれませんね。

つづく?


続きを読む

feed JR-310プチレストアその34 (2023/11/27 7:50:24)
JR-310の中間周波トランスのIFT2の基板に半田付けする端子折れを修理して、受信感度の低下現象が再発するかの確認結果です。
感度を最大状態になるようにIFT類を調整した後に電源を落とし、2、3時間後に感度変化が無いことを再度確認した上で、電源を落とし、次の日に再確認ということです。
次の日の確認ということで、電源を入れて確認しましたが、感度の低下は全くおきませんでした。やはり、間違いなく端子折れによる感度低下現象と断定した内容の通りの様です。

修理後の受信感度は、今までと違い、明らかに感度も上がったと分かるほど、また、バンドがにぎやかに感じるほどに良くなりました。確認はちょうど良くCQ WW DX CONTEST CWが行われていたので、7MHz、14MHz、21MHzと3バンドでの確認です。やはり、高いバンドの21MHz での感度がかなり良くなっています。14MHzにあたっては7MHzではないかと思えるようなバンドの受信状態となりました。

話は、上記のIFT2の端子折れ修復の確認結果から別の話にかわるのですが、それは6BZ6を使った高周波増幅(RF)の真空管回路について少し変更を行ってみようという内容です。きっかけは、八重洲無線の真空管タイプのトランシーバーの回路を見ていて、同じ6BZ6を使用しており、カソード抵抗値が、JR-310は220ΩでRF GAIN用VRでゲイン調整しているのですが、八重洲無線の6BZ6のRF回路では56Ωです。試しにJR-310の方のカソード抵抗を56Ωを並列に220Ωに鰐口クリップで追加してやったところ信号がSで3つ4つアップしました。さらに試しで上記の56Ωを220Ω並列に付けた6BZ6のカソード側に1KΩのVRをセンターグランドにして、感度の変化をVRを回して見たところちょうど感度アップとSメータの調整状態が良いと思える時のVRの値が79Ωでした。VRの変わりに82Ωをつけてグランドに落とすと、VRのときとほぼ同じ感度でOKです。これはカソードに抵抗が入った状態ですがさらに直接6BZ6のカソードをグランドに落とすと、びっくりするぐらい感度が上がりました。他の6BZ6を使ったRF回路でもカソードをショートの使い方をしているものもありました。今時のトランシーバーの受信プリアンプをあたかもONしたのと同じ感じがするほど感度upします。ということで、カソードをグランドに落とす細工をJR-310で対応させようという改造をしようと思いついた次第です。このカソードを落とすのは14MHz以上のバンドで用います。7MHzだと56Ωと82Ωグランドへ落とす設定で感度は十分のようです。強力な局の信号ではメーターが振り切るぐらいになるため、カソードをグランドへ落とす(82Ωをショート)必要はないということです。
この改造をするに当たりJR-310本体を見てみるとAFボリュームに配線されてないSWが付いています。JR-310にはAFのVRにCAL MARKER用SWが付いています。MARKERはオプションですが、付いていない為、このSWを利用する事にしようと思います。プル(引っぱって)でSWが入るので、82Ωの抵抗にSWをパラに接続し、プルでショート配線にします。ショートでは6BZ6のカソードがグランドへ落ち(82Ωをショート)最大の感度状態となります。とても今まで感度が悪いと感じていたJR-310が息を吹き替えしてきたと思えるといっても過言では無いと思います。FT-2000Dと同じアンテナで同じ21MHzで出ている局の信号を比較したところJR-310も同じ様にSメータが振れました。感度でも全く引けを取らない感じでびっくりです。
6BZ6はTVの周波数帯の高周波増幅で活躍していた真空管であることが納得出来ます。50MHzの周波数の高周波増幅も、なんのそのと言う事だと思います。

一通り6BZ6のカソードをグランドへショートした状態での、付属の50MHzのコンバーターの受信感度も確認しました。簡易的にSSGの信号を使い各バンドとの受信感度の比較確認です。14MHz、21MHz、28MHzでの受信時と同じ様に50MHzもSメータが振れ十分に感度は取れていました。

なお、実際の配線に使うケーブルですが、RF回路の6BZ6のカソードからの配線の確認で使用したのは、鰐口クリップのケーブルで30cmほどですが、VRのSWの辺りまで、引き回しても、他の位置へ動かしたりもしましたが、特に感度への影響は出ませんでした。配線用線材は、3.5Φのオーディオ用プラグ等で使用されている2芯のAF用ケーブルがあったと思うので探して、これを使おうと思います。

1つだけ、機能が少しかわってしまった事があります。上記の6BZ6への回路を追加することによりSWオン時のRFのゲイン調整ができなくなるということがあります。SWオフ時は若干の感度調整ができる程度になってしまいます。ローカルの強力な信号などの信号受信では信号が強すぎて、感度調整が出来ないケースもありえます。その場合の対策として追加回路を付けたり外したりのSWを入れる方法があります。82Ωとカソード間に別途SWを付けて、従来のRFゲイン調整で行う方法です。
上記の強力な信号時の話はあくまでも推定した内容なので、実際に不具合や、問題が起きたときに考えることにしたいと思います。
今は、JR-310で、14MHz等、上のバンドのワッチをして、プルオンプルオフでの受信感度の変化での信号の受信状態をみようと思います。

つづく?

feed JR-310プチレストアその33 (2023/11/25 23:08:14)
JR-310の第1局発周波数発生のキャリア周波数はクリスタルの代わりとなるDDS(ArduinoNANO)
で代用しています。このDDSの電源は、JR-310に組み込見した状態では、パソコンのUSB端子へ電源供給として接続し動作させていました。実際はWindows10のデスクトップPCです。ArduinoNANOのスケッチはLinux(Ubuntu22.04.3LTS)でのUSB接続です。プログラム(スケッチ)開発はLinuxで行っています。Windows10にUSBケーブルでつなぐのは汎用性にかけるので、ArduinoNANOへの電源供給方法を模索していました。今まで、JR-310のAFアンプの6BM8のカソードの電圧DC10Vを電圧変換レギュレータでDC5Vにダウンバードして使用を試みたりしましたが、JR-310の電源を入れてからのじわじわ真空管が動作するまでに電圧が発生しないことや、電圧レギュレータ自体が入力側の電流不足からDC電圧の5Vを供給できなかったりとうまく行っていませんでした。つい最近、USBでの充電用としてダイソーで売られているアダプターを買っていたことを思い出し、i-phone用1USBとAndroid用1USBとAndroid用2USBを引き出してきてDDSへつないでDCアダプタとして使用できるかを確認してみました。
IPHONE-CASE1

■i-phone用のDC出力基板
IPHONE-DC5V

■基板は挟んでいるだけなので、取り外しは簡単にできます。
ANDROID-CASE1

ANDROID-CASE2

ANDROID-CASE3

i-phone用1USBとAndoroid用1USBはほぼ同じ回路構成のようです。i-phone用は壊れているのか、端子が違うのか?電圧5Vが出てないようで動作できませんでした。Andoroid用1USBのDCアダプタからArduinoNANOのUSBでの接続ではDDSがうまく表示され、動作も問題ありませんでした。
ところが、写真は取り忘れてありませんが、Android用2USBではArduinoNANOが2箇所のUSBでは液晶が表示だけはしましたが、入力コントロール等一切動作しない状態のままでした。結果より、Android用1USB端子のアダプターを分解して、JR-310に組み込みすることにしました。

■JR-310の電源トランスのAC100Vに並列に接続です。
2mmの銅線でトランス端子へ半田付けしてます。
(銅線は硬いので、基板は固定されています。)
JR-310の電源SWを入れるとDC5Vが発生
ANDROID-CONECT-TRANS

■基板の裏面の、IC、整流器、各小型チップ部品とパターン
ANDROID-DC5VPCB

■基板のJR-310への組み込み状態(スペースが十分有るので取り付けは楽にできます。)
安全の為に一応セルロイドのカバーでも後で付けたいと思っています。
ANDROIL-DC5V-SETTING

上記のUSBアダプタからのDC5V供給でArduinoNANOは無事動作する状態にて組み込みできました。
今までPCへ接続していたケーブルがJR-310内部組み込みのDC電圧供給のUSB接続に変わり厄介な線がなくす事が出来ました。ダイソーのアダプターも大活躍です。Hi!

つづく?