nobcha23のエアバンド受信機自作ブログ DIY airband receiver BLOG

エアバンドレシーバーキットの組み立て、改造を手掛けます Assemble and remodel Chinese airband receiver kit

Si4732使用エアバンド受信機でのArduinoメモリー使用量 To reduce memory usage of Si4732 receiver

Si4732を親受信機に、TA2003フロントエンドにSi5351aモジュールを局発として付加したエアバンド受信機をArduino制御で設計試作しています。ブロックダイヤグラムは次の通りです。 I’m designing the airband receiver with TA2003 as a frond end, Si5351a as a local oscillator, and Si4732 as a mother receiver. The block diagram is below.

 

ブロックダイヤグラム



 

試作のレパートリーとしてまず手掛けたのは1602AのLCD16文字2行表示バージョンです。そして、次に取り掛かっているのはOLED128x64ビット表示を使ったものです。なぜOLED表示にこだわっているのかと言うと、出来上がり基板を88x38x70のアルミケースに入れようと思っているからです、表示素子が小さくないといけません。ところが、OLEDをADAFRUITSのライブラリー使うとメモリー不足になってしまいました。このメモリー不足で困るのは、コンパイル通るが、デバッグ時に、実行時メモリー割り当てできず、黙ってストールする言うパターンです。混乱するのは「コンパイルは通ってるのに、なんでやねん」というものです。
At first I used 1602A LCD to be easy to convert the sketch. And next I changed  OLED display for its tiny size to be installed in the aluminum case. This one is tiny but consumes Arduino memory. I have been annoyed that there is insufficient memory on the way of working. Compile is OK, but it can not work actually. Very confusing.

OLED表示はJCR引用、Si5351aはGITHUBのetherkit、Si4732はGITHUBのPU2CLRと言うような具合にスケッチを作り始めました。ところが、メモリー使用量が90%を超え、これではプロセッサを変えないといけないのか、Jasonさんが言うにはOLEDの軽いモジュールにするのかという選択になりました。あんまりメモリーを食いそうでないSi5351aのライブラリーですが、別な理由もありTJ研究所のスケッチに変えてみました。するとなんと使用メモリーが大幅に減りました。次の表のような結果です。
For this sake I diverted JCR sketch asd combined etherkit/Si5351a and PU2CLR/Si4732. Mr. Jason adviced me to change OLED module to smaller one. This time I happened to change Si5351a mojule to TJ lab's one and got back large size memory.

memory usage of Si4732 receiver

 

CesarSound OLED表示VFO
https://projecthub.arduino.cc/CesarSound/10khz-to-225mhz-vforf-generator-with-si5351-version-2-acdc25

etherkit / Si5351Arduino  Jason milldrum
https://github.com/etherkit/Si5351Arduino

PU2CLR Ricardo Lima Caratti 
https://github.com/pu2clr/SI4735

TJ lab. Dr.Uebo
https://tj-lab.org/2017/03/13/si5351/

 

tinySA ULTRAのSignal generatorを使ってみる  Used the signal generator of tinySA ULTRA

Si4732を親受信機に、TA2003フロントエンドにSi5351aモジュールを局発として付加したエアバンド受信機を設計試作しています。ブロックダイヤグラムは次の通りです。

 I’m designing the airband receiver with TA2003 as a frond end, Si5351a as a local oscillator, and Si4732 as a mother receiver. The block diagram is below.

 



ブロックダイヤグラム

 

 

この受信機のデバッグに、この受信機のPANELを独立させて作ったRF信号源が活躍しています。 For debugging this receiver I used RF signal generator diverted the panel portion of the receiver.

RF generator


PANEL部信号源

 


しかしながら、感度評価には出力レベル可変な変調信号が欲しいですね。 However to tune the radio I shall prepare the measurement tool.


そこで、tinySAに信号発生器機能が付いているのを思い出しました。この際手持ち受信機も並べて、簡易感度測定比較をやることにしました。

I remember that there is furnished the RF generator with tiny SA. I will compare the radios of my holding.

 

受信機のレパートリーですが、中国製アナログ受信キットのArduino制御デジタル化版、R80キット、R909キット、HRD-737がありました。tinySA ULTRAのSignal generatorモードで118.1MHzを1000HzAM変調かけて受信性能を味見しました。ここでまとめた感度は耳感度なので、追ってもう少しまともに測るべく治具を考えます。


