- プロジェクトフロー:
- プロジェクト要件
- 回路図:
- RaspberryPiオシロスコープの依存関係をインストールします。
- Raspberry PiオシロスコープのPythonコード:
- Raspberry Piオシロスコープの動作:
こんにちはみんな、今日の投稿へようこそ。メーカーであることの最も魅力的なことの1つは、その場しのぎのツールを開発する方法を知っていることです。そのような多様性があれば、プロジェクトでの作業に行き詰まることはありません。そこで本日は、電気/電子工学で最も重要なツールの1つであるRaspberryPiベースの仮のバージョンを構築する方法を共有します。オシロスコープ。
オシロスコープは、さまざまな信号電圧の視覚化と観察を可能にする電子テスト機器であり、通常、1つまたは複数の信号が時間に対してプロットされた2次元プロットとして表示されます。今日のプロジェクトでは、Raspberry Piとアナログ-デジタルコンバータモジュールを使用して、オシロスコープの信号視覚化機能を複製しようとしています。
プロジェクトフロー:
Raspberry Piを使用してオシロスコープの信号の視覚化を複製するには、次の手順が必要です。
1.入力信号のデジタルからアナログへの変換を実行します
2.結果のデータを表現用に準備します
3.ライブタイムグラフにデータをプロットします
このプロジェクトの簡略化されたブロック図は、次の図のようになります。
プロジェクト要件
このプロジェクトの要件は、次の2つに分類できます。
- ハードウェア要件
- ソフトウェア要件
ハードウェア要件
このプロジェクトをビルドするには、次のコンポーネント/パーツが必要です。
- Raspberry pi 2(またはその他のモデル)
- 8または16GBSDカード
- LAN /イーサネットケーブル
- 電源またはUSBケーブル
- ADS1115 ADC
- LDR(テスト用としてオプション)
- 10kまたは1kの抵抗
- ジャンパー線
- ブレッドボード
- piのデスクトップを監視またはその他の方法で確認する(VNCを含む)
ソフトウェア要件
このプロジェクトのソフトウェア要件は、基本的に、データの視覚化に使用されるpythonモジュール( matplotlibおよびdrawnow )と、ADS1115ADCチップとのインターフェイス用のAdafruitモジュールです。先に進むにつれて、これらのモジュールをRaspberryPiにインストールする方法を示します。
このチュートリアルは使用するラズベリーパイOSに関係なく機能しますが、私はラズベリーパイストレッチOSを使用し、ラズベリーストレッチOSでのラズベリーパイのセットアップに精通しており、ラズベリーにSSHで接続する方法を知っていることを前提としています。パテのような端末ソフトウェアを使用するpi。これに問題がある場合は、このWebサイトに役立つRaspberryPiチュートリアルがたくさんあります。
すべてのハードウェアコンポーネントを配置したら、回路図を作成してコンポーネントを接続しましょう。
回路図:
アナログ入力信号をRaspberryPiで視覚化できるデジタル信号に変換するために、ADS1115ADCチップを使用します。Raspberry Piは、Arduinoやほとんどのマイクロコントローラーとは異なり、オンボードのアナログ-デジタルコンバーター(ADC)を備えていないため、このチップは重要になります。ラズベリーパイと互換性のあるADCチップを使用することもできますが、高解像度(16ビット)と十分に文書化されたデータシートとAdafruitによる使用説明書があるため、このチップを好みます。Raspberry Pi ADCチュートリアルをチェックして、詳細を確認することもできます。
ADCはI2Cベースのデバイスであり、以下の回路図に示すようにRaspberryPiに接続する必要があります。
わかりやすくするために、2つのコンポーネント間のピン接続についても以下で説明します。
ADS1115およびRaspberryPi接続:
VDD – 3.3v
GND – GND
SDA – SDA
SCL – SCL
接続がすべて完了したら、piの電源を入れ、以下に説明する依存関係のインストールに進みます。
RaspberryPiオシロスコープの依存関係をインストールします。
ADCからデータをプルしてライブグラフにプロットするPythonスクリプトの作成を開始する前に、ラズベリーパイのI2C通信インターフェイスを有効にして、前述のソフトウェア要件をインストールする必要があります。これは以下の手順で実行されるため、簡単に実行できます。
ステップ1:Raspberry PiI2Cインターフェースを有効にする
I2Cを有効にするには、ターミナルから次のコマンドを実行します。
sudo raspi-config
構成パネルが開いたら、インターフェイスオプションを選択し、I2Cを選択して、[有効化]をクリックします。
ステップ2:ラズベリーパイを更新する
プロジェクトを開始する前に最初に行うことは、Piを更新することです。これにより、OSのすべてが最新であり、Piにインストールすることを選択した最新のソフトウェアとの互換性の問題が発生することはないと確信しています。これを行うには、以下の2つのコマンドを実行します。
sudo apt-get update sudo apt-get upgrade
ステップ3:ADC用のAdafruitADS1115ライブラリをインストールする
更新が完了すると、ADS115チップ用のAdafruitpythonモジュールから始まる依存関係をインストールする準備が整います。を実行して、RaspberryPiホームディレクトリにいることを確認します。
cd〜
次に、実行してビルドエッセンシャルをインストールします。
sudo apt-get install build-essential python-dev python-smbus git
次に、実行してライブラリのAdafruitgitフォルダーのクローンを作成します。
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
クローンファイルのディレクトリに移動し、セットアップファイルを実行します。
cd Adafruit_Python_ADS1x1z sudo python setup.py install
インストール後、画面は下の画像のようになります。
ステップ4:ライブラリと12C通信をテストします。
プロジェクトの残りの部分に進む前に、ライブラリをテストし、ADCがI2Cを介してラズベリーパイと通信できることを確認することが重要です。これを行うには、ライブラリに付属のサンプルスクリプトを使用します。
まだAdafruit_Python_ADS1x15フォルダーにある間に、実行してディレクトリをexamplesディレクトリに変更します。
cdの例
次に、ADCの4つのチャネルの値を表形式で表示するsampletest.pyの例を実行します。
以下を使用して例を実行します。
python simpletest.py
I2Cモジュールが有効で接続が良好な場合、次の画像に示すようなデータが表示されます。
エラーが発生した場合は、ADCがPIに適切に接続されており、PiでI2C通信が有効になっていることを確認してください。
ステップ5: Matplotlib をインストールする
データを視覚化するには、Pythonですべての種類のグラフをプロットするために使用される matplotlib モジュールをインストールする必要があります。これは、を実行することで実行できます。
sudo apt-get install python-matplotlib
下の画像のような結果が表示されます。
ステップ6: Drawnowpython モジュールをインストールします
最後に、 drawnowpython モジュールをインストールする必要があります。このモジュールは、データプロットにライブアップデートを提供するのに役立ちます。
私たちは、インストールする 関数drawnow のpythonパッケージインストーラを経て、 pip なので、インストールされていることを確認する必要があります。これは、を実行することで実行できます。
sudo apt-get install python-pip
次に、pipを使用して、以下を 実行 することにより、 drawnow パッケージをインストールできます。
sudo pip install drawow
実行すると、次の画像のような結果が得られるはずです。
すべての依存関係がインストールされたので、コードを作成する準備が整いました。
Raspberry PiオシロスコープのPythonコード:
このPiオシロスコープのPythonコードは、特にpython matplotlib モジュールに精通している場合は、かなり単純です。コード全体を示す前に、コードを部分に分割して、コードの各部分が何をしているのかを説明します。これにより、コードを拡張してより多くのことを実行できるようになります。
この段階では、モニターに切り替えるか、VNCビューアを使用することが重要です。プロットされているグラフは端末に表示されないため、RaspberryPiのデスクトップを見ることができます。
モニターをインターフェースとして、新しいpythonファイルを開きます。任意の名前を付けることができますが、scope.pyと呼びます。
sudo nano scope.py
ファイルを作成したら、最初に使用するモジュールをインポートします。
import time import matplotlib.pyplot as plt from drawow import * import Adafruit_ADS1x15
次に、ADS1115ADCを指定するADS1x15ライブラリのインスタンスを作成します
adc = Adafruit_ADS1x15.ADS1115()
次に、ADCのゲインを設定します。ゲインにはさまざまな範囲があり、ADCの入力に期待する電圧に基づいて選択する必要があります。このチュートリアルでは、0〜4.09vを推定しているため、ゲイン1を使用します。ゲインの詳細については、ADS1015 / ADS1115データシートを確認してください。
GAIN = 1
次に、プロットするデータを格納するために使用する配列変数と、カウントとして機能する別の変数を作成する必要があります。
Val = cnt = 0
次に、データをライブでプロットできるように、プロットをインタラクティブにする意図を知らせます。
plt.ion()
次に、ADCチャネル(この場合はチャネル0)を指定して連続ADC変換を開始し、ゲインも指定します。
ADS1115の4つのADCチャネルすべてを同時に読み取ることができますが、このデモンストレーションには1つのチャネルで十分であることに注意してください。
adc.start_adc(0、gain = GAIN)
次に、関数 def makeFig を作成して、ライブプロットを保持するグラフの属性を作成および設定します。まず、 ylim を使用してy軸の制限を設定し、その後、プロットのタイトルとラベル名を入力してから、プロットするデータとそのプロットスタイルおよび色を plt.plot() を使用して指定します。 。 また、ADCの4つのチャネルが使用されているときに各信号を識別できるように、チャネルを指定することもできます(チャネル0が指定されたとおり)。 plt.legend は、その信号に関する情報(チャネル0など)を図のどこに表示するかを指定するために使用されます。
plt.ylim(-5000,5000) plt.title( 'Osciloscope') plt.grid(True) plt.ylabel( 'ADC出力') plt.plot(val、 'ro-'、label = 'lux') plt.legend(loc = '右下')
次に、ADCから常にデータを読み取り、それに応じてプロットを更新するために使用される while ループを記述 し ます。
最初に行うことは、ADC変換値を読み取ることです
値= adc.get_last_result()
次に、プロットされたデータを確認する別の方法を提供するために、端末に値を出力します。印刷後数秒待ってから、そのチャネルのデータを格納するために作成されたリスト(val)にデータを追加します。
print( 'チャネル0:{0}' .format( value))time.sleep(0.5)val.append(int(value))
次に、 drawnow を呼び出して、プロットを更新します。
drawow(makeFig)
最新のデータがプロットで利用できるものであることを確認するために、50データカウントごとにインデックス0のデータを削除します。
cnt = cnt + 1 if(cnt> 50): val.pop(0)
それで全部です!
完全なPythonのコードは、このチュートリアルの最後に与えられています。
Raspberry Piオシロスコープの動作:
完全なPythonコードをコピーして、前に作成したPythonファイルに貼り付けます。プロットを表示するにはモニターが必要になるため、これらはすべてVNCまたは接続されたモニターまたは画面で実行する必要があります。
コードを保存し、を使用して実行します。
sudo python scope.py
scope.py以外の別の名前を使用した場合は、これを一致するように変更することを忘れないでください。
数分後、ADCデータが端末に印刷されているのがわかります。時折、 matplotlib から警告が表示されることがあります(下の画像を参照)。これは抑制されるべきですが、表示されているデータやプロットには影響しません。ただし、警告を抑制するために、コードのインポート行の後に次のコード行を追加できます。
警告の インポートimportmatplotlib.cbook warnings.filterwarnings( "ignore"、category = matplotlib.cbook.mplDeprecation)
このチュートリアルの担当者は以上です。オシロスコープを完全にテストするには、ポテンショメータなどのアナログデバイスをADCのチャネルに接続すると、ポテンショメータを回すたびにデータが変化することがわかります。または、正弦波または方形波を入力して出力をテストすることもできます。
読んでいただきありがとうございます。質問や追加してほしいことがあれば、コメントを残してください。
次回まで、作り続けてください!