\r\n\r\n

PythonでArduinoをプログラミングして制御する方法

残念ながら、pythonで直接arduinoをプログラムすることはできませんが、pythonのプログラムを使ってarduinoを制御することは可能です。ここでは、その方法を紹介します...

Pythonはコーディング界に旋風を巻き起こしました。この新しい言語の台頭により、電子機器のDIYがブームとなった。ArduinoやRaspberry Piなどの開発ボードやシングルボードコンピュータは、人々の家庭用電子機器の製造方法を変えました。PythonでArduinoのプログラミングができたらすごいと思いませんか?

control-arduino-python

2つのクールなものを組み合わせることほど、気持ちのいいことはありません。残念ながら、Arduinoの言語をボード上で解釈することを選択していないため、直接Pythonで記述することはできません。ただし、Pythonのプログラムを使って、USBを直接制御することは可能です。

この記事では、Pythonプログラムを使ってコマンドラインからArduino UNOをセットアップする方法を紹介します(ただし、ここではArduinoと互換性のあるボードであれば、どれでも動作します)。このチュートリアルはWindows 10用に書かれていますが、MacやLinuxにも適しています。このワークフローを使って、Raspberry PiからArduinoを直接制御することもでき、究極のダブルDIYを体験できます。

pythonのためのarduinoのセットアップ

今日のプロジェクトでは、Arduino UnoとPythonのpyFirmataインターフェイスを使用する予定です。Pythonの達人であれば、pyFirmataに独自のボードサポートを追加することができます。-- もしそうなら、彼らのGitHubをアップデートしてください。

program and control arduino with python

Arduino IDEがまだインストールされていない方、マイクロコントローラの世界に全く縁がない方は、Arduinoの初心者向けガイドを参考に、すべてを正しく理解することができます。

Arduinoボードを接続し、IDEを開き、ツールメニューで正しいボードとポートが選択されていることを確認します。StandardFirmataのサンプルスケッチをロードし、ボードにアップロードします。これにより、ArduinoがUSBでコンピュータと接続されていれば、直接制御することができます。スケッチがエラーなくボードにアップロードされたら、次に進む準備ができています。

pythonとコマンドラインコントロール

Arduinoの制御には、インストールするモジュールに最新の互換バージョンとして指定されているPython 3.4を使用する予定です。これより前のバージョンでも問題なく動作しますし、より高いバージョンでも動作することが報告されています。Python Software Foundation のウェブサイトから python3.4forwindows10 をダウンロードできます。複数のバージョンの Python を実行したい場合は、Python 仮想環境ガイドが役に立ちます。

Pythonがインストールされたら、システムのPATH変数に追加する必要があります。これにより、Pythonがインストールされたディレクトリに位置することなく、コマンドラインから直接Pythonのコードを実行することができるようになります。コントロールパネルを開き、「環境」を検索し、「システム環境変数の編集」をクリックすることで行えます。ウィンドウの一番下にある「環境変数」を選択します。このウィンドウが表示されます。

program and control arduino with python

すでにリストにパスが表示されている場合は、[Edit]をクリックして[Python]と[Python/Scripts]のディレクトリを追加します。パス変数がない場合は、「新規作成」をクリックして追加してください。なお、PythonはC:³³に直接インストールされます。他の場所にインストールされている場合は、それを反映させるために修正する必要があります。OKをクリックしてウィンドウズ・チェーンに戻れば、PythonでArduinoを制御する準備はほぼ完了です!

マジカルグリース

PythonとArduinoが正しく会話するために、最後のパズルが必要です。これは、PythonのインターフェースpyFirmataの形で提供されています。Tino de Bruijn氏が作成したこのインターフェースは、githubからダウンロードできますが、以下のコマンドラインを入力することで直接インストールすることができます。

pip install pyfirmata

すべてうまくいくと、以下のようにインストールされ、見た目もよくなるはずです。

program and control arduino with python

失敗した場合は、環境変数にPythonが追加されているか、Pythonのディレクトリに正しいパスが指定されているかを確認してください。

