2017年3月9日木曜日

Raspberry Pi と Arduino で楽器作り(12) - ジャイロセンサ

ジャイロセンサを使ってみます。


1. 必要なもの

Xiacco には音を鳴らすという基本の機能以外に、腕を上に上げると高音が出せる、腕をひねると半音が挙げられるという機能を付けることを考えました。このために必要なのが、傾きを検出するセンサです。傾けることで高音を出すという機能は実は Ardubone にもありました。この時はArduino のキットに入っていたチルトセンサというそのままずばり傾きを検出するセンサを使っていましたが、センサが垂直な状態からほぼ90度傾けないと傾きを検出してくれないという弱点がありました。それと、今回は腕を上げる、腕をひねるという2軸での回転を検出しないといけないので、1つでは足りません。どうせ買うんだったらと思って秋月電子通商様でジャイロモジュールを購入しました。2つのジャイロセンサを実装してあり、2軸の角速度を検出できます。傾きを検出するのには、前述のチルトセンサとジャイロセンサのほかに加速度センサで重力加速度を測ることによってもできるそうですが、今回のように腕につけて動かすような状況でうまく検出できるのかに不安があったのでジャイロセンサを使うことにしました。

2. 動作を確認する

いろいろ調べはしたものの、実際どう動くかはぴんとこないので繋いでみます。
ジャイロセンサ
Arduino のコードは普通に analogRead して Serial.print する感じで。動かしてみると、静止させるとある値±1くらいを維持し、回転させるとその瞬間だけ値がはねあがるような動作をしました。ジャイロセンサでは角速度を検出するので、動かした瞬間の回転速度を返してるような感じですね。Xiacco の仕様では「腕をあげている間」「ひねっている間」音が変わるので、ソフトのほうで工夫してやる必要がありそうです。

 3. モーメンタリ/オルタネイト

記事にはしていませんが実はこの工夫は Ardubone でタクトスイッチによるドラム伴奏ON/OFFを実装しようとしたときにやったことがあり、結構たいへんだったうえ最後まで安定させられませんでした。今回もどうしようかなと思って調べていると、このようなスイッチによる切り替わりにあたる単語をみつけました。単語を知っているか知らないかでは検索しやすさが段違いなので大きな収穫です。
「スイッチを押している間はON、切れるとOFFのような動作をモーメンタリ」
「スイッチを押すとONとOFFが変わるような動作をオルタネイト」
というそうです。後者はトグルスイッチともいうみたいです。これをヒントにして Python でジャイロセンサによるオルタネイトスイッチ(トグルスイッチ)を作っていきたいです。とりあえず今回は Arduino 側で静止中の状態を0、回転中の状態を1として出力できるようにしましたが、これは今後 Python での実装方法によって変えるかもしれません。

参考:Panasonic - モーメンタリとオルタネイトの動作の違い

0 件のコメント:

コメントを投稿