Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
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も離すと着信検出しなくなります。
その他使用部品¶
- LAN接続は、スイッチサイエンスのmbed用イーサネット接続キットを使用(秋葉原の千石電商で購入)。
- IRCへの接続は、NickRyder/IrcBotを少し変更したものを使用。
既知の問題・制限事項¶
- たまに誤検出して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までなので追加回路が必要? 回路は素人なのでパス。