TEF6686 DSP RADIO キット組み立て

Twitter でフォローしている方が、「TEF6686 DSP ラジオキットを出します」との案内。キットを一つ下さいと連絡し入手した次第です。TEF6686 は NXP 社から販売されているラジオチップですが、当キットではシールドケースに組み込まれたモジュールが使用されていました。

ちなみに本家サイトは TEF DSP AM/FM tuner v1 – pe5pvb.nl になります。

TEF6686 はラジオ用IC単品ですが、キットには写真の用なシールドーケース付きのモジュールが入っていました。ヘッダピンは I2C 制御のピン、電源のピン、LR音声出力のピンだけだったかな。が出ています。モジュールとしてはシンプルな構成です。

これを、 ESP32 のマイコンでコントロールしてラジオ受信を行います。

表面実装部品を取り付け

リード部品を取り付け。

各基板を接続して組んでいきました。このほぼ組みあがりで5時間くらいかかっています。

ファームウエアファイルを書き込んで完成です。一応、リポバッテリーが付いていますので、充電完了するかの確認でしばらく放置して充電完了確認などしてます。

少し使ってみた感じでは、感度は十分良いと思います。

自分の Si4735 DSP ラジオと並べてみたの図。ラジオチップも異なるし操作方法など全く別物なので比較はできませんが、いちばん下の基板にスピーカーがあるのは同じです。で、TEF6686 DSP ラジオの音が良く出ています。私の Si4735 ラジオは音の指向性が強くラジオ正面は結構聞こえるけど向きによって変化が大きいです。

私のは秋月マイクロスピーカー 1個50円を基板に貼り付けてますが、TEF6686 DSP ラジオは写真のようなプラスチックの箱型スピーカーです。お値段 1個400円超えと Aliexpress で買う部品にしては高い部類ですが、これが結構いい感じです。早速購入して自分の Si4735 DSP ラジオのスピーカーを交換してみたいと思ってます。現在輸送中なので届き次第交換して効果があれば、Si4735 DSPラジオのスピーカーは型番変更しようと思ってます。

PZEM-004T v3.0 で商用電源の電圧と周波数をロギング

最初に、参考にしたサイトを掲載しておきます。

PZEM-004T v3.0 はアマゾンや Aliexpress で検索するとたくさん出てきます。今回はアマゾンで買いました。1週間ほどで到着です。何も気にせず買ったので、USBシリアルなしを買ってしまったようです。USBケーブル付きがあればそれを買うほうが楽です。

仕方がないので、ポケコンのファイル転送で使っていた FTDI の USB シリアルケーブルに犠牲になってもらうことにしました。使用する線は 5V, GND, TX, RX の4本です。USBシリアルを使うのは Raspberry Pi の USB ポートで使用するためです。マイコン基板と接続する場合は、マイコンの 5V, GND, TX, RX を直結するだけです。

USBシリアルの TX RX と基板の TX RX はクロスで結線しましょう。これ間違えると通信できません。

プラケースの蓋を外して、XH コネクタのポストを外して

USB シリアルの線を半田付け。スクリューターミナルNとLの所にコンセントからの電線を差し込んでネジ止めします。ハードの準備は以上です。

Raspberry Pi 側のプログラムは python で動かします。PZEM-004T v3.0 からデータを取得して、ambient にデータ送信するようにしています。

#!/usr/bin/env python3

import datetime
import time
import serial
import ambient
import requests
import modbus_tk.defines as cst
from modbus_tk import modbus_rtu

# sudo pip3 install git+https://github.com/AmbientDataInc/ambient-python-lib.git
# sudo pip3 install modbus-tk

if __name__ == "__main__":
    # Connect to the slave
    serial = serial.Serial(
                           port='/dev/ttyUSB0',
                           baudrate=9600,
                           bytesize=8,
                           parity='N',
                           stopbits=1,
                           xonxoff=0
                          )

    master = modbus_rtu.RtuMaster(serial)
    master.set_timeout(2.0)
    master.set_verbose(True)
    am = ambient.Ambient(チャネル番号, ' ライトキー ')

    while True:
        try:
            data = master.execute(1, cst.READ_INPUT_REGISTERS, 0, 10)
            result = am.send({'d1': data[0] / 10.0, 'd2': data[7] / 10.0})
            print(datetime.datetime.now(),
                    'voltage=',
                    data[0] / 10.0,
                    'freq=',
                    data[7] / 10.0,
                    'send status=',
                    result.status_code)
            time.sleep(60)

        except KeyboardInterrupt:
            print('exiting pzem script')
        except requests.exceptions.RequestException as e:
            print('request failed: ', e)

