前回の照度センサに続いて、今回はブザーです。プレゼンのデモで「光ったり鳴ったりする」を揃えるために使った3つのデバイスの2つ目になります。
ハードウェア
ボードは前回同様 BeagleBone Green を使います。Grove コネクタまわりの説明は前回の記事を参照してください。
ブザーモジュール
今回はスイッチサイエンスで売ってるGrove対応ブザーモジュール Y2KB-040 を使いました。Grove(I2C)とUSBの両方のインタフェースに対応してます。大きさは 40 x 24.5 x 7mmです。
100Hz〜8kHzの音を出せて、内蔵メモリに最大61音のメロディを書き込んで演奏させる機能もあるようです。ただ今回作ったライブラリでは、そこまでは作り込んでおらず単発のビープ音を鳴らすところまでです。
ソフトウェア
このモジュール用に単純なビープ音を鳴らすだけのライブラリを作って公開しました。
Nerves で実装
前回と同じ要領です。
% mix nerves.new y2kb040test
% cd y2kb040test
% vi mix.exs # deps に {:y2kb040buzzer, "~> 0.1.0"} を追加する
% mix deps.get
% export MIX_TARGET=bbb
% mix firmware
% mix burn # SDカードに焼く
SDカードを BeagleBone Green に挿して、user ボタンを押しながら電源を入れてブートしてください。
テスト
beep/4 で音を鳴らします。引数は音程・長さ・繰り返し回数です。
-
pitch- 音程、1〜7 -
length- 長さ、0〜3 -
times- 繰り返し回数、0〜3
iex(1)> {:ok, ref} = Y2KB040Buzzer.open()
{:ok,
%Circuits.I2C.I2CDev{
ref: #Reference<0.2173033012.764280844.186945>,
retries: 0,
flags: []
}}
iex(2)> Y2KB040Buzzer.beep(ref, 4, 1, 2)
:ok
iex(3)> Y2KB040Buzzer.close(ref)
まとめ
今回はブザーモジュールから単発のビープ音を鳴らすところまで作りました。
Y2KB-040 自体は内蔵メモリにメロディを書き込んで演奏させる機能を持っているようなので、そこまで対応できるとより面白いライブラリになりそうです。今のビープ音だとうるさい上に愛想がなくて周辺の評判が大変悪いので時間ができたらさっさと拡張したいところです。
次回は3つ目、マトリックスLEDの話をします。
