2016年2月12日

スマートミラーを作ってみた(ハードウェア編)

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

どうも、トイレハックの人です。
なんか最近そういう風に言われることが多いのですが、non技術者からは「トイレで苦しんでるの?」って言われるので困ってます。

そういえば、2/19(金)のデブサミ2016RESTfulトイレについてLTすることになりましたので、興味のある方は是非お越しください。(スマートミラーも持って行こうか考え中。)

さて、本題ですが... つい最近、こんな記事を見てしまいまして...

Google社員が自作した「スマート鏡」はスマホの通知センターのように時刻・天気・ニュースを表示 - GIGAZINE
http://gigazine.net/news/20160203-smart-bathroom-mirror/

しばし意識を失ったのち気がついたら、手元に市販の額縁と秋月電子通商で売ってるSHARP製IGZO液晶が届いていました。




IGZO液晶、7インチに1920x1200という高解像度で、めちゃくちゃ薄くて明るいのに2Wくらいしか電気食わない省エネ仕様で素晴らしいですね。


桜島の黒神から撮った星景写真が綺麗に表示されたので感動しました。

本題に戻りまして、これらを使ってスマートミラーを作ることにしましょう。
額の裏ぶたを外して、液晶パネルと基板をつなぐフレキが通るスペースを作っていきます。
鉛筆で穴あけの位置を書いたらフライスでサクッと。


フレキを通したら、液晶を裏ぶたに両面テープで貼り付けます。
ちなみに、失敗したら剥がせない(液晶が割れる)ので細心の注意を払って位置合わせする必要あり。
フレキを通した穴は黒色のmtで塞いでおきます。


一旦動作テスト。


うまくいったので、液晶部分の周りに厚紙(液晶の厚みの分だけある)を切り抜いて貼って、その上に黒い画用紙を貼り付け。
液晶と厚紙の隙間には黒のmtを上から貼って横からの光漏れを完全にシャットアウトします。
フレキの反対側サイドからの光漏れが激しかったので、ここにはmtを2重に貼りました。


液晶周りが完成したら、IGZO液晶駆動基板とRaspberry Pi B 2を裏ぶたに固定します。
プラナットをアロンアルファーで止めて、プラネジで止めました。
(もうちょっとちゃんとした固定方法をとった方がいいかも)


最後に、額についてたガラスをマジックミラーに変えます。
マジックミラーは大阪吹田市の株式会社コーワさんに発注。
https://mirror.kowa-j.co.jp/magicmirror.html

額に元々入っていたガラスの寸法を測って、厚み3mm、角磨き上げ、縦210mm、横297mmで作ってもらいました。
お値段3564円 + 梱包送料864円 = 計4428円
注文日は2/7、2/10に発送されて、届いたのは2/12です。

マジックミラー、裏ぶたをセットして起動!
※写真写り上あまり反射してないように見えますが、実際は普通の鏡くらい綺麗に反射してます。(たぶん部屋が暗いせい)



と、いうわけでハードウェアは完成です。
これから、ここに表示するためのソフトウェアを作っていかなければ...

冒頭の記事で紹介されているGoogle社員作のミラーは白文字で天気や予定などの情報を表示しているので、まずはそんな感じのものを作ろうかと。

Raspberry Pi 2 Bというちょっと強力なやつを載せてるので、カメラ繋いで顔認識させて鏡に映った顔にオーバーレイするようなプログラムとか、なんか色々夢が広がりそうだなぁ...と思っているところです。
ソフトウェア編の記事も後ほど書く予定です。

2016年1月4日

トイレにRESTfulなAPIを実装してみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク

あけましておめでとうございます。
プライバシーも一緒に流れるトイレから3年経ちましたが、皆様いかがお過ごしでしょうか。

お正月の三が日、昨今のIoTブームに乗るべく、私もIoTで真に豊かになるものは何かと一生懸命考えた結果、3年前と同じ部屋に辿り着いたことをご報告いたします。

