
クリスマスツリーのIoT化
NIFTY Advent Calendar 2016 の7日目の記事です。
昨日は @tily さんの自分がたのしく英語を話す練習をするための仕組みを作ってみた (hugo-recital の紹介)でした。
はじめに
ニフティ新卒2年目のgoya813です。IoTデザインセンターという部署でエンジニアをやっています。
元々高専でソフトウェアを勉強してきましたが、
配属後はデバイスチームに入り色々なデバイスを触ったり基板を作ったりしています。
過去には↓のものを作ったりしました。
– http://www.slideshare.net/tomohirogoya1/ss-64208475
– http://blog.iot.nifty.com/index.php/2016/10/28/delicious_bar/
背景
弊社は毎年クリスマスシーズンになると「お客様をおもてなし」をコンセプトに受付ルームにクリスマスツリーを設置しています。
クリスマスツリー設置を担当している方からIoT要素を入れて欲しいという依頼があり作成を始めました。
※まだ開発途中となっているため、細かいところは変更されるかもしれません。
実際に稼動させるのは12/14,15ぐらいを予定しています。
作るもの
クリスマスツリーには星や松ぼっくりなど様々な種類のオーナメントが付いているのですが、その中 に弊社の各サービスがかかれた紙が入ったオーナメントのカプセルが約40個ほどあります。
そのオーナメントを振ると、オーナメントに入っているサービスの紹介ページや開発者を投影するものを作っていきます。
仕組み
使用したセンサーやデバイスは
- サービスの紹介ページや開発者を投影するためのRaspberryPi3
- 振られたことを検知するための振動センサー 高感度振動スイッチ
- 振動センサーの結果をRaspberryPiに送信するためにBLEモジュール RN4020
の3つです。振動センサーとBLEモジュールを実装した回路基板が各オーナメントに入っています。
動作の流れは以下になります。
- オーナメントを振る
- 振動センサーが検知
- BLEモジュールがRaspberryPiに自身のUUIDを送信
- RaspberryPiはプロジェクタに繋がっているPCにUUIDをMQTTで送信
- プロジェクタで投影
今回は振動センサーとBLEモジュールを実装した回路基板について詳しく話していきます。
回路基板について
回路基板作成に当たって以下の制約がありました。
– 電源を確保できないためバッテリ駆動(1週間ぐらいは持たせたい)
– オーナメントに入るサイズ(直径約7.5cmの球体)
それぞれどのようなアプローチをとったのかを説明してきます。
バッテリーの容量について
バッテリー問題については
– 容量の大きい電池を使用
– できるだけBLEモジュールを休止状態に保つ
のアプローチを取って作成しました。
「容量の大きい電池を使用」についてですが、初めボタン電池(CR2032とか)での駆動を考えていたのですが1週間持つか怖かったので容量が大きいかつサイズ的に問題ないという条件で探した結果、秋月でAAサイズ形 バックアップリチウム電池 3.6Vを見つけました。
こちらの電池は、サイズは単3電池と同じ、容量は2.4Ah、電圧は3.6Vと今回使用するのにとてもちょうど良かったので使用しました。
「できるだけBLEモジュールを休止状態に保つ」についてですが、今回の作成する回路基板の中で一番電力を消費するのがBLEモジュールでした。
今回使用したBLEモジュールの消費電力はデータシートを見ると以下の表の通りとなっていました。
状態 | 消費電力 |
---|---|
Dormant | < 700 nA |
Deep Sleep | < 5.0 μA |
Idle | < 1.5 mA |
Tx/Rx active | 16mA at 0dBm |
表を見ての通りDormant状態だとかなり消費電力が低いことが分かります。そのため今回は振動センサーが反応した時のみ活動を行い、それ以外のときはDormant状態になるように設計しました。
サイズの問題
ブレッドボードはサイズの問題でできないため、ユニバーサル基板などで基板作成をする必要がありました。しかし、ユニバーサル基板で40個半田付けするのは辛い(ハーフピッチのモジュールとか、ちゃんと半田付けができているかのチェックなど)ため、自前でフライス盤を持っている同期にお願いして基板を作ってもらいました。
スケマティック図
ボード図
実際の基板
実装後の基板
動いている様子
最後に
バッテリーやサイズを考慮したことはあまりなかったため、今回はいい経験になりました。
色々かきましたが、まだ40個まとめて動かすなど実際の運用をしていないため、これから問題が現れるかと思いますがそちらは12月末ぐらいに稼動結果記事として公開したいと思います。
明日は @heppoko_dev さんが記事を書いてくれるのでお楽しみに!
コメント