Hideto KIHARA / Mbed 2 deprecated PhsRingNotify

Dependencies:   EthernetInterface IrcBot mbed-rtos mbed

Homepage

PHS着信時電波を検知してIRCに通知

会社の個人用内線電話が構内PHSなのですが、 以下のように着信に気付かないことがあったので、 IRC(Internet Relay Chat)に通知するものをmbedで作ってみました (IoTが流行りなので勉強がてらに)。

  • バイブレーションモードにしていたり、着信音を小さくしていると気付かない
  • 離席中に着信があった場合、PHSを見ないと気付かない

ワンダーキットの電磁波レベルメータSP(DN-G8SP) を使って着信時の電波を検出して(mbedへのアナログ入力レベルが一定以上になったら)、 IRCにメッセージを送ります。

電磁波レベルメータ->mbed LPC1768-[LAN]->IRCサーバ-[LAN]->PC上IRCクライアント

(電波の検出は、2G携帯電話時代の着信時に光るアンテナやストラップと同様の、 ショットキーバリア・ダイオードによる検波回路を作ってみたものの、 検出できない場合があったので、上記キットを使用)

上記キットに対し以下の改造をしています。

  • キットでは点灯LED数で示される検出電磁波レベルを、mbedのアナログ入力に結線
  • 電源を乾電池でなくmbedから取る
  • タクトスイッチはショート

ちなみに、上記キットとPHSは並べて置いてあるだけで、 10cmも離すと着信検出しなくなります。

その他使用部品

既知の問題・制限事項

  • たまに誤検出してIRC通知が行われる場合あり。
  • IRCサーバとの接続が切れた時に再接続する処理は未実装。

拡張案

  • ChatterやLync等のIMに通知したり、スマホへPush通知したい場合は、 そういう処理を行うHTTP APIを作って、 IRCでなくHTTP APIをたたくようにするのがいいかも。
  • 誰からの着信かもIRCメッセージに入れたい。 PHSのディスプレイをカメラで撮ればできなくはなさそうですが。 (SIPサーバに直接アクセスさせてもらえれば、楽に作れそうな気はしますが、 電話管理部門との交渉等が面倒そうだし……。)

関連

  • LininoONEやEdisonへの移植版: Wi-FiでIRCサーバに接続したくなったので。
  • 予定通知ボット: IRCチャネルへのPHS着信通知に反応して、その人の予定をMicrosoft Exchange Serverから取得して、 IRCチャネルに流すボット。

蛇足:他のデバイス

  • 最初は手元にあったGainer(正確には互換機の赤いPepper micro)とProcessingを使用して作成。 PCが必要になるのがいまいちだったので、他のデバイスを物色。
  • GR-SAKURA。Ethernetが付いているので選択。 実際に作って試してみると、数時間でIRC接続が切れることがよくあって原因不明。 原因調査が面倒になったのと再接続処理の追加も面倒なので断念。
  • Galileo Gen2は少しサイズが大きいので優先度下げ。mbedで駄目な場合の候補。
  • Arduino+Ethernetシールド。mbedの方が安価なので優先度下げ。
  • Raspberry Piはアナログ入力が無いので除外
  • BeagleBone Blackはアナログ入力が1.8Vまでなので追加回路が必要? 回路は素人なのでパス。

All wikipages