Si4732レシーバー(ATS-20+)のファーム更新
Si4732レシーバーキット(ATS-20+の名称で製品がある)のファームを更新した
更新している方が多くいるためか参考サイトは沢山ある(YouTubeにもあった)
購入時のファームウェアバージョンはV1.1.5

Arduinoの開発環境はあるのでファームのスケッチをDL(こちら)
DLしたZIPファイルをIDEで展開する方法もあるが,バンド設定など変更したい部分もあるのでスケッチを手動で取り出す
現状の最新スケッチは「展開したフォルダー¥SI4735-master\examples\SI47XX_KITS\AliExpress\SI473X_ALL_IN_ONE_OLED_RDS_CHINESE_V8」

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

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

新たに必要となったライブラリは3つ
コンパイルすればエラーになるので対象をライブラリマネージャーで検索してインストール
- SI4735

- Tiny4kOLED
- TinyOLED-Fonts

コンパイルするとコードが29344bytes,データが1448bytesというギリギリサイズ
![]()
ファームをArduinoNano書き込んで再起動

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

画面の表示構成が変わった
(旧:V1.1.5)

(新:V3.0.8)

各設定もボタン押下によりダイレクトに変更されるのではなく,ボタンを押して変更モードにしてロータリーエンコーダを回すという感じとなった
個別対応
ファームに手を加え自分の趣味に合うよう変更
今日スケッチを観たところなんで簡単にできるところから対応する
- バンドが多すぎるので日本向けに変更(下記表)
- 周波数変更のステップを修正 → 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 |
(周波数表示)


(操作性)
ボタンを押下してロータリーエンコーダを回すのは使いにくいので全面的に変更を検討
ロータリーエンコーダはカウント数の多い物に変更しないと操作改善は困難(マウスと同じ)
(その他)
Sメーターがいまいちなので改造したい