There are the Chinese kit remodeled, R80 kit, R909 kit, and HRD-737. The result of comparison is below. I measured the value as conviniently. I shall try to make the jigs to get more precise value.

Radios and tinySA

RADIO各種

 

比較表

 

R80がコミュニケーションレシーバーに追いつく感度。他はいまいち。今回試作中Si4732型はちょっと実用性がないレベルです。感度アップが必要。


R80's sensitivity is soso, and the others are too low. R909-SDR is too low. I shall improve.

 

youtu.be

 

基板の製作についてPCBGOGOの協力を得ました。

www.pcbgogo.jp

メルカリでも売ってます

Si4732を使ったエアバンド受信機の実験中―まずは受かりました  R909-DSP receiving

Si4732を親受信機に、TA2003フロントエンドにSi5351aモジュールのLO組み合わせエアバンド受信機を設計試作しています。Arduinoを積んだATmega328PとOLEDやスイッチ類はパネル部基板、Si4732toSi5351aなどがRF基板に配置されています。パネル部基板はVFOとして実験済。

現在RF基板のデバッグ中です。

Si4732部が動き、続いてTA2003の不具合点も判明、残るはフロントエンドのフィルターになり調整してみました。

フロントエンドのフィルターはとりあえず簡単に動かすため、2段スタガーで行きます。ストレー容量を考慮しない定数(120nH/12pF:130MHz)をスタートに、コンデンサ入れ替え、nanoVNAを使い,
トライアンドエラーで求めました。計算値12pFからストレー5pF引いて実装は7pFでもと思ったが、まだ低い方にずれてます。

LTspice回路図

測定写真

イメージ(118+21.4x2=160.8)を20dBぐらい落したいと思うんで、やっぱり、基板パターン通りにバタワース三段にするか、スケッチがまともになった後で考え直すことにします。

これでフロント通過帯域が確保でき、アンテナにつなぐといつもの大阪国際空港アプローチ連絡周波数がワッチできました。飛行機からの信号は取れるが、基地局側信号がカスカスです。TA2003に変換利得があり、Si4732も21.4MHzで受信機としてそこそこ感度あるだろうと思ってましたが、当て外れでした。LNA入れるべきでした。Si4732のFMは感度良好ですが、AM、特にSWは感度悪いですね。
youtu.be


何とかならんかと思い、30dBLNAと言うモジュールを前に入れてみました。かなりバックグラウンドノイズ増えますが、R80並みの感度になりました。

音量を下げると(Si4732のボリウム)RSSIモニターのi2cシーケンスからの影響と思われるノイズが耳に触ります。

まあ、積み残し点は若干あるものの、受信回路は動いたので、次は本格的にスケッチをいじろうかと思っています。R909のスケッチを活用しているため表示が1602Aの16字2行LCDなのですが、これをOLEDにできないかと思っています。周波数設定関係はR909のスケッチを、表示はJCRの200MHzVFOのスケッチを、Si4732制御はPU2CLRのライブラリーを引き込もうと思っています。この間3つを組み合わせて仮コンパイルしたら、ATmega328Pでメモリーが93%になりました。今考えているケースだと、ATmega328PでOLEDでないと入らないんです。ESP32+タッチパネルと言う組み合わせも行く行くはありそうですが。

基板はPCBGOGOで作成してもらいました。
www.pcbgogo.jp

 

 

The receiver on testing

 

 

 

 

 

DSPチップを使ったエアバンド受信機のデバッグ進捗 Debugging is on the way

Si4732を親受信機にして、TA2003フロントエンドにSi5351aモジュールのLOを組み合わせコンバータとして付加したエアバンド受信機を設計試作しています。ブロックダイヤグラムは次の通りです。エアバンド通信の受信方式はダブルス―パーで、FM放送はSi4732で直接受けることにします。

I'm debugging the Si4732 airband receiver with TA2003 and Si5351a. This is a double super heterodyne. FM broadcasting wavw is coming directly into Si4732. The block diagram is below.

 

Block diagram

 

設計した基板でFM放送受信はできるようになりました。Si4732以下の構成が動いたということです。エアバンド信号はSi5351aの局発信号とTA2003ミキサーで中間周波数21.4MHzに変換します。このミキサーTA2003部で苦戦しています。Arduinoのスケッチ構成ですが、昨年作ったR909エアバンド受信機スケッチを基に、PU2CLRのライブラリーを組み込み、Si5351aによる周波数設定と、Si4732による受信信号制御を行います。

