前のチュートリアルでは、WindowsマシンにPythonをインストールする方法と、単純なLED制御プロジェクトを使用してArduinoをPythonとインターフェースする方法を学びました。初めての方は、前のチュートリアルに戻ることを強くお勧めします。このチュートリアルは同じものの続きです。
シリアルポートを介して通信するだけで、なぜArduinoでPythonが必要になるのか、すでに疑問に思っているかもしれません。しかし、Pythonは非常に強力な開発プラットフォームであり、機械学習、コンピュータービジョンなど、多くの優れたアプリケーションを統合できます。このチュートリアルでは、Pythonを使用して小さなグラフィカルインターフェイスを作成する方法 を学習します。これを行うには、Vpythonというモジュールが必要です。次のチュートリアルは、Windowsユーザーにのみ適用できます。MacまたはLinuxユーザーの場合、手順が異なるためです。
このチュートリアルの最後に、Pythonを使用して簡単なGUIを作成する方法を学習します。Arduinoに取り付けられている超音波センサーの値に反応する小さなアニメーションを作成します。このアプリケーションは、超音波センサーを使用してオブジェクトを追跡し、VPythonを使用してコンピューター上にグラフィック形式で表示します。オブジェクトを移動すると、超音波センサーが距離を感知し、Arduinoを使用してこの情報をPythonプログラムに送信し、コンピューター内のオブジェクトも移動します。面白そうですね!さあ始めましょう…
前提条件:
- Arduino(任意のバージョン)
- 超音波センサーHC-SR04
- 接続線
- Pythonを搭載したコンピューター
- 前のチュートリアルに関する知識
コンピューターへのVPythonのインストール:
以前のチュートリアルでは、Pythonをマシンにインストールする方法と、Pythonを移動して、Arduinoで簡単なプログラムを作成する方法をすでに学びました。これに加えて、Visual Python(VPython)をインストールして、Python forArduinoを使用してクールなグラフィックを作成できるようにしました。VPythonの使用を開始するための以下の簡単な手順について
ステップ1。以前のチュートリアルガイドラインに従って、Pythonがすでにインストールされていることを確認してください。
ステップ2.VPythonをクリックして、VisualPythonのexeファイルをダウンロードします。マシンが64ビットで実行されている場合でも、64ビットバージョンのインストールを選択しないでください。与えられたリンクをたどってください。
ステップ3。exeファイルを起動し、設定に従います。デフォルトのディレクトリパスを変更せず、「フルインストール」を選択していることを確認してください。
ステップ4。インストールすると、以下に示すように、デスクトップまたはアプリケーションパネルに「VIDLE(VPython)」という名前の新しいアプリケーションが表示されます。
ステップ5。アプリケーションを起動すると、次のようなウィンドウが表示されます。
ステップ6。これは、VPythonのプログラムを入力するウィンドウです。ただし、とりあえず、サンプルプログラムを開いて、 Vpythonが機能しているかどうかを確認しましょう。これを行うには、[ファイル]-> [開く]-> [バウンス]を 選択します
ステップ7。サンプルプログラムを開く必要があります。 [実行]-> [モジュールの実行] を使用してプログラムを起動してみてください。すべてが期待どおりに機能している場合は、次の画面が表示されます。
コンパイルが成功したことを示す2つの>>>とボールのバウンドを示す実際のウィンドウ(前面)が表示されたシェルウィンドウ(左)が表示されます。
ステップ8.他のサンプルプログラムを試してVPythonの能力を発見することもできます。たとえば、 「電気モーター」 と呼ばれるサンプルプログラムは 、次の画面で驚かれることでしょう。
ステップ9.これは、VPythonを使用する準備ができており、「 Vpythonのプログラミング 」トピックに 進む ことができることを意味します。
ステップ10。それ以外の場合、 「numpyエラー」 が発生する多くの人の1人のようであれば、今後の手順でその問題を整理することを期待してください。
ステップ11。[マイコンピュータ]-> [Cドライブ]-> [Python27]-> [スクリプト]-> [local.bat]を開き ます。これにより、以下に示すようなコマンドプロンプトが起動します
ステップ12。次に、 「pip install --upgrade numpy」 と入力して、 Enterキー を押します。Numpyの新しいバージョンがマシンにインストールされます。インターネット接続が遅い場合は、しばらく待つ必要があるかもしれません。
ステップ13。完了したら、ステップ4に戻ってサンプルプログラムを試すことができ、それを機能させることができるはずです。
VPythonのプログラミング:
次に、VPythonウィンドウへのプログラミングを開始します。このプログラムでは、2つの3D長方形オブジェクトを作成します。一方は、静止した超音波センサーを参照する画面の中央に配置され、もう一方は、USセンサーとオブジェクト(紙)の間の距離に基づいて動的な位置に配置されます。
完全なPythonのコードは、このページの最後に見つけることができます。さらに下に、このPythonコードを意味のある小さなジャンクに分割して説明しました。
最初の行は、 3Dオブジェクトを作成できるように、ビジュアルライブラリをインポートすることです。以下の行も同じです。
ビジュアルインポートから*
次の4行は、前のチュートリアルですでに使用しているので、よく知っているはずです。これらは、シリアルおよびタイムライブラリをインポートし、COM18でArduinoとのシリアル接続を確立するために使用されます。
import serial#シリアル通信用にインポートされたシリアルimport time#遅延関数を使用する必要があるArduinoSerial = serial.Serial( 'com18'、9600)#arduinoSerialDataというシリアルポートオブジェクトを作成するtime.sleep(2)#通信を2秒間待つ確立する
次に、オブジェクトを作成します。objとwallという名前の2つの3D長方形を作成しました。 wallLは 、画面の中央に配置されたシアン色の固定壁と OBJ 白色で可動物体です。また、壁のオブジェクトの近くに「USセンサー」というテキストを配置しました。
obj = box(pos =(-5,0,0)、size =(0.1,4,4)、color = color.white)wallL = box(pos =(-1,0,0)、size =(0.2 、12,12)、color = color.cyan)text(text = 'US sensor'、axis =(0,1,0)、pos =(-2、-6,0)、depth = -0.3、color = color.cyan)
上記の3行は、ほとんどの初めての読者にはギリシャ語とラテン語で表示されていたと思いますが、時間が経つにつれて理解できるようになります。括弧内に記載されているものはすべて(x、y、z)座標です。そして、これらの座標は、以下に示すように、高校の幾何学のクラスで見られるものと非常によく似ています。
これで、グラフィックスとシリアルポートの準備が整いました。データを読み取り 、Arduinoからのデータに応じた場所に 「obj」 (白い長方形)を配置するだけです。これは、 obj.pos.x がオブジェクトのX座標位置(白い長方形)を制御する次の行で実行できます。
t = int(ArduinoSerial.readline())#シリアルデータを読み取り、行として出力しますt = t * 0.05 obj.pos.x = t
Arduinoの準備:
Pythonスクリプトは、COMポートから値をリッスンし、それに応じてグラフィックをアニメーション化する準備ができていますが、Arduinoはまだ準備ができていません。まず、次の回路図に従って、超音波センサーをArduinoに接続する必要があります。米国のセンサーとArduinoをまったく使用したことがない場合は、Arduinoと超音波センサーベースの距離測定チュートリアルに戻る必要があります。
次に、このページの最後にあるArduinoプログラムをアップロードします。プログラムはコメント行を使用して自己説明されます。超音波センサーは、パルスが物体に当たって戻ってくるまでにかかる時間を計算することで機能することがわかっています。この値は、Arduinoの PulseIn 関数を使用して計算されます。その後、所要時間は以下の線を使用して距離に変換されます。
dist =(timetaken / 2)/ 2.91;
ここで、距離はミリメートル(mm)で計算されます。
ワーキング:
プロジェクトの作業は簡単です。以下に示すように、Pythonプログラムを起動し、USセンサーの前にオブジェクトを配置します。
Pythonプログラムを起動すると、白い長方形が紙と一緒に移動することがわかります。下の画像に示すように、紙とセンサーの間の距離もシェルウィンドウに表示されます。
これは、超音波センサーとPythonとArduinoを使用してオブジェクトの動きを追跡する方法です。
あなたがプロジェクトを理解し、それを構築することを楽しんだことを願っています。これはPythonに向けた微妙な一歩に過ぎませんが、これを使用してより多くの創造的なものを構築できます。この方法で何を構築するかについてのアイデアがある場合は、コメントセクションに投稿し、フォーラムを使用して技術的なヘルプを入手してください。別の興味深いPythonプロジェクトでお会いしましょう。