3歳の息子はまだ時計が読めない。それ以前に、時間の概念もまだよく分かってなさそう。なので、彼の理解の一助となればと思い、なんとなく鳩時計みたいな時報を鳴らしてみることにした。
「ラズパイが24時間稼働しているので、そいつにやらせよう」
「でもスピーカーつけっぱなしというのは電力的にどうなんだろう」
「ちょっとした音の鳴る電子部品で実現したら面白いかも」
…と、目的そっちのけで自分の趣味に走っているような気がするが、まぁ、良しとする。
とりあえず Google 先生に聞いてみると、aitendo なる通販サイトを発見。「メロディIC」なるカテゴリがあって、それっぽい部品がいっぱい出てくるので、そんな中から PS91710 なる型番の製品をピックアップ。
●概要
風鈴声、わずかな部品で作成、動作電源:3-4.5V
「風鈴声」ってどんな音なのかしらん。まぁ、きっと大丈夫だろうということで、適当なスピーカユニットとともに購入。
ラズパイとの接続はこんな感じにしてみた。
電子回路についてはあまり詳しくないのだが、タクトスイッチだった部分を直接 GPIO に繋ぐのは危険だという直感が働いたので、ちゃんと計算していないけど200kΩの抵抗を間に入れてみた。
それはそうと、最近は抵抗をこういう風に描くらしいね。ギザギザじゃないんだ。
というわけで、いざはんだ付け。家にピンヘッダが11本分しかなかったが、幸い接続が必要なピンは片方に偏っていたので問題はなし。結果的に、なんだかケチ臭い感じに仕上がってしまった。
実際に音を鳴らしてみたところ、想像していた音とだいぶ違っていたが、時報としては、まぁそんなに悪くは無かったので、このまま作業を進める。
線材3本を適当な長さのピンソケットに繋いで、ラズパイに接続。ラズパイに root でログインして、コマンドで GPIO4 を有効化、方向を「出力」に切り替える。
# echo 4 > /sys/class/gpio/export # echo out > /sys/class/gpio/gpio4/direction
そして、以下のようなスクリプトを書く。GPIO4 を1秒間 ON → 1秒間 OFF を、引数で渡された回数だけ繰り返すというもの。
#!/bin/bash if [ $# -lt 1 ] then echo "usage $0 number" exit 1 fi COUNT=$1 GPIO4_DIR=/sys/class/gpio/gpio4 for (( i=1; i<=$COUNT; i++ )) do echo 1 > ${GPIO4_DIR}/value sleep 1 echo 0 > ${GPIO4_DIR}/value sleep 1 done exit 0
あとは、適切なタイミングでこのスクリプトを呼んでやれば良い。crontab を以下にように設定する。
0 7-21 * * * /root/jihou.sh `date +\%l` 30 7-20 * * * /root/jihou.sh 1
毎時0分になったら「時」の数を鳴らして、毎時30分になったら1回だけ鳴らす。寝ている間に鳴るとうるさいので、午前7時から午後9時までとした。
こうして、我が家では時報が鳴るようになった。息子は、一体何の音だと言わんばかりにキョトンとしていたが、この先どうなるか、しばらく様子を見てみよう。