ドラマに夢中な今日この頃

2021年4月からのドラマに最近はまっている。

昔は、TVの録画機能を使用して録画を楽しんでいたが、最近は、TVerという強い味方がいる。これは、ドラマを見過ごしても1wkはタイムシフトできるので、計画的にドラマ視聴するにはもってこいのツールだ。iPadに入っているので、もっぱらこれを利用している。更に、前に使用していたスマホHUAWEI P9 Liteも電池交換してTVer視聴用に利用している。

f:id:ja1yaz:20210503173344p:plain

2021年4月ドラマのリスト

こうして曜日ごとにまとめておくと、見過ごすことが少ないようだ。

こうして見ると、新しく始まったものを含め1週間で30くらいのドラマを見ていることになる。土日はほとんど見っぱなしだ。寝る前に1時間くらい毎日P9LiteでTverを見ている。

ちょっと楽しみにしているのは、イチケイのカラス、コントが始まる、ネメシス、最高のおアバハン中島ハル子あたりかな。

しかし、ドラマを見ると様になってウクレレを弾く時間が減ってしまい、ウクレレを弾きながら見る始末。でもながらだと、入ってこないので極端なながらは禁物だ。さらに、数独もやっているので、時間が足りなくて困ている。

そろそろ、セレクトしてみてみようと思うのだが、何回か見ていると、それぞれ面白くなってくるので困りものだ。

nanoVNAの信号を確認してみた

nanoVNAに興味津々のこの頃。

早速FWを上げてみることにした。

最新ではないようだが、Googleに上がっているFWをダウンロードしてSTマイクロのダウンローダーで導入すると難なく行けた。

f:id:ja1yaz:20210403174826j:plain

NanoVNA バージョンアップ

さらに昔のバージョンでは、DFUモードにするために、メニューではなく、基盤の端子をショートさせる必要があるようだったが、購入したものは、メニューで行けたので、手間なくバージョンアップすることができた。

2021年1月30日の1.0.45にバージョンアップできた。

前のバージョンでは左端上部テキストの文字が半分くらいの大きさだったが、縦長になってゴシックになった分とても見やすくなった。

また、900MHzまでだった計測範囲が、2GHzに拡張されていた。

f:id:ja1yaz:20210404180321j:plain

2GHzに拡張されたVer1.0.45

オシロスコープで確認できる周波数として7MHz帯のSweep波形としてオシロスコープに表示し見ると下記の様になった。

FFTの最大値が265mなので、7MHz帯のrms値は265mVということになる。

1mWは、電圧値で233.6mVなので1mWを超えていることになる。

f:id:ja1yaz:20210403170730p:plain

7MHz帯のSweep波形をオシロスコープで確認した。

さすがにSi53511Aを使用しているだけあって、そのままの矩形波を出力していた。これであれば、奇数次の高調波を含んでいるので、900MHz、その倍の1.8GHzでもある程度は計測できるだろう。

しかし、これを見てしまうと、ちょっと気になることがあるRMSで223.6mV以上あるので、1mW以上の出力があるのがわかる。

これって免許いらないの?また、こんな高調波だらけの出力で、電波の質はよいの? という疑問が出てくる。

免許の必要ない無線局だとすると、322MHz以下の場合、500uV/m以下であることが必要になるはず。出力に換算すると50nW以下なのだそうだ。

すると、40dBのATTでも足りない計算になる。

1mWでも、46dBのATTを入れないと使用できないのではないかという疑問が出てくる。

Amazonで、20dBのATTが2個で1200円くらいで売っているのを見つけて、カートに入れるとこまでしてみる。

このnanoVNA安いけど公には使えない代物じゃないか?

そんな疑問が渦巻く。

やっぱりATT買わないと使えないのかな。

しかし、ATTいれて計測してる記事は全く見当たらない。

なぜだ。

さらに「nanoVNA 電波法違反」でググってみると、この疑問に答えてくれている記事が出てくる。下記 

 

電波法施行規則の第6条で、免許を要しない無線局として、「標準電界発生器、ヘテロダイン周波数計その他の測定用小型発信器」と定義され、この小型発信器の出力についての制限は有りません。

これを信じるとnanoVNAは計測機器なのでOKという判断の様だ。

しかし、限りなく自作の機器の場合はどうなるのだろうか。

計測機器を自作する場合は、特に出力の制限を受けないんだろうか。

kW出しても計測器ならいいの?

いわゆる公共の福祉に反しない限りというやつなんだろうな。

ローカル局のお邪魔にならないと様に気をつけないといけないですね。

まあ、マンションの室内で1mw程度の出力であれば、100m以遠のローカル局にはご迷惑は掛からないのではないかと思います。

本当のところは、実測してみる必要がある思います。

しかし、このカテゴリが適用されるのであれば、取り合ず電波法違反ではないようだ。

一安心。

20dBのATTx2は購入を見送ることになった。

今まで作成アンテナを計測してみても良いようだ。

 

nanoVNAを購入した