USBシリアルのポート名。/dev/ttyUSB0 のところは syslog を見て確認。
am = ambient.Ambient(チャネル番号, ‘Writeキー’)
ambient のデータ送信は、ご自身のグラフを作成するところで、チャネル番号、ライトキー、リードキーが発行されるので、そのチャネル番号、ライトキーを入れたら送信できます。

プログラムの起動は、raspberry pi 起動後手動でしています。
tmux or screen コマンドを起動する
上記 python プログラムを走らせる
tmux or screen から抜ける。
です。tmux や screen でプログラムを動かしておけば、teraterm とかが切れても動き続けますので良いです。

ambient に投げたデータは公開にしていますので、下記 URL からご覧いただけます。

自宅の商用電圧と周波数 -Ambient (ambidata.io)

上のプログラムには記載省略していますが周波数は 0.1Hz 単位なので、実際にグラフを出してみると見にくい感じになりました。2022年9月5日から 周波数データの3回平均したものも追加で表示するようにしました。

2023年2月3日 上記 ambient へのデータ投入は終わりました。理由は0.1Hz の分解では全く意味なしというところでした。周波数カウンタ作ったほうが良いと思いましたので、改めてやり直そうと思った次第です。

E1DA Cosmos ADC 購入

やっとのことで、Cosmos ADC を購入しました。私は、E1DA Aliexpress Store https://ja.aliexpress.com/store/5142044 から購入しました。Aliexpress Standard shipping で2週間程度だったかと思います。

この Cosmos ADC の本体に何も信号を入れない状態のノイズが全体的に低く、アマチュアにはもったいないくらいの性能です。このグラフを出しているソフトは REW というソフトウエアです。

この Cosmos ADC に、USBオーディオインターフェースとプローブの端子を付けて、1kHz の信号を見てみました。

REW の信号ジェネレーターから 1kHz -3dB の信号を出して、アナライザ画面の表示を見たところです。THD+N 106.2dB と測定できます。

自作アンプの周波数特性や、入出力特性は Analog Discovery と FRA Plus で十分なのですが、歪率とノイズフロアは Analog Discovery ではどうにもなりませんでした。今回入手した Cosmos ADC なら、作ったアンプの歪率が高いとか、電源ノイズが出まくっているとかなどの確認が、私のようなアマチュアでも簡単に出来るようになりました。

TK-85 を Get しました

ヤフオクのワッチで TK-80 や TK-85 を見てていつも、いい値段だねぇとということでいつもスルーしているのですが先日1台落札しました。届いた後軽い清掃をして動作確認をしましたが

  • STEP/RUN 切り替えスイッチのレバー折れ
  • キーのチャタリングがひどい
  • 基板の反り → 放置

が最終的な残作業で残ってしまいました。スイッチは昭和なオーディオ機器にでも使われているようなスイッチなのですが、スイッチのピン間隔が 5mm だったかして今となってはどうしようもありません。レバーをエポキシで接着しました。

写真右側のレバーの根本にエポキシ接着剤が見えてしまっています。今のところこれで大丈夫そうです。オークション出品の写真でこのレバーが折れて無くなっている個体も良く見ますので仕方ないかと思います。

キーのチャタリングは、一度25キー外してみたのですがどうにもならんと判断。軽く掃除して戻しました。TK-85 のモニターROMのキースキャンは 9ms のチャタリング判定時間でやっていると付属の本に書いてありました。これを伸ばして多少はマシになるよう修正します。オリジナルの ROM を吸いだしてチャタリング除去時間の場所を確認します。

スクリーンショットはクリックすれば大きくなります。Visual Studio Code に Intel HEX Format プラグインを入れて編集しています。行末のチェックサムとか勝手に計算し直してくれるので便利です。修正箇所は 0697番地の 16 0E の 0E(14) が 9ms の設定値です。

