- 必要な材料:
- コンピューターへのPythonのインストール:
- PythonでPySerialを入手する:
- 私たちの最初のArduinoPythonプログラム:
- PythonとArduinoでLEDを制御する:
Arduinoは、オープンソースハードウェア開発に関しては、常に強力で使いやすい学習/開発プラットフォームです。今日の現代の世界では、すべてのハードウェアは、より効果的でユーザーフレンドリーにするために、高レベルの汎用プログラミング言語を利用しています。そのような言語の1つがPythonです。Pythonは、インタープリター型のオブジェクト指向高水準プログラミング言語であり、動的セマンティクスと高レベルの組み込みデータ構造を備え、動的型付けと動的バインディングを組み合わせることで、Rapid ApplicationDevelopmentにとって非常に魅力的です。
ArduinoとPythonのパワーを組み合わせると、PythonはopenCV、Matlabなどの他のプラットフォームと対話できるため生産性が向上するため、多くの可能性への扉が開かれます。このチュートリアルでは、コンピューターにPythonをインストールする方法を学習します。 ArduinoのオンボードLEDを切り替えるためにArduinoでそれを使用する方法。
それでは、始めましょう。
必要な材料:
- Arduino Uno(または任意のArduinoボード)
- インターネットに接続されたコンピューター
コンピューターへのPythonのインストール:
明らかに、このチュートリアルの最初のステップは、コンピューターにPythonをインストールすることです。以下の手順は、32ビットまたは64ビットのOSを実行しているWindowsユーザーにのみ適用されます。MACとLinuxのインストール手順は異なります。
- 32ビットPython-2.7.9をクリックすると、32ビットPythonIDLEがコンピューターにインストールされます。64ビットバージョンまたは更新バージョンはArduinoライブラリをサポートしていないため、ダウンロードしないでください。コンピューターが64ビットで動作している場合でも、32ビットのPython自体を使用できます。
- ダウンロードしたexeファイルを開き、指示に従ってください。Pythonがインストールされるディレクトリを変更しないでください。デフォルトではC:\ Python27になり、そのままにしておきます。
- インストールが行われている間、アンチウイルス(存在する場合)から警告が表示される場合があります。その場合は、[許可]をクリックしてください。
これで、Pythonがコンピューターに正常にインストールされました。Windowsの検索ボックスで「PythonIDLE」を検索して開くと確認できます。
開くと、次の画面が表示されます。このウィンドウはPythonシェルと呼ばれ、以降は「Pythonシェル」と呼びます。
この画面はPythonシェルと呼ばれます。ここに直接コーディングして同じ画面で出力を取得するか、新しいファイルを作成してそこにプログラムを記述し、ここでプログラムを検証することができます。後でPythonプログラムの作成の詳細について説明します。とりあえず、Pythonが機能しているかどうかを確認しましょう。
これを行うには、「 print(1 + 1) 」と入力してEnterキーを押します。以下に示すように結果が印刷されるのを確認する必要があります。
PythonでPySerialを入手する:
次のステップは、pyserialをインストールすることです。PySerialは、シリアルデータの読み取りとArduinoまたはその他のマイクロコントローラーへの書き込みに使用されるPythonAPIモジュールです。
PySerialWindowsをクリックしてPySerialをダウンロードします。結果のダウンロードは、直接インストールできるexeファイルになります。インストール中に設定を変更しないでください。デフォルトのディレクトリとデフォルト設定のままにします。
それでは、PySerialが正しくインストールされているかどうかを確認しましょう。これを行うには、Python Shellを再度開き、入力します
シリアルをインポートし ます。ライブラリが正常にインストールされた場合、次の図に示すようなエラーメッセージは表示されません。エラーが発生した場合は、コメントセクションに投稿してください。解決を試みます。
このチュートリアルは、Arduinoに精通しており、Arduinoにプロジェクトをアップロードした経験があることを前提としています。それでは、Pythonプログラムに直接ジャンプしましょう。Arduinoの初心者の場合は、Arduinoプロジェクトを確認し、ArduinoでのLEDの点滅から始めてください。
私たちの最初のArduinoPythonプログラム:
前に述べたように、Pythonスクリプトを使用して内蔵のArduinoボードLEDを制御します。Arduinoコードから始めましょう。
Arduinoのプログラム:
このArduinopythonチュートリアルの完全なプログラムは、このページの最後にあります。それがどのように機能するかを知るためにさらに読んでください。
セットアップ 関数内で、9600ボーレートでシリアル通信を初期化し、組み込みのLEDを出力として使用することを宣言し、プログラムの起動時にローにします。また、以下に示すように、シリアル印刷を介してPythonにウェルカムメッセージを送信しました。
void setup(){Serial.begin(9600); //シリアルCOMを9600ボーレートで初期化しますpinMode(LED_BUILTIN、OUTPUT); // LEDピン(13)を出力としてデジタル書き込み(LED_BUILTIN、LOW); Serial.println( "こんにちは!、私はArduinoです"); }
ループ 関数内では、シリアルに受信されるデータをすべて読み取り、変数 「data」に 値を割り当てます 。 ここで、この変数(「データ」)の値に基づいて、以下に示すように組み込みLEDを切り替えます。
void loop(){while(Serial.available()){data = Serial.read(); } if(data == '1')digitalWrite(LED_BUILTIN、HIGH); else if(data == '0')digitalWrite(LED_BUILTIN、LOW); }
Python用プログラム:
このチュートリアルの完全なPythonプログラムは、このページの最後にあります。同じものを書き、使用する方法を知るためにさらに読んでください。
- Pythonシェル(Python IDLE)を開き、[ファイル]-> [新規]をクリックします
- これにより、プログラムを入力できる新しいテキストファイルが開きます。
- 何かを入力する前に、Ctrl + Sでファイルを保存しましょう。任意の名前を入力して、[保存]をクリックします。これにより、ファイルは自動的に「.py」拡張子で保存されます。
- ここで、プログラムを入力するか、このページの最後にあるPythonコードを貼り付けます。同じことの説明を以下に示し、最後にプログラムを実行します。
私たちのプログラムでは、最初のステップはシリアルとタイムライブラリをインポートすることです。前述のシリアルライブラリはシリアルデータの読み取りと書き込みに使用され、タイムライブラリはプログラムの遅延を作成するために使用されます。これらの2つのライブラリは、次の2行を使用してプログラムにインポートできます。
シリアルのインポート#シリアル通信のインポート時間のためにインポートされたシリアル#遅延機能を使用するために必要
次のステップは、シリアルライブラリを使用してシリアルオブジェクトを初期化することです。このプログラムでは、シリアルオブジェクトに 「ArduinoSerial」 という名前を付けました。この行では、Arduinoが接続されているCOMポートの名前と、以下に示すように動作しているボーレートを指定する必要があります。
ArduinoSerial = serial.Serial( 'com18'、9600)
注:正しいCOMポート名を記載することは非常に重要です。コンピューターのデバイスマネージャーを使用して見つけることができます。
シリアルオブジェクトが初期化されるとすぐに、シリアル通信が確立されるまでプログラムを2秒間保持する必要があります。これは、次の行を使用して実行できます。
time.sleep(2)
これで、Arduinoボードとの間で何でも読み書きできます。
次の行は、Arduinoからのすべてを読み取り、シェルウィンドウに出力します
ArduinoSerial.readline()を出力します
値を変数に割り当てて、計算に使用することもできます。
次の行は、パラメータの値をArduinoボードに書き込みます。
ArduinoSerial.write( '1')
この行はArduinoに「1」を書き込みます。同じ行を使用して、小数から文字列まで何でも送信できます。
プログラムに戻ると、無限のwhileループ内に、次の行があります。
var = raw_input()#ユーザーからの入力を取得print "you enter"、var#確認のために入力を出力if(var == '1'):#値が1の場合ArduinoSerial.write( '1')#send 1 print( "LEDがオンになりました")time.sleep(1)if(var == '0'):#値が0の場合ArduinoSerial.write( '0')#send 0 print( "LEDがオフになりました")time.sleep(1)
行 var = raw_input は、シェルスクリプトに入力された値を取得し、その値を変数 varに 割り当てます。
後で、値が1の場合、「1」をArduinoにシリアルに出力し、0の場合、「0」をArduinoにシリアルに出力します。Arduinoプログラム(上記で説明)のコードは、受信した値に基づいてLEDを切り替えます。
プログラム全体が完了すると、スクリプトは次のようになります。
次に、[実行]-> [モジュールの実行]をクリックするか、F5キーを押すと、プログラムを保存するように求められ、起動します。
PythonとArduinoでLEDを制御する:
このプロジェクトの作業は非常に簡単です。プログラムをArduinoにアップロードし、Pythonプログラムに記載されているのと同じCOMポートに接続されていることを確認します。次に、上記のようにPythonプログラムを起動します。
これにより、以下に示すようにPythonシェルスクリプトが起動します。左側のウィンドウは出力を表示するシェルウィンドウであり、右側のウィンドウはプログラムを表示するスクリプトです。
ご覧のとおり、Arduinoプログラムに入力された文字列 「Hi!、I am Arduino」 は、Pythonによって受信され、シェルウィンドウに表示されます。
シェルウィンドウで値の入力を求められたら、0または1のいずれかを入力できます。1を送信するとArduinoボードのLEDがオンになり、0を送信するとArduinoボードのLEDがオフになります。ArduinoプログラムとPythonの間の正常な接続を示しています。
以下に示す2つのプログラムがあります。1つはArduinoからアップロードして実行するプログラムで、もう1つはWindowsのPythonシェルから実行するプログラムです。
あなたがプロジェクトを理解し、それを機能させることができたことを願っています。そうでない場合は、下のコメントに問題を投稿してください。喜んでお手伝いさせていただきます。次のプロジェクトでは、Vpython、gamepythonなどの他のPythonモジュールを深く掘り下げて、PythonとArduinoで他に何がクールにできるかを学びます。それまではお楽しみに。