javascript(node.js)で書かれたarduinoコマンドライン開発環境(avr-pizza + avrgirl-arduino)を試して見ました。
1.前ふり
作者のSuz Hinton氏(@noopkat)は私の娘(@kosamari)の友人でニューヨーク在住です。ハードウエアとWeb技術に精通し,O’raillyのJavaScript Roboticsの共同執筆者です(Chapter.14 Meow Shoes)
Suz Hinton氏Webサイト http://noopkat.com/
昨年10月にMakerFaire New Yorkの出展のため遠征したときに、ご本人にお会いしました。そのときにjavascriptでavr開発環境が制作中であることを聞きました。
avrdudeが使いにくい,修正案を伝えようにもavrdudeの開発形態が複雑怪奇…なので,avrdudeに変わるavrプログラマ(ライタ)を作っています。dude(男)に対してgirl(女子)ということでavrgirlという名にしました。とお茶目です。
avrgirlはarduino.ccのクラウド開発環境にも組み込まれているそうです。
avr-pizza はオンライン・コンパイラのフロントエンドです。オプションの設定によりローカルにインストールされたArduino IDEのコンパイラを利用することも可能です。
avr-pizzaと連動して働くオンライン・コンパイラもSuz氏によりMicrosoft-Azure上に構築されています。(因みに,Suz氏は米マイクロソフト社のエバンジェリスト)
avr-pizza, avrgirl-arduinoはjavascriptライブラリとして提供されており,それぞれに動作を確認するためのコマンドライン・アプリケーションが付属しています。今回は,このコマンドラインアプリを使って見ました。
ざっと使った感じでは,コマンドが非常に簡潔です。avrdudeのような長文呪文を必要としません。
2.環境構築(例:Linux, Mac)
- node.js
avr-pizza,avrgirlはnode.js環境で稼働します。- インストール
node.jsのインストール方法はwebにたくさんあります。自分の環境に適した方法でインストールします。こちらのnvmを用いた方法は少し手間がかかりますがMac,Linuxに対応しnode.jsのバージョン管理が容易にできます。 - 動作テスト
次のようにコマンド入力してnodeとnpmから応答があれば正しくインストールされています。$ node -v v6.10.0 $ npm -v 3.10.10
- インストール
- avrgirl-arduino(AVRプログラマ・ソフト Arduino用)
- インストール
次のようにコマンド入力しインストールします。$ npm install -g avrgirl-arduino
- 動作テスト
次のコマンド入力でヘルプメッセージの応答があれば正しくインストールできています。$ avrgirl-arduino help Usage: avrgirl-arduino flash -f <file> -a <arduino name> [-p <port>] [-v] avrgirl-arduino boards avrgirl-arduino list avrgirl-arduino test-pilot
- インストール
- avr-pizza(コンパイラ フロントエンド)
- インストール
次のようにコマンド入力しインストールします。$ npm install -g avr-pizza
- 動作テスト
次のコマンド入力でヘルプメッセージの応答があれば正しくインストールできています。$ avr-pizza help Usage: avrpizza compile -s <sketch filepath> -l <library dirpath> -a <arduino name> [-o <output path> -b <local ide path>] avrpizza help
- コンパイル(クラウド)
$ avr-pizza compile -s blink.ino -a uno $ ls blink.ino blink.ino.hexコンパイルが成功すると.hexファイルが生成されます。
- 書き込み
$ avrgirl-arduino flash -f blink.ino.hex -a uno
Arduino UNOのシリアルポートは自動識別します
- シリアルポートの調べて明示的に指定する
$ avrgirl-arduino list [ { comName: '/dev/cu.Bluetooth-Incoming-Port', manufacturer: undefined, serialNumber: undefined, pnpId: undefined, locationId: undefined, vendorId: undefined, productId: undefined, _standardPid: '' }, { comName: '/dev/cu.usbmodemFD12431', manufacturer: 'Arduino (www.arduino.cc)', serialNumber: '64131383331351318171', pnpId: undefined, locationId: '0xfd124300', vendorId: '0x2341', productId: '0x0043', _standardPid: '0x0043' } ] $ avrgirl-arduino flash -f blink.ino.hex -a uno -p /dev/cu.usbmodemFD12431 - Arduinoボード略号リスト
$ avrgirl-arduino boards Supported Boards: - adk - arduboy - blend-micro - bqZum - duemilanove168 - feather - imuduino - leonardo - lilypad-usb - little-bits - mega - micro - nano - pinoccio - pro-mini - qduino - sf-pro-micro - tinduino - uno - yun
- コンパイル(ローカル)
avr-pizzaはローカルのArduino IDEが持っているコンパイラを使うことができます。
-b に続けてArduino IDEのフォルダpathを指定します。下の例はMacの場合です。$ avr-pizza compile -s blink.ino -a uno -b /Applications/Arduino.app/
4.私はこう使う
Raspberry PIとArduinoを連携させたシステムの開発に使います。Raspberry PiとArduinoを連携させてゴニョゴニョするときArduinoのスケッチ制作が結構めんどくさいです。パソコンでArduinoのスケッチ作って書き込み、取り外してRPiに接続してテスト、不具合があったらまたArduinoをパソコンにつないでスケッチ修正を繰り返す…そこで、avr-pizza,avrgirlの利用です。RPiとArduinoを接続したまま開発ができます。コマンドライン開発環境はGUIを使わないので軽快に動きます。シリアルコンソールやLAN経由のSSH接続から利用しまます。VNCのリモートGUIより圧倒的に軽快に動きます。
javascript〜node.jsに精通していれば、Webブラウザーやelectronを使ってavr-pizza,avrgirlライブラリをコアにした自分なりのGUIアプリやWeb上にリモート開発環境が作れます。(私には無理)
5.ただいま試行中
avr-pizzaでArduino UNO向けにビルドしたhexを”素”のATmega328Pにavrgirl-ispmkiiを使って書き込む試行をやっています。
6.リンク
- github(top) https://github.com/noopkat
- avr-pizza https://github.com/noopkat/avr-pizza
- avrgirl https://github.com/noopkat/avrgirl
- youtube noopkat https://www.youtube.com/channel/UCoFU24KMXmCi4Sl3KIFPSVg
プログラミング・ライブ放送の録画
- インストール