TL866II PLUS 25V/21V アダプターを作った(2716/2732版)

TL866II PLUS のプログラマーは EEPROM などの書き込みや、ATMEGA328P のヒューズリセットなどお手軽でよいのですが、EEPROM となると書き込み用電圧が 18V までとなっています。この前の機種では 21V まで出たのですが現在は通販から消え去ってしまってます。今更 2716 を書くことは APPLE II のメンテで必要になるくらいなのですが、一つ作っておこうということで作っちゃいました。

回路図や部品表などは、https://github.com/ngc6589/TL866II-PLUS-25V-21V-Adapter にて公開しています。

このアダプタは 2716 VPP=21Pin 2732 VPP=20Pin が対象です。作ってみて試しに手持ちの 2716 2732 に書き込みをしてみましたが、 2716 は特に問題なし。2732 は書き込めず悩みました。ググった結果 XGpro というこのプログラマのアプリケーションにバグがあってワークアラウンドとして 2732 の 18Pin(チップイネーブル)をGNDに落として書き込むというのが今の状況です。これをすれば私のところでも書き込みは出来ました。

今回は初版とあって基板にミスがありますが余った基板を https://www.em9system.com/?p=965 にて頒布します。

Orbitron 用 DDEクライアント作成

アマチュア衛星などの通過予想に Orbitron というソフトを使ってます。CALSAT32 などもありますが、最初に慣れてしまったのがこのソフトなのでこれを使ってます。

この Orbitron は DDE で他のソフトに衛星名・アップリンク周波数・ダウンリンク周波数・ダウンリンクモード・アップリンクモードを渡してくれます。このデータのうち周波数はシリアル経由で無線機に送ることで自動的に合わせられます。周波数は衛星が近づいてくると高く・遠ざかる時は低くなるドップラー効果のため変動します。FMモードなら無線機の周波数は固定でも問題ないですが、SSB・CW は周波数を合わせないとすぐ聞こえなくなってしまいます。

今回は、Windows のプログラム勉強がてら DDE とシリアル通信するプログラムを組んでみました。開発環境は Visual Studio 2020 で言語は C#。プラットフォームは .NET 6 フォームアプリケーションです。

.NET 6 は初めて Visual Studio も久しぶりだったのでググりながら作成しました。作成したイニシャルバージョンは下記 github リポジトリの Release のところに置いておきました。

https://github.com/ngc6589/DDE2S

使い方は、シリアルポートを選択して、通信速度・通信設定のラジオボタンを押します。その後 CONNECT を押すとシリアル送信が始まります。ウィンドウ中央やや下のテキストボックスに、無線機に送る CAT コマンドを書きます。その時下記の <> 文字は Orbitron から取得した文字列に置き換わります。

  • <SN> Orbitron で表示される衛星名
  • <UP> アップリンク周波数 9桁で単位は Hz
  • <DN> ダウンリンク周波数 9桁で単位は Hz
  • <AZ> 方位角
  • <EL> 仰角

無線機の VFO-A に周波数を送る場合 FA<DN>; と書けばOKです。無線機の CAT コマンドで周波数が11桁の場合 FA00<DN> と足りない 00 を付けてやればいいです。コマンドが間違いなどの時は無線機から応答が返りますが、それは Receive 側に表示されるので目安になります。 FA; という無線機の周波数読み取り結果を表示するのにも使えます。

TS-790S CAT コントロールケーブル作成

ヤフオクで入手した TS-790S にパソコンの Turbo Hamlog や、通信ソフトと連携できるようシリアルケールを接続します。

PC 接続して CAT コントロールするためには、ACC1(6ピン DIN コネクタ)にシリアルケーブルを接続しないといけません。詳細は省きますが、この端子は 5V TTL で出ていて TX,RX,RS,CS, GND の5本接続ですが信号は反転しているのでそのまま USBシリアルケーブルをつないでも通信できません。

FTDI の USB シリアルなら FT_Prog で信号反転の設定などはすぐできるので、今回は写真のケーブルを手配しました。あとは 6pin の DIN コネクタ。

pin番号ACC1 コネクタUSB シリアリケーブル
1GNDGND
2TXDRXD
3RXDTXD
4CTSRTS
5RTSCTS

配線は、クロス接続すればいいです。写真ではGND, TXD, RXD をつないで Teraterm で接続できるか見たところ。Teraterm のシリアル設定を 4800bps 8bit パリティなし stopbit 2bit で接続です。FA; を入力してトランシーバーからスクリーンショットのような FA数字; が出力されたら通信は問題ありません。

ただ、この通信するためには USB シリアルアダプタの設定変更をしないといけません。FTDI 社の web サイトの検索で FT_Prog といれたら検索結果が出てきます。そこから FT_Prog のページに行ってツールをダウンロード・インストールして設定です。

FT_Prog を起動して 「DEVICE」→「Scan and Parse」をクリック。FTDI の USBシリアルが検索されて、Device Tree に表示されます。Device Tree 内の変更対称となる USB シリアルの Hardware Specific の Invert RS232C Signals をクリック。Property の TXD, RXD, RTS#, CTS# にチェックを入れます。