ひとまず、この 0E を 5倍の 4D にしました。これを 2716 の EPROM に書き込んで TK-85 にセット。動かしてみたところ1回の打鍵でダブル・トリプルで文字が入るような状態はほぼ解消しました。まぁ25キーのスイッチも見つからないのでこれでマシになっただけでもよしとしましょうというところです。スイッチが経年でイカレテるので、完全なチャタリング除去は無理です。

オリジナルの ROM は無くすといけないので ROM2 ソケットに差しています。EPROM は手持ちに NEC D2716 があったのでこれに書き込みをしています。

RAMもプログラム領域などはモニタのメモリテストで good と出るのでひとまずOK。カセットインタフェースは今のところ試していませんが、PCのミキサーアプリで録音できるので暇なときにやってみようと思っています。

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 のディスクイメージもファイルを選んでボタンクリックするだけで起動してくれる便利なソフトなので導入しておきましょう。

SONY ICF-6000(スカイセンサー6000)の掃除

Apple II clone 機を譲り受けした際に ICF-6000(スカイセンサー 6000) も一緒にいただいてきました。電池蓋の爪が折れていますが、電池入れてみたらAM/FMは聞こえたとのことでした。本日はこれを掃除します。


100円ショップで単一電池買ってきて、受信できるか確認開始。バンド切り替えスイッチを何回も回しているうちに接点のヨゴレが取れてきたのか受信可能に。AM/FMは普通に受信出来ました。短波は昼間なのと生活ノイズが多いため、Analog Discovery II で 6MHz/10MHz の周波数を 1kHz の信号で AM 変調した波を出力して受信出来るか確認。目盛に少しズレがありましたが問題なくピーという変調波を受信することが出来ました。基本的に問題ないということで掃除することに

手順は省きますが、防水のためのゴムパッキンなどを外してバラしました。防水構造のため中はキレイでした。ということで、中身いじりはせず外装だけ拭き掃除することにしました。



一通り拭き掃除終ったところ。だいぶサッパリしました。ショルダーベルトは手で洗ってみたのですが、汚れが浮いてくるので、外したままにしています。

ちょっと使ってみたところ、
AM は15センチくらいあるバーアンテナのおかげて感度良好な感じ。
FM は5分くらい聞いてると周波数がドリフトしてチューニング状態から外れてしまいました。 しばらく鳴らして様子を見ると周波数が下ったり上ったりしています。AFCスイッチあるので多分よほどズレない限り気づかないと思う。
SW1/SW2 ボディエフェクトを結構受けるようです。夜になって受信出来るラジオ局聞いてみて問題なければ良しとしましょう。

Nutube ヘッドホンアンプキットによさそうな角形電池探し

Nutube を使ったキットを頒布させてもらっています。このアンプは 9V の角形電池を電源として使用しています。角形電池にはいくつか種類がありまして、大抵のところで買えるアルカリ乾電池、ちょっと大きめの家電店で買えるニッケル水素電池、海外の輸入品を扱っているところで買えるリチウムポリマーがあります。これらの電池を放電させたらどんなものか調べてみました。テストは下記電池で実施しました。条件は Nutube キットの電流(約40mA) を流したときの傾向です。オペアンプ交換や、新しい電池や古い電池でも変化しますので、こんな感じということで見て下さい。

  • パナソニック:エボルタ乾電池
  • パナソニック:アルカリ乾電池(金パナ)
  • 東芝:IMPULSE (8.4V / 200mA)
  • MAHA:POWEREX 9.6V / 230mA
  • MAHA:POWEREX 8.4V / 300mA

エボルタと金パナは、時間経過と共に電圧も下がっていく傾向。金パナは 7.4V ~ 6.6V の電圧で安定しているようです。おもしろいのはエボルタですが 7.8V あたりと 6.4V 付近の電圧でそれぞれ 70分以上持ちこたえたところです。

ニッケル水素電池は、東芝 IMPULSE 8.4V / 200mA と MAHA 9.6V / 230mA がそっくりなグラフですね。1.2V セルの個数が違うだけなので当然な結果と。MAHA 8.4V / 300mA は、IMPULSE のグラフが伸びた形のグラフを期待していたのですが、買った電池がダメだったせいか途中で急激に電圧下がってしまいました(復活の儀式をやってこの状態なのでダメっぽいです)

