« Twilioを使って電話をかけたらアレを飛ばす(電子工作フェスティバル) | Main | おばかアプリ選手権に出ますよ »

2012.12.05

PythonからArduinoを操る5つの雑技

※ポートを自動で選ぶ方法について、Arduino Microでも動くスクリプトを追記しました

Arduonoは単体で遊ぶよりパソコンとシリアルで接続してこそだと思います。書籍「Arduinoをはじめよう」でArduino側でのシリアル通信について書かれてますので、ここではパソコン側について書いてみます。

そもそもpyserialを使えるようにする

 WindowsはPythonに限らず、RubyとかPerlとか最新版に追随してない場合も多々あるので、あくまで今の時点の動かし方ということで。ちなみに当方はWindows7 64bit。それ以外は、よくわかりません。

Python本体は公式の2.7.3。

http://www.python.org/ftp/python/2.7.3/python-2.7.3.msi

 PySerialは、こちらの非公式ビルドからpyserial-2.6.win32-py2.7.‌exeを取得。

http://www.lfd.uci.edu/~gohlke/pythonlibs/

 Macは最近は使ってないが、1年前に使ってた頃のメモを探したら、こういう手順でインストールしてました。

sudo brew install python
sudo brew install distribute
sudo brew install pip
sudo pip install pyserial

動作確認用にArduinoで文字列「1」を受け取ると13番のLEDを光らせるスケッチと、Arduinoにシリアルで文字列「1」を送るPythonスクリプトを下記に保存したので、お試しください。

https://gist.github.com/4203731

ところどころにtime.sleep(1)と書いてますが、これがないと動かない場合があって気持ち悪いんですが、料理でいう「塩少々」みたいなものだと考えることにしてます。

Arduinoが刺さってるポートを自動で選ぶ

 前述のPythonスクリプトは、Arduinoが括りつけられているCOMポートの番号をハードコーディングしているのがイマイチです。潔癖症の人には耐えられないでしょう。

serial.tools.list_portsでシリアルポートのリストを取得できるので、これを使ってCOMポートを自動取得するサンプルを書いてみました。

https://gist.github.com/4161733

【追記】

ところで、何故かArduino Microではserial.tools.list_portsではポートを見つけられません。家庭教師のtryで地道にポートを探し、Arduino Microでも動く方法がわかりましたので、こちらにサンプルを貼っておきます。

https://gist.github.com/4234189

やっぱり便利なFirmata

 githubで公開されているPython Firmataを使うと、ArduinoっぽくPythonスクリプトを書くことができます。

https://github.com/lupeke/python-firmata

 READMEに従ってsudo python setup.py installでインストール。(Windowsではsudoは不要)

Firmataを使って「Lチカ(13番ポートのLEDを点滅させるスケッチ)」をArduinoっぽく書いたPythonスクリプトはこちら。

https://gist.github.com/4203795


 Webと連携させてみる

 Mashup Awardの二次予選では、Mashupということで、ホットペッパーのWeb APIを使って山手線ゲーム的なものを作りました。例えば「sweet」という単語をホットペッパーAPIで検索すると、それなりの数の飲食店が検索結果 として表示されます。一方、食品店に使われなさそうな単語を入力し、検索結果が0件の場合だけスイッチが入りマシュマロが発射されるという仕掛けを作った わけです。

まあ、なんでマシュマロを飛ばすのさ、と言われると困るわけですが、Web APIと電子工作の連携みたいのが、30行ぐらいで書けるわけです。

https://gist.github.com/4203850


 電話と連携させてみる

 電話APIと電子工作を絡めたjksoftさんの作品に痺れたわけですが、僕も電話でマシュマロを飛ばしてみたくなり、書いてみたのが、一つ前に書いたエントリ。ソースも公開してます。

http://goodsite.cocolog-nifty.com/uessay/2012/12/twilio_arduino.html

 今のところ、「マシュマロ Twilio」で検索すると、僕のサイトがトップに来ますが、このポジションは譲れません。「Twilio Arduino」は、すでにたくさんの作例がありますね。

|

« Twilioを使って電話をかけたらアレを飛ばす(電子工作フェスティバル) | Main | おばかアプリ選手権に出ますよ »

Arduino」カテゴリの記事