「DEVICES」「Program」をクリックすると Program Devices のダイアログボックスが表示されます。Program ボタンを押して設定を書き込みます。後は USB シリアルケーブルを抜き差しすれば信号は反転状態で出るようになります。

TS-790 の場合は、GND, TX, RX の3本だけでいいです。RS,CS は 5V になっていたので放置でも問題なく通信できます。CS はプルアップされているのかな?

私は RS,CS も配線してコネクタカバーを付けて配線終了としました。

この状態で Turbo Hamlog の LOG-A LOG-B などのログ設定を増やして、通信設定をしてログ入力ダイアログで周波数表示とモードが設定されることと、周波数やモードを変えて、Hamlog の入力欄が自動更新されることを確認しました。

ひとまずここまで動けば仮想シリアルポートのスプリッターでHAMLOG と WSJT-X など複数アプリとも連携できると思います。

次は、オーディオインタフェースと PTT コントロールの接続が必要になってきますが、13ピン DIN コネクタが無いので後日実施予定です。

DE0(Cyclone III) + DEOCM

DEOCM (でおしむ) という MSX のスロットが付いたボードを家電のケンちゃんで買いました。DE0 と DE0-CV で使用可能のボードです。今回は古い DE0 に頑張ってもらうということで OneChipMSX на Altera DE0 – Development and Education Board のロシア語サイトのファームウエアを書き込んで使うことにしました。一応、DE0 というか Cyclone III は古いのでボードが余っている人向けの記事です。

今からやってみたい方は DE-CV(Cyclone V) + DEOCM-PLD-CV(仮称)計画 のファームウエアを使うといいでしょう。今回こちらの方法は記載していません。

ダウンロードするファイル

OneChipMSX на Altera DE0 の 2018年リリースのファイルをダウンロードします。

  • source は 1chipMSX の DE0 版ソースです。コンパイルしてみたい人はダウンロード
  • POF-file は DE0 のコンフィグレーションROM に書き込むコンパイル済みのファイルです。これは必要
  • SOF-file は DE0 の FPGA に直接ダウンロードするアイルです。今回は使いません。
  • BIOS MSXDOS2 SDHCカードに対応したMSX DOS2のROMファイル。MSXDOS2 の場合はこの .zip ファイル内の biossdhc.sys を使う。今回は使いません。
  • BIOS NEXTOR SDカードに書き込むためのNextorシステム搭載のROMファイル。この .zip ファイル内の biosnext.sys は必要

OneChipMSX на Altera DE0 の 2017年リリースファイルのリンク

  • NEXTOR メモリカードに書き込むシステムファイルのアーカイブ。アーカイブファイル これは必要
  • OCM_NEXT.ROM – は、ディスクに書き込む最初のファイルでなければなりません。カードはFAT16形式でフォーマットされている必要があります。4Gバイト以上のSDHCカードをIBMカードフォーマットFAT32でフォーマットし、Nextor Basicに内蔵されているFDISKユーティリティで4Gバイトのパーティションに分割することをお勧めします。BASICからfdiskを呼び出す。これは不要

、NEXTOR という言葉が出てきました。DE0 版 MSX の DOS は Konamiman’s MSX page の DOS がターゲットです。

また、Intel FPGA サイトから Quartus II 13.1 もダウンロードしてインストールする。

.pof ファイルの書き込み

DE0 を PC と USB ケーブルで接続します。DE0 のスライドスイッチを PROG 側にしておきます。Quartus II 13.1 を起動して 「Tools」「Programmer」を選択してプログラマを起動します。

Hardware Setup で USB Blaster を選択。Mode は Active Serial Programming を選択する。

Add File ボタンを押してダウンロードした .pof ファイルを選択して Open ボタンを押す。

チェックボックスにチェックが付いた状態で Start ボタンを押す。

書き込みエラーになる場合は、スライドスイッチが PROG 側であること、また電源を入れ直して再度 Start ボタンを押せば故障でもない限り書き込み始まると思います。書き込みが終了したら、電源を切ってスライドスイッチを RUN に戻してください。

MSXDOS の SD(microSD)カード作成

NEXTOR DOS を microSDカードに書き込みします。コマンドプロンプトを起動して、DISKPART コマンドを起動します。管理者モードの確認ダイアログが出たら OK で続行。そうすると、もう一枚コマンドプロントのウィンドウが表示され DISKPART> のプロンプトが表示されます。

まず、microSD カード内の不要パーティションを削除します。下記は Raspberry Pi で使用した microSD カードでしたので、boot のパーティションと ext4 のパーティション2つあるやつでした。下記実行例のようにパーティション削除を行います。

DISKPART> LIST DISK

  ディスク      状態           サイズ   空き   ダイナ GPT
  ###                                          ミック
  ------------  -------------  -------  -------  ---  ---
  ディスク 0    オンライン           931 GB  2048 KB        *
  ディスク 1    オンライン           931 GB      0 B        *
  ディスク 2    オンライン          1863 GB      0 B
  ディスク 3    メディアなし             0 B      0 B
  ディスク 4    オンライン            14 GB  3072 KB

DISKPART> SELECT DISK 4

ディスク 4 が選択されました。

DISKPART> LIST PARTITION

  Partition ###  Type                Size     Offset
  -------------  ------------------  -------  -------
  Partition 1    プライマリ               41 MB  4096 KB
  Partition 2    プライマリ               14 GB    46 MB