実現させる

これですべての設定が終わったので、Arduino用のPythonプログラムを作ってテストしてみましょう。好きなIDEを開いてください。今日はEclipseを使いますが、どんなテキストエディタでも、クラウド上のIDEでも簡単に使うことができます。

新しいスクリプトを作成し、blink.pyとして保存します。従来の標準的なLED点滅プログラムから脱却し、実行前にLEDを点滅させる回数をユーザーに求めるプログラムを作成することにします。ここに直行する場合は、ダウンロードできる短いプログラムですが、分解してみましょう。

まず、Pythonの標準的なtimeモジュールと同様に、pyFirmataモジュールから必要な内容をインポートする必要があります。

from pyfirmata import Arduino, util
インポートタイム

あとは、Arduinoのボードを組み立てるだけです。この記事では、Arduino Unoボードを使用することを想定していますが、他のいくつかのArduinoボードもサポートされています。ボードサポートの詳細については、pyFirmataのgithubを参照してください。

Arduino IDEで使用しているCOMポートを確認し、変数ボードとしてコードに入力してください。

board = Arduino("COM3")です。

これで、ユーザープロンプトの設定を行います。Pythonに慣れている人なら、ここですべてを理解できるだろう。入力機能を使って、問題を画面に表示し、答えを変数として保存するのです。ユーザーが数字を入力すると、プログラムはLEDが点滅した回数を報告します。

loopTimes = input('How many times would you like the LED to blink: ')
print("Blinking " + loopTimes + " times.")

LEDを正しい回数だけ点滅させるためには、forループを使用します。Pythonを初めて使う方は、インデントに注意してください。他の言語とは異なり、スペースは構文の一部です。なお、13番ピンはArduino Uno UnoのオンボードLEDで、ボードが異なる場合はこのインジケータを修正する必要があります。

for x in range(int(loopTimes)):
ボード.デジタル[13].write(1)
時睡り
ボード.デジタル[13].write(0)
時睡り

ユーザーからの入力は自動的に文字列として格納されるので、ここで変数loopTimesを整数に変換することになる。この簡単なデモでは、ユーザーが数値を入力することを想定しています。それ以外の項目(例えば "8")を入力するとエラーになります。

スクリプトを保存して、コマンドプロンプトを開きます。

点滅する光とその他の啓示

すべての準備が整いましたので、あとはスクリプトのある場所に移動して実行するだけです。そのためには、cd[スクリプトのディレクトリへのパス]を入力し、python blink.pyを実行します。

順調にいけば、Arduinoの初期化で少し遅れてプログラムが始まり、数値の入力を促し、オンボードのLEDで数回点滅させることができます。

プログラムの出力は次のようになるはずです。

program and control arduino with python

選択した回数の点滅後、Enterキーを押すだけでArduinoはコマンドを実行します。

program and control arduino with python

小さな始まり

このプロジェクトは、PythonとArduinoボードの間の通信の基本的なスタートです。この方法は、Arduino自体にスクリプトをアップロードする通常のワークフローとは大きく異なりますが、特にプログラミング言語であるPythonが好きな人には、このプラットフォームの全く新しい使い方を提供するものです。

自宅でLinuxサーバーを使っている場合、この方法でArduinoボードと通信することで、サーバーを本格的なDIYホームオートメーションシステムに拡張することができます。マイコンを制御するPythonスクリプトとDIYの自動化回路を組み合わせることで、NASストレージボックスは全く新しい便利な機能を手に入れることができます。

究極のDIYを体験するために、NASボックスを自作して、それを使って機器をコントロールするのはいかがでしょうか。Plexサーバーの再生ボタンを押すと、自動的に照明がオフになるなんて、クールでしょう?

すでにPythonを使ってArduinoを制御しているのでしょうか?私たちがまだ知らない解決策はないのでしょうか?下のコメント欄で教えてください

あなたが興味を持っているかもしれない記事

匿名者
匿名者

0 件の投稿

作家リスト

  1. admin 0 投稿
  2. 匿名者 0 投稿

おすすめ