I could receive the FM broadcasting wave. So Si4732 is working well. Airband radio signal is converted into 21.4MHz inermediate frequency and feeds into Si4732. I combined R909 sketch with PU2CLR library.


この試作ではTA2003のフロントエンド部だけをミキサーで使います。何か参考情報がないかと、WEBで事例を探してもあまりヒットしません。中国エアバンド受信機キットR80のV7ではTA2003を二個使いで一個をミキサーとしてフロントエンドだけ使っています。ワタシはR80のV6を作ったんですが、V7を作った人に聞いたところではV7はV6とそん色ない感度だということでした。V6の構成はLNAがNE5204、第1ミキサーがNE602、第2ミキサーがMC3361、復調部がTA7640です。V7は第1ミキサーがTA2003、復調部がTA2003です。今回試作ではV7回路を参考にしたR909を参考にしました。第一ミキサーをTA2003にし、復調部をSi4732にしました。

For this design I use TA2003 is only mixer. There are scarcely the examples for those. I ever assembled R80 V6 radio kit. I asked a certain engineer who assembled R80 V7 kit.

He gave me the information about V7. Sensitivity is so so.

R80 V6回路図

  
R80 V7回路図

さて、本日実験でTA2003ミキサーの利得が低い原因がひとつ分かりました。TA2003のFMRF-OUTの負荷抵抗の値が間違っていただけなんですが・・。一つ解決しましたが、しかしまだ期待するほどの利得がありません。フィルター部コイルの調整がまずいようで、次はnanoVNAを使って調整が必要です。

Today I found the reason why TA2003 gain. I mistook the resister value of TA2003 FM-RF-OUT being 10 k ohm. Correct is 1k ohm. The front end coils are not tuned well yet. I shall use nano VNA for trimming.

本日のTA2003ミキサー不調の原因を探る時、役に立ったのはTA2003データシートに記載されていた動作時の端子直流電圧です。以前、アナログ局発のキットの時もR80/V6の時もアクティブ素子の端子電圧リストを作りましたが、デバッグ時にはやっぱりこの手の資料が役に立ちますね。比較表から信号#1,15の電圧がおかしいことからFM-RF-OUTの負荷抵抗を間違っていたことに気が付きました。

I could utilise the DC voltage list of every pin node of TA2003 from the data sheets.


TA2003データシート

Node DC voltage

youtu.be



引用するスケッチの関係で、この試作デバッグでは表示に1602AのLCDを使っていますが、完成形ではOLED1306にしたいと思っています。

For this debugging I'm using 1602A LCD for supported sketch. I shall change it to OLED later.

 

www.pcbgogo.jp

 

Si4732+TA2003+Si5351aを使ったエアバンドレシーバ開発実験中 I'm trying to assemble the Si4732&TA2003&Si5351a airband radio

ずいぶん前からSi4732/35チップを使ったエアバンド受信機を作ろうとしています。Si4732/35チップを手掛ける前に、マルタ島のJasonさんが回路設計し、Arduinoのスケッチは共同設計したR909(TA2003を2個使い+Si5351a局発)で色々勉強しました。そのR909回路方式から影響もあり、Si4732を使うエアバンド受信機の構成はTA2003ミキサー、親ラジオSi4732と言うことになりました。


The new airband radio configured with Si4732&TA2003&Si5351a is depending on R909 design. R909 has TA2003 mixer with Si5351a and TA2003 FM/AM radio. Si4732 shall replace with TA2003 radio.

R909 SDR Block diagram




基板はKiCADで設計し深センの基板屋さんに依頼しケアレスミスで失敗。そこで、作り直しは心機一転PCBGOGO the PCB supplyer for PCBGOGOに変えました。(日本語でやり取りし、ケアレスミスも指摘してくれたので、助かりました)


I asked to produce the PCB for Shinseng PCB supplyer but I missed to check after panelised data which was discarded the solid pattern connection to GND. After then I changed the PCB supplyer for PCBGOGO.



現在デバッグ中ですが、R909のスケッチ(Si5351aで周波数設定制御)にPU2CLRライブラリー(Si4732の信号復調制御)を引き込むという着想は良かったと思うんですが、なかなかまともに動きません。回路バグ(べたアースパターンの一つがICのGNDにはつながっていたが、おおもとのGNDに繋がっていなかったのでSi4732が浮いていた)は大体取れたはずなので、それを確認するためにPU2CLRのシリアルポート経由でパラメータ設定するデバッグプログラムにSi5351aのGITHUBのライブラリーを引き込んでテストプログラムを作りました。このテストプログラムでSi4732を設定、RSSIを読んだり、Si5351aの周波数を設定したりします。テスト用RF信号源はPANEL部を利用しています。