DISKPART> SELECT PARTITION 2

パーティション 2 が選択されました。

DISKPART> DELETE PARTITION

DiskPart は選択されたパーティションを正常に削除しました。

DISKPART> SELECT PARTITION 1

パーティション 1 が選択されました。

DISKPART> DELETE PARTITION

DiskPart は選択されたパーティションを正常に削除しました。

DISKPART> LIST PARTITION

このディスクには表示するパーティションがありません。

DISKPART>

これで、microSD にパーティションが無い状態になりました。また、SELECT DISK をした後に CLEAN コマンド一発でパーティションをすべて削除できます。SELECT DISK を間違えると大変なことになるので、好きな方法で microSD カードの中身を削除してください。

DISKPART> help clean

     フォーカスされたディスクからすべてのパーティション フォーマットまたは
     ボリューム フォーマットを削除します。

構文:  CLEAN [ALL]

    ALL         ディスク上のすべてのバイトおよびセクターをゼロに設定するように指定します。
                これにより、そのディスクに格納されているすべてのデータが完全に削除されます。

    マスター ブート レコード (MBR) ディスクでは、MBR パーティション情報と
    隠しセクター情報だけが上書きされます。GUID パーティション テーブル
    (GPT) ディスクでは、プロテクティブ MBR を含む GPT パーティション情報が
    上書きされます。ALL パラメーターを使用しない場合、最初の 1 MB と最後の
    1 MB がゼロに設定されます。これにより、以前にディスクに適用された
    フォーマットは消去されます。ディスクの消去の後、ディスクの状態は
    未初期化になります。

例:

    CLEAN

パーティションを作成する。

DISKPART> CREATE PARTITION PRIMARY SIZE=2000

DiskPart は指定したパーティションの作成に成功しました。

DISKPART> ACTIVE

DiskPart は現在のパーティションをアクティブとしてマークしました。

DISKPART> FORMAT FS=FAT QUICK

  100% 完了しました

DiskPart は、ボリュームのフォーマットを完了しました。

DISKPART> SET ID=06

DiskPart は、パーティション ID を設定しました。

DISKPART> DETAIL PARTITION

パーティション 1
種類         : 06
隠し属性     : いいえ
アクティブ   : はい
オフセット (バイト): 1048576

  Volume ###  Ltr Label        Fs    Type        Size     Status     Info
  ----------  --- -----------  ----  ----------  -------  ---------  --------
* Volume 8     I                FAT    リムーバブル      2000 MB  正常

DISKPART>

Ltr は ドライブレターなので、パソコンによって変化します。DISKPART のコマンドプロンプトウィンドウを閉じます。

microSD カードに、NEXTOR DOS のファイルをコピーします。ロシア語サイトからダウンロードした biosnext.zip と nextor.zip を解凍しておきます。そして、biosnext.zip ファイル内の biosnext.sys を最初に microSD にコピーします。nextor.zip は NEXTOR.SYS と *.COM ファイルをコピーします。これで microSD カードから起動できます。

MSXDOS 起動

microSDカードを取り外して、DE0の SDカードスロットに装着します。大きさ変換のアダプタを使用して差し込みます。また、VGA 液晶、PS/2 キーボードも接続します。10個並んだスライドスイッチは全部 OFF で電源を入れます。

Initial Program Loader のメッセージやロゴが表示された後、MSXDOS のプロンプトが表示されれば成功です。

NEXTOR.SYS verstion 2.01 と表示されて konamiman dos が起動しています。

https://github.com/Konamiman/Nextor/releases

の最新リリースにある NEXTOR.SYS.japanese をNEXTOR.SYS にリネームし、microSDカードに上書きしてところ version 2.12 と表示され起動しましたので、その他コマンド類もリポジトリの最新版を build して置き換えてもいいと思われます。

あとは、Louthrax’s MSX game room から、sofarun をダウンロードして microSD にいれておけば、 .dsk のディスクイメージもファイルを選んでボタンクリックするだけで起動してくれる便利なソフトなので導入しておきましょう。

AY-3-8910(PSG) の Arduino シールド作成

Z80 をいじったついでで AY-3-8910 の PSG もいじってみようと思います。AY-3-8910 は40ピンの IC ですが、ほかにも YM2149F がコンパチで使えます。また 40ピンの足のうち I/O ポートなどを省略してピン数を減らした AY-3-8912,AY-3-8913 などもありますが、今回作った基板には合いませんので使用できません。

回路は、AY-3-8910 PSG のデーター・制御の線と、3.579545MHz のクロック。MIDI インタフェースと音声出力のジャックで構成されています。ターゲットの Arduino は 基板の大きさと I/O ポート取り出し位置の都合で MEGA2560 を使用しています。AY-3-8910 は 3声までしか出ませんので、ちょっと物足りない感じです。なので、J4 のジャンパ切り替えで4枚まで積んで 12声同時発生できるようにしました。

1つ目は、オシレーターなど部品を全部つけないといけませんが、2つ目以降は、 AY-3-8910 とジャンパがついていればOKです。

プログラムのソースなどは GitHub – ngc6589/arduinoMidiSynthPSG に置いています。

