結論から言うと、「このファームウェアに入れ替えろ、100倍よくなる」。ちょっと言いすぎかもしれないけど、ものすごく使いやすいと思う。
ATS-20+自体の簡単なレビューはこちら。
ATS-20+はフォントが見づらい
ATS-20+は物理ボタンがあって操作性が良い点が気に入っている。ボタン自体は頭が小さいので押しやすいとは言えないけど、それでも「音量はこのボタン」、「ステップ周波数変更はこのボタン」と、操作するボタンが決まっているのでわかりやすい。
その一方で、フォントは最悪。

こうやって写真にすれば大きいので読めるが、表示パネルの実寸は23x13mmくらい。文字が小さい上に、横縞柄(?)で非常に読み取りにくい。
あれを見づらいと思っている人は私一人じゃないはずで、だったらフォントを変更したファームウェアがあるかもしれないと探してみたら、GitHubにあった。
goshante氏版のこのファームウェア(ATS_EX)は、オリジナルからかなり変えているようだ。特に目を引いたのはこの五つ。
- フォントの改善(周波数の表示は大きいし、シマシマじゃない)
- BFOがVFOに統合(SSBのチューニング時にVFOのステップを細かくできる)
- 操作ボタンの再定義(例えばバンド変更はBandボタンとダイヤル – 素早い変更)
- 9kHzステップのサポート(オリジナル版にはない)
- LCDの明るさの変更(照度を落とせる)
他にもたくさんある。マニュアルもGitHubにある。
先に結果を載せると、このような表示になる。

ファームウェアの書込み
ファームウェアの書き込み方もGitHub内の説明にあるのでそれに従う。
ファームウェアのダウンロード
コンパイル済みのバイナリが提供されているので、それをダウンロードする。
現時点での最新版は、ATS_EX_v1.18.hex。
AVRDUDESS
AVRマイコンの書込みにはこれまでもavrdudeを使っていたが、そのGUI版があるそうだ。
最新版のダウンロード先はこちら。
まずは、これをインストール。

このままでも使えるけれど、日本語をサポートしているそうなので、言語を切り替えてみる。画面中央(やや右下)の「Options」ボタンをクリック。

言語のリストから「日本語 (Japanese)」を選んで「OK」ボタン。
一旦、AVRDUDESSを終了させて、再起動(再起動しないと言語の変更は有効にならない)。

日本語化された。
書込み
手元のATS-20+には、Arduino Nano(互換機)が内蔵されている。これをUSBケーブルでPCにつなぐ。ATS-20+の背面にはType-Cとmini-Bの二つのUSBポートがあるが、Arduino Nanoはmini-Bの方(Type-Cは充電用)。
あとは、AVRDUDESSを設定して書き込めばOK。だと思ったのだけど、結構はまった。エラーで書き込めない。
細かいことは省いて、上手くいく方法を記しておく。失敗の話は記事の最後で。

主な設定項目は次の通り。
- プログラマー: arduino
- ポート: ATS-20+をつないだポート番号
- ボーレート: 115200
- MCU: ATmega328P
- プリセット: Default
あとは、「フラッシュ」のところにダウンロードしたファムウェアのファイルを指定し、「書込」にチェックを入れて「実行」を押せば書き込まれる。

数秒で完了。まさにあっという間。書込みが終わるとATS-20+は再起動がかかる。それで使えるかと思ったら、表示が無茶苦茶になって悩んだ。結局は、USBケーブルを抜いて再起動すればよかっただけだったのだけど。それと、最初の起動時にはリセットせよとあるので、それをやっておく。具体的には、ロータリエンコーダを押しながら電源投入。これで、設定が初期化される。
表示がものすごく見やすくなった。写真だと拡大されて見えるので荒く感じるけど、実際には非常に良い。

操作
操作方法はGitHubにあるとおりなので省略(英文だけど、Webブラウザの翻訳機能を使えば問題ない)。
少し気になったと言うか、気づいたことを挙げておく。

SSBでは、オリジナル版ではBFOで細かい周波数を調整していたが、本版ではVFOに統合されており、10Hz台まで表示されるようになっている。ステップ周波数の変更はSTEPボタンを使うが、SSBではロータリエンコーダのボタンもステップ周波数の変更になる(AM・FMではロータリエンコーダのボタンはスキャン開始。このあたりは設定で変えられるが)。
CWモードもあるが、基本、SSB。LSBを使うかUSBを使うかは設定で変更できる。なお、CWではフィルタ周波数が固定されて変更できない(500Hzかな?)。

Sメータのようなバー表示ができる(STEPボタン長押し(離すと表示される))。しかしながら、チューニング操作にリアルタイムで反応してくれない(チューニングを停止してしばらくするとバーが動く)。まぁ、仕方ないかな。
LCDの照度を設定で変えられるが、かなり数字を小さくしないと変化しない。
9kHzステップでのスキャン動作がおかしい。例えば、810kHzにセットしてスキャンさせた場合、手動で止めて戻ってくると808kHzや817kHzになって、810kHzにはならない。これはどうやら、バンド下限周波数が影響しているようだ。MWバンドでは下限周波数が520kHzに設定されており、ここを基準に9kHzステップで動くみたい。520+(9*32)=808、520+(9*33)=817ということ。このため、9kHzステップでのスキャンは実用にならない。手動チューニングではこのようなおかしな動作はしない。そのときの周波数から9kHzステップで動く(520kHzからの縛りはない)。
FM時のモノラル/ステレオの表示がない。これはオリジナル版にはあったので、この版の唯一の欠点かもしれない。なお、表示がないだけで、ステレオ受信機能自体は有効(ヘッドフォンの場合)。
他にも機能がたくさん増えているので、マニュアルを見ながらいじってみると良い。
バッテリ残量表示
バッテリの残量を%で表示させる機能がある。ただし、そのためには、ちょっとしたハードウェアの改造が必要。詳しい話は、GitHubに記載されているが、簡単に言えば、バッテリの+とGNDの間に10kΩの抵抗二本を直列に入れて、その中点をArduino NanoのA2ピンに接続する。これで、バッテリ電圧の中点をArduinoでモニタできるようになる。
ところが、GitHubの掲示板を見ていたら、ATS-20+にはそのための回路が搭載されており、A1につながっているとのこと。したがって、モニタ端子をA1に変更してコンパイルすればハードウェア改造無しで使える。
コンパイル済みのものも公開されている。
ここにある、ATS_EX_hex_230125.zipがそれ。ZIPを展開するとバイナリファイルが三つある。そのうちの、ATS_EX_v1_18_A1.hexが通常のもの。上の要領で書き込めばOK。

