[Genuino 101][Johnny-Five] サーボ機構の制御
車輪開発大好きおたいがです。こんにちは。( 挨拶 )
今回は Genuino 101 ( 以下 Genuino ) と Johnny-Five を使用したサーボ機構の制御についてまとめてみました。
ちなみに、サーボ機構とは、物体の位置、方位、姿勢などを制御量として、目標値に追従するように自動で作動する機構のことです。そしてサーボは、ラテン語の Servus ( 奴隷 ) が語源といわれ、『奴隷は命令 ( 指令 ) に対して忠実に動く ( 動作する ) 』の意から、一般的にサーボと呼んでいる…とのことです。( 引用 : http://fa-faq.mitsubishielectric.co.jp/faq/show/10761?category_id=574 )
動作環境・道具など
- Genuino 101
- Genuino 101 に挿せる AC アダプタ ( 12V 1A )
- USB ケーブル
- ジャンパーワイヤ
- スタンダード サーボ ( Parallax 社製 )
- Windows 7 Pro (64bit)
- Arduino IDE 1.6.9 ( セットアップ記事を参考にしてください )
- Node.js v4.4.7
回路図
配線はシンプルです。電源と GND をそれぞれサーボに繋ぎ、デジタル PWM のピンを I/O ケーブルに接続します。
また、回路図には含まれてませんが AC アダプタが必須です。USB の電力だけではサーボを動かすことができず、実行時に以下のようなエラーが発生することを確認しました。
events.js:72 throw er; // Unhandled 'error' event ^ Error: Writing to COM port (GetOverlappedResult): File not found
サンプルスケッチ ( プログラム ) をボードに書き込む
Genuino に StandardFirmata スケッチを書き込みます。
( 参照 : https://dev.classmethod.jp/hardware/johnny-five-genuino-101-debut/#toc--- )
Johnny-Five 実行用のサンプルプロジェクト作成および実行
Johnny-Five の導入および実行するためのプロジェクトを用意します。任意のプロジェクトディレクトリを作成して移動したあとに、下記コマンドを入力します。
package.json の初期化
$npm init
Johnny-Five のダウンロード
$npm install johnny-five
サンプルコードの作成
var five = require('johnny-five'); // Genuino が接続されているポート番号 ( `/dev/tty*` (Mac/Linux) or `COM*` (Windows) ) var board = new five.Board({ 'port': 'COM8' }); board.on('ready', function() { var servo = new five.Servo({ 'pin' : 9 }); this.repl.inject({ 'servo' : servo }); });
実行
$node index
上記コードを実行すると、サーボがコマンドで制御できるようになります。( Servo クラス…便利です )
コマンドの例
最小値~最大値の行き来の繰返し
>>servo.sweep()
停止
>>servo.stop()
可動域内の任意の値に移動
>>servo.to(90)
コマンドでは実行できませんが servo.sweep() メソッドには、以下のようなオプションも用意されています。
10 秒掛けて、45~135 度の可動域を移動する
servo.sweep({ 'range' : [45, 135], 'interval' : 10000 });
結果
servo.sweep() で繰り返し稼働するサーボの状態をご覧ください。
わずか数行のコードで、サーボの制御ができるとジョニー…おそろしい子。。。