この記事は Wano Group Advent Calendar 2019 の7目の記事となります。
主な内容はTWE-Liteのファームウェアを改変するです。
トイレセンサーとは
トイレの使用状況を確認できるセンサーです。数年前に流行ったあれです。
センサーと電池とマイコン(TWELite)で作ったトイレセンサーから、PCに挿したUSB受信機へ電波を飛ばしてWebページから利用状況を確認できるものを、数年前の毎春行われるWanoグループエンジニア合宿で作ったのですが、
オフィスの移転で電波が届かなくなり使い物にならなくなってしまいました。
アドベントカレンダーにかこつけて直します。
どう直すか
作った当時苦情貴重なご意見を頂いたような気がします。
- Webページを開くのが面倒くさい
- 見た目が怪しい
この際合わせて解決したいと思います。
トイレから近いかつ席から見えやすい位置に受信機をおいてLEDを光らせることにしました。
TWE-Liteのファームウェアを改変して受信した信号でLEDをチカチカさせるものを作ります。
見た目については適当な箱を作ります。爆弾や盗撮カメラに見えない素敵なやつです。
準備
受信機
使用したパーツ
- Twe-Lite DIP
- USB電源(適当なUSB充電器)
- DC/DCコンバータ(5V→3.3V)
- 適当なLED、抵抗
オフィスの天井にダクトレール(ライティングレール)が設置されているので、トイレから近い位置のライティングレールにUSB電源を挿してぶら下げます。
LEDは DO1
DO2
に接続しました。
開発環境
SDKをダウンロードします
https://mono-wireless.com/jp/products/TWE-NET/TWESDK.html
SDKマニュアルはこちら
https://sdk.twelite.info/
導入手順はSDKマニュアルで丁寧に解説されているのでそちらを参照してください。
改変作業
大変申し訳無いのですが、改変したソースコードは公開せず、改変した内容説明に留めます。ごめんなさい。
改変したソースコードを公開するためにはモノワイヤレス株式会社に一報入れる必要があり、アドベントカレンダー前日当日にこの記事を書いているからです。事前確認とても大事。
提供されているファームウェアはいくつかあるのですが、今回は無線タグアプリ(App_Tag)を使用します。センサ種別の設定は0x10
(アナログセンサー)です。
トイレセンサー側は提供されたタグアプリを書き込み、受信機側は改変したファームウェアを書き込みます。
改変内容
SDKの /MWSDK/Wks_TWELITE/App_Tag/Parent
がApp_Tag親機にあたるプログラムです。今回このプログラムを改変します。
無線タグアプリの親機は受信したデータをUART送信するものなので、それにあたる関数vSerOutput_Standard
に、
センサー値の判定処理を追加 if (u16adc1 > 100 || u16adc2 > 100){ detect_flg = TRUE; }
LEDの切り替え処理を追加 detect_flg ? vPortSetLo(PORT_OUT1) : vPortSetHi(PORT_OUT1);
PINの設定は、すでに初期化処理に書かれていたので不要でした。
動作テスト
— adhayashi (@adhayashi1) December 8, 2019動いた! 照度センサーと人感センサーで使用状況をチェックしているので、部屋が明るい=使用中と判定しています。
センサーの入れ物を作る
時間切れです、申し訳ない、後日更新します。
3Dプリンターで怪しくないものを作る予定です。
感想
開発環境の導入からSDKの改変まで思っていたよりもハードルが低くてびっくらこいた
親機をArduinoやPCに接続することが前提のような印象だったけど、TWE-Liteだけで完結したいときは選択肢としてありだと思う
ただ、アプリ自体にいろいろな機能を載せてることもあり、ソースコードは長めで該当箇所を探すのに苦労した
今回作ったものはクリスマスの夜にこっそり設置しに行こう
###さいごに
事前確認大事、LED光らせるの超楽しい