このように右下にバッテリ残量が表示される。なお、バッテリ残量が表示されるのはバッテリ動作の場合。Arduno NanoにUSBケーブルをつないだ状態でもATS-20+は動作するが、その場合はバッテリ残量は表示されない(0%と表示される)。
バッテリモニタの回路が入っているのはATS-20+で、ATS-20には入っていないようだ。ATS-20の回路図はこちらにある(ATS-20+の回路図も)。
特殊なUSBケーブルが必要なのか?
バッテリ残量モニタをA1に変更したバージョンを公開している記事には、このような注意書きがある。
You should use a Mini-USB cable with the 5V isolated to avoid damaging the ATS-20+, see previous threads.
+5Vのラインが切り離されたUSBケーブルを使え、と。
より詳しい話はこちら(同一人物)。
要約すると:
- ATS-20はバッテリから作られた3.3Vで動作している
- Arduino Nanoもその3.3Vで動作させるため、Arduino NanoのVcc(5V)の端子には3.3Vを供給している
- Arduino Nanoの3.3V端子にも、同じ3.3Vを供給している
- 一方、Aduino Nano(互換機)では、3.3V端子にはシリアルチップのCH340の3.3V端子がつながっている
- CH340を3.3V動作させる場合は、CH340の(5V)端子と3.3V端子をつなぐので、両方に3.3Vを供給するのは正しく、ATS-20をバッテリ動作させている状況においては問題ない
- ところが、Arduino NanoにUSBケーブルをつなぐと、そちらから5Vが供給される
- CH340の5Vと3.3V端子の両方に5Vが供給されるため、CH340内蔵の3.3Vレギュレータが壊れる可能性がある
なるほど、という気もするけど、本当にそうかなぁ?CH340の中に3.3Vのレギュレータなんてあるんだろうか?単純に抵抗分圧で3.3Vを作っているんじゃないだろうか?本来の使い方が3.3V動作の場合はVccを3.3Vに端子につなぐわけだから、レギュレータが入っていたらそんな使い方はできないのでは?単純な抵抗分圧なら、3.3V端子に5Vを供給しても問題ないだろう。あくまで想像だけど。
それよりも、USBケーブルをつなぐと5VをATS-20の3.3Vレギュレータの出力につなぐことになる方がまずそうな気がする。その問題も、ATS-20の電源を切っていれば大丈夫じゃないかな?端子に5Vがつながったとは言え、動作中じゃないし(気持ち悪いけど)。逆に言えば、動作中だとヤバそう。実際には、USBケーブルを繋いだ状態で、うっかり電源を入れてしまったことが何度かあるが、今のところ壊れてはいない。将来壊れないとも限らないが。
いずれにしても、5V線を切ったUSBケーブルを使うのが良いのかもしれない。この場合は、ATS-20の電源を入れないとArduino Nanoが動かないので、ファームウェアの書込みもできないだろう。
AVRDUDESSの設定失敗例
AVRDUSESSでの書込みでやってはいけないこと(はまったポイント)を書いておく。それは、Arduino Nanoだからと思って「プリセット」に「Arduino Nano(ATmega328p)」を選択すること。

これをやるとArduinoと通信できなくてエラーになる。

Error: programmer is not responding
Warning: attempt 1 of 10: not in sync: resp=0x00
Arduino Nanoにはブートローダが二種類ある。現在のブートローダと、Old bootloaderと言われるもの。Optibootという表記も見かけることがあるが、それが現在のブートローダだそうだ。Arduino Nanoは当初は(今でいう)Old bootloaderが使われていたのだけれど、その後に発表されたArduino UNOでOptibootが採用されて、最近のArduino NanoにもOptibootが使われているらしい(互換機だけかも)。
Old bootloaderに比べて、Optiboot(現ブートローダ)は、シリアルの通信速度が速い(Old bootloaderは57600bps)、ブートローダ自体が小さい(その分、プログラム領域が広い)という特徴があるそうだ。ということで、ブートローダに合わせて、書込みツールを設定しなければならない。
どちらのブートローダが搭載されているかは外観等からはわからない。また、簡単な調べ方もない。つまり、書き込みしてみて書けた方、ということ。強いて言えば、実際に書き込んでみるのが簡単な調べ方。
Optibootの載ったArduino NanoってArduino UNO R3とほぼ同じなので、「プリセット」で指定するなら「Arduno UNO (ATmega328P)」を選ぶと良いようだ。実際にそれで書き込めた。
余談ながら、「プリセット」で「Arduno UNO (ATmega328P)」を選択すると、シリアルの速度は自動的に115200になる。また、「Arduino Nano(ATmega328p)」だと57600になる。なお、「プリセット」を変更するとポートはCOM1に強制的に変更されるようなので要注意。
コメント