まだ、Github の資料更新中ですが、AY-3-8910 と基板、MIDIコネクタ、フォトカプラ以外は全部秋月でそろいます。頒布するかは未定です。

Free MIDI ファイルをダウンロードして、DOMINOに読み込ませて、リズムパートだけ再生しないようにするだけでこんだけ鳴ります。存外遊べそうなものが出来てうれしい限りです。

Dual-84 CPUボード

共立電子のネット通販にて売り切り終了 550円で投げられていた TMPZ84C015BFC-8 が実装されたボードです。クリスタルは 19.6608MHz システムクロックは 1/2 なので、9.8304MHz で動作するボードです。表面には CPU と ROM のソケットがあります。クロック周波数的には少しオーバークロックですかね。

裏面には SRAM CY62256NLL-70SNXC という SRAM が実装されていました。Z80のメモリアクセスのタイミング的には大丈夫かなと思います。

とりあえず BASIC が動けばいいやというところですが、ブレッドボードに貼り付けたかったので。ヘッダピンが下向きに出ているのを逆向きに付けなおしました。クロック周波数は RC2014 などで使われている 7.3738MHz(クリスタルは倍の 14.7456MHz) に交換しました。この周波数だと一応実装されているCPUの定格内なことと、シリアル通信でシステムクロックをSIOで 1/64 分周すれば CTC を使わずに 115.2kbps の速度が出せます。

CPUボードはブレッドボードに貼り付けボスを使って固定。シリアルインタフェースは秋月の FT232RL のモジュールを使用しました。これは6ピンソケットのシリアルインタフェースでもいけます。TXD/RXD と RTS/CTS をクロス接続しています。DTR/DCD 端子は使わないのですが、SIO の動作には必要なので自分自身で折り返し接続です。SIO のクロックはシステムクロックのピンから  7.3738MHz を供給します。9600bps などのボーレートで通信する場合は CTC の出力からクロックを供給します。(後で紹介するサンプルは 9600bpsの例をコーディングしています)

HALT 端子にLEDと電流制限抵抗を接続して HLAT したことが分かるように。

リセットボタンのタクトスイッチ、PIO A/B にTD62083 シンクドライバを接続し、その先にアノードコモンの8桁LED基板を接続しました。

電源スイッチは、FT232RL の USB ケーブル抜き差しが面倒だったので付けました。最近の Teraterm は USB が抜けてシリアルが切れても USB させば自動復旧するので、スイッチは必須ではないですかね。

開発環境は、VSCode に TASM_Assembler プラグインを入れただけです。このプラグインのディレクトリに TASM.EXE が入っています。面倒なので開発するフォルダに EXE と TAB ファイルをコピーして使っています。build.bat を作っておけば CTRL + SHIFT + B でビルドしてくれます。コマンドラインは

TASM -80 -fff -s D84CPU-CP-BASIC.asm D84CPU-CP-BASIC.hex

という感じで -80 はターゲットが Z80、-fff は空いた領域を 0xFF で埋める。-s はシンボルリストも作成する。後はソースファイル名とhexファイル名を build.bat に記述する感じです。

BASIC は http://searle.x10host.com/index.html Grant Searle さんが 移植したものです。レトロコンピューティングではスタンダードな BASIC です。

ただ、BASIC の入出力のシリアル通信はマシンごとに違うため各自用意する必要があります。オリジナルは 68B50 のシリアルチップなので流用できません。Z80 SIO用を書かねばなりません。AKI-80 用に公開されているものでいいのですが、ここは頑張って自分で用意しました。

クロックを CTC で分周し、SIOのボーレート 9600bps 版のソースは https://github.com/ngc6589/Z80Learning/blob/main/D84CPU-CP-BASIC.asm に置いてます。SIO は送受信ともステータスアフェクトベクタを使用した割り込み制御にし、Z80 の割り込みモードはモード2です。受信のハードフロー制御もいれてあるので、Teraterm からプログラムの貼り付けもTeratermのディレイ設定なしでいけてます。

今回は BASIC が動けばよかったのでこれ以上のことは予定なしですが、本来ならモニタROMを用意するのがいいかなと思います。手持ちにモニタROM付きボードなどもあるので、この CPU ボードは一旦ここまでということにします。

7119 PP アンプを ECC99 に変更

先日作成した 12AX7 + 7119(E192CC) のプッシュプルアンプですが、ネタついでにタマを 12AX7 → JJ ECC832、7199 → JJ ECC99 に交換しました。

ECC832 は ユニット1が 12AU7 ユニット2が 12AX7 の複合管です。ECC99(12BH7) は 7199 よりも最大定格がユニットあたり4.5Wから5Wになってますが、特性は似ていることとECC832,ECC99共に現行管なのでヨドバシとかでも買えます。

  • 7199(E192CC) と ECC99 のピンアサインは異なります。真空管ソケットの配線繋ぎ変えないといけません
  • ECC832 のピンアサインは 12AX7 と同じですが、ユニット1が 12AU7 なので、こちらも真空管ソケットの配線確認が必要です。

今回は差し替え運用が目的でしたので、回路の変更はありません。真空管ソケットの線をつなぎなおして動かしています。タマは変わりましたが基本変更ないので問題なく音出し完了しています。