オシロスコープは購入したものの50MHzを超える周波数の確認ができないのは、ちょっと不便だ。スペアナが欲しいところだが、RIGOLのでも10万はくだらない。簡単に遊べてアマチュア無線にも役に立ちRFも見えるという良いものはないだろうかとググっているとよいものを見つけた。

VNAだ。

VNAといえば、とってもアマチュアには手が届かない代物と思っていたけれど、このnanoVNA、なんとナントの4200円(Amazon最安値)これは、買わない手はないと、何も考えずにポチ!

f:id:ja1yaz:20210403165236j:plain

届いたNanoVNA

物凄い簡易包装で、封筒に放り込まれているだけで緩衝材もなし。案の定プラの外箱が壊れていた(上部のたれさがっているラッチ部分)。

2本のSMAケーブル30cm load open short用のSMAコネクタ(左側中段)

メスメスのSMAコネクタ USB-TypeCケーブルが付属している。

ついでにBNC-SMA変換4個セットを2つ購入した。

 

まあこんなもんだろうなあと思いながら、付属のUSB-TypeCケーブルを接続して通電。

ちゃんとしている。

 

FWバージョンは2019 0.4.6になっていてちょっと古そげだ。

プラケースにQRコードがありその下にnanovna.comと書いてある。使い方は、こちらを見ろということらしい。

いろいろググってみると、日本語の取り扱い手順書を書いている人もいて心強かった。また、結構前から有名なものらしく、アマチュア無線をやっている人が、使用感を挙げている記事も目に付く。

リターンロスブリッジを作ろうかと思っていたところだったので、渡りに船だ。

アンテナの調整にはもってこいの道具になりそうだ。

信号を出したい

Si5351Aを使用して信号を出したい。

以前、府中市アマチュア無線セミナで信号発生機のデバイスについて聞いたことがあった。1チップで200MHzkくらいは、出るのだと聞いた。

昔、PLLのチップで信号を出して、元の局発の水晶をVXO化していろいろな周波数を出すことができたものだった。しかし最近のデバイス、もっと細かく周波数を指定できるようになっているとのこと。手の平にすっぽり収まるサイズで、オールバンドカバー+50MHzが使用できるという。

秋月電子で探してみると、これがSi5351Aというデバイスであるという事が分かった。

一も二もなく、購入してみた。

 

Si5351Aを購入してみた

早速購入してみたデバイスは、8PINのモジュールになっているもので、3.3V電源で動作するものだった。コントロールはI2Cで動作する。

これは、まず手持ちのRaspberrypi3+のPythonを使用して実験してみるしかない。

しかし、RaspberryPi3+のI2Cは、5V動作なので、レベルコンバータ(PCA9306)が必要だ。

 

Si5351Aとは

Si5351Aは、PLLの周波数と、出力分周器の設定を行って実際の出力周波数を決定する

仕組みになっている。

fvco=fxtalx(a+(b/c)   モジュールでは、fxtal=25MHz

   aは15~90

   bは0~1048575

   cは0~1048575

でPLLの周波数が決定されるが、実際にレジスタに設定する値は、下記のようになっている。

MSNxP1[17:0]=128xa+Floor(128x(b/c))-512

MSNxP2[19:0]=128xb-cxFFloor(128xb/c))

MSNxP3[19:0]=c

PLLはA,Bの2つがあり、上記のx=A,Bについて設定を行う。

MSNA_P1からMSNB_P3のレジスタにI2Cを使用して書き込みを行う。

PLLの周波数を決定し分度は、出力分周器の設定下記のように行う。

fout=fvco/(a+(b/c))

 

そして、レジスタの設定値は、またまた下記のように設定する。

MS0P1[2C:2]=128xa+Floor(128x(b/c))-512

MS0P2[30:2]=128xb-cxFFloor(128xb/c))

MS0P3[29:2]=c

A/BどちらのPLLを使用するのかは、MSx_SRC[10/11/12:2x]で指定する。

とあるが、このビットを1にするとAなのかBなのかわからないぞ。

そもそもそのほかのレジスタの設定方法が全くよくわからない。

これは、例文を探しまくらないとうまくできる気がしない。

 

Si5351Aの使用例をググる

 ググってみると早速良いサイトがHitした。

CircuitPython Code | Adafruit Si5351 Clock Generator Breakout | Adafruit Learning System

RaspberryPiでの動作も記載されていて、しかもPythonだ。

 

  • sudo pip3 install adafruit-circuitpython-si5351

 をRaspberryPiのPythonで実行して、

Full Example CodeをRaspberryPiへコピペして、実行してみる。

 

f:id:ja1yaz:20210301210923p:plain

サンプルプログラムを実行したコンソール

簡単に周波数の設定ができた。

 

f:id:ja1yaz:20210228161750j:plain

実験風景

