· 

ADALM-PLUTO(購入からセットアップまで)

一家に一台は欲しい、無線学習キット「ADALM-PLUTO」を買いました。Pythonの開発環境Spyderで使えるようにします。 Amazonでも買えますが、マルツ、Mouser、Digikeyでも買えます。Amazonは高いです。マルツはユーザ登録とかハードルが低いです。 値段だけ考えるとDigikeyが一番安かったので、Digikeyで買いました。アメリカ発送なのに12/24発注で、12/28についたので、アメリカも近くなったなー。
こちらのページに説明があります。 まずはwindows用のデバイスドライバを入れます。PlutoSDR-M2k-USB-Drivers.exeをダウンロードして実行。問答無用でじゃんじゃん進めます。で、 インストール後のデバイスドライバが説明のページと一致しないけど、まぁだいたいあってそうなのでそのままGo。で、 pythonで使うにはpyadi-iioとpylibiioをpipでインストールしろとありますが、Spyderな私はcondaでインストールしたい。で、かのgoogle先生に聞いてみると、
https://anaconda.org/conda-forge/pyadi-iio
https://anaconda.org/conda-forge/libiio
があることを教えてもらえますので、で、condaで無事インストールです。
で、認識しているか、確認してみましょう。
Spyderのコンソールで、こんな感じで、認識されていることが確認できます。\(^o^)/
で、
  1. # -*- coding: utf-8 -*-
  2. # 変数クリア
  3. from IPython import get_ipython
  4. get_ipython().magic('reset -sf')
  5.   
  6. import matplotlib.pyplot as plt
  7. import numpy as np
  8. import adi
  9.  
  10. sdr = adi.Pluto()
  11.  
  12. # ADALM-PLUTOの設定
  13. # TXとRXの局発周波数をちょっとずらしてダウンコンバートされた波形が出るかどうか、、、です
  14. sdr.tx_lo=2400100000
  15. sdr.tx_hardwaregain_chan0=-10
  16. # 繰り返し送信を有効にする
  17. sdr.tx_cyclic_buffer=1
  18.  
  19. sdr.rx_lo=2400000000
  20. sdr.rx_hardwaregain_chan0=60
  21. sdr.gain_control_mode_chan0='manual'
  22.  
  23. sdr.sample_rate=10000000
  24.  
  25. # 送信するデータは1+0jで送りっぱなし
  26. data = np.ones(1)
  27. sdr.tx(data)
  28.  
  29. # 受信
  30. data_rx = sdr.rx()
  31.  
  32. sdr.tx_destroy_buffer()
  33. sdr.tx_cyclic_buffer=0
  34. # オブジェクト解放
  35. sdr=None
  36.  
  37. # プロット
  38. plt.plot(data_rx.real)
  39. plt.plot(data_rx.imag)

こんなことすると、

こうなります。10MS/sで、100kHzの正弦波をサンプリングしているはずなので、1000ptまでに10サイクル、、、そうなっているっぽいので、うまくいっているのだと思う。

ところで、一か月ぶりの更新、、、色々大変だったんですよ。公私とも。