7119 は購入難易度高いのでこっちがいいかな。

7119(E182CC) プッシュプルアンプ製作

購入日は忘れたのですが、名古屋のボントンさんに立ち寄ったところジャンク真空管コーナーに 7119 がありました。こういうのはとりあえず確保する対象でございます。これ使うならプッシュプルかということで製作いたしました。

アンプ部分の初段は 12AX7 の増幅と PK 分割。終段は 7119(E182CC) プッシュプルでトランスはアンディクスオーディオオリジナルトランス 6608P を使用した構成です。電源はゼネラルトランスPMC-100M を使用し、6CA4 整流管から10Hチョークを経てCRリップルフィルフィルタでつくりました。

回路図はクリックすると大きく表示されます。手持ちの余っている部品の都合で、コンデンサの容量が大きかったりします。

画像はクリックすると大きくなります。7119 のロードラインは、アウトプットトランスのインピーダンス 8k なので、4kと8k の線を引いてみて定格超えないかをざっくりチェック。B電源180V 位でトランスのドロップ引いてで175Vあたりとしてグリッドバイアス-5Vあたりがでてきました。このあたりで行きましょうという感じです。

シャーシは、共立電子・千石で売っている富士シャーシです。安くてたすかります。アルミがペラいのでシャーシとしては弱いですが、まぁそれでもこの手のアンプには十分です。対角線を持つようなことさえしなければ問題ありません。

電源スイッチやヒーターの配線をした後に、回路部分のボードを付けていきます。今回はタレットボードライクな基板を作成しそれに部品を付けて配線しました。

マックエイトの端子が余っているので、これを使うように1.6mmのスルーホールの穴をあけた基板を作って、必要なところに端子を差し込んで配線します。端子の高さがもう少し高ければよかったのですが、本家キーストーンの端子にはかないません(笑)

休日の間に動くかどうかだけは急ぎ確認したかったので、配線はやっつけです。

入出力特性です。私の手持ち音楽ソースはポータブル機器なので高感度仕様になっています。出力はおよそ1.5W手前が限界ですかね。でも十分な出力が確保できています。

周波数特性です。ゲインは 33dB です。50kHz 付近にこぶが出来てますが、発振にはなっていないので、12AX7 の直結部分に zobel フィルタを入れて高域を落とすなどの対処はしていません。

電源投入して、電圧チェック後軽く試聴。スッキリした感じの出音でした。真空管アンプなので鳴りっぷりは個性です。このアンプは鳴らしっぱなしで使用しても疲れない感じのいい感じにできました。完成してよかった。

ARISS SSTV イベントに参加

Expedition 64 – ARISS Series 17 Twenty Years というミッション名で 2020年12月24日から年末にかけて SSTV イベントがあったので、久しぶりに受信チャレンジです。

例によって https://www.heavens-above.com/ で出した通過時刻を出してエクセルにペロッとはりつけ。orbitron の通過予報で ISS の最短距離も横にメモとしてはりつけて、いつ受信するか検討。基本的にできるだけ頭上を通るのが間違いないのですが、まぁ仕事中やったり夜中だったりとなかなか決まらないものです。

今回受信したのは12月26日、27日、29でした。

使用機材は、3エレ八木アンテナとヤエスFT-3Dのハンディ機です。FT-3D はマイクロSDカードに録音することが出来ますので、フィールドで受信したのを録音しといて、自宅に戻って RXSSTV / MMSSTV で画像を出すというやりかたです。

FT-3D は、液晶画面のディマー(液晶を暗くする機能)が働くと受信ノイズが鬱陶しいくらいに大きくなります。あらかじめディマーは切っておきます。

受信した場所は自宅近所の公園か写真の西側が見通せる家から徒歩20分くらいの駐車場です。以下、何枚か撮れたやつをアップしておきます。

数枚はわりかし受信出来たのでアワード申請です。

ARISS SSTV AWARD のアワード。これは Getされた方も多いかと思います。

RUSSIA ISS SSTV DIPLOMA が発行してくれたアワードです。

INDONESIAN SPACE EXPLORER SSTV DIPLOMA のアワードです。どれも、画像数枚あれば申請可能でしたので、ついつい申し込みしました。

Raspberry Pi による ADS-B / APRS 受信サーバーの機器更新

FlightRadar24 や FlightAware に対して ADS-B のデータ送信をしている Raspberry Pi3 と APRS のデータ受信サーバーで使用している Raspberry Pi3 を Raspberry Pi4 に集約しようと思いました。いわゆる機器更改です。

ADS-B の Raspberry Pi3 は 2017年夏ごろ稼働開始して OS の Raspbean のリリースは Raspbian GNU/Linux 8 (jessie) で、 APRS 受信の Raspberry Pi3 の Raspbean のリリース は Raspbian GNU/Linux 9 (stretch) です。どちらも、年数が経過しているのと、OS更新するより新規で入れ直しがいいかなと思ったのが理由です。

raspberry pi OS Lite のインストール

新品の MicrpSD カードと、Raspberry Pi Imager で最新の Raspberry Pi OS イメージを書き込みます。GUI は不要なので、Raspberry PI OS Lite を書き込みます。

