2018年5月13日日曜日

USBcount50をPythonで使ってみた

秋月で売っているUSBcount50というUSB接続の周波数カウンタがあるんだけど、対応OSは32bitオンリーだしWindows 10はおろかVistaまでの対応らしいのでどうにか使いたいということで知り合いから相談を受けた。
ということで一応借りてきた。


Elan Digital Systems Ltd'sってところから出てるデバイスらしいんだけどディスコン?になってるし、サイトもWebアーカイブに残ってるだけだし…
0.1Hzから50MHzまで測れる周波数カウンタらしい。USBポートはオスがそのまま出ていてUSB延長ケーブルが付属している。赤色LEDがBNC入力端子の下についてて、あとは4chまでスタックして使用できるらしいのでそれ用のポートがついてる。

というわけで早速秋月のページからソフトウェア類が入ったzipをダウンロードすると、ソフトウェアのソースコードとかレジスタの説明が入っていた。Communications Protocolを見てみるとどうやらソフトウェアとデバイス間の通信はUARTでやってる?これならPythonとかでも使えるかも。

USBcount50の中身的には(分解していないのでソフトウェアからの推測だけど)、周波数カウンタの機能自体はFPGA、PCとの通信用にSilicon LabsのCP210xシリーズのUSB UART変換ICを使っていて、FPGAとは921600bpsで通信しているっぽい。こんなに高速にUARTで通信している割には通信プロトコル自体には誤り検出とか実装されていないように思うんだけど、結構安定して通信できているのかな。
USBとBNC端子はアイソレーションされてるようなのでUARTかUSBのラインにアイソレーションICが入ってるのかな?

デバイスとの通信部分はDLLになっていて、DLLをVB6.0のGUIソフトウェアから呼び出してるみたいな構成。どうやらCP210xに直接アクセスしてシリアルナンバーとかバージョンを読み出すところはCP210x用のDLLを使っているようなのでそのせいでPCで仮想COMポートとして認識していてもソフトウェアからアクセスできなくなってそう…

ためしにCooltermからUSBcount50の仮想COMポートにプロトコルの仕様書通りにコマンドを送ってみるとちゃんと帰ってくるようなので、純正ツールを使わなくてもCOMポートにアクセスさえすれば使えそう。どうやらCP210xとの通信はバージョンチェックとかデバイスがつながっているかどうかの確認しかしてなさそうだし。

というわけでDLLの必要そうな部分と、GUIツールからDLLを扱ってる一部をPythonに移植してみた。USBcount50では使ってない関数もあるかも。(同じ外見のデバイスで何種類かシリーズものがあるらしい)
これでOSやバージョンを問わず使うことができそう。XPのマシン用意するのも大変だろうし。
GUI部分はとりあえずは保留でライブラリとして使えるような形で作ってみた。Pythonよく理解できてないのでなんか変な所あるかも…

とりあえずラズパイ上ではうまく動いた。これ、純正ソフトだと周波数と時間しか表示できなさそうだけど、パルス出力のセンサー類をつないでセンサーの出力に応じた計算までさせたいのであればPythonは結構便利な選択肢だったかもしれない。
多分古いデバイスだし、使う人いないだろうけど一応公開しておく…

USBcount50.py

DLLの中身で必要そうな部分をそのまま移植した感じなので不要な関数もあるかも。
そしてテストで測定結果を取得したときに使っていない関数はほぼ未確認。
スタック用のポートもレジスタいじると操作できそうなので汎用デジタルIOとして使えそうな気がする。

そういえばUSB Host ShieldでもCP210xが扱えるらしいけど921600bpsとかで通信できるのかなぁ?もし通信できるならマイコンとかでも扱えちゃうかも?

追記:リンクが切れていたので再アップのついでにVIDとPIDで自動でデバイスを認識するように変更した。

2018年5月7日月曜日

ハイブリッド型の中華イヤホンTRN V20を買ってみた。

Aliexpressを巡回しているとリケーブルできるイヤホンが結構お安いこと…
ということでちょっと調べてみるとBA+DDのハイブリッド型のイヤホンで2000円を切るのにもかかわらずレビューもそこそこ良かったTRNのV20ってのをポチってみた。
マイク付きとマイク無しがあったけど、とりあえずマイク無しで16.63ドルだった。


箱もなかなかいい感じ。
中国から来た割にはあんまり潰れていなかった。


色はグレーにしてみた。
他に黒と赤があった。
マットな感じの質感。結構安っぽさは感じるかも?
まぁ実際安いし…


ケーブルはこれまた高そうな感じ。

ケーブルは2pinで反対にも刺さるのでそれは気をつけないといけないかも。
音質もなかなか良い。2000円とは思えないかも。
2000円以内でこのぐらいのイヤホンが買えるとは中華すごいなぁ