放電中の電圧安定度からいいますとニッケル水素充電池に分がありそうな結果となりました。入手しやすさは東芝 IMPULSE ですが、MAHA 9.6V は電圧があがるので、その分出音も迫力あるものとなります。

リチウムポリマーの角形電池は入手できたら測ってみたいと思います。

アマゾンで買った LED ネームタグ (Archeer LED ネームプレート)

アマゾンで見かけた 1480円の LED ネームタグをポチりました。

ちょっと動かしてみて気になるのは輝度ムラですかね。明るく点灯するドットとちょっと暗めのドットがあります。ダイナミック点灯の仕方がイマイチなのか近くで見るとよくわかります。普通に使う分には問題ないかなと思います。あと明るさ調整もボタン長押しでできるのですが、100% -> 60% -> 20% の 3段階です。明るさの調整は可能ですが、輝度ムラが目立ってくるので 100% でつかうのが一番いいかもという状況。ただ 100% だと近づくと明るいので、LED パネルにスモークなアクリルを貼ったほうが見やすくなると思いました。

使い方は、LED ネームタグを USB ケーブルで PC に差しますと USB ストレージが現れます。ここに、 LED ネームタグ表示ソフトのインストーラーが入っているので、ダブルクリックしてインストールするだけです。ソフトを起動して、表示したいテキストを打ち込んで LED ネームタグに書き込めば完了です。LED ネームタグの電源 ON で自動で表示されます。

Twitter に投稿した動作しているときの模様リンクを↓に貼っておきます。

この週末は、nutube アンプの視聴をしていました

netube

この週末は、Nutube(6P1) のヘッドアンプの視聴をちょっとだけして終わりました。使ったのは SENNHEISER HD-25-1 II と AKG Q701 です。

HD-25-1 は密封型なので小柄ながら低音がドコドコ鳴る感じのヘッドホン。AKG Q701 はオープンエア型なのでデカイ割には低音は軽めの感じです。Nutube のイヤホン出力の視聴では AKG Q701 が中音がすっきりでたので JAZZ ボーカルな CD などが気持ちよくリスニング出来ました。また、hd-25-1 II は、小規模コンサートホールなどでよくあるオフマイクで録音されたピアノやバイオリンなどの CD がよかった印象です。



Nutube ヘッドホンアンプの持ち主から、改造 OK の許可もいただいてたりするのですが、今日のところはこの2つ使って楽しませてもらいました。

KORG Nutube(6P1) Headphone Amp Kit v1.0 の簡易 f 特測定

2016-09-03 11.26.32

KORG Nutube ヘッドフォンアンプを使ってみた (Part-2) の Blog 主さんから一時預かり。ひとまず f 特を採取しておこうと思います。

2016-09-04 07.33.54

ということで、Analog Discovery 2 で簡易 f 特測定実施。測定範囲は 5Hz から 200kHz です。

6p1-headphioneout-16ohm

入力 100mV イヤホン出力 負荷 16Ω の f 特

6p1-headphioneout-32ohm

入力 100mV イヤホン出力 負荷 32Ω の f 特

6p1-headphioneout-72ohm

入力 100mV イヤホン出力 負荷 72Ω の f 特

負荷抵抗の差でゲインに違いは出ます。そのせいなのか 72Ω負荷のときの特性が 16Ωにくらべて特性はフラットな見え方になりました。大した差では無いので気にすることは無いレベルと思います。

6p1-headphioneout-16ohm_net

入力 1kHz イヤホン出力 負荷 16Ω の高調波の出具合を見たところ 2次歪みがよく出ています。3次以降もグラフからは見えます。

6p1-headphioneout-rca

RCA 出力 入力 100mV の f 特。イヤホン出力よりも下が伸びてました。位相のグラフが180度回転しているように見えますが RCA 出力は反転なのでこれであっています。ここにバッファアンプをつないだら結構遊べるんではないかなと。

6p1-headphioneout-rca_net

入力 1kHz RCA 出力の高調波の出具合を見たところ 2次歪みがよく出ています。3次以降もグラフからは見えます。

蛍光表示管ですが真空管の特徴が出ていあたりはよく作りはったと思います。個人向サンプル 5000円程度が気軽に求められる値段になれば使用例も増えますかねぇ。