書き込み終了後、MicroSD の boot に以下2つのファイルを作成します。
・ssh
・wpa_supplicant.conf

ssh は中身のないファイルです。エクスプローラーから右クリックで新規作成→テキスト ドキュメントをしてすると「新しいテキスト ドキュメント.txt」ができます。これをファイル名の変更で ssh にしたら OK です。

wpa_supplicant.conf は以下のような内容です。改行コードは LF です。SSID は無線LANの SSID、暗号化キーは無線LAN の暗号化キーです。

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP
network={
        ssid="SSID"
        psk="暗号化キー"
}

この 2 つのファイルがあれば、Raspberry Pi に入れてブート後、無線LAN から ssh でログイン可能となります。raspberrypi.local のアドレスに接続して、ユーザー名 pi パスワード raspberry でログインできれば成功。

ここからは、一般的なラズパイの初期設定になりますが省略します。
・raspi-config でSDカードの領域を広げる設定
・raspi-config でタイムゾーン設定
・raspi-config でホスト名設定
・/etc/dhcpcd.conf でスタティックIPの設定(必要であれば)
などです。ホスト名を変更したら ssh 接続するホスト名も変わるので接続時注意です。

パッケージ情報の更新
$ sudo su
# apt-get update
# apt-get upgrade
# reboot

ファイルシステムの容量をSDカード全部使うようにする
$ sudo su
# raspi-config
7 Advanced Options
A1 Expand Filesystem
raspi-config を Finish で reboot

$ df -h 
/dev/root        29G  1.4G   27G   5% /   が大きくなっていること
:

ホスト名・タイムゾーンの設定
$ sudo su
# raspi-config

2 Network Options
N1 Hostname
新しいホスト名を設定する

4 Localisation Options
I2 Change Time Zone
Asia -> Tokyo を選択する

後は、pi ユーザーのパスワードは変更しておきましょう。
また、IP アドレスを固定にする場合は /etc/dhcpcd.conf を修正して固定IPにしてください。

RTL-SDR USB ドングルの動作確認

次は RTL-SDR のツールをインストールして動作確認を行います。今回は、USB HUB に RTL-SDR のドングル3つ挿しています。 RTL-SDR のドングルは発熱するので写真のように離した形に設置しました。

RTL-SDR パッケージのインストール
$ sudo su
# apt-get install rtl-sdr

USB ポートに RTL-SDR を挿して USB デバイスとして認識されるか確認
# tail -f /var/log/syslog

USBデバイス認識のメッセージが出力される。

CTRL-C で tail コマンド終了

# rtl-eeprom -d 0
root@pi4-aprs:/home/pi# rtl_eeprom
Found 3 device(s):
  0:  Generic RTL2832U OEM
  1:  Generic RTL2832U OEM
  2:  Generic RTL2832U OEM

Using device 0: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner

Current configuration:
__________________________________________
Vendor ID:              0x0bda
Product ID:             0x2838
Manufacturer:           Realtek
Product:                RTL2838UHIDIR
Serial number:          00001090
Serial number enabled:  yes
IR endpoint enabled:    yes
Remote wakeup enabled:  no
__________________________________________
Reattached kernel driver

Found n device(s) の表示にドングルの数だけ表示されたらOK。今回は3つ挿したので3行表示されています。


RTL-SDR ドングルのシリアル番号書き換えをします。複数のドングルを使用する場合に便利です。

pi@pi4-aprs:~ $ rtl_eeprom -d 0 -s 00001091
Found 3 device(s):
  0:  Generic RTL2832U OEM
  1:  Generic RTL2832U OEM
  2:  Generic RTL2832U OEM

Using device 0: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner

Current configuration:
__________________________________________
Vendor ID:              0x0bda
Product ID:             0x2838
Manufacturer:           Realtek
Product:                RTL2838UHIDIR
Serial number:          00001090
Serial number enabled:  yes
IR endpoint enabled:    yes
Remote wakeup enabled:  no
__________________________________________

New configuration:
__________________________________________
Vendor ID:              0x0bda
Product ID:             0x2838
Manufacturer:           Realtek
Product:                RTL2838UHIDIR
Serial number:          00001091
Serial number enabled:  yes
IR endpoint enabled:    yes
Remote wakeup enabled:  no
__________________________________________
Write new configuration to device [y/n]?

rtl_eeprom -d 0 -s 8桁の数字
で書き換えできます。-d は デバイス番号というので、システムの何番目で認識されたかの番号です。ただ、ドングルの場所を変えたりするとデバイス番号は変わる可能性があるためシリアル番号で認識させるため重要なのです。私の場合は、上の写真にあるテプラの番号にしています。

Windows PC でドングルのシリアル番号を書き換える場合は https://www.rtl-sdr.com/tag/rtltool/ からツールをダウンロードして書き換えをしてください。

SDR ラジオのソフトから RTL-SDR ドングルの接続確認をします。今回は WIndows の SDR# で接続して FM ラジオが聞けることで確認しました。

$ rtl_tcp -d 00014464 -a 0.0.0.0 -p 1234
Found 3 device(s):
  0:  Realtek, RTL2838UHIDIR, SN: 00001090
  1:  Realtek, RTL2838UHIDIR, SN: 00014464
  2:  Realtek, RTL2838UHIDIR, SN: 00014466