右側が、Si5351A  左側が、レベル変換チップ(PCA9306

念のため、オシロでCH1の出力波形を確認してみると下記のように観測することができた。大まかな周波数は、カウンタ機能を使用して自動計測してみると、13.553MHzと計測できていることがわかる。

設定値は、13.553113553113555MHzだから正しく計測できているようだ。

波形は、10cm程度のリードを伸ばしているので、そのインダクタンスの影響でリンギングを伴ってしまうのは致し方ない。

 

f:id:ja1yaz:20210301211252p:plain

オシロで観測した出力波形

こうなると、カウンタの桁数がもう少し欲しいところだ。

昔購入したカウンタを引っ張り出してきてみた。

1ppmのカウンタなので、有効なのは6桁という事になるが、しばらくぶりの登場なので、オシロスコープの20MHzの信号を観測すると、1Hzのけただけ6-9の数字になる。まあ悪くない状態のようだ。

出力をプロービングしてカウンタを見ると下記のようになった。

100Hzの桁から異なるようなので、実際に違うのだと思える。

水晶の容量を変えるとどうだろう。これは後からの課題だ。

f:id:ja1yaz:20210301212202p:plain

カウンタの表示

 

周波数の確認はこれくらいにして肝心なところに戻ろう。

プローブは、I2CのSDAとSCKにプロービングしなおしてみた。

購入したEDUX1052G型は、I2Cの解析機能を標準で搭載しているので、何をしているのかわからないプログラムの動作を確認するためには多少役に立と思う。

 

f:id:ja1yaz:20210228163901p:plain

オシロスコープのでコード画面

上記のように短めの通信であれば取り込み可能だ。

とは言え、メモリ長200kポイントは、プロトコル解析には決して長いメモリ長ではないので、お遊びに使用する程度が頃合いだろう。

取り込んだデータは、デコードされ、テキストデータで保存することができる。

下記が、そのでコード結果だ。Si5351Aは、アドレス60に指定されているので、60番地に書き込みなどを行うことになります。

 

Marked,Time,Serial Bus,Restart,Address,Data,Missing Ack
,-16.00us,Serial1,,60W,,
,246.0us,Serial1,,60W,03 FF,
,623.0us,Serial1,,60W,10 80,
,994.0us,Serial1,,60W,11 80,
,1.363ms,Serial1,,60W,12 80,
,1.732ms,Serial1,,60W,13 80,
,2.101ms,Serial1,,60W,14 80,
,2.470ms,Serial1,,60W,15 80,
,2.838ms,Serial1,,60W,16 80,
,3.209ms,Serial1,,60W,17 80,
,3.651ms,Serial1,,60W,1A 00,
,4.024ms,Serial1,,60W,1B 01,
,4.395ms,Serial1,,60W,1C 00,
,4.766ms,Serial1,,60W,1D 10,
,5.135ms,Serial1,,60W,1E 00,
,5.508ms,Serial1,,60W,1F 00,
,5.877ms,Serial1,,60W,20 00,
,6.248ms,Serial1,,60W,21 00,
,6.618ms,Serial1,,60W,B1 A0,
,7.572ms,Serial1,,60W,22 00,
,7.992ms,Serial1,,60W,23 03,
,8.377ms,Serial1,,60W,24 00,
,8.750ms,Serial1,,60W,25 0A,
,9.120ms,Serial1,,60W,26 55,
,9.494ms,Serial1,,60W,27 00,
,9.864ms,Serial1,,60W,28 00,
,10.23ms,Serial1,,60W,29 01,
,10.60ms,Serial1,,60W,B1 A0,
,11.35ms,Serial1,,60W,2A 00,
,11.75ms,Serial1,,60W,2B 01,
,12.13ms,Serial1,,60W,2C 00,
,12.50ms,Serial1,,60W,2D 02,
,12.87ms,Serial1,,60W,2E 00,
,13.24ms,Serial1,,60W,2F 00,
,13.61ms,Serial1,,60W,30 00,
,13.99ms,Serial1,,60W,31 00,
,14.36ms,Serial1,,60W,10 4F,
,14.76ms,Serial1,,60W,2C,
,15.06ms,Serial1,,60R,00,X
,15.78ms,Serial1,,60W,32 00,
,16.18ms,Serial1,,60W,33 02,
,16.56ms,Serial1,,60W,34 00,
,16.93ms,Serial1,,60W,35 14,
,17.30ms,Serial1,,60W,36 C0,
,17.67ms,Serial1,,60W,37 00,
,18.06ms,Serial1,,60W,38 00,
,18.43ms,Serial1,,60W,39 00,
,18.81ms,Serial1,,60W,11 2F,
,19.20ms,Serial1,,60W,34,
,19.48ms,Serial1,,60R,00,X
,20.17ms,Serial1,,60W,3A 00,
,20.57ms,Serial1,,60W,3B 01,
,20.95ms,Serial1,,60W,3C 01,
,21.32ms,Serial1,,60W,3D C0,
,21.69ms,Serial1,,60W,3E 00,
,22.07ms,Serial1,,60W,3F 00,
,22.44ms,Serial1,,60W,40 00,
,22.81ms,Serial1,,60W,41 00,
,23.18ms,Serial1,,60W,12 6F,
,23.57ms,Serial1,,60W,3C,
,23.88ms,Serial1,,60R,01,X
,24.18ms,Serial1,,60W,3C 61,
,24.56ms,Serial1,,60W,3C,
,24.83ms,Serial1,,60R,61,X
,25.48ms,Serial1,,60W,03 00,

 

しかし、これだけではわかりにくいので、各レジスタの名前を当てはめて表示すると、下記のようになった。

 

Marked,Time,Serial Bus,Restart,Address,Data,Missing AckMarked,Time,Serial Bus,Restart,Address,Data,Missing Ack

,-16.00us,Serial1,,60W,,

,246.0us,Serial1,,60W,03 FF, #3 CLK2,CLK1,CLk0=1

,623.0us,Serial1,,60W,10 80, #16 CLK0_PDN=1

,994.0us,Serial1,,60W,11 80, #17 CLK1_PDN=1

,1.363ms,Serial1,,60W,12 80, #18 CLK2_PDN=1

,1.732ms,Serial1,,60W,13 80, #18 表記なし=80

,2.101ms,Serial1,,60W,14 80, #19 表記なし=80

,2.470ms,Serial1,,60W,15 80, #20 表記なし=80

,2.838ms,Serial1,,60W,16 80, #21 表記なし=80

,3.209ms,Serial1,,60W,17 80, #22 表記なし=80

,3.651ms,Serial1,,60W,1A 00, #26 MSNA_P3[15:8]=00

,4.024ms,Serial1,,60W,1B 01, #27 MSNA_P3[7:0]=01

,4.395ms,Serial1,,60W,1C 00, #28 MSNA_P1[17:16]=0

,4.766ms,Serial1,,60W,1D 10, #29 MSNA_P1[15:8]=10

,5.135ms,Serial1,,60W,1E 00, #30 MSNA_P1[7:0]=00

,5.508ms,Serial1,,60W,1F 00, #31 MSNA_P3[19:16]=0,MMSNA_P2[19:16]=0

,5.877ms,Serial1,,60W,20 00, #32 MSNA_P2[15:8]=00

,6.248ms,Serial1,,60W,21 00, #33 MSNA_P2[7:0]

,6.618ms,Serial1,,60W,B1 A0, #177 PLLB_RST=1,PLLA_RST=1

,7.572ms,Serial1,,60W,22 00, #34 MSNB_P3[15:8]=00

,7.992ms,Serial1,,60W,23 03, #35 MSNB_P3[7:0]=03

,8.377ms,Serial1,,60W,24 00, #36 MSNB_P2[17:16]=0

,8.750ms,Serial1,,60W,25 0A, #37 MSNB_P1[15:8]=0A

,9.120ms,Serial1,,60W,26 55, #38 MSNB_P1[7:0]=55

,9.494ms,Serial1,,60W,27 00, #39 MSNB_P3[19:16]=0,MSNB_P2[19:16]=0

,9.864ms,Serial1,,60W,28 00, #40 MSNB_P2[15:8]=0

,10.23ms,Serial1,,60W,29 01, #41 MSNB_P2[7:0]=01

,10.60ms,Serial1,,60W,B1 A0, #177 PLLB_RST=1,PLLA_RST=1

,11.35ms,Serial1,,60W,2A 00, #42 MS0_P3[15:8]=01

,11.75ms,Serial1,,60W,2B 01, #43 MS0_P3[7:0]=01

,12.13ms,Serial1,,60W,2C 00, #44R0_DIV[2:0]=0,MS0DIVBY4[1:0]=0,MS0_P1[17:16]=0

,12.50ms,Serial1,,60W,2D 02, #45 MS0_P1[15:8]=02

,12.87ms,Serial1,,60W,2E 00, #46 MS0_P1[7:0]=00,13.24ms,Serial1,,60W,2F 00, #47 MS0_P3[19:16]=0,MS0_P2[19:16]=0

,13.61ms,Serial1,,60W,30 00, #48 MS0_P2[15:8]=0

,13.99ms,Serial1,,60W,31 00, #49 MS0_P2[7:0]=0

,14.36ms,Serial1,,60W,10 4F, #16 CLK0_PDN=0,MS0_INT=1,CLRK0[1:0]=3,CLK0_IDRV[1:0]=3 ,14.76ms,Serial1,,60W,2C,, #44 R0_DIV[2:0]=X,MS0DIVBY4[1:0]=X,MS0_P1[17:16]=X,15.06ms,Serial1,,60R,00,X,15.78ms,Serial1,,60W,32 00, #50 MS1_P3[15:8],

16.18ms,Serial1,,60W,33 02, #51 MS1_P3[7:0]

,16.56ms,Serial1,,60W,34 00, #52 R1_DIV[2:0]=0,MS1_DIVBY4[1:0]=0,MS1_P1[17:16]=0,16.93ms,Serial1,,60W,35 14, #53 MS1_P1[15:8]=14 #20

,17.30ms,Serial1,,60W,36 C0, #54 MS1_P1[7:0]=C0 #192

,17.67ms,Serial1,,60W,37 00, #55 MS1_P3[19:16]=0,MS1_P2[19:16]

,18.06ms,Serial1,,60W,38 00, #56 MS1_P2[15:8]=00

,18.43ms,Serial1,,60W,39 00, #57 MS1_P2[7:0]=00

,18.81ms,Serial1,,60W,11 2F, #17 CLK1_PDN=0,MS1_INT=0,MS1_SRC=1,CLK1_INV=1,CLK1_SRC[1:0]=3,CLK1_IDRV[1:0]=3

,19.20ms,Serial1,,60W,34, #52 R1_DIV[2:0]=X,MS1_DIVBY4[1:0]=X,MS1_P1[17:16]=X,19.48ms,Serial1,,60R,00,X,20.17ms,Serial1,,60W,3A 00, #58 MS2_P3[115:8]=00

,20.57ms,Serial1,,60W,3B 01, #59 MS2_P3[7:0]=01

,20.95ms,Serial1,,60W,3C 01, #60 R2DIV[2:0]=0,MS2_DIVBY4[1:0]=0,MS2_P1[17:16]=1,21.32ms,Serial1,,60W,3D C0, #61 MS2_P1[16:8]=C0,21.69ms,Serial1,,60W,3E 00, #62 MS2_P1[7:0]=0

,22.07ms,Serial1,,60W,3F 00, #63 MS2_P3[19:16]=0,MS2_P2[19:16]=0

,22.44ms,Serial1,,60W,40 00, #64 MS2_P2[15:8]=00

,22.81ms,Serial1,,60W,41 00, #65 MS2_P2[7:0]=00

,23.18ms,Serial1,,60W,12 6F, #18 CLK2_PDN=0,MS2_INT=1,MS2_SRC=1,CLK2_INV=0,CLK2_SRC[1:0]=3,CLK2_IDRV[1:0]=3,23.57ms,Serial1,,60W,3C, #60 R2DIV[2:0]=X,MS2_DIVBY4[1:0]=X,MS2_P1[17:16]=X

,23.88ms,Serial1,,60R,01,X,24.18ms,Serial1,,60W,3C 61, #60 R2DIV[2:0]=6,MS2_DIVBY4[1:0]=0,MS2_P1[17:16]=1,24.56ms,Serial1,,60W,3C,

,24.83ms,Serial1,,60R,61,X #60 R2DIV[2:0]=X,MS2_DIVBY4[1:0]=X,MS2_P1[17:16]=X

,25.48ms,Serial1,,60W,03 00, #3 CLK2,CLK1,CLk0=0

 

途中読み込みを行うところがあるが、データが読み込めていないようだ。

また、設定されていないアドレスに、データを書き込んでいるところもちょっとナゾい。

 

オシロでデコードしたアドレスとデータをそのまま送信してみる

上記のでコードデータをPythonのプログラムで、I2Cで送信するだけのプロぐrサムに落とし込んでみると、下記のように書ける。

 

import smbus


#SMBusの引数に1を指定する。Raspberry Piのi2cバスの番号
i2c = smbus.SMBus(1)
#デバイスのアドレス 0x60
addr = 0x60
#

i2c.write_byte_data(addr, 0x03, 0xFF)
i2c.write_byte_data(addr, 0x10, 0x80)
i2c.write_byte_data(addr, 0x11, 0x80)
i2c.write_byte_data(addr, 0x12, 0x80)
i2c.write_byte_data(addr, 0x13, 0x80)
i2c.write_byte_data(addr, 0x14, 0x80)
i2c.write_byte_data(addr, 0x15, 0x80)
i2c.write_byte_data(addr, 0x16, 0x80)
i2c.write_byte_data(addr, 0x17, 0x80)
i2c.write_byte_data(addr, 0x1A, 0x00)
i2c.write_byte_data(addr, 0x1B, 0x01)
i2c.write_byte_data(addr, 0x1C, 0x00)
i2c.write_byte_data(addr, 0x1D, 0x10)
i2c.write_byte_data(addr, 0x1E, 0x30)
i2c.write_byte_data(addr, 0x1F, 0x00)
i2c.write_byte_data(addr, 0x20, 0x00)
i2c.write_byte_data(addr, 0x21, 0x00)
i2c.write_byte_data(addr, 0xB1, 0xA0)
i2c.write_byte_data(addr, 0x22, 0x00)
i2c.write_byte_data(addr, 0x23, 0x03)
i2c.write_byte_data(addr, 0x24, 0x00)
i2c.write_byte_data(addr, 0x25, 0x0A)
i2c.write_byte_data(addr, 0x26, 0x55)
i2c.write_byte_data(addr, 0x27, 0x00)
i2c.write_byte_data(addr, 0x28, 0x00)
i2c.write_byte_data(addr, 0x29, 0x01)
i2c.write_byte_data(addr, 0xB1, 0xA0)
i2c.write_byte_data(addr, 0x2A, 0x01)
i2c.write_byte_data(addr, 0x2B, 0x01)
i2c.write_byte_data(addr, 0x2C, 0x00)
i2c.write_byte_data(addr, 0x2D, 0x02)
i2c.write_byte_data(addr, 0x2E, 0x00)
i2c.write_byte_data(addr, 0x30, 0x00)
i2c.write_byte_data(addr, 0x31, 0x00)
i2c.write_byte_data(addr, 0x10, 0x4F)

#,14.36ms,Serial1,,60W,2C,
#i2c.write_byte_data(addr, 0x2C, 0x44)


#,15.06ms,Serial1,,60R,00,X
data = i2c.read_byte_data(addr, 0x00)
print(data)


i2c.write_byte_data(addr, 0x32, 0x00)
i2c.write_byte_data(addr, 0x33, 0x02)
i2c.write_byte_data(addr, 0x34, 0x00)
i2c.write_byte_data(addr, 0x35, 0x14)
i2c.write_byte_data(addr, 0x36, 0xC0)
i2c.write_byte_data(addr, 0x37, 0x00)
i2c.write_byte_data(addr, 0x38, 0x00)
i2c.write_byte_data(addr, 0x39, 0x00)
i2c.write_byte_data(addr, 0x11, 0x2F)

#,19.20ms,Serial1,,60W,34,
#i2c.write_byte_data(addr, 0x34, 0x00)


#,15.06ms,Serial1,,60R,00,X
data = i2c.read_byte_data(addr, 0x00)
print(data)


i2c.write_byte_data(addr, 0x3A, 0x00)
i2c.write_byte_data(addr, 0x3B, 0x01)
i2c.write_byte_data(addr, 0x3C, 0x01)
i2c.write_byte_data(addr, 0x3D, 0xC0)
i2c.write_byte_data(addr, 0x3E, 0x00)
i2c.write_byte_data(addr, 0x3F, 0x00)
i2c.write_byte_data(addr, 0x40, 0x00)
i2c.write_byte_data(addr, 0x41, 0x00)
i2c.write_byte_data(addr, 0x12, 0x6F)

#,23.8,23.88ms,8ms,Serial1,,60R,01,X
data = i2c.read_byte_data(addr, 0x01)
print(data)

i2c.write_byte_data(addr, 0x3C, 0x61)

#,24.56ms,Serial1,,60W,3C,
#i2c.write_byte_data(addr, 0x3C, 0x61)
data = i2c.read_byte_data(addr, 0x61)
print(data)

i2c.write_byte_data(addr, 0x03, 0x60)

 

これを実行してみると、下記のように表示された。

Readしたデータについては、結果がなかったが、下記のように表示されているのがわかる。

 

f:id:ja1yaz:20210303204120p:plain

オシロででコードしたデータをI2Cの送受信コードに書き換えて実行

 

RaspberryPiにオシロスコープEDUX1052GをUSB接続してみた。

RaspberryPiにオシロを接続してみる

RaspberryPiのPythonは、Ver3.7.3なので、

pip3 install pyusb
pip3 install pyvisa
pip3 install pyvisa-py

 

を実行してPyvisaに必要なプログラムをインストールしました。

下記のアプリケーションノートが参考になりました。

 

Save Lab Space and Cost: Controlling Serial and Ethernet Test Instruments with a Raspberry Pi 3 Model B

https://download.tek.com/document/1KW-61463-0__Raspberry_Pi_3_Save_Lab_Space_%20Cost_Application_Note_090718.pdf

 

早速下記を実行してみました。

 

import pyvisa
r = pyvisa.ResourceManager('@py')
print(r.list_resources())

 

なんで?

実行してみると

('ASRL/dev/ttyAMA0::INSTR',)

しか返ってこない。

これって、シリアルインターフェースなんじゃない。

USBはどうしちゃったの?同じような悩みの方はいないかとググってみるとあった。

 

python3 -m visa info

 

を実行してみろとのこと。

 

/home/pi/.local/lib/python3.7/site-packages/visa.py:23: FutureWarning: The visa module provided by PyVISA is being deprecated. You can replace `import visa` by `import pyvisa as visa` to achieve the same effect.

The reason for the deprecation is the possible conflict with the visa package provided by the https://github.com/visa-sdk/visa-python which can result in hard to debug situations.
FutureWarning,
Machine Details:
Platform ID: Linux-4.19.97-v7+-armv7l-with-debian-10.3
Processor:

Python:
Implementation: CPython
Executable: /usr/bin/python3
Version: 3.7.3
Compiler: GCC 8.3.0
Bits: 32bit
Build: Dec 20 2019 18:57:59 (#default)
Unicode: UCS4

PyVISA Version: 1.11.3

Backends:
ivi:
Version: 1.11.3 (bundled with PyVISA)
Binary library: Not found
py:
Version: 0.5.1
ASRL INSTR: Available via PySerial (3.4)
USB INSTR: Available via PyUSB (1.1.1). Backend: libusb1
USB RAW: Available via PyUSB (1.1.1). Backend: libusb1
TCPIP INSTR: Available
TCPIP SOCKET: Available
GPIB INSTR:
Please install linux-gpib (Linux) or gpib-ctypes (Windows, Linux) to use this resource type. Note that installing gpib-ctypes will give you access to a broader range of funcionality.
No module named 'gpib'

 

これを見ると、

USB INSTR: Available via PyUSB (1.1.1). Backend: libusb1

 

となっているので、USBのデバイスは認識できるはず。

 

lsusb

 

を実行してみると、

Bus 001 Device 011: ID 2a8d:039b
Bus 001 Device 004: ID 054c:0243 Sony Corp. MicroVault Flash Drive
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514 Fast Ethernet Adapter
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. SMC9514 Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

 

SONYUSBメモリはきちんと認識しているのが確認できる。

でもUSBTMCであるKeysightのオシロは認識されていない。

 

それではと、

他のPCには、TekVISAが入っているので、同じUSBケーブルを使用して接続してみると、きちんと認識するのを確認できた。

f:id:ja1yaz:20210213190412p:plain

EDUX1052_TekVISA

ということは、USBケーブルが悪いわけじゃないということを意味している。

そうすると、原因はRaspberrypiの方か?

 

では、Ethernetではどうなのか?

import pyvisa               
rm = pyvisa.ResourceManager('@py')
visaRsrcAddr = "TCPIP::192.168.1.1::inst0::INSTR"
scope = rm.open_resource(visaRsrcAddr)

print(scope.query('*IDN?'))
scope.close()
rm.close()

 

Ethernetのアドレスと打ち込んで試してみるとID(IPアドレス、機器名、シリアル他)が返ってきた。

Ethernetであれば、通信ができることを確認できた。

 

今後の課題 

上記の事から、RaspberryPi自体に問題があるのではないかという事が考えられる。

今後試してみるべきは、RaspberryPiOSのBUG情報の参照と新しいRaspberryPiOSのインストールといったところか。

 

 

 

オシロスコープを購入した

オシロスコープを購入した

Yahooのブログを書いていたころよくオシロスコープを使用したものだが、2016年に引っ越してからこっち、引っ越した当時のまま、エアーキャップをかぶったまま梱包された状態になっていた。

これがよくなかったんだと思う。

年末に、梱包を解いてみたところ、画面が変質してしまい、波形は表示されているのだが、よく見えない状態に陥ってしまっている。

つまみを触ったら欠けてしまった。

これは、そろそろダメだなと思った。

早速購入を検討しようと、最近使ってもいなかったのに燃え始めてしまった。

このコロナ禍で、遊びものに飢えてしまっていたのだろう。

勝手に予算は10万とか決めてしまい。その次に性能を考えている始末。

そうじゃないでしょう!?

買い物のことを考え始めると、いてもたってもいられなくなってしまう自分なのでした。

 

冷静になれ

最近のオシロスコープはいろいろな機能がついているものが多い。

そこにふらふらと引き寄せられてしまう自分がいるのがありありとわかる。

まず、何のために購入するんだ。

明確に、アマチュア無線、電子工作用。

よろしい。

じゃあ先ずは、周波数帯域を決めようじゃないか。

自分のメインの周波数はいくつか? そう50MHz

50MHzの信号をきちんと見るためには、必要な周波数帯域は、その3倍だから、150MHzとなる。

 

ここは、頼みの秋月電子をのぞいてみようということで、浮上したのは、OWONの200MHz 2ch 2GS/s 10Mポイント LANポート付きというもの。

価格81,000円(税込)

 

ポータブル・デジタルストレージオシロ SDS8202: 測定器・計測器関連 秋月電子通商-電子部品・ネット通販 (akizukidenshi.com)

 

しかし、秋月電子で8万のオシロは、あまり買いたくないなと。

壊れた時のことを考えると二の足を踏む。

 

Instek社も200MHzだと20万円以上だ

自分としては、高額な出資となると、テクトロとキーサイトあたりが欲しくなる。しかし、やっぱり投資できるのは、10万円以下というのが現実的だ。

すると、両社で最も低価格なモデルとならざるを得ない。

では、50MHzの信号はどうやってみるつもりなのか。

無線機の組み立ては、RFプローブでレベルはみえるのでそれでもいいか。

それだったら、DMMでもいいんじゃないのか。

わかった。50MHzはあきらめて、今後は、7MHzに転向する。

7MHzであれば、7倍の高調波も見えるし十分。

電子工作も50MHzあれば、全く問題なし。

周波数帯域は、50MHzでよいということにした。

 

機種を絞る

テクトロニクスの低価格オシロは、TBS1052C型。

50MHz 2ch 1GS/s メモリ20kポイント 約5万円

 

キーサイトの低価格オシロは、EDUX1052A型。

50MHz 2ch 1GS/s メモリ200kポイント 約6万円

 

バナースペックは、似たり寄ったりだ。

テクトロニクスは、このクラスのオシロに多くの機能を載せず、敢えてメニューを深くしないようにしているのが明らかで、だれでも使用できることをコンセプトにしている。

・時間確度20ppm(キーサイト:50ppm)

・小型プローブ

上記は、バナースペックではないが、初心者に優しいつくりといえる。

 

それに対して、キーサイトは、いろいろな機能を詰め込んだ仕様で、データシートを読むと惹かれるところが多い。

・LAN USBインターフェース装備 (LAN経由でのコントロール機能あり)

・信号発生機搭載オプションあり(周波数レスポンス解析搭載)

I2C、UART、SPI、RS-232解析機能標準搭載

・トレーニング信号搭載

・0.5mV/divレンジ搭載

 

EDUX1052Gを購入

性格が全く異なる2社

コンセプトの差は明確だ。

オシロスコープで、実験する時、いつも用意するものがある。

信号源だ、この設定があるのはとてもうれしい。

キーサイトのEDUX1052G型は、信号源がついて、8万円弱(2020年12月26日現在:キャンペーン価格)だったので、とても魅力に感じ、速攻ポチしました。

こうして、翌年2021年1月上旬、納品されることになったのです。

テクトロニクスに信号発生オプションがあれば、テクトロニクスもよかったけれど、LANでのコントロールができるという点も響きました。

今までオシロも10台以上使ってきたので、たまにはキーサイトもいいかなと。

 

使ってみた。

やっぱり、メニューが多い。

初心者には向かないことは明らかだ。

EDUという教育向けのネーミングはやめた方がいいような気がする。

でも面白い!

 

RspberryPiが再始動

RaspberryPi購入したけど

2016年に物珍しさから、RsapberryPi3Bを購入した。

アマチュア無線などに使用している人が結構いたからというのもあり、とりあえず購入した。

しかし、Pythonなど全く初めてだったので、ブルーバックスの説明本もほどなく購入して、GPIOなどを動かして喜んでいた。

当初、問題になっていたのは、キーボード、マウスでの操作だった。

せっかくBlutoothが使えるのだからと、ワイヤレスキーボードBSKBB22BK(バッファロー製)を購入して接続していた。ワイヤレスマウスは、よいのだが、キーボードがいけなかった。とにかくすぐ切れてしまって、こっちが切れてしまう。

せっかく購入したのだが、あんなにあった有線キーボードは、すべて捨ててしまっていたので、プログラムどころではなく、そんなこんなで、プログラミングする機械から、マウスでオペレーションできる機能限定のGYAOを見る機械へと変わってしまった。

しかも、映画を見ていると、発熱マークが出てしまう。

ということで、専ら、YOUTUBEウクレレ用のコード検索のUFRETを閲覧するためのものになっていた。

でも、iPadの方が便利だよねってことになり、ジャンク箱に突っ込まれたままになっていました。

 

オシロスコープ購入

2020年末、長年使っていたオシロスコープがこわれてしまい、低価格なオシロを購入。

Keysight社EDUX1052Gだ(YRLで8万円)。 (オシロ詳細については、また別途ふれます。)

EDUX1052G オシロスコープ:50 MHz、2個のアナログチャネル、波形発生器内蔵 | Keysight

本当は、50MHz帯を見たいので、150MHz程度は欲しかったが、20万円以上になってしまう。さすがにこれは痛いので50MHzで手を打つことにした。

製作は、7MHz帯までにすればよいだけのことだ。

このオシロは、信号発生機能を持っているので、PCコントロールできると周波数を変えて取り込みできるので楽しそうだ。

何でコントロールするか、手持ちの、WindosPCは、昔購入した、EeePC1015PEMーBK(ASUS製)だが、このPCは、純粋に無線用に使用しようと考えていて、いつでも初期化できるようにしたい。これに、ドライバソフトを入れてしまうと何もできなくなってしまう。

そこで思いついたのが、RaspberryPiだ。

 

RaspberryPiでオシロをコントロールしたい!

RspberryPiを考えたのは、以前Pyvisaで、RaspberryPiを使用して計測機器をコントロールできるのを聞いたように思たからだ。

しかし待てよ、その前に、RaspberryPiには、大きな問題があったような?

あのキーボードは使いないじゃないか。

そこで、ググってみると、皆さん同様の問題点を持っている人がいらっしゃるようでVNCを使って、WindowsPCからDesktop共有で、RsapberryPiを使用できることが分かった。  (RaspberryPi VNC で検索すると出てきます。)

これなら、キーボードは、打ちなれた、Windowsからできるし、オシロスコープも、ネットワークから手動コントロールできるので、オシロをWindowsPCから手動で動かせて、RaspberryPiから、ネットワークや、USB経由でコントロールできるんじゃないかと夢は膨らみます。

皆さんおっしゃっているように、せめてパスワードは、設定しないとですね。

 

f:id:ja1yaz:20210211154835p:plain

これで、オシロスコープが、RaspberryPi経由で、WindowsPCからコントロールできるようになりました。

 

ここまで来れてよかったけど

しかし、ここまで来るには、いろいろあり、当初は、Windowsの機能を使用してやろうかと思ったのですが、EeePCは、無理やりのWindows10 Home(32bit)であり、HomeだとDesktop共有できないんですね。それではと、我が家で最もまともなMacBookでもやってみたんですが、VNCのバージョンが合わないということで断念。

VNCだったら、EeePCでもできるんではないかということで、原点回帰して、EeePCに戻ってきました。(このEeePCもいろいろあったので、別途書きます。)