エントリー

Si4732レシーバー(ATS-20+)のファーム更新

Si4732レシーバーキット(ATS-20+の名称で製品がある)のファームを更新した

更新している方が多くいるためか参考サイトは沢山ある(YouTubeにもあった)

購入時のファームウェアバージョンはV1.1.5

IMG_20230526_095541.jpg

Arduinoの開発環境はあるのでファームのスケッチをDL(こちら

DLしたZIPファイルをIDEで展開する方法もあるが,バンド設定など変更したい部分もあるのでスケッチを手動で取り出す

現状の最新スケッチは「展開したフォルダー¥SI4735-master\examples\SI47XX_KITS\AliExpress\SI473X_ALL_IN_ONE_OLED_RDS_CHINESE_V8」

SS20230526_001.png

IDEでボードは「Arduino Nano」を選択

SS20230526_006.png

プロセッサは「ATmega328P(Old Bootloader)」を選択

SS20230526_007.png

新たに必要となったライブラリは3つ

コンパイルすればエラーになるので対象をライブラリマネージャーで検索してインストール

  • SI4735

SS20230526_002.png

  • Tiny4kOLED
  • TinyOLED-Fonts

SS20230526_003.png

コンパイルするとコードが29344bytes,データが1448bytesというギリギリサイズ

SS20230526_004.png

ファームをArduinoNano書き込んで再起動

IMG_20230526_103224.jpg

V3.0.8になったことを確認しEEPROMをクリアするためロータリーエンコーダのボタンを押しながら再度電源ON

IMG_20230526_103445.jpg

画面の表示構成が変わった

(旧:V1.1.5)

IMG_20230526_095549.jpg

(新:V3.0.8)

IMG_20230526_103204.jpg

各設定もボタン押下によりダイレクトに変更されるのではなく,ボタンを押して変更モードにしてロータリーエンコーダを回すという感じとなった

個別対応

ファームに手を加え自分の趣味に合うよう変更

今日スケッチを観たところなんで簡単にできるところから対応する

  • バンドが多すぎるので日本向けに変更(下記表)
  • 周波数変更のステップを修正 → 5kHzと50kHzを削除
  • 周波数表示の「,」カンマと「.」ピリオドを変更 → FMの「,」は「.」に修正,WM,SWの「kHz」のカンマは無し
  • ボタンを押して変更モードが扱いにくい → 10秒ほどで自動解除されているのを2~3秒にした
  • 再表示が多いので変更のない再表示を止めた → 最適化により画面の乱れが軽減し(OLEDへの描画は遅いので)ロータリーエンコーダの操作性も向上

(バンド)

バンド名 開始周波数(kHz) 終了周波数(kHz) デフォルト周波数(kHz) バンド(m)
WM 531 1602 1000 MW for JAPAN
SW1 3500 6300 3798 75~49
SW2 7000 7600 7100 41
SW3 9200 10500 10000 31~30
SW4 11600 15800 14175 25~19
SW5 17400 19100 18118 16~15
SW6 21000 26100 21225 13
SW7 26900 30000 28850 11(CB)~10
FM 76.1MHz 94.9MHz 90MHz FM WIDE

(周波数表示)

IMG_20230527_145830.jpg

IMG_20230527_150030.jpg

(操作性)

ボタンを押下してロータリーエンコーダを回すのは使いにくいので全面的に変更を検討

ロータリーエンコーダはカウント数の多い物に変更しないと操作改善は困難(マウスと同じ)

(その他)

Sメーターがいまいちなので改造したい

 

3Dプリンタカバー(下段)と丸鋸スライド台の作製

冬季に3Dプリンタカバーあった方が良いなぁと思いながら寒くて作らなかったのをようやく着手することにした

どんな構造にするかで

  • カバー内部の温度調整可能に
  • プリント中の物が直視できるように
  • プリントした物が簡単に取り出せるように
  • 構造を簡潔に

を,クリアできるような構想だけは考えていて3Dプリンタカバーの主の目的はヒートベッドの保温で夏季の場合は必要ない場合もあるので上下2段にして上を取り外し可能にする形にすることにした

3Dプリンタカバー(下段)

材料はNOAAの台で使うつもりだった木材が余っていたので利用

IMG_20230520_145017.jpg

必要なサイズに切って組み立て(下段のみ)

接着やダボでは弱いので金具で止めた

IMG_20230521_192857.jpg

高さ調整用の脚先は「つめ付けナット」を使用(後で他でも使うことがあったので「鬼目ナット」の方が良かったかなっと)

IMG_20230521_192911.jpg

脚先は(何かで)余っていた物を利用しようと思っていたらビスのピッチが違って付けられないことが判明

仕方ないので購入しようとしたら意外と高い(安い物でも約300円/個)→ コーナンにて,別店舗や他店で探せばあるかも

なので,3Dプリンタで作った(購入したのはM5‐30㎜皿ネジ4本セット)

IMG_20230521_194617.jpg

まずは下段が完成

IMG_20230522_181139.jpg

丸鋸スライド台

拙者はブラックアンドデッカーのマルチツールを利用

丸鋸も使っていて前に丸鋸ガイドを作った(この時

IMG_20230522_104946.jpg

今回も利用しようとしたが,この丸鋸ガイドでは棒状の木材を切断することができないことが判明

なので急遽,丸鋸スライド台を作ることにした(丸鋸スライド台の自作はYouTubeで沢山紹介されている)

マルチツールの丸鋸のサイズは100×180㎜でコンパクトな鋸のため切断サイズは21㎜厚となる

IMG_20230522_103636.jpg

材料は底板500㎜×250㎜(200円)をダイソーで購入

他はアルミアングル1㎜×12㎜,角材1×1×6(約18.8㎜角),木ネジ

IMG_20230522_105036.jpg

YouTubeの参考ビデオのお陰でサクッと完了

IMG_20230522_132310.jpg

切り口も入れ試し切りも兼ねて3Dプリンタカバー(上段)用の縦棒を作製

IMG_20230522_140555.jpg

厚みの制限が19㎜ではあるが便利になったかな

(追加:2023.5.24)

丸鋸スライド台にニス(けやき)を塗って45度カットガイドを付けた

IMG_20230524_160554.jpg

(※)けやきのニスって塗った時はいまいちだけど乾くと良い色になる

ついでにジグソーガイドも作製したのだが・・・

IMG_20230523_090421.jpg

材料が以下

IMG_20230524_130848.jpg

ほとんど完成したところ

IMG_20230524_160629.jpg

上板と下板を上下逆でジグソー歯を通したため歯の位置がズレてしまい,なんとか調整しようとしたら縦に割れてしまった

横板を付けて補強していなかったのが失敗

後日,再度作製することにする

nRF24L01のループバックテスト

かなり前に購入して使わなかったnRF24L01(無線モジュール)の利用価値を確認するためテストした

Arduinoで直接nRF24L01ボードは扱いにくいので3.3V降圧付きのソケットを購入

IMG_20230518_111254.jpg

(左)nRF24L01ボード(右)ソケットアダプタ

8ピンソケットに刺して利用すると感度も良くなるらしいがどうだろう?

IMG_20230518_111338.jpg

接続方法など「無線モジュールnRF24L01を使いArduino間で無線通信をやってみる!」を参考にさせていただいた

使用するためのライブラリは(こちら),メソッドの仕様は「RF24 Class Reference」にある

LED点灯にて送受信確認

まずは参考サイトのとおりボタン押下を通信しLED点灯を行い動作を確認

IMG_20230518_131551.jpgIMG_20230518_144502.jpg

(左)送信側(右)受信側

消費電力

IMG_20230518_171959.jpg

UNO込み5Vで最大20mAのようだ(送受信で10~20mAを変動)

ループバックテスト

無線なんでどのくらいの距離を通信可能か確認したいこともありループバックでテストした

ループバックテストとはメインとスレーブとしたら,メインがスレーブに送信,スレーブが受信したデータをメインに送信(返送)してメインがデータが同じであることを確認する昔からある簡単かつ確実な通信確認(エコーバック,ピンポン手順として通信で利用されることも)

尚,Arduinoで送受信できることは問題ないようなので受信側はATtiny85を使用してみる

(送信側スケッチ)

#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

#define TIMEOUT 200

RF24 radio(7, 8); //CE,CSNピンの指定
const byte sendAddress[6] = "00001";  //送信アドレス
const byte backAddress[6] = "00002"; //受信アドレス

const byte sendData[] = "0123456789abcdef";

void setup() {
Serial.begin(9600);
Serial.println("loopback test begin");

radio.begin();
radio.setPALevel(RF24_PA_MAX); //出力(RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX)
radio.openWritingPipe(sendAddress); //データ送信先アドレスを指定
radio.openReadingPipe(1, backAddress); //(0-5), データ受信アドレスを指定
//0は書き込みパイプと共有となるのでなるべく受信パイプは1-5
}

void loop() {
byte data;
int n, tm;
boolean retry;

for(n = 0; n < sizeof(sendData) - 1; n++) {
retry = true;

do {
delay(5);
radio.stopListening(); // 送信側として動作
radio.write(&sendData[n], sizeof(byte));

delay(5);
radio.startListening(); // 受信側として動作

for(tm = 0; tm < TIMEOUT; tm++) {
if(radio.available()) {
radio.read(&data, sizeof(byte));
if(sendData[n] == data) {
Serial.print(" -> back: ");
Serial.println(data);
retry = false;
} else {
Serial.println(" -> error");
Serial.println("retry");
}
break;
}
delay(5);
}
if(tm >= TIMEOUT) {
Serial.println(" -> time out");
Serial.print("retry");
delay(200);
}
} while(retry);

delay(2000);
}
}

(受信側スケッチ)

// ATMEL ATTINY85 / ARDUINO
//
// +-\/-+
// RESET PB5 | |8 VCC
// ADC3 (D3) PB3 2| |7 PB2 (D2) ADC1
// ADC2 (D4) PB4 3| |6 PB1 (D1) PWM1
// GND 4| |5 PB0 (D0) PWM0
// +----+
//
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>

RF24 radio(3, 4); //CE,CSNピンの指定(D3, D4)
const byte sendAddress[6] = "00002"; //送信アドレス
const byte recvAddress[6] = "00001"; //受信アドレス

void setup() {
radio.begin();
radio.setPALevel(RF24_PA_HIGH); //出力(RF24_PA_MIN, RF24_PA_LOW, RF24_PA_HIGH, RF24_PA_MAX)
radio.openWritingPipe(sendAddress); //データ送信先アドレスを指定
radio.openReadingPipe(1, recvAddress); //データ受信アドレスを指定
}

void loop() {
byte data;

delay(10); //これがないと正常に送受信しない
radio.startListening(); //受信側として動作
if(radio.available()) {
radio.read(&data, sizeof(byte));
delay(10); //これがないと正常に送受信しない
radio.stopListening(); //送信側として動作
radio.write(&data, sizeof(byte));
}
}

(結果)

ATtiny85側のsetPALevelを最高のRF24_PA_MAXにすると処理が追い付かないのか通信不良となるのでRF24_PA_HIGHにした(送信側はRF24_PA_MAX)

場所(受信側) 距離 通信 結果画面
見通し 3m 良好
見通し 7m 良好
隣の部屋 5m SS20230519_room.png
2つ隣の部屋 10m 不可 SS20230519_2_room.png
1F-2F 5m(直線) SS20230519_1F-2F.png
10m以上 不可 SS20230519_outside.png
備忘録

(ATtiny85のスケッチ書き込み)

IDE2.XだとArduinoISPで書き込む場合「→」では書き込めなくなっていた(嵌った)

「スケッチ」→「書き込み装置を使って書き込む」を実行

SS20230519_001.png

(ATtiny85との結線)

IMG_20230519_103328.jpg

ATtiny85では全てのピンを使用してしまうため利用するのは厳しそうだ

(ArduinoUNOとの結線)

IMG_20230518_180618.jpg

室外設置用マグネチックループアンテナの改良

前回作製した(アルミパイプ使用の)改良マグネチックループアンテナが落ち着いたので室外設置用マグネチックループアンテナの作製に取り掛かった

当初,電材を用いて直径1mのループ(エレメント3m)にするつもりだったのだが,ループ補助に使用する予定のPF菅では固さの関係で1mは厳しそうなことが判明

補強材を十字やクロスで追加すれば良さそうに思えるが風の影響が心配で,風量による強度確認するのも手間なので他の方法を考えた結果2重ループ(エレメント4m)にすることにした

エレメントが2重になっても遜色ないことは確認,またエレメント間に隙間が必要かと思いPF菅も2重にすることを考えていたが,これも気にするほどではないことを確認(PF菅は1重で済むので風の影響も増加しない)

設計1

アルミパイプ版と同じ構成では意味ないしつまらないのでエレメントから直接トランス(トロイダルコイル)を通して給電することにした

MLA構成1.png

トロイダルコイル(FT82 #43使用)は24T:2T

IMG_20230514_145030.jpg

電材のボックス,PF菅,VE菅を利用して骨組みを構成

IMG_20230514_162900.jpg

エレメントはKIV3.5sqを使用

線はPF菅(間に上部ボックス)に2本線を通しどこかでクロスされている

線端の4点は下部ボックス内でボルトで止め上側は導通(もしくはコンデンサで補正)させ下側は給電トランスへ

IMG_20230514_172613.jpg

測定器でインダクタンスを計測してみると約1mHって,でかい・・・あっと当然か

IMG_20230514_210749.jpg

nanoVNAで見てみると124MHzで同調が深い

IMG_20230515_105050.jpg

IMG_20230515_105241.jpg

1mHでは計算上でも1~50MHzの範囲を調整することができないので先にインダクタンスの調整が必要

実際に使用してみて7-10MHzあたりはほとんど受信できないし,この構成は調整が大変そうなので没とした

設計2

Max.200~400pF位で7MHzを同調させたいのでインダクタンスは10μH位が望ましい

今度はインダクタンスが最小となるようエレメントをトロイダルコイルに通すだけ(1T)にした

MLA構成2.png

給電側は7T(参考:http://ja1xrq.g.dgdg.jp/MLA/MLA.html

手持ちに太い線が無かったのでボルト間のみ5.5sqにしてトロイダルコイルを(FT50 #43)に変更(8Dの同軸でもあれば良かったのだが)

IMG_20230515_135025.jpg

ボックス内にはトロイダルコイルが小さくなったため空きスペースが多く取れるように配置

IMG_20230515_141042.jpg

インダクタンスを計測してみると理想的な12μH

IMG_20230515_141622.jpg

自作計測器でも測定し7.1μHなのを確認

IMG_20230515_150834.jpg

nanoVNAでは何故か平坦(大丈夫なのか?)

IMG_20230515_195304.jpg

複数個のコンデンサを繋いでみて同調周波数を確認すると,220pF:3.54MHz ~ 5pF:10.53MHzとなった

47pFを接続して7MHzを受信できたのでこの構成で進めていくことに決定

同調回路

同調にはバリキャップ(可変容量ダイオード)を使用することを考えていて1SV149(1V:483.5~495.6pF)もしくは相当品が必要なのだが既に入手が厳しい

日本でも入手できない訳ではないようだが送料など含めると高価な買い物になるのでAliexpressで注文(10本で送料込み¥360)

以下の様に基盤を置き部品を実装する予定

IMG_20230516_113009.jpg

バリキャップが届くまで暫くかかるので操作や電源確保手段の検討とアンテナは7MHz固定として試用してみようかと考えている

(追加があれば下側に同じボックスを追加できるのでスペースはまだ確保できる)

設置用器具

試用するにしても設置用の部材がいるので裏面にUボルトを取り付けた

IMG_20230516_113034.jpg

7MHzに合わせるために60pFのトリマーコンデンサを銅線で引っ掛ける程度にするため準備

IMG_20230518_111020.jpg

接続して調整

IMG_20230518_203929.jpg

アルミパイプ版と比べてみて遜色ないようだ

後は防水対策を施し設置予定

試用

防水用のコーキングができたので設置してHDSDRにて試用受信

IMG_20230520_150823.jpg

前作と比べてみると7MHzでの受信感度は上がった

HDSDRにて受信強度が7MHz(±100kHz)を中心に向上しているのが判る

WS20230520_001.png

ユーティリティ

検索

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

過去ログ

Feed