はじめに
ev3devを使ってmindstorm-EV3インテリジェントブロックのLEDを制御する方法を紹介します。
この記事は、EV3にev3devをインストールし、SSH接続できている状態であることを前提にしています。環境構築ができていない方はこちらの記事を参考にしてください。
mindstorm-EV3をLinuxで制御しよう! ev3dev OSのインストールととSSH接続
beepコマンドで音を鳴らそう
beepコマンドで音の周波数や再生時間を指定することができます。
周波数は1以上20000未満を指定できます。あまり周波数を高くすると、人間の耳には聞こえなくなってしまいますので、まずは400Hz低度で試してみましょう。また、再生時間をミリ秒単位で指定できます。
# beep # 440 Hzの音を200ms再生
# beep -f [周波数/Hz] -l [再生時間/ms]
robot@ev3dev:~$ beep -f 440 -l 200
きらきら星を演奏させてみる
きらきら星を演奏するシェルスクリプトファイルを作ってstar.shとして保存しましょう。
#!/bin/sh
beep -f 262 -l 180 -d 20 -r 2 \
-n -f 392 -l 180 -d 20 -r 2 \
-n -f 440 -l 180 -d 20 -r 2 \
-n -f 392 -l 380 -d 20 \
-n -f 349 -l 180 -d 20 -r 2 \
-n -f 330 -l 180 -d 20 -r 2 \
-n -f 294 -l 180 -d 20 -r 2 \
-n -f 262 -l 400
実行
デバイスファイルを使う方法
音の再生
beepコマンド以外にも、デバイスファイルを使って音を再生することが可能です。
# 440 Hzの音を200ms再生
robot@ev3dev:~$ echo 440 200 > /sys/devices/platform/snd-legoev3/tone
# 1000Hzの音を再生(連続)
robot@ev3dev:~$ echo 1000 > /sys/devices/platform/snd-legoev3/tone
# 再生停止
robot@ev3dev:~$ echo 0 > /sys/devices/platform/snd-legoev3/tone
ボリュームの調整
音量を調整することができます。デフォルトの音量は75に設定されていて、最小0最大100の範囲で設定可能です。
#デフォルトのボリューム(75)
robot@ev3dev:~$ cat /sys/devices/platform/snd-legoev3/volume
75
#ボリュームを100に設定
robot@ev3dev:~$ echo 100 > /sys/devices/platform/snd-legoev3/volume
##テキストをしゃべらせる
本題です。
espeakコマンドとwavファイルを再生するaplayコマンドを組み合わせて、EV3をしゃべらせてみましょう。
robot@ev3dev:~$ espeak "hello, I am an EV3." --stdout | aplay
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
「hello, I am an EV3.」ev3がしゃべりました。男性の声でしたね。
女性の声にしたいならこうです。
# 女性声バージョン
robot@ev3dev:~$ espeak -ven-us+f4 -s170 "hello, I am an EV3." --stdout | aplay
Playing WAVE 'stdin' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono
##音声をwavファイルとして保存したい
先程のEV3がしゃべった音声をファイルとして保存するのは簡単です。
# hello.wavとして保存
robot@ev3dev:~$ espeak "hello, I am an EV3." --stdout >> hello.wav
再生
robot@ev3dev:~$ aplay hello.wav
Playing WAVE 'hello.wav' : Signed 16 bit Little Endian, Rate 22050 Hz, Mono