Now I'm debugging but it does not work well. The sketch may be insufficient. To confirm the circuit operation, I diverted the serial port control sketch of PU2CLR library. This one can operate SI4732 and also set the frequency on Si5351a.
テストスケッチシリアルポート画面

 


この開発ではRF部、PANEL部、デバッグ用PANEL部の3種の基板を設計しましたが、現在デバッグはR909スケッチ利用することから表示は1602になり、デバッグ用PANEL部とRF部の組み合わせで行っています。そして、PANEL部はRF信号発生器として活躍しています。


On this developping I designed three kinds of PCB. RF part, Panel part, and Panel for debug part.

 


デバッグ組み合わせ


バッテリー動作RF信号源

 

 

そういうことで、今日の紹介するのは次の2点です。 This time I will introduce 2 things as below.


1.R909スケッチ(Si5351aで周波数設定制御)+PU2CLRライブラリー(Si4732の信号復調制御)テストスケッチ。 Arduinoのシリアルポートでコマンド入力結果出力です。コマンドのレパートリーは次。Serial port interfacing test program. The command repertry is below.

Type F to FM; A to MW; 1 to All Band (100kHz to 30MHz)
Type U to increase and D to decrease the frequency
Type S or s to seek station Up or Down
Type C or c to set AM 21.4MHz RX
Type P or p to set 80.0MHz on Si5351aq
Type Q or q to set 139.5MHz on Si5351aq
Type + or - to volume Up or Down
Type 0 to show current status
Type B to change Bandwidth filter
Type 4 to 8 (4 to step 1; 5 to step 5kHz; 6 to 10kHz; 7 to 100kHz; 8 to 1000kHz)
Type ? to this help.

 

エアバンド受信したいときはcで中間周波数21.4MHzをSi4732に設定。次にQでSi5351aをエアバンド用局発周波数139.5MHzにし、139.5-21.4=118.1MHz受信できるようにする。FMだと周波数をSTEPで上げ下げできる。

0でSNR/RSSIをモニターしてくれるので実験で役に立ちます。

 

2.バッテリー動作のRF発生器を作ってみよう  I would like to make the battery operated frequency generator

On this blog I would like to introduce the serial port control sketch ermodelled from PU2CLR library and the battery operated frequency generator.

 

youtu.be

 



 

PCBGOGOの協力を得,PCBを作りました。記事中にプロモーションが入っています。

www.pcbgogo.jp

ーーーーーーーーーーーーーーー2024.05.01ーーーーー

この後、LCDからOLED表示に変え、ケースに入れました。

nobcha23.hatenadiary.com

”R909OLED” radio  FMも聞ける航空無線ラジオ、OLED表示版

CesarSoundさんがPROJECT HUBに公開されている"10kHz to 225MHz VFO/RF Generator with Si5351 - Version 2"をもとに改造を加えR909に移植し、受信機を動かしました。移植する途中でいくつかの課題が見つかったので報告します。
I will report how to port "10kHz to 225MHz VFO/RF Generator with Si5351 - Version 2" on PROJECT HUB by Mr.Cesar Sound for ”R909OLED” radio . 

 

まずはブロックダイヤグラムです。 There is the block diagram.

ブロックダイヤグラム

1.Arduino UNO/pro miniのメモリー限界。特にRAMがOLEDの画面リフレッシュのため。EEPROMへのチャネルメモリーを入れていない。
2.R80 V7回路間違い。LM386の入力#2がDCでは浮いており、DC変動があると低域異常発振をおこし、ノイズを出すようだ。
前段のFM62429のパラメータ変化で起こるみたいである。→2-3間に10k入れたら改善した。
3.OLEDの画素書き込み時にラッシュ電流が流れ電源変動を起こすようだ。→OLEDの接続コネクタ根元に47uF入れたらましになった。
4.Si5351aの周波数補正のパラメーターをそのまま移植してたら、第一第二がそれぞれ5kHzぐらいずれていた。
12.8MHzTXCOで較正して、100Hz以内にしたら、音量・音質が良くなった。
5.ボリューム設定値を14段階の真ん中7ぐらいで聞きやすくするため、MAP関数をトライアンドエラー設定した。
1. I could not install EEPROM related function because of shortage for memory.
2. I found that LM386#2 shall connect the ground via about 10k ohm. Nevertheless LM386 may oscillate at low audio by full swing when DC level moves.
3. OLED comsumes much current when it works refreshing the display. That cause power level change to casue noise.
4. I got Si5351a mojule frequency error by refering 12.8MHz TXCO via the frequency counter. And I set it as a  #define XT_CAL_F   10000 roughly. I decreased error within less than 100Hz.
5. To set the central value as 7 of 14 range, I changed map function max as half.


