reTerminalのブザーを鳴らす方法

reTerminalでブザーを鳴らしたいというお問い合わせをいただきました。reTerminalにはブザーが内蔵されていますので、適切な方法で制御すれば確実に鳴らすことができます。

基本のコマンドでテストする

まずは、ブザーを鳴らすためのコマンドが正しく実行できるか確認します。reTerminalのブザーは /sys/class/leds/usr_buzzer/brightness ファイルに値を書き込むことで制御できます。書き込み自体を root 権限で行う tee コマンドを使います。

# ブザーをオンにする
echo 1 | sudo tee /sys/class/leds/usr_buzzer/brightness

# 1秒待つ
sleep 1

# ブザーをオフにする
echo 0 | sudo tee /sys/class/leds/usr_buzzer/brightness

注意: sudo echo 1 > /sys/class/leds/usr_buzzer/brightness は権限エラーになります。これは sudo がechoコマンドにのみ適用され、リダイレクション(>)は通常のユーザー権限で実行されるためです。

フローで実装する

Node-REDのフローでは、execノードを使います。以下は0.1秒だけ鳴らすフローです。

こちらのフローはenebularのdiscoverで公開しています。

https://enebular.com/discover/flow/465e6180-9b91-4a05-aacf-5012c9f9a50d

injectノードでは、Node-RED起動後にinjectノードが実行されるようにします。

execノードは、execモードです。

delayノードで何秒間ブザーを鳴らすかを指定しています。

enebularのエージェント実行環境でreTerminalにデプロイしてみましょう。デプロイ後、Node-REDが起動したらInjectノードが一度だけ実行されて、ピッとブザーが鳴ると思います。

トラブルシューティング

ブザーが鳴らない場合は以下の点を確認してください。

ドライバの競合をチェック

正しいコマンドでも鳴らない場合、次に疑うべきはドライバの競合です。特に、ある設定がブザーの制御を邪魔しているケースが非常に多く報告されています。

  1. まず、設定ファイル /boot/config.txt をエディタで開きます:
sudo nano /boot/config.txt
  1. ファイルの中に dtoverlay=reTerminal-bridge という行がないか探します。
  2. もしこの行があれば、行の先頭に # を付けてコメントアウトしてください:
#dtoverlay=reTerminal-bridge
  1. Ctrl+X を押し、YEnter と入力してファイルを保存し、システムを再起動します:
sudo reboot

再起動したら、もう一度基本のコマンドを試してみてください。

ドライバの再インストール

上記の方法でも解決しない場合は、ドライバを再インストールします。

  1. インターネットに接続していることを確認し、ターミナルを開いて以下のコマンドを順に実行します。
  2. まず、もし以前のドライバディレクトリが残っていれば、一度きれいに削除します
rm -rf seeed-linux-dtoverlays
  1. GitHubから最新のドライバソースをクローン(ダウンロード)します
git clone --depth 1 https://github.com/Seeed-Studio/seeed-linux-dtoverlays
  1. ダウンロードしたディレクトリに移動し、インストールスクリプトを実行します
cd seeed-linux-dtoverlays
sudo ./scripts/reTerminal.sh

注意: スクリプトファイル名の前にスペースを入れてください(sudo./scripts/reTerminal.sh ではなく sudo ./scripts/reTerminal.sh)。

  1. インストールが完了したら、システムを再起動します
sudo reboot

再起動したら、もう一度基本のコマンドを試してみてください

まとめ

reTerminalのブザー制御では、以下のようなコマンドを実行して実現できました。

  1. コマンドライン: echo 1 | sudo tee /sys/class/leds/usr_buzzer/brightness
  2. Node-RED: execノードでteeコマンドを実行

トラブルシューティングでは、権限設定、ドライバの競合、ハードウェアの状態を順番に確認することが重要です。

IoTプロジェクトでの通知機能やアラート機能として、ブザーは非常に有用です。ぜひ活用してみてください!