このページではXBee ZigBeeブザー・ベルの製作方法とXBeeに接続可能なブザーの性能の比較、3.3V動作の可能性について検証を行います。また圧電スピーカを、直接、鳴らす方法についても後述します。
今回は秋月電子で売られている電子ブザーを使用しました。一見すると圧電スピーカのような形状ですが、電源電圧を加えるだけで音が出ます。電子ブザーには主に圧電素子(ピエゾ素子)を使用したピエゾ方式ものと、電磁石によるメカニカル式があります。ピエゾ方式の電子ブザーは発振回路が内蔵されています。少ない消費電力で大音量が得られますが数kHz以上の高い「ピー」音となります。一方、メカニカル式はモーターと同様に機械的に振動を繰り返しますので消費電力が大きくなります。音色は低い基音に高調波が加わり「ブー」音なります。(XBeeのような省電力機器ではピエゾ方式を用います。)
電子ブザーの選定のポイントは電源電圧と消費電流、音圧、周波数です。XBeeに直結する場合、少なくとも電圧3.3V、電流8mA以下で動作する必要があります。乾電池で駆動する場合は電圧がさらに下がります。乾電池2本の直列接続だと2.0V〜3.2Vくらいで動作する必要があります。
下表は各種の電子ブザーの性能比較表です。消費電流、音圧は3.3Vで動作させた時の実測結果です。音圧は測定方法によって大きく変化しますので相対的な差を確認するための参考情報としてご利用ください。
製造元・品名
仕様
| 実測結果(3.3V)
| 参考 | 価格 XBeeとの | 接続性 動作電圧
| 周波数
| 直径
| 消費電流
| 音圧
| 村田 PKB24SPCH3601
| 2〜20 V
| 3.6 kHz
| 24.3 mm
| 3.0 mA
| 80 dB
| 150円
| ★★★★★
| DB Products HDB06LFPN
| 4〜8 V
| (約3kHz)
| 15 mm
| 10 mA
| 75 dB
| 100円
| ★☆☆☆☆
| SPL PB04-SE12SHPR
| 3〜16 V
| 4.0 kHz
| 14 mm
| 1.7 mA
| 65 dB
| 100円
| ★★★☆☆
| |
この中では村田製作所製のPKB24SPCH3601が最も適していることが分かります。欠点は直径が24.3mmと大きいことです。その次にSPL製のPB04-SE12SHPRですが、音圧が村田製作所のものよりも15dBも劣ります。音が大きすぎて困る場合に良いでしょう。
DB ProductsのHDB06LFPNは仕様では4Vからとなっていますが、3.3Vでは動作するようです。音圧も75dBと大きく、周波数が約3kHzと他のブザーよりも低くて聞きやすい音色です。主観的には今回の比較の中で最も好みの音でした。しかし、消費電流が10mAも流れてしまい、XBeeの最大電流8mAを超過してしまいます。実力的には問題なく動作していますが、秋月のサイトでも「3Vでは鳴らない場合があります」と記載されています。
XBeeのDIO4(11番ピン)を電子ブザーの+入力に接続します。DIO4を他に使用している場合はDIO11を使用します。DIO1〜3は4mAまでしか流せないのに対し、DIO4とDIO11は8mAまで流せるのでDIO出力を電源に使用する場合に適しています。電子ブザーの−端子はGNDに接続します。
また、コミッションボタンとしてタクトスイッチをXBeeの1番ピンとGNDとの間に挿入したり、アソシエーションLEDをXBeeの15番ピンに接続します。
本機(XBee子機)のファームウェアはROUTERもしくはEND DEVICEを書き込みます。COORDINATOR APIを書き込んだXBee親機からDIO4を制御します。
何も設定していなくてもXBeeのプルアップ抵抗からの漏れ電流でブザーが小さな音で鳴ると思いますが、xbee_gpo(dev,4,1);で正しくブザーが鳴り、xbee_gpo(dev,4,0);で、鳴りやみます。
連続音は耳障りで、しかも室内では音源の位置が特定しにくい問題があります。xbee_gpoの1と0とをdelayを入れて繰り返して断続音を作ると良いでしょう。delay(100)のように周期が長いと腕時計のアラーム音のようになります。delay(0)にして周期を短くすると目覚まし時計や(古い)携帯電話の着信音のような音になり、音源の位置が特定しやすくなります。
byte dev[] = {0x00,0x13,0xA2,0x00,0x11,0x22,0x33,0x44}; int main(){ xbee_init(0); while(1){ xbee_gpo(dev,4,1); delay(0); xbee_gpo(dev,4,0); delay(0); } } |
圧電スピーカをXBeeモジュールに直結する方法もあります。これまで紹介した電子ブザーは電源を入れるだけで音が出ます。しかし、圧電スピーカ(圧電サウンダ)は単なるスピーカなので音の周波数に応じた発振器が必要です。したがって、これまでの例のようにXBeeのDIO出力に接続しても音の周波数(1kHz以上)でDIOポートをON/OFFすることは出来ません。
このような場合に、圧電スピーカをXBeeのシリアルポートに接続して音を鳴らす方法があります。パソコンの使用歴の長い方ならお察しのとおり、親機からシリアルデータを子機XBeeに送って、そのシリアルデータのH/Lレベルの繰り返しをスピーカに入力してブザー音を鳴らすのです。
プログラムの書き方は説明するまでも無いかもしれません。テキスト情報をシリアル送信するxbee_uart関数を用いて、少し長めのテキストデータをXBee子機に送るプログラムを作れば動作します。
もしくは、tools/xbee_testを使用して、「TXaaaaaaaaaaaaaaaa」のようにシリアル送信コマンドを入力しても動作します。送る文字によって、僅かながら音色を変えることも出来ますので、暇な方は試してみても良いでしょう。
byte dev[] = {0x00,0x13,0xA2,0x00,0x11,0x22,0x33,0x44}; int main(){ xbee_init(0); while(1){ xbee_uart(dev,"aaaaaaaaaaaaaaaa"); delay(1000); } } |
なお、圧電スピーカに衝撃を与えると一時的に発電して高電圧が生じます。その影響でXBeeモジュールを壊してしまうこともありますので、実験後は必ず圧電スピーカを外します。もしくは過電圧保護用のツェナーダイオードを入れるなど対策が必要です。