Using device 1: Generic RTL2832U OEM
Detached kernel driver
Found Rafael Micro R820T tuner
[R82XX] PLL not locked!
Tuned to 100000000 Hz.
listening...
Use the device argument 'rtl_tcp=0.0.0.0:1234' in OsmoSDR (gr-osmosdr) source
to receive samples in GRC and control rtl_tcp parameters (frequency, gain, ...).

rtl_tcp コマンドの -d オプションでドングルのシリアル番号を指定します。これでどのドングルを使用するか決められます。

SDR# では、ラジオの種類をリストボックスにある RTL-SDR TCP を選びます。上の歯車アイコンを押して、ラズパイのアドレスとポート番号を設定。接続て地元の FM 放送の周波数に合わせてラジオが聞こえたら接続確認は OK となります。

dump1090-fa のインストール

flightaware の https://ja.flightaware.com/adsb/piaware/install のインストール手順を実施しますが、まず ADS-B の受信ができるか確認したいので、dump1090-fa というのだけインストールします。

apt に FlightAware のロケーションを追加

$ sudo su
# wget https://ja.flightaware.com/adsb/piaware/files/packages/pool/piaware/p/piaware-support/piaware-repository_4.0_all.deb
# dpkg -i piaware-repository_4.0_all.deb
# apt-get update
# apt-get install dump1090-fa
# dump1090-fa configuration
# This is sourced by /usr/share/dump1090-fa/start-dump1090-fa as a
# shellscript fragment.

# If you are using a PiAware sdcard image, this config file is regenerated
# on boot based on the contents of piaware-config.txt; any changes made to this
# file will be lost.

# dump1090-fa won't automatically start unless ENABLED=yes
ENABLED=yes

RECEIVER_OPTIONS="--device-index 0 --gain -10 --ppm 0"
DECODER_OPTIONS="--max-range 360 --fix"
NET_OPTIONS="--net --net-heartbeat 60 --net-ro-size 1300 --net-ro-interval 0.2 --net-ri-port 0 --net-ro-port 30002 --net-sbs-port 30003 --net-bi-port 30004,30104 --net-bo-port 30005"
JSON_OPTIONS="--json-location-accuracy 1"

/etc/default/dump1090-fa の設定ファイルを修正します。

RECEIVER_OPTIONS=”–device-index 0 –gain -10 –ppm 0″
RECEIVER_OPTIONS=”–device-index 00001090 –gain -10 –ppm 0″

device-index を RTL-SDR ドングルのシリアル番号に修正して Raspberry Pi をリブートします。サービスの再起動でもかまいません。

Virtual Radar のインストール

https://www.virtualradarserver.co.uk/Default.aspx Virtual Radar Server サイトからアプリをダウンロードしてインストールします。

Virtual Radar アプリの Tools -> option からラズパイのデータを見るよう設定します。

右上の Wizard ボタンを押して設定開始する


A software defined radio を選択

Dump1090 を選択

ADS-B はラズパイで動いているので No を選択

ラズパイのアドレスを入力

設定ウィザードが終了して、option に戻ったら、Receivers の項目が上のスクショみたいに ! マーク無いことを確認。

メイン画面に戻って、真ん中にある http://127.0.0.1/VirtualRadar のリンクをクリックすると Web ブラウザが開きます。

飛行機からの ADS-B 信号が受信出来ればブラウザに飛行機のデータやアイコンが表示されます。ここまで表示されれば DUMP1090 は動いています。

piaware のインストール

piaware は先の手順で dump1090 を入れていますので 追加で piaware をインストールします。dump978-fa はよくわからないのでインストールはしません。

$ sudo su
# apt-get install piaware
# piaware-config allow-auto-updates yes
# piaware-config allow-manual-updates yes

piaware のパッケージは特に質問など無くインストールされます。設定は FlightAware の web サイトからアカウントと piaware を関連付けして完了となります。

FlightRadar24 feeder のインストール

$ sudo bash -c "$(wget -O - https://repo-feed.flightradar24.com/install_fr24_rpi.sh)"

を実行することで、自動的に fr24feed パッケージのインストールが実行されます。

