SVX日記
2004-08-10(Tue) ラジオ体操サーバ構築
かなり前からなのだが、朝起きると背中から胸にかけてズーンと痛い。起きてからしばらくソファでグダグダしなければならないほど痛いのである。実はかなりヤバい病気なのではないかと心配していたのだが、あるときフト気がついた。
いわゆる運動という意味では、幸いにして毎日の通勤路にかなりの歩行が含まれるため、さほど運動不足の状態とは思わない。しかし、それは足腰の話。昼は職業プログラマ、夜は趣味プログラマ+下手ソルダーという毎日を繰り返していると、気がつけば、上半身は動かざること山の如しという状態なのである。
そこで試しにラジオ体操っぽいコトをしてみたところ、自覚できるほど体全体が凝っていて、それだけでも次の朝はかなり症状が緩和したではないか。まぁ、ラジオ体操だけで改善してしまう生活というのもかなりヤバいのかもしれないが、やらないよりはマシであろう。少なくともこれからは毎朝ラジオ体操を心がけようと思う。
几帳面な人であれば、強い意思を持ち、毎朝6時半に起きてラジオを点け体操するであろう。比較的凡人であれば、一度朝6時半に起きてラジオをテープに録音するなりし、自分の生活時間に合わせて再生して体操するであろう。しかし、私の場合はちょっと違うのである。
まずは、体操の楽曲ソースの入手。私は自宅のLinuxサーバでビデオ録画&ラジオ録音システムを組んでいるのだが、毎日昼過ぎにNHK第二の英会話を録音しているラジオを、昨晩NHK第一にチューニング、予約録画録音スクリプトに朝6時半から10分間ラジオを録音する設定を追加しておいたのである。そして今朝、見事10分間のラジオ体操の番組が録音されたwavを入手、先日紹介した自作スクリプトcccdctを利用して、ラジオ体操第一と第ニを切り出し、各々mp3化したのだ。
次は毎朝体操の楽曲を再生する設定である。私がラジオ体操しているのを見たカミさんも体操するといい出した。が、カミさんは私より仕事に出る時間が早いので、私とは朝に体操したい時間が違うのだ。そこで、crontabを用いて各々の好みの時間に再生する設定を登録したのである。
ちなみに自宅のLinuxサーバにはスピーカがつながっていない。では、音はどこから出るかというと、接続されているFMモジュレータから電波として出るのである。このFMモジュレータ、秋月のLCDパネルキットに私が追加改造したリモート電源プラグ対応にしてある。早い話がPC側からのコントロールにより必要なときだけFMモジュレータの電源が入れられるようになっているのである。よって、これもcrontabに登録するのである。
若干上の写真の補足をする。左の写真は、市販のFMモジュレータの電池ボックス部にICクリップを入れ、緑のLEDを回路に直列に挿入しながら、外部に電源供給ケーブルをピンヘッダとして出すという改造を施したものである。このLEDによりUSBからの5Vの入力を3Vに降圧し、元の単4電池2本による3Vの入力と合わせている。右の写真は秋月の「シリアル制御液晶表示モジュールキット」を改造したもの(思えば私の本格的な電子工作人生はこのキットの理解と改造から始まった)。改造点はUSBからの電源供給を可能にしたことと、パネル位置を移動、簡単なケースへ基板を止めたこと、赤と青のLEDのON/OFF制御、2箇所のピンフレームからの5V電源のON/OFF制御を可能にしたことだ。
そしてFMモジュレータからの電波はどこへ行くかといえばラジカセである。毎朝決まった時間にラジカセの電源を入れれば、ラジオ体操の楽曲が流れるという寸法である。んがッ!! 実はここさえも自動化してしまうのであった。またもやLinuxサーバに接続されたPC接続型学習リモコンを利用する。早い話がPC側からの赤外線信号により必要なときだけラジカセの電源が入るのである。やっぱり、これもcrontabに登録するのである。
左の写真は、電話台に固定してあるPC接続型学習リモコンである。もちろんケーブルはLinuxサーバに接続されている。これにより、エアコン、テレビ、ケーブルチューナ等をLinuxサーバから制御することが可能となっている。右の写真が新たに今回から制御されることになったラジカセである。
と、いうわけで、既に全ての設定を終え明日の朝からのラジオ体操には万全の体制である。時間になれば、FMモジュレータ電源ON、ラジカセ電源ON、ラジオ体操の歌、ラジオ体操第一、ラジオ体操第二、ラジカセ電源OFF、FMモジュレータ電源OFF、以上すべて自動的に処理が行われる。処理スクリプトもまったくもってそのまんま。平日の朝に限りこのスクリプトがcrondによって、カミさんの分と私の分の2回起動される寸法である。
#!/usr/bin/ruby
system("/usr/local/bin/aki-lcd -0x1500; /usr/local/bin/aki-lcd -0x1170")
sleep 2
system("cd MasterZapper/ruby; ./mzap.rb /dev/ttyS1 radio_pow.sig")
sleep 2
system("/usr/bin/mpg123 sounds/radio_exe/song.mp3")
sleep 2
system("/usr/bin/mpg123 sounds/radio_exe/first.mp3")
sleep 2
system("/usr/bin/mpg123 sounds/radio_exe/second.mp3")
sleep 2
system("cd MasterZapper/ruby; ./mzap.rb /dev/ttyS1 radio_pow.sig")
sleep 2
system("/usr/local/bin/aki-lcd -0x1100")