とまあ以上のようなところを修正し、FM1放送も聞けるITMチャンネル対応航空無線ラジオ、OLED表示版”R909OLED”をまとめました。もともと1602A液晶用に窓を開けたケースにとりあえず入れたので、見た目いまいちです。The radio set is below. The case was diverted from 1602A LCD usage.

これでOLED表示のやり方を学んだので、OLEDを活用した機能の盛り込みを検討したいと思っています。
As I got the idea for OLED usage, I would like to utilize this furtherly.

 

youtu.be

 

 

 

I have ported CesarSound's VFO sketch on R909 receiver. R909受信機にVFOスケッチを移しました

I designed a local oscillator PCB with Si5351a controled by Arduino. This panel portion PCB is containing Arduino, Si5351a module, and switches.


Si5351aを局発にした受信機を作ろうと思い、まずはCPUパネル部基板を起こしました。
(CPUはArduino po miniかATMega428Pが選択でき、表示は1602Aかi2c接続のLCD、発振器部はSi5351aモジュールを使う。その試作について先に報告しました。)

 

使ったスケッチは、CesarSoundさんがPROJECT HUBに公開されている"10kHz to 225MHz VFO/RF Generator with Si5351 - Version 2"をもとに改造を加えたもので、RF信号源を作りました。そして今回は、そのスケッチをR909に移植し、受信機を動かします。

R909 remodeled


I got CesarSound's VFO sketch on PROJECT HUB and edited it as a RF signal generator. This time furtherly I remodeled for R909 radio. In R909 sketch there is u8g2 library but the display design was 1602 format. I'm thanking CesarSound for providing nice material.

projecthub.arduino.cc

 

R909ではOLED表示を行く行く採用しようと思いu8g2はコンパイルオプションで入ってたんですが、画面設計は1602のまま。
今回はちょうどそのとっかかりでCesarSoundさんの画面デザインを参考に、機能移行しました。

  

jasonkits.bigcartel.com

 

モリー使用量はフラッシュ87%、SRAM35%となり、EEPROM利用のチャンネルメモリーを入れるまではいきませんでした。
そのかわり、設定周波数を20波とり、局名呼称を簡易表示しました。ワタシは伊丹空港のそばに住んでいるので、118.1MHzはITW(Itami ToWerとしました)KAPはKIXのアプローチとか。


As a result the flash memory size is 87%, and SRAM is 35%(about 700bytes). OLED function is asking about more than 1000bytes on running. I could not incorpolated EEPROM channel memory functions. Insteadly I determined 20 waves for my local station usage. ie: 118.1MHz=ITW(Itami ToWer), 132.4MHz=TSK(Tokyo control SHikoku sector).

 

操作ルールは次。
通常キーステイタス0の時はロータリーエンコーダー回すと指定ステップ周波数単位で受信周波数を増減。
ロータリーエンコーダーのプッシュスイッチでステップ周波数単位を増減。
機能キー1を押すとスイッチステイタスが2→3と変わり、2の時はボリューム値をロータリーエンコーダーで増減。3はスケルチレベル増減。
機能キー2を押すと設定周波数を次々と切り替え表示していく。


Operation rule.
Naturally the function status is "0" and the rotary encoder gives increment or decrement by step frequency value.
The crick by push button of the rotary encoder brings step frequncy change.
To push the function key 1 kicks the function status of "2" and "3". When "2", the rotary encoder gives increment or decrement for the volume level. When "3", the rotary encoder gives increment or decrement for the squelch level. 
To push the function key 1 calls the pre determined frequency one by one.

R909 newer display

 

R909ではRADIOは2003タンデムのアナログでしたが、次のラジオ基板はsi4735であり、容量が4kあるというPU2CLRライブラリーは積めそうにありません。


I would like to use Si4735/32 chip for the mother radio. On that case the capacity of PU2CLR of about 4k bytes are far more ATMega428P size.

 

www.youtube.com