Preparing to unpack .../fr24feed_1.0.26-9_armhf.deb ...
Unpacking fr24feed (1.0.26-9) ...
Setting up fr24feed (1.0.26-9) ...
You don't seem to have any dump1090 installed. On the fr24feed start it will automatically install dump1090-mutability.
Created symlink /etc/systemd/system/multi-user.target.wants/fr24feed.service → /etc/systemd/system/fr24feed.service.
error | Local time: 2020-10-24 15:15:25 +0900
error | GMT+0 time: 2020-10-24 06:15:25 +0900
error | Your machine should be set as GMT+0 time zone!
warning | Time zone is not set to GMT+0
______  _  _         _      _                    _              _____    ___ 
|  ___|| |(_)       | |    | |                  | |            / __  \  /   |
| |_   | | _   __ _ | |__  | |_  _ __  __ _   __| |  __ _  _ __`' / /' / /| |
|  _|  | || | / _` || '_ \ | __|| '__|/ _` | / _` | / _` || '__| / /  / /_| |
| |    | || || (_| || | | || |_ | |  | (_| || (_| || (_| || |  ./ /___\___  |
\_|    |_||_| \__, ||_| |_| \__||_|   \__,_| \__,_| \__,_||_|  \_____/    |_/
               __/ |                                                         
              |___/                                                          
[main][i]FR24 Feeder/Decoder
[main][i]Version: 1.0.26-9/generic
[main][i]Built on Oct 14 2020 07:35:30 (HEAD-de0814c.git/Linux/static_armel)
[main][i]Running on: raspbian10
[main][i]Local IP(s): 192.168.24.90,240b:250:5160:2c00:41de:8104:26d0:4ae0,fe80::d6c4:2cbe:dcda:95ab
[main][i]Copyright 2012-2020 Flightradar24 AB
[main][i]https://www.flightradar24.com
[main][i]DNS mode: PING

Welcome to the FR24 Decoder/Feeder sign up wizard!

Before you continue please make sure that:

 1 - Your ADS-B receiver is connected to this computer or is accessible over network
 2 - You know your antenna's latitude/longitude up to 4 decimal points and the altitude in feet
 3 - You have a working email address that will be used to contact you
 4 - fr24feed service is stopped. If not, please run: sudo systemctl stop fr24feed

To terminate - press Ctrl+C at any point


Step 1.1 - Enter your email address (username@domain.tld)
$: flightRadar 24 アカウントのメールアドレスを入れる

Step 1.2 - If you used to feed FR24 with ADS-B data before, enter your sharing key.
If you don't remember your sharing key, you can find it in your account on the website under "My data sharing".
https://www.flightradar24.com/account/data-sharing

Otherwise leave this field empty and continue.
$:データシェアリングキーを入れる。(メールで届くキーを入れる)

Verifying sharing key...OK



Step 1.3 - Would you like to participate in MLAT calculations? (yes/no)$:yes

IMPORTANT: For MLAT calculations the antenna's location should be entered very precise!

Step 3.A - Enter antenna's latitude (DD.DDDD)
$:緯度を小数点4桁で入力

Step 3.B - Enter antenna's longitude (DDD.DDDD)
$:経度を小数点4桁で入力

Step 3.C - Enter antenna's altitude above the sea level (in feet)
$:アンテナの高さを入力

Using latitude: 34.6566, longitude: 135.6465, altitude: 10ft above sea level

We have detected that you already have a dump1090 instance running. We can therefore automatically configure the FR24 feeder to use existing receiver configuration, or you can manually configure all the parameters.

Would you like to use autoconfig (*yes*/no)$:yes    を入力

Step 6 - Please select desired logfile mode:
 0 -  Disabled
 1 -  48 hour, 24h rotation
 2 -  72 hour, 24h rotation
Select logfile mode (0-2)$:1   お好みで設定する

Saving settings to /etc/fr24feed.ini...OK
Settings saved, please run "sudo systemctl restart fr24feed" to use new configuration.
Installation and configuration completed!

サービスを再起動する
pi@pi4-aprs:~ $ sudo systemctl restart fr24feed    

FlightRadar 24 のデータシェアリングは、キー番号で一意となるため、fr24 のサイトにログインして、My Data Sharering を見てONLINE となっていれば問題ありません。

aprs 受信用 direwolf の起動

aprs 運用には何種類かパッケージがありますが今回は direwolf を使用しました。

sudo apt-get install direwolf screen

github は 1.5 ですが、パッケージを入れた場合 1.4 が導入されます。受信するだけなので 1.4 のままでいきます。

9600bps 起動のコマンドライン


$ rtl_fm -d 00014466 -M fm -f 144.66M -s 24000 - | direwolf -t 0 -c sdr14466.conf -r 24000 -D 1 -B 1200 -

1200bps 起動のコマンドライン

$ rtl_fm -d 00014464 -M fm -f 144.64M -s 48000 - | direwolf -t 0 -c sdr14464.conf -r 48000 -D 1 -B 9600 -

9600configファイルは以下のような内容。コールサインはご自身のコールサインに修正してください

ADEVICE null null
CHANNEL 0
MYCALL JP3SRS-10

IGSERVER japan.aprs2.net

IGLOGIN JP3SRS-10 5桁のパスコード

OBEACON sendto=IG DELAY=0:00 EVERY=30:00 OBJNAME=JP3SRS-10 SYMBOL=\& overlay=R lat=緯度 long=経度 comment="RX-Only I-Gate 144.64M 9k6 144.66M 1k2"

1200configファイルは以下のような内容。コールサインはご自身のコールサインに修正してください。config の中身は一緒ですが、direwolf を2つ起動するとポート番号重複エラーメッセージが表示されます。それの回避でポート番号設定の行が増えています。

ADEVICE null null
CHANNEL 0
MYCALL JP3SRS-10
AGWPORT 8002
KISSPORT 8003
IGSERVER japan.aprs2.net

IGLOGIN JP3SRS-10 5桁のパスコード

OBEACON sendto=IG DELAY=0:00 EVERY=30:00 OBJNAME=JP3SRS-10 SYMBOL=\& overlay=R lat=緯度 long=経度 comment="RX-Only I-Gate 144.64M 9k6 144.66M 1k2"