PythonでArduinoをプログラムおよび制御する方法

PythonでArduinoをプログラムおよび制御する方法

Pythonはコーディングの世界を席巻しました。この新しい言語の台頭とともに、DIYエレクトロニクスシーンも繁栄しました。のような会社からの開発ボードとシングルボードコンピュータ Arduino そしてRaspberryPiは、人々が自家醸造の電子機器を作成する方法を変えました。 PythonでArduinoをプログラムできたら素晴らしいと思いませんか?





ドット抜けを修正できますか

2つのクールなものを組み合わせるよりも良い感じはありません。残念ながら、ボードには言語のオンボード解釈のオプションがないため、PythonでArduinoを直接プログラムすることは不可能です。ただし、可能なことは、Pythonプログラムを使用してUSBを直接制御することです。





この記事では、Pythonプログラムを使用してコマンドラインからプログラムおよび制御するようにArduino UNOをセットアップする方法(Arduino互換ボードはここで機能します)を示します。このチュートリアルはWindows10向けに書かれていますが、MacとLinuxでも機能します。このワークフローを使用して、Raspberry Piから直接Arduinoを制御し、究極のダブルダウンDIY体験を実現することもできます。





Python用のArduinoのセットアップ

今日のプロジェクトでは、Python用のpyFirmataインターフェースとともにArduinoUnoを使用します。これには、ほぼすべてのArduino互換ボードを使用できますが、執筆時点では、Arduino Uno、Mega、Due、およびNanoのみがpyFfirmataインターフェイスでサポートされています。すでにPythonの第一人者である場合は、pyFirmataに独自のボードサポートを追加できます。更新する場合は、必ずGitHubを更新してください。

まだインストールしていない場合は、ArduinoIDEをインストールします。マイクロコントローラの世界にまったく慣れていない場合は、 Arduinoの初心者向けガイド すべてを適切に配置するのに役立ちます。



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

Pythonとコマンドライン制御

インストールするモジュールがこれを最新の互換性のあるバージョンとして指定しているため、Python3.4を使用してArduinoを制御します。これより前のバージョンはすべて正常に動作するはずであり、それ以降のバージョンは動作することが報告されています。 Python 3.4 for Windows10はからダウンロードできます。 Python Software Foundation サイト。複数のバージョンのPythonを実行する場合は、Python仮想環境のガイドが役立ちます。





Pythonをインストールしたら、それをシステムのPATH変数に追加します。これにより、インストールされたディレクトリにいなくても、コマンドラインから直接Pythonコードを実行できます。これを行うには、 コントロールパネル 、 探している 環境 をクリックします システム環境変数を編集する 。ウィンドウの下部で選択します 環境変数 。これにより、次のウィンドウが表示されます。

すでに見ている場合 リストで、[編集]をクリックして、 PythonPython /スクリプト ディレクトリ。 PATH変数がない場合は、[新規]をクリックして追加します。 Pythonはに直接インストールされていることに注意してください NS: ここ。他の場所にインストールした場合は、これを反映するように変更する必要があります。ウィンドウのチェーンを下って[OK]をクリックすると、PythonでArduinoを制御する準備がほぼ整います。





マジックグリース

PythonがArduinoとうまく通信するには、パズルの最後のピースが1つ必要です。これは、と呼ばれるPythonインターフェースの形式で提供されます pyFirmata 。 Tino deBruijnによって作成されたこのインターフェースは ダウンロード可能 githubから。ただし、次のように入力することで、コマンドラインから直接インストールできます。

pip install pyfirmata

すべて順調です。インストールして次のようになります。

失敗した場合は、Pythonをに追加してください。 環境変数 セクションを作成し、Pythonディレクトリへの正しいパスを指定していることを確認してください。

それを実現させる

これですべてがセットアップされ、ArduinoでテストするためのPythonプログラムを作成できます。選択したIDEを開きます。使用します Eclipse 今日ですが、任意のテキストエディタ、またはクラウド内のIDEを同じように簡単に使用できます。

新しいスクリプトを作成し、名前を付けて保存します flash.py 。標準の点滅するLEDプログラムの伝統を破り、実行する前にLEDを点滅させたい回数をユーザーに求めるプログラムを作成します。それはあなたができる短いプログラムです ここからダウンロード あなたがそれにまっすぐに行きたいが、それを分解しましょう。

まず、必要なものをからインポートする必要があります pyFirmata モジュール、および標準のPython 時間 モジュール。

彼らが知らないうちにsnapchatでスクリーンショットを撮ることができますか
from pyfirmata import Arduino, util
import time

次に、Arduinoボードをセットアップします。この記事では、 Arduino uno ボード、ただし他のいくつかのArduinoボードがサポートされています。ボードサポートの詳細については、pyFirmatagithubを参照してください。

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はArduinoUnoのオンボードLEDであることに注意してください。ボードが異なる場合は、これを変更する必要があります。

for x in range(int(loopTimes)):
board.digital[13].write(1)
time.sleep(0.2)
board.digital[13].write(0)
time.sleep(0.2)

キャストします loopTimes ユーザーからの入力は自動的に文字列として保存されるため、ここでは整数に変数を設定します。この簡単なデモでは、ユーザーが数値を入力することを前提としています。 'eight'などの他のエントリはエラーをスローします。

スクリプトを保存して、 コマンド・プロンプト

ブリンキングライツとその他の啓示

すべての準備が整いました。必要なのは、スクリプトがある場所に移動して実行することだけです。これを行うには、次のように入力します cd [スクリプトのディレクトリへのパス] 次に入力します pythonblink.py

すべて順調に進んでいるので、Arduinoが初期化されると、プログラムはわずかな遅延で開始され、番号の入力を求められ、オンボードLEDを使用してその回数だけ点滅します。

プログラムの出力は次のようになります。

選択した点滅回数の後にEnterキーを押すとすぐに、Arduinoが注文を実行します。

小さな始まり

このプロジェクトは、PythonとArduinoボード間の通信の基礎となっています。このアプローチは、スクリプトをArduino自体にアップロードする通常のワークフローとは大きく異なりますが、特にPythonプログラミング言語が好きな場合は、プラットフォームを操作するまったく新しい方法を開きます。

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

Wi-Fiに有効なIP構成がないのはどういう意味ですか

それを究極のDIY体験にするために、なぜですか 独自のNASボックスを構築する アプライアンスの制御にも使用しますか? Plexサーバーで再生を押して、ライトを自動的にオフにするのがいかにクールか想像してみてください。

すでにPythonを使用してArduinoを制御していますか?まだ知らない驚くべき回避策はありますか?下記のコメント欄でお知らせください!

共有 共有 つぶやき Eメール VirtualBoxLinuxマシンを過給するための5つのヒント

仮想マシンによって提供されるパフォーマンスの低下にうんざりしていませんか? VirtualBoxのパフォーマンスを向上させるためにすべきことは次のとおりです。

次を読む
関連トピック
  • DIY
  • プログラミング
  • Arduino
  • ホームオートメーション
  • Python
著者について イアン・バックリー(216件の記事が公開されました)

Ian Buckleyは、ドイツのベルリンに住むフリーランスのジャーナリスト、ミュージシャン、パフォーマー、ビデオプロデューサーです。マッドサイエンティストになることを期待して、執筆中やステージ上にいないときは、DIYの電子機器やコードをいじっています。

イアン・バックリーのその他の作品

ニュースレターを購読する

ニュースレターに参加して、技術的なヒント、レビュー、無料の電子書籍、限定セールを入手してください。

購読するにはここをクリックしてください