前回はウォシュレットの使用状況をTwitterに投稿するというシステムでしたが、今回はウォシュレットにRESTfulなAPIを付与することで様々な機器から操作することを可能にするシステムを制作しました。


使用したのは巷で話題のESP-WROOM-02(ESP8266)と赤外線LED、上記写真のボードはオリジナルのもの。
(赤外線LEDの足がJST-PHコネクタに吸い込まれているように見えますが、良い子はLEDの足にJSTコンタクトピンを圧着したりしないように。)

このデバイスを電源に接続すると...


http://toilet.local にアクセスし、ウォシュレットを操作可能になります。


API

http://toilet.local/washlet に対して、Key cに以下のValueを設定してPOSTすると、それぞれの動作が実行されます。

Value 動作
rear おしり
soft おしりやわらか
bidet ビデ
stop 停止

また、DELETEメソッドでc=bigとすると流す(大)、c=smallとすると流す(小)が実行されます。
(DELETEなのはお察し)

仕組み

まず、3年前の時に取得した赤外線リモコンコードでは正しく動作しなかったので、改めて取り直し、トイレのリモコンがどのような送信を行っているのかを再検証しました。
リモコンコードはArduino UNOに赤外線受信モジュールを接続して、IRremote Arduino Libraryのサンプルを実行して取得。
結果、流す以外の動作は2回に分けてコードを送信していることが判明。
約6ms、2.9msの送信開始リーダ部の後は、1.5msで1, 0.5msで0のデータ部が続いているのは3年前に調べたのと同じ。






あとは、この通りに38kHzで変調して赤外線LEDを発光してあげるようなコードを書いてESP-WROOM-02に焼けばOK.

コードはこちら
GitHub : 9SQ/RESTful-Toilet

上記リモコンコードのデータもリポジトリに放り込んでいますので、TOTO製トイレリモコン赤外線で遊びたい方は参考にしてください。→ washlet_command.csv

これで、トイレ中にスマホが手放せない人でも、スマホからウォシュレットの操作が可能になりました!

番外編

トイレ引き籠もりのプロに、このシステムについて伺ったところ「ライブ中にタスク切り替えしてブラウザを開くのは厳しい」とのご感想を頂いたので、これについてAndroidアプリを制作することで対処しました。


もちろん、通知領域からボタンひとつで操作可能です。


デレステ中も快適なトイレライフが実現できます。



コードはこちら
GitHub : 9SQ/RESTful-Toilet-App

実際の動作

流石にトイレに座っているお見苦しい姿を晒すわけにはいかないので、流す動作だけ...


このシステムの脆弱性として、トイレの外から使用中の人に物理的な攻撃が可能になるという問題が発見されていますが、今後修正の予定が無いことを予めここに記しておきます。

最後に、今年1年が素敵なIoT(Internet of Toilet)の年になりますよう、お祈り申し上げます。

2015年12月27日

ESP-WROOM-02でYoを送るボタンを作ってみた

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
今年の夏からESP-WROOM-02で色々やっているけど、よく考えたら公開できるものを何も出してなかったので簡単なものを作ってみたり。

ボタンを押すとYoが飛ぶ、という単純明快なボタンです。
誰かにYoを送るも良し、自分のusernameを設定しておいて呼び鈴にするも良し。
Li-Poと充電回路を内蔵しているので、完全ワイヤレス動作も可能。


ESP-WROOM-02周りの回路はこんな感じ。(レギュレータとLi-Po充電回路は省略)

構成は、ESP-WROOM-02(写真の緑のボードはオリジナル)と
無接点プッシュスイッチ(コード付) (秋月電子通商)
リチウムイオン電池充電基板(1A) [CHR4056-MCU1A] (aitendo)
リチウムポリマー電池(3.7V/850mAh) (aitendo)

今回使った無接点プッシュスイッチはスイッチ自体に電源を入れてあげる必要がありますが、上記回路図には書いてません。
プッシュスイッチの代わりにリードスイッチやマイクロスイッチにするというのもOK。

ケースは3Dプリンターで出力。
こんな感じで収まります。(まだ裏蓋を作ってない...)


ソースコードはGithubに。
https://github.com/9SQ/esp8266-Yo-button

今回はWiFiClientSecureではなく、WiFiClientを使ってます。
本当はhttpsでPOSTすべきなのですが、まだWiFiClientSecureの動作が微妙で何故かレスポンスを受け取れなかったので、とりあえずhttpでPOSTしてます。
(通信経路が信頼できない場合は使わない方が良いですね)

仕組みとしては、単純にHTTP POSTするだけなので、宛先をYoから別のもの(IFTTTなど)に変更すれば、色々応用が利くはず...

2015年12月26日

Panasonic製ネットワークカメラのレンズ曇りを取る

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Panasonic製のネットワークカメラ BB-HCE481の修理依頼が来た時の記録。
故障と呼べるのかは謎だけど、前玉のレンズ内側が曇って映像が不鮮明というのが今回の修理理由。
前玉にアクセスするまで結構な手順があったので、今後のためにもメモとして残しておくことに。

1. 左右のプラスチックカバーを外す

片方は上下チルト用のステッピングモーター、もう片方は台座に入っている基板から来ているフレキが見えます。


2. 更に左右のプラスチックカバーを外す

1で外したカバーの下に隠れていたネジを外すと、片側にはチルト用ステッピングモーター制御基板、もう片側にはステッピングモーターとその軸からカメラ部横のギアに張ってあるベルトが登場。

3. カメラ部を分離

ステッピングモーターが見える側の軸はEリングで留められているので、マイナスドライバーなどを隙間に突っ込んで捻ると取れる。
もう片方はねじ止めされている基板を外し、同様にEリングを外すと上に持ち上がる。


4. カメラ部を分解

横のネジを全部外してギアを取ると、カメラ部の上側が外れる。
下側も同様に。
実は下記の写真は掃除後に組み立てるときに撮ったので、レンズが綺麗になってたりします...

5. 基板をレンズ部から外す

ネジで止まっている基板を順次外していきます。
左の写真はカメラ部のメインっぽい基板。
レンズと逆側についてる基板を外すと、イメージセンサーが登場。

下側にはレンズ部内に入っている中玉を動かすためのモーター制御ICが付いていました。

6. レンズ部へと続くケーブルを外す

これが面白いと思ったところ。
フレキが入っていってる謎の丸いプラスチックケース。
開けるとフレキがゼンマイ状になっていて、これのおかげで回転する部分と外側で通信が可能になっている訳です。

7. 金属板、フォーカス制御用のモーターを外す

ネジで止まっているので、見えているネジから外していくと分離可能。

8. レンズ部を分解

ついにレンズ部分に到達!
後ろから1枚づつ外していきます。
レンズを外すとシャッターが登場


全部外すとこんな感じ。

9. 前玉のお掃除

一眼レフとか用のレンズクリーニングキットで拭いていきます。
左はbefore、右がafter。

10. 逆の手順で組み立て

フレキとか切らないように注意しながら、組み立てていきます...
終わり。

まとめ

Panasonicのネットワークカメラ、とても良くできてます。

カメラとしてのスペックは、画素数は38万画素、光学21倍ズーム、F値1.6~3.6。
分解して分かったレンズ部の構成は、中玉が3枚、レンズ2枚を2つのモーターで前後に移動させることでフォーカス合わせを実現しているという感じ。
ちなみに、チルト部分はフォトリフレクタと羽で回転角の限界を見ているようで、バラして組み上げた時に角度がずれていても、初回起動時のイニシャライズ(頂点で位置合わせしている)でバッチリ初期位置に戻っていました。

これ、2006年製なので約10年前の製品でビジネス向けなのですが、当時は定価16万円くらいしたそうです。
外見はなんだか無骨なデザインですが、中身は技術の塊っていう感じ。
ビジネス向けの製品として売ってるので当然といえば当然ですが、とっても良くできている、これなら10万超えてても納得だな〜という感想。
#Pla**xとかの製品と比較したら大変失礼なレベルの完成度

最後に外から見た前玉の曇りbefore/afterの写真で終わりとします。